Sourced from pytest's releases.
8.4.2
pytest 8.4.2 (2025-09-03)
Bug fixes
#13478: Fixed a crash when using
console_output_style
{.interpreted-text role="confval"} withtimes
and a module is skipped.#13530: Fixed a crash when using
pytest.approx
{.interpreted-text role="func"} anddecimal.Decimal
{.interpreted-text role="class"} instances with thedecimal.FloatOperation
{.interpreted-text role="class"} trap set.#13549: No longer evaluate type annotations in Python
3.14
when inspecting function signatures.This prevents crashes during module collection when modules do not explicitly use
from __future__ import annotations
and import types for annotations within aif TYPE_CHECKING:
block.#13559: Added missing [int]{.title-ref} and [float]{.title-ref} variants to the [Literal]{.title-ref} type annotation of the [type]{.title-ref} parameter in
pytest.Parser.addini
{.interpreted-text role="meth"}.#13563:
pytest.approx
{.interpreted-text role="func"} now only importsnumpy
if NumPy is already insys.modules
. This fixes unconditional import behavior introduced in [8.4.0]{.title-ref}.Improved documentation
- #13577: Clarify that
pytest_generate_tests
is discovered in test modules/classes; other hooks must be inconftest.py
or plugins.Contributor-facing changes
- #13480: Self-testing: fixed a few test failures when run with
-Wdefault
or a similar override.- #13547: Self-testing: corrected expected message for
test_doctest_unexpected_exception
in Python3.14
.- #13684: Make pytest's own testsuite insensitive to the presence of the
CI
environment variable -- byogrisel
{.interpreted-text role="user"}.
bfae422
Prepare release version 8.4.28990538
Fix passenv CI in tox ini and make tests insensitive to the presence of
the C...ca676bf
Merge pull request #13687
from pytest-dev/patchback/backports/8.4.x/e63f6e51c...975a60a
Merge pull request #13686
from pytest-dev/patchback/backports/8.4.x/12bde8af6...7723ce8
Merge pull request #13683
from even-even/fix_Exeption_to_Exception_in_errorMe...b7f0568
Merge pull request #13685
from CoretexShadow/fix/docs-pytest-generate-tests2c94c4a
add missing colon (#13640)
(#13641)c3d7684
Merge pull request #13606
from pytest-dev/patchback/backports/8.4.x/5f9938563...dc6e3be
Merge pull request #13605
from The-Compiler/training-update-2025-07f87289c
Fix crash with times
output style and skipped module (#13573)
(#13579)Sourced from locust's releases.
2.40.1
What's Changed
- Pytest plugin: Delay imports to avoid monkey patching until someone uses the fixtures by
@cyberw
in locustio/locust#3204- Move pytest plugin to its own directory, to prevent accidental import by
@cyberw
in locustio/locust#3205Full Changelog: https://github.com/locustio/locust/compare/2.40.0...2.40.1
2.40.0
What's Changed
- Refactor FastHttpSession to be more like HttpSession by
@cyberw
in locustio/locust#3198- Update Dockerfile base to Python 3.13 by
@adaamz
in locustio/locust#3193- Avoid exception in HttpUser if requests has lost track of the request it made by
@cyberw
in locustio/locust#3201- Support pytests as locustfiles by
@cyberw
in locustio/locust#3200New Contributors
@adaamz
made their first contribution in locustio/locust#3193Full Changelog: https://github.com/locustio/locust/compare/2.39.1...2.40.0
Sourced from locust's changelog.
Detailed changelog
The most important changes can also be found in the documentation.
5df19da
Merge pull request #3205
from locustio/move-pytest-plugin-to-own-directoryd41141b
Move pytest plugin to its own directory, to prevent accidental import of
locu...6422848
mention that only one locustfile can be distributedaa3da73
Merge pull request #3204
from locustio/delay-imports-in-pytest-plugin-to-avoi...12050de
Pytest plugin: Delay imports to avoid monkey patching until someone
actually ...488d1f8
docs439b7ab
docs fixfcd76a8
docs: rephrase70c7e9b
docs: move pytest further up06dbf98
docs: fix linkSourced from openai's releases.
v1.106.1
1.106.1 (2025-09-04)
Full Changelog: v1.106.0...v1.106.1
Chores
- internal: move mypy configurations to
pyproject.toml
file (ca413a2)v1.106.0
1.106.0 (2025-09-04)
Full Changelog: v1.105.0...v1.106.0
Features
v1.105.0
1.105.0 (2025-09-03)
Full Changelog: v1.104.2...v1.105.0
Features
- api: Add gpt-realtime models (8502041)
v1.104.2
1.104.2 (2025-09-02)
Full Changelog: v1.104.1...v1.104.2
Bug Fixes
- types: add aliases back for web search tool types (2521cd8)
v1.104.1
1.104.1 (2025-09-02)
Full Changelog: v1.104.0...v1.104.1
Chores
- api: manual updates for ResponseInputAudio (0db5061)
v1.104.0
1.104.0 (2025-09-02)
Full Changelog: v1.103.0...v1.104.0
... (truncated)
Sourced from openai's changelog.
1.106.1 (2025-09-04)
Full Changelog: v1.106.0...v1.106.1
Chores
- internal: move mypy configurations to
pyproject.toml
file (ca413a2)1.106.0 (2025-09-04)
Full Changelog: v1.105.0...v1.106.0
Features
1.105.0 (2025-09-03)
Full Changelog: v1.104.2...v1.105.0
Features
- api: Add gpt-realtime models (8502041)
1.104.2 (2025-09-02)
Full Changelog: v1.104.1...v1.104.2
Bug Fixes
- types: add aliases back for web search tool types (2521cd8)
1.104.1 (2025-09-02)
Full Changelog: v1.104.0...v1.104.1
Chores
- api: manual updates for ResponseInputAudio (0db5061)
1.104.0 (2025-09-02)
Full Changelog: v1.103.0...v1.104.0
Features
- types: replace List[str] with SequenceNotStr in params (bc00bda)
... (truncated)
2adf111
release: 1.106.1c4f9d0b
chore(internal): move mypy configurations to pyproject.toml
file2de8d7c
release: 1.106.02cf4ed5
feat: improve future compat with pydantic v325d16be
feat(client): support callable api_key (#2588)8672413
release: 1.105.02c60d78
feat(api): Add gpt-realtime modelsa52463c
release: 1.104.25a6931d
fix(types): add aliases back for web search tool typesfb152d9
release: 1.104.1Sourced from tailwindcss's releases.
v4.1.13
Changed
- Drop warning from browser build (#18731)
- Drop exact duplicate declarations when emitting CSS (#18809)
Fixed
- Don't transition
visibility
when usingtransition
(#18795)- Discard matched variants with unknown named values (#18799)
- Discard matched variants with non-string values (#18799)
- Show suggestions for known
matchVariant
values (#18798)- Replace deprecated
clip
withclip-path
insr-only
(#18769)- Hide internal fields from completions in
matchUtilities
(#18820)- Ignore
.vercel
folders by default (can be overridden by@source …
rules) (#18855)- Consider variants starting with
@-
to be invalid (e.g.@-2xl:flex
) (#18869)- Do not allow custom variants to start or end with a
-
or_
(#18867, #18872)- Upgrade: Migrate
aria
theme keys to@custom-variant
(#18815)- Upgrade: Migrate
data
theme keys to@custom-variant
(#18816)- Upgrade: Migrate
supports
theme keys to@custom-variant
(#18817)v4.1.12
Fixed
- Don't consider the global important state in
@apply
(#18404)- Add missing suggestions for
flex-<number>
utilities (#18642)- Fix trailing
)
from interfering with extraction in Clojure keywords (#18345)- Detect classes inside Elixir charlist, word list, and string sigils (#18432)
- Track source locations through
@plugin
and@config
(#18345)- Allow boolean values of
process.env.DEBUG
in@tailwindcss/node
(#18485)- Ignore consecutive semicolons in the CSS parser (#18532)
- Center the dropdown icon added to an input with a paired datalist by default (#18511)
- Extract candidates in Slang templates (#18565)
- Improve error messages when encountering invalid functional utility names (#18568)
- Discard CSS AST objects with
false
orundefined
properties (#18571)- Allow users to disable URL rebasing in
@tailwindcss/postcss
viatransformAssetUrls: false
(#18321)- Fix false-positive migrations in
addEventListener
and JavaScript variable names (#18718)- Fix Standalone CLI showing default Bun help when run via symlink on Windows (#18723)
- Read from
--border-color-*
theme keys individe-*
utilities for backwards compatibility (#18704)- Don't scan
.hdr
and.exr
files for classes by default (#18734)v4.1.11
Fixed
- Add heuristic to skip candidate migrations inside
emit(…)
(#18330)- Extract candidates with variants in Clojure/ClojureScript keywords (#18338)
- Document
--watch=always
in the CLI's usage (#18337)- Add support for Vite 7 to
@tailwindcss/vite
(#18384)v4.1.10
... (truncated)
Sourced from tailwindcss's changelog.
[4.1.13] - 2025-09-03
Changed
- Drop warning from browser build (#18731)
- Drop exact duplicate declarations when emitting CSS (#18809)
Fixed
- Don't transition
visibility
when usingtransition
(#18795)- Discard matched variants with unknown named values (#18799)
- Discard matched variants with non-string values (#18799)
- Show suggestions for known
matchVariant
values (#18798)- Replace deprecated
clip
withclip-path
insr-only
(#18769)- Hide internal fields from completions in
matchUtilities
(#18820)- Ignore
.vercel
folders by default (can be overridden by@source …
rules) (#18855)- Consider variants starting with
@-
to be invalid (e.g.@-2xl:flex
) (#18869)- Do not allow custom variants to start or end with a
-
or_
(#18867, #18872)- Upgrade: Migrate
aria
theme keys to@custom-variant
(#18815)- Upgrade: Migrate
data
theme keys to@custom-variant
(#18816)- Upgrade: Migrate
supports
theme keys to@custom-variant
(#18817)[4.1.12] - 2025-08-13
Fixed
- Don't consider the global important state in
@apply
(#18404)- Add missing suggestions for
flex-<number>
utilities (#18642)- Fix trailing
)
from interfering with extraction in Clojure keywords (#18345)- Detect classes inside Elixir charlist, word list, and string sigils (#18432)
- Track source locations through
@plugin
and@config
(#18345)- Allow boolean values of
process.env.DEBUG
in@tailwindcss/node
(#18485)- Ignore consecutive semicolons in the CSS parser (#18532)
- Center the dropdown icon added to an input with a paired datalist by default (#18511)
- Extract candidates in Slang templates (#18565)
- Improve error messages when encountering invalid functional utility names (#18568)
- Discard CSS AST objects with
false
orundefined
properties (#18571)- Allow users to disable URL rebasing in
@tailwindcss/postcss
viatransformAssetUrls: false
(#18321)- Fix false-positive migrations in
addEventListener
and JavaScript variable names (#18718)- Fix Standalone CLI showing default Bun help when run via symlink on Windows (#18723)
- Read from
--border-color-*
theme keys individe-*
utilities for backwards compatibility (#18704)- Don't scan
.hdr
and.exr
files for classes by default (#18734)[4.1.11] - 2025-06-26
Fixed
... (truncated)
1334c99
Prepare v4.1.13 release (#18868)65dc530
Do not allow variants to end with -
or _
(#18872)54c3f30
Do not allow variants to start with -
(#18867)494051c
Consider variants starting with @-
to be invalid (e.g.
@-2xl:flex
) (#18869)c318329
chore: remove redundant words (#18853)ddc84b0
update test after prettier changef1331a8
run prettiere5513b6
Fix missing code block delimiters in comment blocks (#18837)5e2a160
Drop exact duplicate declarations from output CSS within a style rule
(#18809)b1fb02a
Hide internal fields from completions in matchUtilities
(#18820)Sourced from next's releases.
v15.5.3
[!NOTE]
This release is backporting bug fixes. It does not include all pending features/changes on canary.Core Changes
- fix: validation return types of pages API routes (#83069)
- fix: relative paths in dev in validator.ts (#83073)
- fix: remove satisfies keyword from type validation to preserve old TS compatibility (#83071)
Credits
Huge thanks to
@bgub
for helping!v15.5.2
[!NOTE]
This release is backporting bug fixes. It does not include all pending features/changes on canary.Core Changes
- fix: disable unknownatrules lint rule entirely (#83059)
- revert: add ?dpl to fonts in /_next/static/media (#83062)
Credits
Huge thanks to
@bgub
and@ztanner
for helping!v15.5.1
[!NOTE]
This release is backporting bug fixes. It does not include all pending features/changes on canary.Core Changes
- fix: aliased navigations should apply scroll handling (#82900)
- Turbopack: fix invalid NFT entry with file behind symlink (#82887)
- fix: typesafe linking to route handlers and pages API routes (#82858)
- fix: change "noUnknownAtRules" to "warn" for Biome (#82974)
- fix: add path normalization to getRelativePath for Windows (#82918)
- feat: add typesafety with config.typedRoutes to redirect() and permanentRedirect() (#82860)
- fix: avoid importing types that will be unused (#82856)
- fix: update the config.api.responseLimit type (#82852)
- fix: update validation return types (#82854)
Credits
Huge thanks to
@bgub
,@mischnic
, and@ztanner
for helping!v15.5.1-canary.39
Core Changes
- [metadata] change the metadata routes params to promises: #83560
... (truncated)
07d1cbc
v15.5.3db56d77
[backport] fix: validation return types of pages API routes (#83069)
(#83580)7a80623
[backport] fix: relative paths in dev in validator.ts (#83073)
(#83190)fddaeb8
[backport] fix: remove satisfies
keyword from type
validation to preserve o...497ec6a
v15.5.2bc72f41
[backport] revert: add ?dpl to fonts in /_next/static/media
(#83062)
(#83066)c8faf68
[backport] fix: disable unknownatrules lint rule entirely (#83059)
(#83060)cc68ced
v15.5.11ce9857
[backport] fix: update validation return types (#82854)
(#83027)b93c894
[backport] fix: update the config.api.responseLimit type (#82852)
(#83028)Sourced from astral-sh/setup-uv's releases.
v6.7.0 🌈 New inputs
restore-cache
andsave-cache
Changes
This release adds fine-grained control over the caching steps.
- The input
restore-cache
(true
by default) can be set tofalse
to skip restoring the cache while still allowing to save the cache.- The input
save-cache
(true
by default) can be set tofalse
to skip saving the cache.Skipping cache saving can be useful if you know, that you will never use this version of the cache again and don't want to waste storage space:
- name: Save cache only on main branch uses: astral-sh/setup-uv@v6 with: enable-cache: true save-cache: ${{ github.ref == 'refs/heads/main' }}
🚀 Enhancements
- Add inputs restore-cache and save-cache
@eifinger
(#568)🧰 Maintenance
- bump deps
@eifinger
(#569)- Automatically push updated known versions
@eifinger
(#565)- chore: update known versions for 0.8.16/0.8.17 @github-actions[bot] (#562)
- chore: update known versions for 0.8.15 @github-actions[bot] (#550)
- chore(ci): address CI lint findings
@woodruffw
(#545)⬆️ Dependency updates
- Bump github/codeql-action from 3.29.11 to 3.30.3 @dependabot[bot] (#566)
- Bump actions/setup-node from 4.4.0 to 5.0.0 @dependabot[bot] (#551)
b75a909
bump deps (#569)ffff8aa
Bump github/codeql-action from 3.29.11 to 3.30.3 (#566)95d0e23
Bump actions/setup-node from 4.4.0 to 5.0.0 (#551)dc724a1
Add inputs restore-cache and save-cache (#568)f67343a
Automatically push updated known versions (#565)4dd9f52
chore: update known versions for 0.8.16/0.8.17 (#562)e1e6fe7
chore: update known versions for 0.8.15 (#550)b183611
chore(ci): address CI lint findings (#545)Sourced from remeda's releases.
v2.32.0
2.32.0 (2025-09-18)
Features
v2.31.1
2.31.1 (2025-09-09)
This version is identical to 2.31.0. We were experimenting with some modernizations of our release pipelines and needed to generate a release as part of testing those changes.
v2.31.0
2.31.0 (2025-09-08)
Features
9086669
feat: toTitleCase (#1200)6198796
docs: even more broken links (#1202)705c29d
docs: fix broken links in migration articles (#1201)d24c932
docs(string): rework all docs in the string category + lodash migration
(#1199)ae0e115
fix(release): revert OIDC release (for now) + jsr provenance (#1197)6293fc2
fix(semantic-release): provide a github token in the env (#1196)53c4e07
fix(npm): use oidc when publishing to npm (#1195)3cdc983
chore(deps): bump locked versions (#1194)49a295b
chore(deps): manually bump everything (#1193)ebea7b3
feat(conditional): remove defaultCase
(#1192)This version was pushed to npm by eranhirsch, a new releaser for remeda since your current version.
Sourced from jest-environment-jsdom's releases.
30.1.2
Fixes
[jest-snapshot-utils]
Correct snapshot header regexp to work with newline across OSes (#15803)30.1.1
Fixes
[jest-snapshot-utils]
Fix deprecated goo.gl snapshot warning not handling Windows end-of-line sequences (#15800)30.1.0
Features
[jest-leak-detector]
Configurable GC aggressiveness regarding to V8 heap snapshot generation (#15793)[jest-runtime]
Reduce redundant ReferenceError messages[jest-core]
Include test modules that failed to load when --onlyFailures is activeFixes
- `[jest-snapshot-utils] Fix deprecated goo.gl snapshot guide link not getting replaced with fully canonical URL (#15787)
[jest-circus]
Fixit.concurrent
not working withdescribe.skip
(#15765)[jest-snapshot]
Fix mangled inline snapshot updates when used with Prettier 3 and CRLF line endings[jest-runtime]
Importing from@jest/globals
in more than one file no longer breaks relative paths (#15772)Chore
[expect]
Update docblock fortoContain()
to display info on substring check (#15789)30.0.2
What's Changed
Fixes
[jest-matcher-utils]
Make 'deepCyclicCopyObject' safer by setting descriptors to a null-prototype object (#15689)[jest-util]
Make garbage collection protection property writable (#15689)Full Changelog: https://github.com/jestjs/jest/blob/main/CHANGELOG.md
Jest 30.0.1
What's Changed
Features
[jest-resolver]
Implement thedefaultAsyncResolver
(#15679)Fixes
... (truncated)
Sourced from jest-environment-jsdom's changelog.
30.1.2
Fixes
[jest-snapshot-utils]
Correct snapshot header regexp to work with newline across OSes (#15803)30.1.1
Fixes
[jest-snapshot-utils]
Fix deprecated goo.gl snapshot warning not handling Windows end-of-line sequences (#15800)30.1.0
Features
[jest-leak-detector]
Configurable GC aggressiveness regarding to V8 heap snapshot generation (#15793)[jest-runtime]
Reduce redundant ReferenceError messages[jest-core]
Include test modules that failed to load when --onlyFailures is activeFixes
[jest-snapshot-utils]
Fix deprecated goo.gl snapshot guide link not getting replaced with fully canonical URL (#15787)[jest-circus]
Fixit.concurrent
not working withdescribe.skip
(#15765)[jest-snapshot]
Fix mangled inline snapshot updates when used with Prettier 3 and CRLF line endings[jest-runtime]
Importing from@jest/globals
in more than one file no longer breaks relative paths (#15772)Chore
[expect]
Update docblock fortoContain()
to display info on substring check (#15789)30.0.5
Features
[jest-config]
AllowtestMatch
to take a string value[jest-worker]
LetworkerIdleMemoryLimit
accept 0 to always restart worker child processesFixes
[expect]
Fixbigint
error (#15702)30.0.4
Features
[expect]
TheInverse
type is now exported (#15714)[expect]
feat: supportasync functions
intoBe
(#15704)Fixes
... (truncated)
?aHm=NBQSA*e6o)}0x}Bns2DM~m28}-~puqy$-idt3Cwl3;R|X?WHN8{^ z7Nb*7qB^J5HcqCb@NX67+Xl`F^Q~4#S#GMBL81BDz<|B;73w!{ch&^OD2g6~)yA>O z<}DjXyGrSv(-^YOx%6&GkK^20={{;uFSytF_3F7Ce4GD3^3xe2g)vO#FaE z*)r7lYUI8nXu|Oq3f|-ShjHl(rjYGOox3xLg(m-1 ?sZ78WG(t|#1*32 z{~dUPHt@4rmxfaUk@z92z99Tiv6|>U(U9r*BS9so (K}UvZHn*~3}RzUm3U!<(4qqnbF6 z?Q9sK12v*yjl71fiKy&kyQRo0C?iSiWooIFn#3Th0WXpWwIH_2sWJ!KT}^lqqQ)0H zKmI`RjcyxRf_6AbLxAn;iM#;kH{PdhcCmm&^CMY55xeFcoX9yWWy=mOp5u-y)Y(o4 z$%o=-;NnxQ3Z%9q=8rJSQpmZMAGr+iqdoWQ=bgb*I0`A;!Aq0n$bm1KKC2h@50d}z z8N-}FW!?!NHYmIM=?rAb2I^!=G<-}L?p!2%=mdHY=LQw&eJ^sBtjCd% A3VSEnL5B<7LB$j zr9S5Bark%x8BGgnvBj2yR?HIBu_)bcTf*?c1TuCnAZ&)}R#4kQ{q_DwW1(eF=eRHc zKMi{T01>)YGn_GzLWIolbJ9*Xq)mok%QVDm?37plMthcIni0;SNIK*Q~|7C3Poo zi0;#O{0h~za{i8tw${3R(RwNy_sOR0= W0dz{8l$ )g0W|A?(S@Rsay`|LeiaQ_XtiT4y)7* zT~ 4=&*7e_>LB}bh6oZ$$Ibh22y64rDu(2?t1yv-qWYO_SzL@788hD~ zM2TNkRqWO2;}Ft9UhwJS*A{A#m3WX7#JEF1e};GfQ>WZLlrukg@)v7otzVa7->=RA zAJMb~sS2~$7cv=JWDN#GSt1V6Lpkfn-L1=toq$3LgpcPK11}Vx5`?{rj;Yr(R?=5x zPz_Li_g%z)y~EWpX^$lNc1e;rLh8Bv*b3_(o~yfr919Hm1Ei!&o=4+ANtPlTsTI z&}dcr>!S`>_OP)bT^33`XXh&R1u8*4Aj#_+Ly74tn1@HDNK?sWv=3!$g11kDb_WOf zL|7J};pN_6${xkpKd;)Wi|8&`%37Jww@;_>3oRq$2R+j6(_%Q}p%AGstc8d=GZHzJ z;Frdn?}B3ztx@K3DajFFfN$CMj9HTsj0|z2NEbp60bYlW^Pxeb`+kLNuvxM;Qghot zZATj3{r-Bl9yAk)6j;>T(wnvb*V-FH&AVlGI$KcVEQDNQ{x*)?xiK3A9&qQS9SGc# z^YsHpqeL<(2VMFE zXJBhT+2i 28@&S|0mp2L(hMW;)a6;=c)T&jv+8SLQ%!u=^NlZ9}iG zHM~H(btIgG)^R%X)^YWFPv$0gt}g50jL}dV n>_e}c(V!;R)cu!S2J8cKNT{^wf3pRupPq%J93)4X!-MI1T$#c`{^Kr1 z2+*>{3e@S5DRzHS6;j{X^WFdg*(hQN$(7C_u!@rPA*4&`X7Dq;!L`ZMKU54Xef$Q< z12ONx`V;K|St%2yMcZs;&neDp5c}FeP%*}+BRw~rZTUVjyKJ0NrUZ&q^Gt6Y7fbz% zn%Cy_=3JRz1JKUto`bLI&C9m7X3Si@0OV#2tov|}2B-R(GVg8m$HW)VC`7hfpVpo8 zcE~(Ob_#`iPWbi+o9jz}?l(pK8-}poRWo-;_t%Gj_|l*C$p%TgUB48?DMrD5iOxIx zW$caUv9Cn! z0ciD!mo#$eb^#pfgVH7>`i6DTeyKsw*4@i(!JuKlqqCk)(n+KSs*}K7y@P^?UTQ$L z&m4BcZH6=`RLUR3Oz@wJ@vv-m5IWQbd4P32D~hYyLvUxo7m?U1gmpXAZCN(1qOj5Q zcbnn2w*xt@B*CCUCUo{ad GH}@!i8B^8A z{!bo R|vtKKpOx={gDvcUsD4tMuNMIU?fqZ=~_5-hm}8mh8If#IWO_F z(ijfV2WIko5rrbG55;HXxQ0Q~-y=0Jm-1X~5v8O^{JFuK+`T+}VLMGeMd22yg!p-G z1Bz?9_xLu(V~{pp3HC|Yj5eB$>6%1YpdHi{rZ=B#tkk-+LJnXYk|xag1MZy#`ow4M zY|g+lDuH$1{|tjhN>Bx>09%L_fiTp23VaV`caK3uT%XPljK}1^J(#>Eh*DDx7k5_j z%If(d?>vzQL*GBAK6XfS@^%Z?ts!}a>g}ovgrw^5q{u5_PNd6dJ)B?}h@lD=(VX%# zD%=3Ytio~-YNL+HmX5Ov?5l#&yJLT$st^W4Van8`ZQ$PoNKS;z1JU~0kb%wLLwOLF z_X5Ga8dL_O+}9ZRNRXMhTIAyjYG~Hnzl5O;!R#^Zk>{z8+rU{jE}CddQB0fK*L2;w z46*W|2_gG+m>|jro>y-HLNpc7*7icrNDu|hGX?o-i1kv|^+USbcoHfH^M{WI(MWn- z7}|@|W|cB`PJ9G8FM^aH5{GF<0>Yz6CQqH%#zn~M=^RRxb(1i(rFdKdN33EFa7lDd z3Hu!nzvsuODNyvDOKA;_zQC7guJVSZssYT^;Q0|bX)3avGge2_EXsc?L1Nda_ZbHP z52=cjN3RByJ>zu)0w)Sgcwi{e6dQzgmA`ycP&L7kYGs%i^u|WHbG+dtbb=wXtD)HL z7MH;IoMZku-tmoZ@h#BL^@IiYW`B;gxO(ac2{5SrNJ@yP0SJk?NIeCLXE-$pnq2fe zzipv*cNcAE?S;zIk@m)SKgk&g{#$0XgT^EqSDY@SEkXxvm`-V7-^(RKl8bX{=#@3A z@MkQ{!0JzfUf{qQ*7dG|8mWe;O=VfWL`WP8A;;ndUG8~L&bS>qLcjYw21R$e7ePhh zv rs z66JmyYX9Y%|L=|z0)qb^E_A8i?cYUxNa!Ji_J1I)7^*6FXdf_csPD8tK*D$p^;y@| z41}pV(2SbERok0se(y |g1 zQ+QxDfPzI8UsoOge3uGbCoeP|en0|^1)y ?4wDbJH^*ot-(EoKgh}NVudyc*5L%oh3-*#o6?e>D!6 4tcu!-%~;^N%z*m~~|dClbLw=0bz9(@!QW z-dI#uds7BUBJkj{3hk|a%h4epWtn}bZF|_EzbOXnHC=NETUJ5nJ4Ok``HTx;);KG& zWy2Xbzn6mG-Y+MRxz4yy%EZBeE^L_
JvK!8%huaBn~0zg%uhFjoJ{_h7UbIkTd`+wK1D(U3h@82$ZdH=TuVjs64i4Qjn zoXHE^g_JG}C`jft3<<5`p}+rP%76Kb`?MkIZ{+AFa=?g#m=h?qmdr>lhZ&FK799mB z_Yb{`0>v4T_QCG5wH6G6Fi0p}K!V|iho7^otpSNvA;A=650>)Fzg`H1yF~Hauj50C z+cO2CngHV&!A&%iiY;&!wBX*8JvjCLIgQF=eXN7W9O(R$sU-#y@1;>Hn-8{`Igp2H zFcZ~fN*Hb!f_GxcjBaWeOHP4^2MQTiqT~z`jh3c5*bvFohbF(02cwraA-y?dTehjb zccl*CkZO1}6hLlYf+=|p-3_7yp=J`p-&@y}ai)}Mf2Cy3?33kxn!te#MjaZQ2wz|x zY!G$vb}#qC-f0DaKbke}TS7xPZ#A4wYIG4uF>F%g=$)3UMn|l=tZb?IZo%X_7)U3P zoQwhfsF2yI8(Il`5rdLlJ+QGdkrL4oztj0^xfmrc_1XUFE4pdx#xCe&e@k4RXt|8W zX1@b-vup%7*I$9y{_-XMVP{y9YRH400t~5>ZV$uSxL^=AVE^a_x}u?V%QnP)#MsO6 z;0}fwBQ*OPvJp%wa`)J71K}A082A$9ej)yvhAv9U(uv)SZAp-BoW(VO?So7#C74Ud z4mxC#( USu?+Av(jq|8eZ z0wk#V^Krqjv=)Hhm&Lp(aD)+YbA`#tj9rlPhAAR%sKmFSRK|eh(AipSZ}3ds2`~~G zzN& Dw3o$| z>LNR{bVvkUL4#BgjcrzwG5ffnXK^lc(!1*8B+WGi{q<8ooNFE|!OXd@j>#?xOu`^X zXYCL+R1pE%I3wgTK>5#nG!qQ@*rSwO%!pIlflHb-X4|~N2|(Vs+YlN>yKOAj(sbuF zG~1ur4^!2gS-bIik99|&5WI#rU)(jqmh(-79dbCG?Xux86(q ea{MX0y zrZ$}}_?e_Z25e$96@Z)*1@9iiN$Kj;ocY4+FfYWToYJE7`e zXR6SA=*h%;{ABFmh2}#z^mE{cjwI)7rf2)pyp=w{%rL)qiAK2$@mu#tHt@=CAo&Xh zoxHUQQRRYC(I_IA>|cHx`=JBm|HTxWSfRLt2#4gZ^~0nT80ZwuRJE}-v2MY90zkZ& z|GMOhyhUVrs_7VAi+u<;S?!J5pVvnb_D|OJpi^|#1|Nf*CG(BMGf%EEFi(QPStF8V zxY!AnG!VxCLR_2yM1$UqcqKI3U=0n{CwS9HJdOPs>X;f!<&N&%69v_U9a)1piQimw z6q;SaH<~ct{PC4q8IfIRVp^}9$j5G+8lGZ7zwiBh_gKg`x_+Yg5O z8kk%uESt!g0V=LGzjr^4TVYGiu^@EvWz3r?DHbITNRDU%>1IlFa_|_N9=0D~{kll^ z>q5UM^W@sibOydrRN}}VFGGgDm0m~}1aNbt%)?I(Cycun!N+Ylg bbpNfB0;>0q vYc7gz@7^I0@U=mD =Aaj0-+pc%!BbajM{bdL^7-U)C@C`R@_@;>uVtc0n7H`^9xHh z-yl14&M}c<|G}eJ=ZfO5_#;QQ;l|KwzrP%d;qg(FeeZ^-n8s3oITc8inX;jR`iE-A zO>HjlK$wLlp{=oqZzHQJ6~uLRP %Ng1Fc{sd%GKYoqtip(upNV^ %-y8A%&-{H8N;Q5h_G zJy+q03jA2d;1o0-tVH?Wp8f?C2yW(TvO|_PszhSkOsg)}eG#=lcalW6**1$`ChKXy z=vxCsCSSf}Wls%!94>`g7OlbFkUu}DjRubqyn?G9oQ;E6)h#*@L?>va-NzZ(Z~F{4 zV6{gWi@-0qovm9RO@;2UgYaTY=<^OJh3>ROQpaiIuiGPh+ywVYeShRHnRR`w4+_;K zd(9L353OIksxF&f4G(hCdO11@`YxyKn>)mU;xkO~pbc|%or^`q9W@;uWrZ%? O9oIY0`)gfn?cuXSQA{#NazUMkXX*pfL;Y$$h#&K(XrFfr9vKH4HZa z9B4!M?KJ}St9OCdv`iBU*&oV*1VLs#5GE~jc>#VJ?3pp 0(n`@Wrq6OZwo!W?o z5S^efEBA-4EEHoS-?~>OUjuy39LBJG*Yi$y8;k;wfl01{Qf5t{Bc<+&v%R`ILj^He zl;pN`W^e-|WHtrg0|6}>G_{vI(ww;iY%3YBrcyRxe;&QUsH^*u&YJg9R6DX`5K)*t ztODJmHqmTiCLbNXm2b)qn9_2v2yen$1@H#Ufwl9HRpnIxD8_{-ONPQ%pW6T*o2`gd zfj)&X;YL3n(8TA`IfvH!w?~eZO0YGFuky>ze=!S(P`WuXNC%bdMWRq~nHDevolZ}6 z6qHk6q*woxU|T~Mxn$Yww8JC%_sZ6v+GvuY1|_$kHXV`$C_$|RQGwktGbF~7Tj1P3 z|9qMsYho-lD2EDut~EHC9O!BT=GSzM{0kTvT)7>p%qVu2(n|-U4?APFkW3H+b0fRw za&QT9K^&VDLz)ZkHu4X%JFU&%fPv>9kZ`Dz-+}06gw755$%`(V;R$+I9F`|>DSbKh z4at!Pe{Y*gvH)~P7kfV1-8N&;XI!pDGihWT!R~X|M0sML5PvH*=HbqWCACI?;qR6` zz!wQKDZm)p0y@-n?g5KL!=xn1OcnJ>0X-?Ko4lb}o@wu>lIfQ>=atW?S~sr-i`1YM zb*mZBSVaFXHU`m}-N@%*%^sF0L%2fM3>n5N2*apZ!`)uoXfitS_{68YC8D;aH{YS^ zMV2I8DdEmL0Vvx!R|kPVZ=8LH_<1mRLrM&;N+M-5494#|yRYsOJ-43<{j2JN=#0S2 zwZzQ;Uuf^+CVaLvc--{`{QkW`O+!(yW-kxZ;)N>a507ln+|m~#NGbWCI3%8p99@=y z9Jx$@p}MOIl%bfYB}l!FG8Unc&nHq~SaleCL?7cBj|zr&sRd>WT=WE~PL>oiU}ljc z{fov!6Qx^WcwE24Lv{lmAh6nSd&S=T n?aI(v;WCTa zFL+Nrw!iOo_d+YrGQq0_IF_lNLbp}5SH}*0OGUGN3!oiU^@A3#woD3`-BG-II`&*T zh6bld{8YkO$YEX08U_*GEK{PiD+-*NgMp*KE6oTrWfKBt8>Z=?G~bxb9~xC+_4FQj z>%Ou7p3d))cYQ1D3)v7uCjQhAnk{u0q=*S<7FCY3yOQ$1ID7ASto#0bTy?1{uF_R# ziI$A4l!~ZSDrB#05kgXgkP&HU+nX{^Gvg$?L0P5Dj8cT`?9KOhsr#<(>%Kpa-{aRG zS9Cc~@ALhBy`JNE9>?(_h6 *$zTNCbC2xkB z;APiTemD9_KiW*?7)S^%VAA+{$HunR2*a|>S{G5At7u~8n;c?rycD^C$quY MNV&x; 3Z1_vTb$*ci}Gr%C*PE6W!RFlc9QXbG{2-D}GWAHNInma*XV;ICCYs`^3%5IENv! z g8B6yif z1vWV=v3yHP#jSTvTD?MOE7zYK?tX14q`w~P`*3Sk8^GF3+OjVJXl~;}4p5!Z&t)}A z*l`~fsNrucUn$M=ApUHZbg889SdI`{V$H(uyfr|P?R}bY^me7|wZ_Y=#M~2JHJbuW zq#Ba082ML?+6K69En#Jxotwoq8C@~0;VLSd&$TX<-)G+PE`*g#b{Y|An2y*~SzapM zCswF>gV;!7q)8RA+tN)0yyvIBuN#+_7n+4=^+;WqRoaJVO V~8+H z1}zA!t*^}-xrmmU{C3cX $cd2PlV!CT;~6C%eV*w>|mYWI97kUACX@c3HH%xUVkL zym7a$x>3M;qagE^8(Z$)AY5PK4cfFx%lkT`_b?j2LSoQDlHyqaDk;^9(nX**u@Mef zXw31cu7v1e#}1;c;3ONU_6QtmEd6>xhDx#|B@fGsmxQC)WDX2$;t?MK3 )_yXW<^~0LP+lBd)Z(pwk_R2d<;Wem1Ee;5 bC># z6B 7;<>3Lf&+WI4GV^;OODA79e;M1t0`8VRJXgB+h(;n z2!Kg8g@pPWpv`MQ3cCv`4p$Ca0f1 a?ZH>YrR_P3<=zz&F-W!k1^tHMARQs8a7& z(<>YoP*J@74e0hMxc)rigFc)eJj^W9vMA$w*l|uHIima_nwSp~7&BRAJ;~fIli!n1 z_+m5^w|Zpqi|oH9D$kR zm%Yf~|x?7fWNnXP((a4qI zFPl4h2t<(t4L*;65%fzEi9ye&;xJd)H?`kseR &b)OPx?zMq4+G>eGH?Y5`+| zl2J~m7;v(BUmnJB!hZ!}tx|`2QO`=KUniGw@WT+l1Nl3G)DEW^=%Y;_qpH_5!{tu! zC{y5zoz*RQMGoW(v%LM6-lO*Jxsv71tieglT~9)S-vTm%6%kAmApsGW^#EF{UvJxe zIBdV;ytxz^r#dY9LbfoLs)e{U;d`)~v3 *mOrLs*KsG!s2P3T?GCD*JNtdtTpg@qEXTu&MwIeBT<}~Zq(W;aq2f$0_b!t z-E&PZibP9{nzYQbhCQ=&n=q@XS?m{O97MLyqxAW`80)ZXPWKpj&~bK`5 sn{IY%q!6bS%-*K&or8#iy@(A4Sd^k!Mzy(a`%c<{6vsR>|PXPD>d~Q zP=b-5`3Qrltd8|$?=}8_s+DUU>xeK-*kAi(6(IW%v)PNuncH68V`CfH J zq ORg3e#iS zM14KFFuSV>E$;vT4Wl_{qyjZfCzJ?xP>wJ~-641W;D_%zm2bL) 8 zuvP|mkrCNzdYlLkdLGtWI(_ GJ9^8j#i}a>318gh#w;kNq za+|H`4ozW(5D`plQ%Hh2J6VJ|U@Mt)!P|E$87&ge3No*$udst^Y^VASO_(D|y|;u= zdsLCl^A%*WEs YB} z<9ua=yVUm47BG;Zl{ rg75`5G|HL2Rx=mgZb8??(UM8c!qsPv~I)b8;i&WI}m7?#vZYEBdgJQgKZxlPZA z)|jC4oYC2rI@Pkqa(wjg@NW|`of?@zrhc4Ehwo2hgCLhyKm3AFIuS>bgy#AAF1O$O zz|5tdc*Q@$%qXi=7FrJCl6>Y2ILWRj&!!Zm?qQV;5R5uALY5zGp3jdQ9D5?_Nq+ PN+5WAA6aZ3GAW}r%7aZS%*^q*H0A99zZ2zmCJFH?NYFQYxwj~WABitp#6A!Nb zG3_9@5#j+8kgln vtfyU6RQvr$D2lgOv*ft{V%Pxz;*dZxYM@tIYX`8 zZhy-niqKRH2=NX> v7egdq{)gYu{8PfWY>5sw*f<|Gjv~ll?shDmiNCT%Ytm})2kRiSY z*pN>3+c1I^5%8SYQ*@j}kh~zFu7fmS=|dtQ)o}0+d-kG_q3Z&38>_G&gLB^GPC0BE zbZVx~yeZ3SPGm$DH}6X&*hwuzO*J-;nP@*c(Unx6&@pvPcTBbCr}y#&{{lZzoP>z& z4IX=#Bx*5`s0@n*6++s= WJpH}beQf{vUJqrCRx?ZA^q({YnChQ z3of%}3&sn#6;E20uv__{5NwQFwmb*awN@~*@8~yR?^-Td8r5$ k^(LC1^S-=Z|S3P|goXVN0Wb~rdHhA?W8RukmWn<5`ka?a;#tu`EGm O_`HxafC4%ioP04nShaqk^JLPlACG;wSOuo!4dJ!@ZhE4->lZgYz~U z4tkf7BkSF+bn>PWK$is(nGngw>k4Ll9Mn6PdDyW9{z!)FDje$=RXug$yj~%ut{_hP zM0J$qc8P$6?mSWF@1Wm%Nia#`+h@bJ>mFllDjZ~v>U4&7!xY?~b_>~HP5= (#d<42g?q<(TpuiL{1@_+TpKP)h(CW^Nx> z?ZM;S``n$Qtb_Zm#Ei^fq}6_|naITN$E34jV-FB0JdNhj@RVrfZfn#`U!2ye0$;*z z1yK1VuA4yO&r1}8l*TIvc@dRFfwK^Ti?%`%;e+t-P)=4sf8ea*+%Pso?ATI`ISH$> zesN4x0m|?a1#Y{7p>%V8%qa(O$Ari%TivPSp6K9liP0RNa3K4%BVL_rgGu#Aw90Gt zoYSH{)a$GdX`bn`try`LcDI@%oJ?AGo>^6Z {jg5)M^= z>isZAMo(YALxz>!hm45R9M3R(enF}xl{yJ6Ssiu&`%@`N#0gAYK!FwJ5BkhT^LWT6 z`OeS*QpejiT{xClS05Z{ehM|y8x 0GaTAR?UGhRoH_%;Xtg5>!#_P(`Wt%Ei6 z0_(|SGikDtK1R{OI0iM^y8`FAGq+XM4Sjf?a^1t6X9vCF ymW1PJ4)F+AKoL`Ce;ZM(hmlK-K|!BH`j# O#s2MZMx O|GwT zB1DG40?=1N^PB+{clZdRPntlAsN#4%p2CKaO^zLuW*(|#zwLH$I!X?iEnrWTPu|QW zDE7SQCHuZ>VFvad0T}2)Z6W()H<|CT<;MbRU(5rg+_Lr&=2)_pJ~M5+`PEwXPj==x zrUURA`S8Q8Dg1VS4w+sM?!1IBAptNeS7F@ss3wcJ(f|%+Et($_pd!(!7SW`dG8NgN zreK^&Qwt;(g0?Pi5&pCXM|WK$6bckPQL)y96_5f&>X8(47;upE5li3J)UWD6hBw3s znbUS&l0HQ2Q|YDWtB-YyzfYxvN#TqEXiQUEm8O0HY8TH8$|h-s01HsE|1B&DFUN$D zCYCrW!!MhyE!MXGBbn?mvL|rSF8=@<1#(UdX9m2@BoI$L6zd4YfeFVcMol34t)#zR zn7uASW_SHooVNnM9=t@&(>y9g7?KDw9g(1Hr>&Vm=~A-rv(&)K$Bds;R}<8TkvLWb zlgRRhG*YfFs=+@ncAU?oyEcAbX>^xvS=jq0`&$g~+S(nkNFf4PhvO4~V`8h?zB9OJ zd>opE-1SJMsr~^d)-B645EqOdN}+R$yRd RY8AqNAK|nXo_C-YG$)=H BRMnqq*@r&N_-slEHS|^A zCS^!uj6|46e~){9i4h%(Kdo<6exlaAY|e*&>yh~n^sjNZr3S&R?>SE!C^WZd_K|TQ zaedT>Y=?R=-qE%fbLEJ$VS+CQ3`x8M45qMydYx=kpj!{0Sn>LJz#8M(eh`X`M8 z- 3S=gYGxl0#f%Dvks(*?n7S*?mFPuw7I9}i z3C6T^>TN=V0@}ky4v%7fBD9a|4 lHp>L$)og%^; zBblBI<%9wYAQK^!Fhg w-Vqf?hi{wncP>6 $t6;r-`G?MjTPlZi87M7Z+BJ{(`Lz%=qI&pI^M12Y>VeGQK-kDzg z7?A*s){`2=+K>o*NGC?deeYrR_XvY=NQG&&H^59x{m*ykN7MX-=Z$)UIn0+3A{z=O z5m`8M@ca=69f*P^SNRzd7=eZyAf+46{rG6oj_`zYyGIad*Zh2CfqrKW_e;mQmz#UX z2w{WS+uK%Cda4)LFcT49P#YCf#_kL|#+;|7YZDWF^)S!pRK-u~DLz&Onq2dueKsPb zNOOwaed_84k&DHyNwUBrAEon}zv4>ZC$LNeXW9J0IHkwD5OL!s&&_}5(}AJ>T{5?E zSTl-wZ+SGtfqO}nK&G&%Tw 4O0s7-cMa(Ri(-I{jtzU zokDaRKnY{SUnVJjlwf?!qPqw=5vEhjlO$@MC2pU@c!UTFV12A5c||cw5Wp&-Hm2^5 z8jYm6Uww^;D|0eM_K~9j7beB+gwg(9=;TeC@)--gTmwlsoHJZ%F(M`oGD=Zg9Zs2w zWQI+AGUvU;^Y_v+IiY