From 7c827b7688cc1b33c19f9da01c9a9eaa44633e4f Mon Sep 17 00:00:00 2001 From: TaprootFreakAI <315477232+TaprootFreakAI@users.noreply.github.com> Date: Tue, 15 Sep 2026 12:36:22 +0200 Subject: [PATCH 01/23] Disclose whole-REALU rounding on OpenCryptoPay pay Every payment rounds up to whole REALU shares because there are no fractional shares. The intro and confirm screens state that leftover ZCHF stays in the wallet. Invalid swap quotes no longer look payable, and Pay re-enables after the process route pops. Handbook spec-81 documents the confirm-screen notice (slots 291-293). --- .github/workflows/handbook-build-check.yaml | 13 +-- CONTRIBUTING.md | 2 +- assets/languages/strings_de.arb | 3 +- assets/languages/strings_en.arb | 3 +- docs/handbook/README.md | 2 +- docs/handbook/de/index.html | 98 ++++++++++++++++++- docs/screens.md | 2 +- docs/visual-regression-tests.md | 4 +- .../pay/cubits/pay_quote/pay_quote_cubit.dart | 22 ++++- lib/screens/pay/pay_quote_page.dart | 12 ++- scripts/assemble-handbook-screenshots.sh | 7 +- test/screens/pay/pay_info_page_test.dart | 4 + test/screens/pay/pay_quote_cubit_test.dart | 57 ++++++++++- test/screens/pay/pay_quote_page_test.dart | 25 +++++ 14 files changed, 232 insertions(+), 22 deletions(-) diff --git a/.github/workflows/handbook-build-check.yaml b/.github/workflows/handbook-build-check.yaml index 89c0547d7..31d752a01 100644 --- a/.github/workflows/handbook-build-check.yaml +++ b/.github/workflows/handbook-build-check.yaml @@ -96,8 +96,8 @@ jobs: set -euo pipefail bash scripts/assemble-handbook-screenshots.sh /tmp/handbook-shots count=$(ls -1 /tmp/handbook-shots/*.png | wc -l | tr -d ' ') - if [ "$count" != "301" ]; then - echo "expected 301 screenshots, got $count" >&2 + if [ "$count" != "304" ]; then + echo "expected 304 screenshots, got $count" >&2 exit 1 fi @@ -177,10 +177,11 @@ jobs: exit 1 fi - # Spot-check handbook screenshots assembled from Goldens (301 PNGs). - # Mix of original 01-61 slots, later Golden batches, and referral - # baselines so a regression in any range surfaces here. - for name in 01-welcome 11-dashboard 26-terms 35-dashboard-with-balance 46-buy-kyc-required 52-sell-unknown-error 53-buy-payment-details 61-kyc-registration-tax-tin-error 62-welcome-page-android 219-settings-security-page-default 268-phone-number-field-default 269-dashboard-insider-unlocked 270-handbook-persona-dca 275-handbook-persona-exit-1j 276-referral-overview 282-referral-payout-row 283-referral-terms-readonly 287-kyc-registration-referral-recognized 288-transaction-history-referral-payout 289-dashboard-referral-entry-and-payout 290-kyc-registration-referral-promo 291-referral-bind-error-invalid 292-referral-bind-error-already-registered; do + # Spot-check handbook screenshots assembled from Goldens (304 PNGs). + # Mix of original 01-61 slots, later Golden batches, referral + # baselines, bind-error overlays, and pay whole-share rounding so a + # regression in any range surfaces here. + for name in 01-welcome 11-dashboard 26-terms 35-dashboard-with-balance 46-buy-kyc-required 52-sell-unknown-error 53-buy-payment-details 61-kyc-registration-tax-tin-error 62-welcome-page-android 219-settings-security-page-default 268-phone-number-field-default 269-dashboard-insider-unlocked 270-handbook-persona-dca 275-handbook-persona-exit-1j 276-referral-overview 282-referral-payout-row 283-referral-terms-readonly 287-kyc-registration-referral-recognized 288-transaction-history-referral-payout 289-dashboard-referral-entry-and-payout 290-kyc-registration-referral-promo 291-referral-bind-error-invalid 292-referral-bind-error-already-registered 293-pay-info 294-pay-quote-ready 295-pay-quote-ready-merchant; do # Auth is checked before the file exists: a missing PNG also # returns 401, so HTTP status cannot prove assembly. Look on disk. if ! docker exec handbook test -f "/usr/share/nginx/html/screenshots/${name}.png"; then diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 58765c8ca..9d3fd5699 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -248,7 +248,7 @@ The app supports three wallet modes (`software`, `bitbox`, `debug`) with differe ```bash rg "^//\s*@no-integration-test:" lib/ ``` -- Visual-regression Goldens under `test/goldens/screens/` and `test/goldens/widgets/` are also the source of the 301 screenshots served at `handbook.realunit.app`. When you add a handbook page, you MUST add a matching Golden test AND a row in the mapping table at `scripts/assemble-handbook-screenshots.sh` — the handbook will not pick up a Maestro-captured PNG anymore. The `Handbook Build Check` workflow on every PR runs the assembly script and fails loudly if a mapped Golden is missing. +- Visual-regression Goldens under `test/goldens/screens/` and `test/goldens/widgets/` are also the source of the 304 screenshots served at `handbook.realunit.app`. When you add a handbook page, you MUST add a matching Golden test AND a row in the mapping table at `scripts/assemble-handbook-screenshots.sh` — the handbook will not pick up a Maestro-captured PNG anymore. The `Handbook Build Check` workflow on every PR runs the assembly script and fails loudly if a mapped Golden is missing. - Why: single source of truth — a UI regression that breaks a Golden also breaks the handbook image before either ships; eliminates the previous "two pipelines, two truths" problem. - See: [`docs/visual-regression-tests.md`](docs/visual-regression-tests.md) section "Handbook screenshots are sourced from Goldens". diff --git a/assets/languages/strings_de.arb b/assets/languages/strings_de.arb index 36da5d176..1b424ab31 100644 --- a/assets/languages/strings_de.arb +++ b/assets/languages/strings_de.arb @@ -186,7 +186,7 @@ "payFailureQuoteExpired": "Das Zahlungsangebot ist abgelaufen. Bitte scannen Sie den Code erneut.", "payFailureSignatureUnsupported": "Diese Wallet kann keine Transaktionen signieren. Wechseln Sie zu einer Software- oder BitBox-Wallet.", "payFailureTitle": "Zahlung fehlgeschlagen", - "payInfoBody": "Die Bezahlfunktion kann an allen OpenCryptoPay-Standorten genutzt werden.\n\nDer Tausch erfolgt in zwei Schritten. Zuerst wird REALU in ZCHF getauscht. ZCHF ist ein CHF-Stablecoin, der anschliessend an den Zahlungsempfänger übertragen wird.\n\nREALU ist ein Wertpapier und wird nicht für die Bezahlung selbst verwendet.", + "payInfoBody": "Die Bezahlfunktion kann an allen OpenCryptoPay-Standorten genutzt werden.\n\nDer Tausch erfolgt in zwei Schritten. Zuerst wird REALU in ZCHF getauscht. ZCHF ist ein CHF-Stablecoin, der anschliessend an den Zahlungsempfänger übertragen wird.\n\nREALU ist ein Wertpapier und wird nicht für die Bezahlung selbst verwendet.\n\nBei jeder Zahlung wird auf ganze REALU-Anteile aufgerundet, weil es keine halben REALU gibt. Ein allfälliger ZCHF-Rest bleibt in Ihrer Wallet.", "payInfoTitle": "Bevor Sie bezahlen", "paymentInformationFailed": "Beim Abrufen der Zahlungsinformationen ist ein Fehler aufgetreten.", "paymentInformationFailedDescription": "Bitte versuchen Sie es später erneut. Wenn der Fehler weiterhin besteht, wenden Sie sich an unseren Support.", @@ -199,6 +199,7 @@ "payQuoteRealuEstimated": "Erwarteter Erlös", "payQuoteRealuFees": "Gebühren", "payQuoteRequested": "Geforderter Betrag", + "payQuoteRoundingNotice": "Bei jeder Zahlung wird auf ganze REALU-Anteile aufgerundet, weil es keine halben REALU gibt. Restliches ZCHF bleibt in Ihrer Wallet.", "payQuoteSummary": "Sie bezahlen ${amount} ${asset}", "payQuoteTitle": "Zahlung bestätigen", "payQuoteUnavailable": "Für diesen Zahlungscode ist keine ZCHF-Zahlung verfügbar.", diff --git a/assets/languages/strings_en.arb b/assets/languages/strings_en.arb index 4d5578e31..7bae4ea47 100644 --- a/assets/languages/strings_en.arb +++ b/assets/languages/strings_en.arb @@ -186,7 +186,7 @@ "payFailureQuoteExpired": "The payment quote expired. Please scan the code again.", "payFailureSignatureUnsupported": "This wallet cannot sign transactions. Switch to a software or BitBox wallet.", "payFailureTitle": "Payment failed", - "payInfoBody": "You can use the payment function at all OpenCryptoPay locations.\n\nThe exchange happens in two steps. First, REALU is swapped for ZCHF. ZCHF is a Swiss franc stablecoin, which is then transferred to the payment recipient.\n\nREALU is a security and is not used for the payment itself.", + "payInfoBody": "You can use the payment function at all OpenCryptoPay locations.\n\nThe exchange happens in two steps. First, REALU is swapped for ZCHF. ZCHF is a Swiss franc stablecoin, which is then transferred to the payment recipient.\n\nREALU is a security and is not used for the payment itself.\n\nEvery payment is rounded up to whole REALU shares, because there are no fractional REALU. Any leftover ZCHF stays in your wallet.", "payInfoTitle": "Before you pay", "paymentInformationFailed": "An error occurred while getting the payment information.", "paymentInformationFailedDescription": "Please try again later. If the error persists, contact our support team.", @@ -199,6 +199,7 @@ "payQuoteRealuEstimated": "Estimated proceeds", "payQuoteRealuFees": "Fees", "payQuoteRequested": "Requested amount", + "payQuoteRoundingNotice": "Every payment is rounded up to whole REALU shares, because there are no fractional REALU. Leftover ZCHF stays in your wallet.", "payQuoteSummary": "You pay ${amount} ${asset}", "payQuoteTitle": "Confirm payment", "payQuoteUnavailable": "No ZCHF payment is available for this payment code.", diff --git a/docs/handbook/README.md b/docs/handbook/README.md index 2bc7b928b..82d593d62 100644 --- a/docs/handbook/README.md +++ b/docs/handbook/README.md @@ -21,7 +21,7 @@ deployten Image (`handbook.realunit.app`). ## Screenshots regenerieren -Es gibt keinen separaten Regeneration-Schritt: Die 301 Handbook-Screenshots +Es gibt keinen separaten Regeneration-Schritt: Die 304 Handbook-Screenshots sind direkt die Golden-Baselines unter `test/goldens/` (gemappt in `scripts/assemble-handbook-screenshots.sh`). Eine UI-Änderung an einer der gemappten Pages produziert beim `flutter test test/goldens` einen Diff — diff --git a/docs/handbook/de/index.html b/docs/handbook/de/index.html index e65845eb1..9b43746ff 100644 --- a/docs/handbook/de/index.html +++ b/docs/handbook/de/index.html @@ -1137,6 +1137,9 @@
- Die 301 App-Screenshots dieser Seite sind Goldens aus
+ Die 304 App-Screenshots dieser Seite sind Goldens aus
test/goldens/{screens,widgets}/<feature>/goldens/macos/<file>.png.
Welcher Golden welcher Handbook-Slot ist, definiert die Mapping-Tabelle in
scripts/assemble-handbook-screenshots.sh. Der Docker-Build
@@ -1233,7 +1236,7 @@
flutter test --update-goldens test/goldens/
auf dem self-hosted Runner (Hardware-Determinismus) → neue Baseline committen →
handbook-deploy.yaml baut das Docker-Image aus dem gepushten Branch
- und assembliert die 301 Slots aus test/goldens/ → Push auf
+ und assembliert die 304 Slots aus test/goldens/ → Push auf
staging deployt das Handbook-Image nach Produktion, via
Cloudflare Tunnel.
@@ -8419,6 +8422,95 @@ + OpenCryptoPay-Zahlungen verkaufen immer ganze REALU-Anteile — + halbe Anteile gibt es nicht. Die Bestätigungsseite («Zahlung bestätigen») + sagt das ausdrücklich. Ein allfälliger ZCHF-Rest bleibt in der Wallet. + Die Zahlungs-API rundet den Tausch auf ganze Anteile auf; die App rechnet + die Stückzahl nicht selbst. +
+ +
+ pay_info_page.png.
+
+ pay_quote_page_ready.png.
+
+ pay_quote_page_ready_with_merchant.png.
+
`
# — the relative path resolves to `docs/handbook/screenshots/NN-name.png`).
@@ -341,6 +341,11 @@ MAPPING=(
"290-kyc-registration-referral-promo=screens/kyc/goldens/macos/kyc_registration_referral_step_promo.png"
"291-referral-bind-error-invalid=screens/referral/goldens/macos/referral_bind_error_invalid.png"
"292-referral-bind-error-already-registered=screens/referral/goldens/macos/referral_bind_error_already_registered.png"
+ # 293–295: OpenCryptoPay pay whole-share rounding disclosure. No matching
+ # .maestro/handbook flow — pay is behind the insider unlock in the 01–26 chain.
+ "293-pay-info=screens/pay/goldens/macos/pay_info_page.png"
+ "294-pay-quote-ready=screens/pay/goldens/macos/pay_quote_page_ready.png"
+ "295-pay-quote-ready-merchant=screens/pay/goldens/macos/pay_quote_page_ready_with_merchant.png"
)
missing=()
diff --git a/test/screens/pay/pay_info_page_test.dart b/test/screens/pay/pay_info_page_test.dart
index edbea6c40..1c917c128 100644
--- a/test/screens/pay/pay_info_page_test.dart
+++ b/test/screens/pay/pay_info_page_test.dart
@@ -15,6 +15,10 @@ void main() {
expect(find.text(S.current.payInfoTitle), findsOneWidget);
expect(find.text(S.current.payInfoBody), findsOneWidget);
expect(find.text(S.current.next), findsOneWidget);
+ expect(
+ S.current.payInfoBody,
+ anyOf(contains('ganze REALU'), contains('whole REALU shares')),
+ );
});
testWidgets('continues to the scanner with the initial payload', (tester) async {
diff --git a/test/screens/pay/pay_quote_cubit_test.dart b/test/screens/pay/pay_quote_cubit_test.dart
index d92901741..b21e613f1 100644
--- a/test/screens/pay/pay_quote_cubit_test.dart
+++ b/test/screens/pay/pay_quote_cubit_test.dart
@@ -1,6 +1,8 @@
import 'package:bloc_test/bloc_test.dart';
+import 'package:flutter/widgets.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:mocktail/mocktail.dart';
+import 'package:realunit_wallet/generated/i18n.dart';
import 'package:realunit_wallet/packages/service/dfx/exceptions/api_exception.dart';
import 'package:realunit_wallet/packages/service/dfx/models/payment/pay/dto/lnurlp_payment_dto.dart';
import 'package:realunit_wallet/packages/service/dfx/models/payment/pay/dto/real_unit_swap_dto.dart';
@@ -42,6 +44,8 @@ SwapPaymentInfo _swap({
double amount = 5,
double estimatedAmount = 1.98,
double? feesTotal = 0.02,
+ bool isValid = true,
+ String? error,
}) {
return SwapPaymentInfo(
id: 99,
@@ -50,7 +54,8 @@ SwapPaymentInfo _swap({
targetAsset: 'ZCHF',
ethBalance: 1.0,
requiredGasEth: 0.001,
- isValid: true,
+ isValid: isValid,
+ error: error,
feesTotal: feesTotal,
);
}
@@ -58,8 +63,9 @@ SwapPaymentInfo _swap({
void main() {
late _MockPayService payService;
- setUpAll(() {
+ setUpAll(() async {
registerFallbackValue(const RealUnitSwapDto.fromTargetAmount(1));
+ await S.delegate.load(const Locale('de'));
});
setUp(() {
@@ -141,6 +147,53 @@ void main() {
expect: () => [isA({TbzN>JZlam;m!wHfg zx@}h){cdhvLB3X1FXjVp7%CsA)Pa{8WVL+I9aRruE)?w z4LUE TD`XiC)VR9V^JK9g5K0zP?D=Us2g@shVQ<*U# zOx8E{w+FN|G)N2$dTW3G`VT}A4Vt~3n3zZ!GF;4psjaJ<$o ETt=tO2G3h44d+~_BL{~lsCma2q{Y%!F;7*(uRf@H#&tMM_fd1CzIyk2xn z%!l>i7?J+|e(3;{`N=#`fQ8a{oS7~XvP7;~3&w=N0<9;s&dMtadc41;rDuhhTbOx2 z8qBb~`1 ^3@B7&!34zpX{SJ27dqGY^BmIOT ze1COV 54$Y}YD^g8#(JpXV#XTWtJ=G>M zu?#A3aWrZoHd6~=Y>Ib(OhKZ8W=`oi8l$IfSjX$oP=xgrF$s{5+;C1%$))2v(|D;9 z+>wXgWm?ZyLstn%XNL1b7%pw?x+ziLzrTV&gG}IN%%D*Sp|@7X%(y>Nobg`YexXgr z;@$L&TFc)O>7+?>OUF6N%|_=RYkP6DpjJvW3NIBoQ9^`bDCGXZC=^5r=D3G%-8^u= z j*XcVDJ(ccb+qdIgT$RQ8|vX8&;#l;*!5(?zFyzk z3&VU)hd@AVOS=88QrRALWcqS&QM1&hTBK~hRQ)a-hrvH3CFSAERPFARQj5zWL0pwp zL%F>}6R833+{{eh9|z-8m9&iB7b?CmhPJkmY9$)Rhso@2w`X~L>Dl;;yO&2(@L*t_ z!^5v3OrQQCB&MXm6kQ|N*1cZ)Gm+Dn;vuRDR-jsmI+m@uq@?8V Ke!w z2zPG-cRS< I6SO?z ?IrwIyxdQ z^8dW~KR4um7Q_Dp!vAE3|K6 m_%k{m*K_!iI#`;h=X@uUo$*huhi1;Uzc2PRZ0&EuH^3jQdJ_+ZMO6?l5etaO z%KnaGkdB{>WNr7M9;kUn8ad|gp%~FN-J5N*!g&xl*NCMxd+& 9Kv! zBlu*!lvIbu8~Y)D{%9snmws?vY;=E3LPApMv>4AvEowV-+0hODt+&5_D1+4&XLU%h zWY%yoG7SL q9&xIu{3Hdk{c#`qth%!-vI8+l)Nr?*X=&u57CugXm#LU={WUE*cMIY za=`^9w9 X( zUC3^eTRi447#PuUIE}6uw;Ak))vP%?K30djYmcwEf!_xRJIq98{rDV%F~hxkW|M-A zo!!uE73V+v1K+oAQi*KNcrHgS-O)kk>zlW4j#qEiy7+Nqli1c%#(b9o2Tx8<2WJ{n zILim{Gc+3AuHN#vRQCNrj9K$or5_u<;eQ 3Rn7S9PrsqAxrDOM{BOX?VlzmLdZ zdWXZPA1&yMgw!2t!D^^p@j-j>&!?OX)3|MwW>soUojQ?}*;xcMw1gH)3JRm!FkeFp zn}EBBlu!M3HUCuRdV9$ YHVNt#BdP?<06KAYKgTfO`c@7^hs1bT3 zBmAnqQ4`! Q(NJBN7XEbso5%R~gUQmTEN+ zVaLxVvYQb>40|Xf!E0e6O3)L@#6QA1y_UgEN&GaOcnVIHw -99vGE^3ALaC{i||^;3LGoj zwZpH`;e1wuz96GRu>X5XD7ZD zolK2`ii|RBe7G0qcKt*cnZZRpmlc%9ZoBLv9Hrl8Wc?`≥4m>2J$tRTKWkm5!($ z$w;HIa>AWIUFrfl98BXOMHV($boyfkna`P7OofW?LZS$Qz#-B*+&;vbjb^+)*|+ok zb?J2U0Q 2dhapGrFuC7cfrkIbKMK0 kc;Ag*Qm0QnJ{8VFVk2+#HUVM1NU_V4n9 zyhD!(49~CcQ3-k*nRA%zuIQE;onKFxKE!KNI9uzs;Nj1fcL%D0b-Uy@G?w24ooZ zl)SXWV!chJ@0cx}K{Wz^^ZjupbAh*vx~*@6E|H8Ex8!biDOqJx`A`^Kk4$L_A|p}z zzvKDs_4n`0)P(SL+%&qmdEUQgX5JlUAt&!yT!eS1qMi#N%^`7E8#e+A=0%V1JO51? zoQ=B(okTX1 =K*H}O?0AlboqJ+xJZXz#k@5heew)a%u&7eDn1l6VE8^we zY!`?;`^8Q9p_^|~&=|P8AP!Zh*D(ZF5*iU9u5d4a5EZJZ8Tk?xNk~NnCVXqGr%DuF zu~=2=_s!$*XiCZ^onj^gAmES@{J9>BZ5O_Ck4T$E*FsgsU#7fjc| q2Gm_bJY+)2)ag z%VCU;%BS-LB_`rdmn!M)^0mL-<(=YWiw1AT6t$dh(nhyu{k+&!`9UTXty=N3sTO1g zKy~k~@M}n|j(_wxJS0UEG@4W`D)7#r+m1Q4>&hl~e7?DHgMPZ;x|X?gxRyl `o zhAH>xoDV(0?!sjX(td|ZL;7Sf`+lIUif JPh*nO zEU!Hji91w{v!UO3xI~GFjfdV0<@?Aqa%w%or cd9VK zhq-{}`_Hwzj;S403~?~#5t+@FF1}xOX(BCK-J#NIuwk6B`pn?{^q{rQl5247;NYNK zmt03)z<(d;SaxHk7Jqrd?{%FrHY6r44g*2Lrb{eZRjG)bDuxY@|FsMfoL{GP`b$kN zU!qcNEfSF084cRI?P^R#_4Ei?eba(9D%xH^LQskOg2Jii<^udxY~60}ZnK)Jm?7^! zFryn&%1Vq8EsqN ~q!|w??OX(Z0oWo{%6NJmgp3xKqrg?OkuIAAUi10xmy%J0l8h}x zRHX%!XvPzzMNIM~@$@I1k6DxM|30S}G`dkkGHuf`3|DfQ`y&YH=M2>M^>uXcVeYSc z+F{@)8lqsJjUz~z%grvrj*itQz3J{T{pPdNx_NhluWu=Ei9FphmHWcRr)Xn~3^X-| zy!|5U4>xTIZ5BmUX!rjnQ0w8vMbNx}Sk4xr8VCxO>bIb(6v#%qUc}QU_f&ehyQlg+ z-ep@Sv7Bu??{oeIv>aFMnA8zA`nzvege{q>MbSH}6=*{Vv?0rYI~QQkPxQS#+jLaI z)OxLUf?!poOrDjK6SL_CZlckAHXtik0)QAXc$tmF&dv_`S|1-juBV{^&pcsJ?p&gb zsx};#;B0MZ_~Vet!iD#+?;@$g_^kJIXQB)r+-v*8emSGWREF)FZz}fZS2nT)f~aL> z+Ur#zlz_=s!^NbrE8w1=wVeKli22NEr Y>+$wmQpA`P`R?;}8x1T3Tg&dfcpNcCVw6#A<(|3>*+n#@H zyDdE!R(IKNPtZdvU93c05oia8V8dg#3>}h)`vJJ0xgrB3$S(s(dx94_GU$plTYN|< z6bLFReNA#=Bj%=Su`N}{9_t#w;sTlW1M`O$STyPoWlk28sCah|fv(9-T2M+E)+Z*; zw;8*~R*5B1k78VZai4GHd dLO z^Yf%RrzMxBm|f=6kSL;IGjh--LhB_Q+Fk}vTg9rNFAJ- 4V|lK1D&1?Sh7ST+O_^kN!0xj@AB;3tV-0W)QZWr zey2r&4)F~kA-!Fv7UIJNV!Mxz+r=Lkt2w*gV7W;1sRcZ!9LlJJU4OV}v>YtQb#;s= zCMNOsa1oL!;Dr6rn*^j@smg}^Z~YN?Boq{IQ2tI@+W(uB9OP?56q<;rXqESNx!u`Y z;af-Q)i(_`tKXvh{2IMBEhE$Wr7HmcHx7oKtmfM@FaZBLfiC7=jhUspPi7SK4{y>7 z6moKM0*>@r4A1Kip}FVFms(xamUMo{HZQHXea{&Oi3mK7-WJzmbRzT@*CA1rE =&PT>y*)B|UcG@d7OsV7@al|~>-p39yyG{$d@|VK by2saZ{y9vanDEfXGYUuS^_wrWVinI8M%eJWe7cS-JIf }SO7%oT8AGv2UHoq!6E zqZg8)R3~9`@TU$R;O`-YD3b=?;$|WWIoyy{Q`v!UDg_g*YF5+bD#SK6zWvLd*MUYe z)2zhxY;0^ynFa 8H!X>Wy;aiISe=P#zfV(9Qc{{MP!K-DL~#Eg@Im 6kG;KOyT*o@Z;6RBHti7+zbTuW?{LyeO03pI zPTfD;)(k1UD_U(c zDD&tlvXcwJA=W@y(@N>-;pqqDPoyuZ+w`TPvU<2Bo(&pV&SUAql`g@A|- z-in_!UnypXLnaD~SGQ5BP{Jh3efliO!h$qsw>0F! z8a7KmIr9p&iNw!}yA!DZ{khSj zMtkwP v+NwT}$3Jrh znB5n?=(Ye|I)1it_s5xId8?)SLASVBZGBY`ASUimalg;4B%!GStREm3B7f$^(r!MQ zrQi#SVgU7&X(!+vhBY3_YU4@|v?+Dk{}Nj-R=qyoVib7 V`yX%0djMdQ-exA_KO19 zl%GI6w&?EZfqoINgpLhh+ED- Zf>pQ4*RMvmkZ8Nh=s>%6g^#<7sscs4Z}L3tqs7-m6X|-!4GZiy13>q4KX3^ zXBSCObTnensM&mcC3JTfH4g=0s%54&?uo|F=|3(|B66vx%syTpHA(MtSVu!&FEY6P zGumTkNs!&=_|gA8gNoaroutj ~D3uA|$gv!z(TRyv>=v`i$sl s_PmGF0CBTs(WLt3wSQED`y;$vh=gY;dn#ALeneb89}{l+CeXC5Hb{_|ehB13ep z2#ho|;_C@{H-pWI_ m_Qr=JDJ5(ci)-c11LG&_j>V S&oFKzW+eLjm0n6`9jQ1;#fwq@;NiyJy5wr3O * a-%y>=1-%oTt25m{&gLF6u^^E z`F=ej;c|Z_Zc$5KUcP_IOdo*33Z{{Kxe*X7f0(2JajF%M#ciHeDzzceo#JXWT^MOK zht*(Vs7k##l5m7ZoF#F&2e@1D&!1x-e0boq zLtB5)3<8o8c2>P?ysMsnYs4T_aC@|WM5ke*-q{KmDT-QC-_1=eHUR(1-R1t^^7j%o z%>Kb}>_sYHW2S$`KxOWV7C)a@SU`e-L+gu`!i?nzjK-ml>g(?}_4uiO`lZYy@A0F6 zH;f=8Q>F4f3Ck-*?H&;=r8?(o=^~Wk!tBq37>NSTEEIA{k t? -h@p(J(BUOyNfl%?2aPqop?Z zifzWq&$|ZQOzuh{podvcK+oxrDe;PRLJsz#;HE|ddAO_D#xpT-CO~xcX`EISfw!J# zD8Wx#N2lvI-6r$zp?(S>qB=g)`D$2G*$n@@VU0|EQ71ax>bFxA3K+q=fLPrai0lHX z!br7@0$T7uV< ALVPBlT*n_nMWo>;KGy|^) zd2_7BVh1GEEKrzQuqRY4v?>4{v12j^Ln;|18Z 0?Nw4Qk)}keqBV_5=rLan1MFF zimKo{_J)t{X1)odg2T(DW!f(w)(iFVEk(_#VSA1 zv$~3Z>ktX6` z)V6*NYWS4d=- zw8_bo5=;p?`g->xtjRf}eye8W78VXp$Vn(dES-{wW_e(*81Nfrn*Su}j@U{~X0d^L z`SN9@@uI0a4={OV8*ke}1s+*BtKlBdN|N&M!1aY;4PUmL^mKPaO*(n|RDg*8hKM*n zYl3HTdCu UUwo&4V#HYFD}Cq$wGdD1ePVcJte;qe2Yc~s^3 zVKSGTKr*B~I8-t_= E5{!$H>m(jvewnuN3BP%h$V&s znnN^SIl_FstL%pmGvtemvz;pV1=j;)7#MHWGG$maVt$d&pWi+`Srys$q=v>CGmZPo zgO#{M)JO`%Ao4Jr5UG*m?n_^iA-w (K*nb$ zMdqtbvWkjMN4DdB#^+N2p~g4nws;S$_4V-*%7xl`pecrhg#}Nov~fKhOPO0(8DC$~ zL-ot}4QLOmQ-9cbM5uFKN|2te@Z(2fsE70Zzj?NfATYD3Jl=5iht`UfhQfJ0-Zv*N z0AmBlxDa4n6OxpqT(qbF3mI6?64{J&BZr*<*tSec%+%!$Ac(rBCnqQGdLGdUdPLga z%>qo=YMbop5Ww4wf?k1F95zmT t-c@puV^!cSWbNPX6qG;0W=uqrqaU#reE|^>@a^xB zj8aVx0YWgqMn=jt!IMTDwk!T1{~s*Xi*N2eApmz8F2Bpm(KG=+9>FA&z31C=v+qQl z=%C*Z`7cHG1%x4;A68{*K}+EtNVfw6+r_#${gDH;gE35Ae-wqJ(j 4WF3E3J%#yB={ug>K)!qK?01$F%0={|;mhQyT2hZ+2DE zV@VnRr5HlK0{g1r`h$Duw{L#WDV$th|8RL+_rH}z;)9~;ojx+)(8EJUN%;a2&tUKZ zWM;0$F+@ma{!@pu^Wnp7IF$DTZ0`NY78Fw>BVW`Y2a~_X`L$0bSfX8rM6~4O=jYen z{iM@y-0RKB$z{OxIwqMNXkHM26$-U#wm9kM%JwxBfdlilCYz_j@e=RqVEI}vAPX>> zCqAdDJ1* aiDL)zQf$pq!@#(S#*m(}tW zg=~5lP(qrX0X&$flVk*%<6r1XJlvqYZgJaXp^#4xevOl6G?j%3difxS7f^+0VPRo> zb~ZRT7!FvX|BV5?QEPYmIEs0LBHL#ppNWIHFK|$0ePf?eVdGlMsnX-n!>HM6)~55g zX6skR@rqMl=!7v4A(4zRRW69x-hTLy@d5%owl`)ocz?d^yb3^yGXkI>p+bLf!w0z3 z)^qxy&;uyH8=YA_TC?*7neSzjIABaK@v`e8=s9?7 ;J0(pPd-@%LQt+1v52N_Cm+A>V@TgeZ&uKx#!}Vg2;c<(^c7@D*sOBB!)_V$ }VDvz=~A9KId2T-~^kODSCQWUv>f->|ox;lTuMZQD{!QlpJWYgaI9nJ(7%+ zAg++k1H&8A4sK@<81K#XKk6m}M@N<|M&0i~1cqL@dW9b2^y3-Uvth%OK9n~EO?(g# zn;~CMF)23w_Q^mpD@UUU_#+3W@;4SDQh??i48?V9#EpWn`%RJ+D}dW8UShQIUGP15 zLsw=4)#pt|k|+;e&jTaE&u0J{P6rN}aQPh@y~x*2ej4L){lhUz#pkp`G!f&tZ>#oD zsz) ~PvM0i}3-H75ie3oFR8{2F+enIWASud$8C+P!hvG6k_mQvwR~^_l3NH&^-rr8zOs zMYPCa*Bz14z~peordq1_0;o2hX{ <4=;E4a2D1 zUNRv4c8+GD1ta5y8i|Hvx|AhTspPY@w(4g#iL3m%-uotvMN0xIG{46s9OU725m}Xq zt#|46HS?zn&4Yz@@%4r*tmo2h;6AS$v!E0a5isst%L2kOJVhjNNW%*|hr 1vHt>_LUv60hIZKRJu)gy`|R0bv;@V1q2J=<}w}iD99*ibR$R8 zc(TD_(d?K&4}iZKt38B52;jL8zAo3Rv^l4E6%vTBx`#&04L6KEQf1zifq;tIHNDFU z^aHY0R|G&+x1?Tm0`-M1krRGXr6KA6sQKd!4c_@YbCc5|1(AfOzlUGT;4pp-mKZ93 z1_IT={e|duhHpP0fbD^HdO^s9JBl-!4Z=iBLi{ht1oqBOJv-< 3}w_T9%IeOsNZJ-WeI7Yv@O+^ z7jzHZR(5voUMBlPfJ}yR&9u+@s4(6z)+@~@38{=ZP6d(N Tb!to MhxVZDANWjx#cNC6$nq}s9O4`;w% z?T3>OKSu|A;Eg8x09YY*t64GnnAl+ii`5?(m@$ %yk2R{-8VWvA{DE0_}8h?^10t34@71N5yRgz4v%+a*c;aX zGdq>8CfepuT#te&_1rL{elxP29kFiH7b12mRd@(pDkpqe%i{WG$(&;Yo0OE)pO$Ax zJiUG>-i*qfR$Voes#gNkwWVrBWOiRzwk|h}J5jNv?F6zfy&m1P9}w4rx-t#w=`M!j zVIi`Kd|0NY`MCU+WVLMUMy94nfHs@Rbs**9HIQ%$H-$2{oOUZB@QYWC?)MxE4K;pX z)6UWoQK4$WP$H+r_l|h_t|h_kjSRICW|xbP$av!h?XES87L1@%?gv^)oV@Wi=z{=t z2wA(bNszsE^7r?5csvtdpH%V~+FR-rB0gSe!)zwxe_{lxZm5Y2Hegs`Kx*B%`4-dY zHmJ2?`(o{QQwBOHh>*P^Q~nbVW;B_woE-fkkCYQ=hER!k{4obmw{M1%Y3{xIJwT_V z)QlF-XdrLoovTs(`5S=^Zy1%fMx;)CmesaAkWvsK<`b>&isy#r+fU0j?+rskze6BU z9yOY*v8g2|RhS$39fvaRQD1n%8Jzz#;e{0$8QI$JrgMAGwMdZuPdMH~goV3kqAGxP zBIuLi2bkxz@pV#M?gyM&n<+f-<92z+4x!@vRUoyh03_%-IoUT@Wj9jAAYDPe{{NbF zr;riXa6ElA{k7Hc9MDGtftdWyRxoenv-jPFMZO`BZiJkTjT`yxC07MdL!+VwHU`pn z4h<6yTdQMYcs@EEb&C`5eR-vkHa469Tc)FxpXwYz96n_>mX#)_13c^R5>hKV>%Dn( z+a0l-o^JR}-l>(!m`u;iOf)p`^DNZ&j4pdtx;(-W@Oiy`CgKi^CYM=DFQElEEdR>` zMFjp}76ig>sX9=%&lzZ>tyQmzhs3>k`wtOf_~#e1V*~IaxViJ=1m6$-R( U9V5C}b@`Ze78 S7dy8(f~Ao;F+&yRBN2 z{B_;6wwqMFuFlCJp{&e8LYi|jrI2qvQ=P{rE4g^pjY$GrCxPn0!+hNAK7ZdXwR+=Y z4n&Cpna%BBojP@a2GHvyUPPcdvR-WH$sf^Sx=BC>5;TFQi;bkJ>Ja;eh=+%Cfm*v4 zcib=@Ha2SRtY|V&p|gs}%U3XH2xP%fpbhvszT$#~i>z#Ex5HB^?`u?V_|DrQEMP0l zHVS|PHK$`}Q-gxi83O6*`hd%6gt0aHq$l7hyq7cp3>zmP0Um))=`1gNZGS&%Vx!;q zU#P(wU@r{$QS6+Q_Ngz-sJoFFG #YSLWv1^&Jx z!bXLG36LF5d8(RI&XeBSbF}tw+M@sU1(BK-@Ox*^PSvYsxz@zL_mnm+{=fT*0m=Mm zbQ*2>4Wlo}^BpMMsKKC1gyuz{V#a2?EK<&60nNcgj^~^mhk>B4FM*%~2L5cB#M~$~ zXI{BJW=9>^S<|0_JZ5Il=0X^O7nTqR5>@x4_-m$0UqLA0yzk99U7>*nu^*ek0+PMA zvpX&RyB81uJQ3l0mzc`*@IhPv88JX9FSeTB^9uPtJ9>gP#KiLm4rVK~U|FXYsMJd} z^Nld#bYsS3Sf3MNF)=Y8SUy*dw+TPS-suCR0je0nhUJW6yDm3ScZ|+w4-1v^stH8g zwGtqi6$aQruW=+gTU>$8C=_sa2~1LvUhmd*hBUV=EiFSM!ZDlG%Cuo^L!vUR669A8 zERtnL6QCxpyo4XMb+so)kGy0Q6oZ_*$4gC=*K^a;H^q 2HN-T>Lt+gj}Z?) Uy((9M_$fANuR#gXh^>kOF@K&m3U6AVmqiNLZ6WpjbflP_TOqkZ>5leRy(vzO5TK z2TZMCThKRdr|ped8yv7(ZsULJ;Tsk+Wh(G-H0r%WYF6mj*uiUSZ%VaWh`>8yDo%X~ z+fW1VAO`s D-9ONbHNFf04K-iy+!_<$3L%{Cv5_?j9DD(11`>Z z)h~d{`>K>FZRy}z>o8zwk2ELMnzwilG-QzkyupC<*#Hh{%{o&;z&!rg*!7aRrNNCP zdd9(~FB>m-7CKmHgHQ80f@mb96sngM^Zown;|;Z{CEjm~OxujV%6G;$oS5AFC@Tw5 z?!ej%%wDgntz~k(qO)FZhXI^)Kh!bez9%=%20E`009G&Xxo}ZN= zS7yJ^B-hTD;Bx~UA0U}QEgeAL=msdHvt2 M0lBj5xc1A$wUS{KgQ z*|~6i_=}S^Jg;ls18N>XFU6`AK{PW~U02%-j=r?Ru`+KsY!-hlgT~+mq_z@}9nGp+ zz{&Zrl*juU?EVBA!^z1-FX;I ij=@9+5ij`pPsu!k%ljK zswkm71?U8TOBu-*P|YtPP_9-Av)|});S#De0RfDZ@8$*8m8bY+^s+! 0-gv>NL
n%3=$ zoPYbC$XZH(RNqz3Yv1JqZ9 PMl7`w$v%F&c5N It8fuo}SQfg_`O> z9?IB|@f5q*V8-16k1`0PR7n48BLoS F?5sK z+Vi1`)Gj$_;%qv3Az I}I{~7ZdyIuUXCs-jjxP^^b z@sl8ldE}mYR`eV%ckAnqF#_FWWo3nlqnv{8_8%xT(s6W2ySp{OpV-^qH|YE`W@EtD z|AKgJeH|( X4o8=op#Y>P>gDm*ZJs6<+V|W6C22Tc1tZC>Zbrv)7 zfbwg)=L1YMP-`ZD|H@n|iKm!(F9JfgJ`JioTn$(U4d(+<@b>0zs0TP&WqKqc 5*%I*HucoEXS0-j73fm>~)<4R$SeqrMMRAWDQ_VZqg4f1%*-?h-lt17TXfQHaqzg z5K>J*QD7qAzW067+3jQ;-Mx{x4%MkTVyo}&Zo!*mq)SvX7bJxs6YI&+ytf1dBvM7r z_Gi;cvK#bTR|(V0qry+6d#4*6e+3=-fAlZUz=GWiL38Ig_6s#=&_-?eJnI3a9WeWi zKAYK0^8Lg*gj{a8aBz2jYU~8_Wz!4K7D+q$=j!!2Tu14kDE`*zlQKrLOG7|=y8w-v ztUI-iy*)znVqR@xo$Iyy^z9(Bwzjt0)+K>B63*z1*Ib1jd8?P4-s57cm1G?D+F43! z{Cs_zTz>rMlWrw$!Dy yTeCBG5pVvt-TyZ*=_QoTJWy!QJ-3#^1kd zwXTd$QEjYIB}KOzH &M zPp!6Kv%b*t_~EJ0^UIzs{mypM^}e$~h3Dw+q{r0b)Fkfn`8scW2-u5ypOD*<>yb1S zsmJAW#x`rW^c^*=xpQd zIxyTeBZm^e9I- zV_k(gA7ZX&n|Ty9o+UpwPAaM@evZp)tOy{dZp|{+?6nwRNYv5F5iMZQtpCKG(@ZJ< z;>e8lKsanNnJkE3OKm@ll#y|)xCc$Ri_3ihi#M&FnJ{HlD};P;XJ((1$?-Rr`TkxO z^y_t|dP!#tMWf<<8tUR5t*v}?TJ0Fa@pRn>NmEH#bqh2!B$s@jg%{2@6#hne7*mY` zBn0`&UOu*cDl_PX{d_mRu}(@wP2Dx!`-&87w+7D?0aU !^l6Cw(NiZwli%US8wSlrzLzx+f=-G{rVXJvNI>y9DjR# zyebo?AuKGMG_ WuLZtl?qA z(GI!KaXuBq ocW-jTW1ZN!c8uD&jV-BsXywxQN^ESe2TXK{dYLNWBlUw) zaM$*{6PU~OtZmZYsRCGF8GLFgDRQvC?dIOnl$VcWMykpX?AiaunapA1Z%irA>;r71 zUC1(z(mbv#pKQu0qz6mLfVkRI5Q^Z|!j<6BXER-hes-RB?LR%u)#x@G;mknE3Ey^y zOtqPS@aheMPpRbxF~y-Mwjj=R#Z{nFo^ gcu4gp$>1}qB%rryR?M7 z-$5c=)n4r_J|i@mTH2MP+{FCBzkU@e`-CT8g*_QGd% iOPAuHagL`1~ zyrOs0qC^VpbMPTijfPjhcS}=bw6xwOkFbmBd(J=7sH$25$|}s_O>*)GFdF0M%O#Ob zX=a0x{}J)yx|NGoKdFh*8BJv42eJ=$hYQSYR8my5v^DkIk`v0(O5fk{BR$?p`>G}6 zp7f8<#M-j&&tmO8Kj2albDGxnM(p_Hcc=UNXRGGbRTmErirCsRZ2dOSv_z2l1zput zG&Fx3hmBg@c0>5@Q9JWjg?=Y9qtGTW#_isn&AMw1wW^hfY+#_j`=DlD ziL5o JPna#DxqR|C#lDyanOM~=&9?5gLIaxhyQX8bFUX%}rw`tB)NE@SRhD%MD z@=eV~^I KY0|3=RWxC?8!gSidpcf=(vBm` zH62OT>@dZOY$O0gEtQi1Cnt{4`g*AWxMAscH}A>Gv0&~ljf192EmXd+vv=LTwnmSx ztc;=~FV6kfjTY1Yo# 4aEpHd%@Z1>AOtd;mqDx8!S I!B=l1guJTAt_ zL8Pbqbm a=U1DSuTc3c|UTZcL)vt}laMn@1#!zvYgpHn%_qhcH zq~KvwQAD0<+I+q=zSH=kr$o0P6|FfQyaKWa+I4u)InwDVV&%?CxbsK^ZG!!2H1FN@ zKB=S4dEw6 eJM$&2OvfFlqY6biT;^ zPZz1=ee}bx6{UhWA)uG_2OqS0UA;xYn;wV+hGxqVkKc)x#&DIs9RfQ#wb`E^xIB>w znUTu08v^3;U`JC0{G6@SjrTbyxp)r0CgZ`&N9r(nZ$)A0pl%$X `M&O7pP@3v;;1B9FUBj)DnekvYY)2WYQnsAW{S^v;KA(pAeif3U9 B-vU(CH_SXSNEHjITx2uKRj4U!6o5(3iFQUcN-AV`O_bV#>!DP7W~w4{K9gmi;+ zNxfs;d+&E2-}gNKzwiEYABWe)y4IR=t~tjz&vTq(`@}UXD~%~3I-|BoD!hB5GcN6Nm%MqdW^T5 zzovk{ySsabA;{=o*Z5u>v@Gw{$f@AY{9^Wl$jPNQ32K+TKXbhz XC|{oa({L&zkfPIuxAh6oy~t-mP=(kG?@q$Je@fW)f%zG`r1m0A zl9&56e@c3u!>XM5fNoBh?&Ct!WA>+5-q(w!ssoqCYgbH%utDD`_K9suokCGetb>yF zVZn2~cK3^rm3ZPn_g6Pjsp+`0Cs)}p;C=X}H;2D{LVzb0(f-kKD?I7Ue0QHk5@xjc z+O*_8-s#DMjEu~L`PK5JnUT#WO_cUA^6tV{uD-fS&0Dn}*V7c)Z*3hA!rV|pmTi+h z%^5)TfCU3IDBlY14sn 3&te^i zMGo{uHPLC})^P3p8jq$%xA?H(pTn1WAy1uS+7$LxR)88DNLMDZTlslIv&urk%SW~& zQdz0QYKQ9!_e#K@5uQh`t-gzFIB3Was~@dmSJ3zBnOU}NtnZzlI=-2zBx}!E`Y|%x zvY%j!bFo8XyJ=9&5dZkRgI?E2B@9o@*q9#Z+@MNSGWaWBx0| %`-5GHz#Y zv0LrFc4-h35R?8TzpuZ4FA9(}rud@8d3$fcF}qf62;B6_k6erq%VV{ oE^aEeD%p#IQDpKB0vW8(~{$3ykfP2Kc8$`t$7V?v_}#(8E0mYpP+>bcD1h zr<#P+b+kytSLt&0>C|7hWidy_WY~N(u9i2bWqA*XW?|xwiJ67M68F`=e2Jb3e@Iu| z^}7F3%DsHaF2;B!JiRr~ YaG(b#1&J&oo=8}92oGy5t+lg)0x8> zx}fsae0MIJV%2mgtl(vNXpJSnP(GPO!r~$1GO*J AZG1hUJ;ypE*Dp+ ze8SJpTn9Z$$nHKeWZZGxkH2TlC;n)SWC0kBkjskoOS+ejEjpV%R^1U2^03+c!U7OI zl@Cst;fZuc_K@GkczIYox|8fupU$)WeJm-+nc$KvqeXZEZY@fyq=Gh>HAi2)tCI!f z;i85eMFL!L6APvf0^s+Z=Qc$ri?xhe$K;b8qL}2Zt#!~Ow7pkWNh6c%jv^U;3(^V* zXd7xV$R*RO6;D%sqe@@+N@dclII6o#k0~MZ3F}v>IrfhGnrORx{ByWGEzN@{9Ffj= zYrM|zbQ;O8>rZzt&Trc6A4}b#ppci0_}maHM~Xaajs59u =L3=hY0a_)Z8oQIA7rYwd z!SE=vpUuO4Wnyu+J_#BQ5lX- q;pyKV@5AsgPl_`pGRR z`8vMy9V8Hj^Es@o5QsWoUR+Cnc$Sm1+;FljX7nqSXj^4w)F bmeLyyN2URX#Qvc+Tq87h)gZ$={iJ z+NfJ|MDa%AaN`LjCuY@y); zr$;ns`%KhV8PhH4XdlzZ-qMi-+U3Xa&+A))0Ynu{VegW{tE<_cMmTte&kcr^El35_ zXz=Flh>44VLQC@)A2)D+A9G=Gk?O&N;KfhXsG=CMvT5;Fz4d(M9B&qg>s?pFa+T@z z &KSzuI;scNb7*2egY#3F7(2_a zZ)7h@NnT^Zs}TN11vUiOkVLlBN?<=U+b0rqzh9V;mXkxz6Jn_?i@Pg`Q)JQygpkEp zjSIV_mc4}S2jdx=a*b8Cz&x`So3}v>g_yLtSyDDp6>sQr)7>sp!p1Ai%PW&(D>c&d zCo~YW0As1wYjfrsk_AV761*>D#Ki8EW+jT6{_ImYD%RQq66`YOZz@>=mul&L>6l+e zhHu1u{E(ESm7}JiYQ%|es=RmNYD}l_^s709`*)o8xJMbIsfUNmS(P#rKB>$aR;M<3 zFsT%)vSPSAhvPd<45K$=e|HBm#l7XeqNh>;{w++C*O<0@HN`1rY_;yK7fQWMF u^XpMnY)g~=?>HjA zA}Wx_4YbJ*DO0&zrfBV80HF8EJ-PJfZ_=W(YbG2vS|JBeueTCJ;Sf09%}Arf=H|YA zrgNj@#qX5A{N9QZqBBHH-_F(2^CMfgXGL*}v>N D{8d>zNS1Ou5n zzvWZEovd&MjuP8%1QhGcM dJvdFxD@p ~-1J~9^E`EfQ3-ytwQd9rPvw!kDiHi)> zq3Tt}+@Z;jZm}lwsF%6YCEcqkX)aVPBr)!d_p5q4{q3`in)>02FDQ5P2F@s?Rfh@k zAGAEJFdJ@#)Mdulq{Z@>@yqLBR8;{N8pcOHJ08a~f)C9{FbStz(z7i!L&`vHEM`#u zB&jk(MaIHz)y#{qaD3+YyRwylbBJ>tBOfh&@Vg}cWtu>e8!irnB=5gDwCMfHB#MrX z)-^JvvQ6>1Sjb|0jYaZ<;_v1}%h%5skWf?2U;rp-WsLT0F!r}d)%xh$jLcG|pWI(K zIxUF{T=sR_D?U6Xnd?ly_Q>Ik)^2|v2@|zy-f6pzQFoO+YE$XVit$pQlPxzg|MJrU zgMI5$$Ul42c<@8+F91`0Jy_s`kj|@!aEjBq>xKB~ORWe R#48bV(N{Ni0e{9|@H<%zKcHsCLqG3CrRK*%nYu9%0 zu}a-ufsp%|G?ksB$}Jp`@PvfG_g7QKN|$z-gVQDR(_V7(C3I-p+Sr6gMFm4uUSJXq z>AgN=oS8gS9xD<(=csz9nhdsE4q$e!M8BD|*$40w4hG-`<`cAAnGvrQb7kj`W2E zj^O7Eu5{X|@D7N3oYNhqN5ECgc6UE3*E!V8h5J- aXRU1*UZj!DI=d+ae z7`=P eGa6AdKSl+juJyYC+m~gr^t1H; J3QaZabFZ41W zrANC24Ps^lZe{%2$pOhbKY40}ih~L*{35_+*H93gz};PNJ~k=xJrY6-_GLsTUnR$e zFip3zl@SAh1sCG2h3K?BAPx!8g@SC3Rb#4Mq9ZXL=l)SIFG*RMsI_G^rV16K>sPNJ znpJq@`DrZk1gzhL?3!NYyq55I=ngFsR00C$jtnaIT@L?rq_?njc6YZxaHmcYz39;| z0U_Rk+vSDw+@S}7f>~y}P{dfgdQUtzz$X+&+r9Jx0%XNknV0hqF0a}Z)8ZCr){*3^ z-Zuz^!w?ngF8XbMZ)4e2Kdl&9C<2Flp;UiWKeqW-_MS<4LBVy%5PjU8lxM^C-03xW z-#&wPO`+l4flkWEFIytr=|5z5c+XDpUJr=i6`#AN=d_ 0Aw^*QC|H$F<1-H2%%0mKMs_X zIc?Y4a$h7t{dL>BvIr_=lf61WQzW*@J#qN9ICks4W@)0LiR}~H+qk$9A>*Sz@0P2d z-g4%5_4&0&IMefMZ^hE$8e}xcJq3zQJk^0cbjX-s?e!6 4o|J-0Qq$yG+4cYA_K!nkDhy^GkF2U|+C4`t9}<^`ICxa|1zvfSN~zi*Ed?(lMN} zud4J)^+4J4b)2fTpXIPdhaAA*#0ARo-}ry c-l()a@>BuAcEWsCUSfB`!g zH|HfUXLgj3@!SFII-bLb `mu)F)UCCc<|X2)Yn>d3Wcae>pU zXo|zQ=%HvgRDF=3TOur#mg4>U?@(VH2pNP8m`Js2e~zrs9Z-suR<$looqNv@G6p0t zhu6NV`cn=e`ewbyr5Da!l@hi(oqtj&+i4 ~cm=oUv^_odJos8&0v2EC@*+vdRPRe(&p}&x&6OY{|++@&%0s%WIimD%%DE zYs4WJn%!|Kc=!>LLy&<`|CV EXqe b9cG(%lzGL%^gA>42=qiaewE4 z0R7`m&iieppf5$P%zl1$i|LSqkU7!F!~_rS>aLI;m+gnG;5g)uAp2G~J#^cN+@X1a zc6z*nM 0orAp^hhyDpVLTuSAMUh-dp;Rqa!p;z@&(k$g& z3jQoo@*mv|M^l<@_~vXv#;_>FApO2;z-@Bo#=QO?Ex?6Hj%*MYCalZ3^Pm0%OCUoF zfCW4v@Wgo>(~P(aCD|bSE7S>WLu&GytuOoVhP1qV2heIb_wEEmFW}d^U6OCgeAbdu z`ksdt`J&{@mzOgaZrG5Aq{DgWw6{c7o0y0qc2yWQ)s_spZmZR@CqN{WWNJ!ezMF~}&P-P6V<^E>`17m#o zAkb}r9LnnSkHCJ}pIfrMOHL~%#5@fyv#{k9Xjdrd3(8n75tHFTRQO;-VB*_T3doNn znK*-RAi&$+8De-d`Q=8P WyQ{tPbubV1HFLpruKamxnd5QruMHHW5bZytJQNvO0y)$0jk$Vag1TIN!61 zr=Xy49dZnZ&3#=x %# z$jBQH|23?RpaLZ42Sn>y=UmaGz9gs-+fJ@M2~{|%v4q6*B0rX3@wB$KH=ob(Ezu)& zLz(KT G$=Aeivk5v54!7;>K_eQWs3-|98&FiZ_wKw*e{^Z8 zHD)dV^3^+0k)Y&P%O#*F!vW)DHeON<4XygyuHG)#{P72u8d_{c)Ahc9!Q L%z z(MJa*t#FX@TK@Jc?^XoNnhFB8s;x;#O|{eOuXuJ3%)<{!*hr%%X@?@?VfQl7y*e5e z%N_Ptf74Za69WPQTBlC2w-2XW(5_!iiyUqm|6=*UmWXW@AWqj~93NP%f%}dC{{5Nq z@Pv4_kIgsebwi=cRTS~t6sT~APz&@FKn||*vTZ;h%c*7WLCCA1ViDkSM3Ls%5p}#1 zcYjk=DM2N6_my>Y3{(SI`Y9J#g8fJdo&xLy`zx=i=L#hp^SS)_!1x5#i2l* ~|FOGV{lSZhJK1oFg2FMPr_WS{VKSvV(u;4fDPaJ*V-ysc z%uq 2iOPcwObYv9jS?L&o@P0_J8s9cwY&39lx`I5Q(4N3bX5LA-cED26il zt}B|ULn4-$I2m@~%fZ(cm7O<^bFen-Z8_2G^m2V|X8W6)e#akQX(!DpzHbAjH-S60 zvYC9p`e2#EJ&Vbfj-D<(r;MvU#c6(h)XC7g97##x{;RDQ? !Pu!ST>>Dy(i7Dnb%h< zzFEh$sMi>SX(T@ue#NaSWd?O;ylk_oH#^k#U)J7(;HEWEg@way%`n3B?a)g#{kj-c zV-fpmx^C64mdBs $tyI@O*G+D7%Or zR}83G2zEHS57DTeQR0L{%~^@+?d+VKh_};?fmjmoPgx6wkqI#>p+C!OY&IX4Co(pr zd1|CEVYmu5J--MphcJu_%JxR`vOPz=3RGT+>|&rxis(~!zjf~Hn&XnuYoo$JlQc6+ zY*n#bU0tPRWi5PefdDDAbPU~gAF3TRW4XE^w)*~^sRz9xPg3|wSXOp+pj|g0-FNTa zZQ_@`WdFhIhpymyR>8%zrB*)ONO1cuHye*e3M_}T8C~_nj}Mkf9)|PdGQfX|LpAk` z%#6`YZ-?_#SR6Hg_e#@i@$1Q>6G6NBim1=x^G{W#n4&qnzD2Rf{VW_lKEB*VofQ7j z&x+SPzK@Z&RZNscYd|ZF1gg%wp!e_V$D~YVJM!@d6k4`#4m4_Oj@`cN1GBFSXye^g zU%Vs$L`sZ@cc+u %IIc*xz~xiG zKHz1)i9_xASLhM}p{8SF0o}kQAw*@73DzNZba$U!vQN;^0KXzZD3~@}8@`N#zrMna z35lc#(=F{H>3^8DpBzYn>3ic}|E?#Dbq(k>1@-?VqW@of{6eY)j6*{JsCp*WG1DDa z%s8_neG+(nmas!}Mn_8@yBimKh^08dsXs3zb4owR3S|2LXGXCM_}+_)`$<;)D~)~n z>Qzd#mg;SS5A3X)nz=SKK9rC_{QAXLum=;S-@S0@)tW^+=`yoZ7o|vV+?V1HVkoso zNkLztmK)hYmQ;=2cKKrux6%DW+!{L{-Hmh9+rqA{BEECiJU2G(J*vCsE8FBn%wfoA z+mBj*`x#+eFy#1Pr<7;KF9JdU@64gwOUFQrUvG5QG@ZRvk|bya6G(_hb=?t0X3d^d zQcmvn{HN-=Z4+MC7r7-l&r_uk5(ME)_*qm7aT8GcCBhK$VB4u)$r1^KT@J}`oTom? z *YM z sK47$Hj*;r6s z7J=|OAFKX^*Bw!CEFbJ+eTPcC?~oKD-$O@dhGKch5+Lu4;!EK(AqPI8RH^x5nDNZA zg*FtRcG&m0K~&ug^}C#o->5(T%=4uSCggCx{b$;{k*6U6iUJli^dKIYYww* --`>aFK^P~mKQNRJ79 zWaf*eeFhQJ2h#lXFxj{2M=M@cTffUE2?+2N8{XM3sg=Di2Dd}xIQybY4!V-_$cGHH z^v#y7jIC{MS5V-reluM|%5#p2FrUCV&Yrc&Ae^@M8~
xitiUVv6}C089f` zFzJ9h*i}`2o26mXpWkyjM%yF2-+mGtr)z2S0l3vtDC;e4F|~ME<%ftHoK`!MT(*DU z0VXaCF;dSDMYz`#{sXTXXWsVd^{>3~9L^+P><@IGyrCr*IMko?S#_G3y|pfQjvxbS zSBk}!_&~M>*|^i;BoSosB0z}(?ag{X;y!+Wi2xap?E8fhe|WIWR?;Q>k{BXu-L-v< z0* P)$t@isw!8lz#&vA>`|x0iBEyri`!TI^ I6of@9hI0SbZP;plWAcB-eq9{Bq8X%4wbZ*u<^ zd5u3GdkXG9Pv*opB6ot?F AY{6t~4sANcbg(QHH4 z$v13lz@j7b(v@`!LY}KzpZYmGX7wXhRTRSgvwivM-CR*na&t|$k34)q_@7~+DX_FT zYd-_Me2C`zP>^(kSkMe}Z8YCsxg#tC;#To6`==m}iVB@@+|r+ogq}hsVFnUO>4n20 zhAF >+>XH#fyf3cye>v5Fo6 H$sS<8e4!u52)T1OQS%zTtss62StN+Duz#1mUK*fcM+ZhfS;YMzZL3@Zvs2H z&i- dm zP`a) zcZ(dU&5WBWrUv#n!n$%~7%Y77hctphg8cf+m#ZPJf#4Yhh5gkr6*ntEZz2!wFFEOv zFn|$Zf;cUkY1LoG&!62@d;QQn2nolZdm~{{fmQ<{(iN@Dlm?PKG>K1SR($W0Vm#8* zk1x)jz<`0t%d7auM$}sJ mJd3{P+Pte&96dhTJj>3PKWw zK4oNA^7#GwHTUB}U`01A43bySI_V2A9J^jYs&WLj>RN4>0w;dij?Jz3oa`CTfBh{W zDJR8bv=S8=m2h|qB~)(08tM*vQuxT$M+?B?sK3PN7kZ%4Y2D{CQK>EO_tss*SODK! zpY{oWK2vY^`pwu>4cp~wwjSUHSxand+>3$&ih>VN`38*Phg$n}u!SVmsOV3P%COC%}mIueOn};Q;)K|NW1i6T6SjdWczT(3#3`BFJEU= z*~?EhZCwF&ZT57I4)mMedq>kKo}g?Hm6EzOQEB-e1ja~?4psQuPAh>Ra7ICaOsGRU zX`nDa_qlV*3P(z=(1#_GYUlOameUPk12h Ae*`H9vfUjkJV|I_>>Ds( z&^38NTy7$F6Xl^rUMQP3>oyf5adODxt70t?zr*;Mjfjyvyz+_Vl_0-uL^p>`@m_bZ zjrcng6Y>K|m6m=QRn5DD!^6HR{lBSO%*INtj8_hO14^|r`5i4KB@AJk)AjVWcbxqM zc^YQ-&iLLPl@U% {- Oufe1KrV;I$|;0nBc;Q05q_GaPdfk9lb7&WmIAoO&~Ua*Z2E9-Z$Ix zO9CFVcMy%P>mrH5!z|m2Il2P%%4deyGbWrs*nuI4n1q3H2!%N|OzuE+X=2alO@G3} zua{HxF?>Y8NM>cx298#k=XadF%`LnEUEEF-UNCAe0w4kTzPO|$BT}pV@zn?lify^2 z)p#ieBneI%2iGAc=;5Y#k3QW xVpYKEJmb0@I305E_XSR5wbzFG^ z1u_azQf+NRqK0HNf2YTG9J*((%}u2+`@5R&!HK5#J4vJ3?TGxH#*q)G2Ko10F+cup z05pMUr069RXGr7$-oKD6)tedKUX3qWe$+(a8sMX(spQ8x&7Hr 6$ z<-yu Mca#JXv?? z$=APVJm1(MiWG^Porz$iL?#9`k#g(z;faJp-Eg_}$#QD@_B$sEaEEUXopLD!q&$iL z&-+&bE}eF6;^OouCG@{e$M^l-XB_7#t5~Sh&yQyK(!Wq4Z5E Hp3PAWTok52LjsCbi5qNJzNFII;Ta<~@g(wMHTBbd3*n|N0Dc}T_ zTDB$!;Y4h&{2rL}cN-G>U`>IIKLRZD-Mn#wMo`dem?q9IBZJxxlibJa+Fygddf!J@ zop&4F9eQrxZJ*z1ZIp)jeCYb_UEx5Ukxat;eU^p-m$^w_8Bkv&_y@j!&kq|-JJm8Y zER+)$54j{{eTZxIi_9DKkbQ`mLdqG+CCKm`f$eG*a`$ODZl29F=#UptF6VRDvO;!Q zph|FQ=478L5w|Hq>;MaUVR^a5p_4LUh&^bHJ1>qTXZzh;@7jU1cMH?K3=G#jLfMZG zuLRMDDJv R zdZ4@>dP&5@lp7EfDhv`5qsCXUr{efQ!x$8YKp?$_eHDe0a>hPkUJY&rP76>ks9P-O z_CFxDe~9la8 vu!S zDU{8|4965SkNI8t{z|gYaT9>bt$>2+y6n$ky{Ymi4u5_Hg9HqhfXo|&T6#NW1g~=o zS CQ$C zJ7h38cSzb3zZ78B+H<#^9#J5#|Ju)@-lQ#veL$>b_s6hxtrwa`V#2xx4}MSZq%|}) znr)L2GPd`BM7#KFa|6n*#b_89Zh|=?D$0K4ANbXYN`&_cPf7}jA5(v1IZegoDy0`~ zn9{1=6H|XG7(`&(EI^CmU^vv@9L&O5cXseLA3#!s6U7j&~PXDz_$Ccf8nwa%2;~ zmUv&eeb1&nIL;jn3!_7|WAje2qN=K&Z_QmqS^wi}bDtd2W;C;oV6rbsH0+P6k@Phb z%#~>(AO*)79EI-O!J7sC({i#_Wyy**eY%kh_5gh#paD&61tCT2?I(dE$c$b-WZTH4 z5VA%G>IGc4gDaYg?_-vi`<@QxTQ%8Wfz*7ge9N;nZ1<7JB^GR>i0Gu~Rg)LspYZxx zfn~5w+huufnP2*GxM#-ut2{-T-r%Fta?~cXbOxGp-GK(8Jxz!=VZx!1`U$``TFlQg zL;YTld|^V0O_J)Y_jqbGCraF#N55%LBqKtqZnYvWkc)sg6&(uJt(u(VHWXyPr-#gh z>jG=|fxfpQ?d{mz;k@s9drhP$C=e&Mm84h3^BC|XJ{-Nnr=gawDy#Kq9o5o-XTvW{ zBpBRShs$|^U3}KguuFRFZsQZ2!!nn{mA=Q*!>!j*bWQd89v6QaMeWeOJrCkX5Z7ZM ziuLp3TRm|LbB*@l(aVrr59G@WA=(lK`MSB*Qkoen^wBBo|3wJ0trQg&+02-bQ)(b? zusY|9xB%{BJrR|k#`#E={B@q-_Il^vWZxE$##5O2bI#xUF))TN*q;(da#&ErSZkum zFZ;hpPj>2XW%io&IM($=qZ)#j0%{Wy141Nzmg2zit6phHbuZcBYg#5JkA;2f+>Jf4 zzXVF4FzOVxId0q2sj}48YP2E*vYTV&b;!u(W8KwVl{-T!ld`d=s3>{gyUUxE0Sy+t zc{t~$fCKl6Q0V|0Bo5C;9FQjeuW}OVQZ0u!6IVg?7Z1Y6mur>2ig88N?&UTgERCon z(5RZ8;Hr=briQ(phKe3NZyUGC15i1;%E(IqH6tc>VQgJ9Lx3+y*4_L4yRe)b8-zDU zLxNpQ*bqm69`v(jRZ$Q2(46zd?xOkZwc&0&*r#?jH6O2y7BiF;lvis(NEXA~QRbrv z0#hX=<@Bs9A1H1!>g4+fQbrI@D&(v7+W32AY~2O%j{CYa0TgW&6!b`cbRv=f%xHJF zv0F>6E#jaNR}6Mtv(X~$*|7Vzwzl7vG1S||NN(_x4-O70RLPNz__(QLboFz-xUsNE zCx2Bs6a3zLxa1W(|8nGMl+&Ay6pV>3n ){0`aoY?8OA?#4ZJg%onns^*)PeIW(b1SrURY RKxmkH zbTq~x?iea%>5~(M7KJusvp?=v4ETWAK@;Y(@_Ot_`7*0+x>=o(-%513_YcZIIMeKY_UtpaX(%F>e`9tVo-E?(E(qb;1_| 7|Plbia zkp^YMGDK;>s&uOs8Mh@zMh1Z@LcjUgdhBcq6^g1K_=(}iq`xABYye1=G_`(mr;|xi zw>R%-=y?c>K814Dg%X KZ=YXS#axXzLqXjl=23(}!$>T(PQx86en02yjm4!RrN@ z4e0FW7+6<=z_`r%_Urvo9jF!N>Z?t8Z@nz{SqE|MzZV)iK3+n`PwaoV^{rL^bPt1b zZR`qAD25h2j!;py?d 3I^Sh zCp6-fa*j|b4Tnxf(abHSc%KmQ`@zr eYazL4~n?FAA zphEQh3q<$=v(JtH(E@ kz$_h4Jp{`(m;iRS?^<2GF*{P zq}l*P4+-5Dpcg@;>7cr(tY=iYR;#8&AS(Oe+EMVb7j-ESpo<*b<%akhhAMJ(M_;cI zvDdV8?+Kc>)PMwidu;tyhJk)~#4ARn=3f2$v>35-SykHHI8!s8o50TlTJhy|dLZDp z!XSBlS&3h0#{IVMJ_r<1*>(OJtVIVB8=G{z(PA(^iGEhxi~U_Ky-#>DjvY~t{ZH{k zcY&}X9OO{GhY7k~y&s+zXb{vwfJ4mx`f0+Trjla8{WXiSJQQgq*(kAJh4n`Ax$ls@ zM?qE9xK$?6{GoS|9Lr>*3lYqQS4(v%7t<$T)btJ~PY`BQX0l^=^M34ooxmG=O9)hr zl;eF@rcgaIQt`kO(-`i)-&6YyN_@3hYhi%AA%{Vv5Cv3gz`av#U7LNkbPxQB{h&%? zu3g3P;pl66<&yxB(s=4u2W#A(`gvv#KFRyaZoRT{;6wM9Qq}{U!bC1L+}Y&$1eLcg z%%+m^kk$DTYrGw&INm|?Y{M?|Y>ZfgtSZ4%sXWs%#=4lQ4JH+AGvd5QuEOcpvlXsC zBV7Eln6D}d-H)LzwxsXvL@6FZ`0g|}pC9;+mlLFO{p`jkAV8dPzDLm`xXQ}fm&jT& z8&K?VxGdQ{3L(XKkWUVg9YHW*4@*^ G(!B^R2?}%5p{gyVv#0A$ z{t*jspVo&4CBvpqAh#OGAH^1{+0ChfB^8r?l`**N ?C>c*=)f5FOFO)-};bR51w!4ex zk8DDH!fQ +FE!HS2(>BbF& zwXe0nLe#jb#S@;xEO8G64tM4^c0k|+acxU0(~y`Nv*)*KH<6;+7XR^5yX#%~KK@*v zt724cD7+v;jx1L8jOfwGJ5dngYlCA@u Q;ezj-7ipuM#RM2=$rO zg zW#U(gucgDuYxzko&8@Do>4`Ibm&a`o6RW%r3Bf#WLPyl++i`i!pl9jk{t0m!^X>l- z!D|1+a{s>~hW|rKtMqZSLZ#)u2x3Y>!7I~E9_+Tnzyi#I1|z}}!e3CNf`08)%~1UR zt>&zp)C-t{&*`_?JRtoutQGvfobG#dA^G}Lh`L&(pC9yRdv>(I``)FZ^Is8k+YXc; z)?g5R1J4Y|p)U51-RZ$I<#}Cj;0H0nIF #m-0x zaY~ls^c7&%C7 C zhm`pPUkbEot7yMOc5@8A-@nUB$(@{ aBln z6a%NbTwRJ6Xbuoo^#^XI_0puT((H9q)Mke >g4S+f!Ij>ayiN!t(B4vTtHguftWn|Ev909ZN_^;Nam#1o}&p zVC9Qc`;xG&@mirl4YWpHBcL=$DKE^ySXe3=lmjC&aTEkbhQs$M5XJwfvALw*G+u#H zYC?b}MPb;|fLMmth>H2K_)=Mo!#sUXZ=!PiZ{bQ}fe~Rt{=u%LU$#0>lN$!94?>jk zSXdiYgdrkyP+|- yHznm;#-068ThtmN_F9;-hW()Yedz zU1wKtw@dfzxP}6%fNx-c0KIPoka9(c2RPmpTm$~_3JRnh#Qb)T7V=bDP97A2lnfOl zd%C_%tOyGVQEOW>oy;spA9+XUBT)?v4gI@X^&6oQVGSiFqYjLWXVtUUpLs%o;VguE zKtvjV^^K&ooUwMDT^ln5aqZSbCWf} $XvDPDG0&{*^|P^rwY~eM&ZQ= zyByE{aueSZT(p^YOZO2T60ma=9J0Np!#_`$gYvPi9g7wR-AeNe3LvNx#}~Wd5=>&S zH9+k0@bI_Hea^trb(4+K(bpl|hw27fK>=7X%rYhkTi9a}b@w%2n>)KNJB8LgdE(;e z;AgVb*W;Etv+JQYqf+~#c3S43TDzm~vr^5S%CpidM%_-cP+E$#LtguPs<+pEu+2CZ zs!_gdrroZps>-PT1Kdkkzd`$9qzlJc ZW z0%!=lh^xu>jQg9xlYFOt2XB}EkC1DC<+N*XztAOSQ?XWPR}3?vMYo~kvHXc6L&S<) zWP3hj6%EY^)A2~elYBi#P%isIm0T {;d-vZ0TfjOw@>`bX3~?$+LRI=PFaJ$8_r|#i&?13e&Y7`>~Mc*ipCBGdMby95s*dXSYNE2 zZ(|U$#dfLu6#?03 PzRg9V@yGxy$v~eQjgAJ!gi=(3jn(RpiKe)pn>5yde< dya8h&U$#K>d1i?<{B3aWE@)$oE7p@v-*W zue#zhC#a{0l%c|A0w;HO%dcrvN=GTv($Mb*I!iMkcY8V-BmK{1SC6>Oxhq}%_E2OO zPuNF8M~fouCN|_N5PdSr#{biNcf8*I LOIhyM@)m8&xOPAR?#Z|_)L0Bwx4WM zG;ES|QepPW$$49sqtk>^;8ZBT_Iq!_?tK4lvVr8pR+H6^(#fQVhJXv%5Rr;pK&VX| * zOQOB~>z? Dz_d;w&rpir{T`YxH3_%*@#`eD&6kbp z^>%#FiNbneMd-8ID3XXEUgn$@U9?CSO|11%e`t8)x4DzAtm$;`m=?|5ehqCaSE(kl zWVw)ylM~nD+zlu0vhKY}f6Dx?y=Ampx43n4S91Expy9~ZA^{iBGHCnM-}(kwnu4MQ zS^liD_C*tnOxHVSs+XI*=chmPz~katM;LkZ>Ck~T?{G5wEWC%0Z1#zvH(@Ymrg+vz z e2|eEz#Jjli%R}zPUDgvn2V)p4AH-1<#mH1m3deW-^1MU)I@tp z1kv98#qW?$@~LytJK4LUJNl==rYc_AcXx5&GVZ?OJ(TdQ7sgJ4)aBiHxf6$rENU}L zYkse$5Aa^qd0bw}b5`r!Zm8L8!1O!o>tkGtC=-rhQ@P_MpE6S=7R;%CtiY&L_Y6oP zUy&OaU0bUI6~R{2&vo9?Og9e?6Z8%hl=Ob&@%s3Y1qBJEop%?!a#!nKRefQY*-yBM z@`#TQ?4CtTTwZ8PGK7-dsSQU#OiEt=sJ=U1Y5GANi-gj{-2@gB#}vPow)T*KNdQO1 zA3PLBrB;EKRWdT6j?cI)9CpWyJ?E(A_z`-*GzQg;XyCX} zHdZ!T#EZUH^V|3DxX`RvT$q=)VEXvxow+v4xc4`vzPQT)o8L&m zg|AHifhe|4a6N}U*!}dzjosyrGaW+RUqLa)?z)$D>kTfrjvpo_K~u3!%ZLVk#Ld$; zv9F-)E|hkZdW6oO>=8X~!az~i)SPeY-j7T2_w(&4mWlL{Fzs{s?0{aiHFm?r<;nHy z{Nhj7oayEJGt}!W!To8Kb&DTHb8TZ#CGOW^;7>MDSm6ZB(cT`(kDE_fR2hp8{+UHo z`@q0J1;&hs==gx dg6= PKWApUb=Uh(;e{=DhYuS4aG?#V*f#>U35@OyU~@MBeDo&N48 zY)|gsG5BWQcJq;V_I09;IY%zhlj~Kso{>?^>=y@z%Fh}tH=$?~vDZ>;N)Zw~-FN`+ z><4f@p`xXIF(x|V?=su`$o5cY7J?f#qetgaX_OnkPZ?s_F0gbep7WJDowYLQB~GgI z+{7ktM?M^@mAdfeb6&HnCSrT@!vy-3<3g6UG9|-*C1u#Y++%vH#CYo6S-mb5+)LW1 z3!FMZggQJeLD|8J%aKu0io+d5pjB-S-@0k$CZrVh2=P`3vux&6QTLHK2Hczxmgm z9?W2(3+8%uCaFNURlT#Zf#Vz(-jfpsVd3qagO)a#xP#vhcsV(Rlg7{QXlSG?Eg5g` z-w%QgOm9vmVxoR`NA(v^*9*@?F(6jPgsd8V;01@Y#40H*^^) S}76fB(Mi z 0A7qEQ{{_HrU zq%5f`y=%3m=H|hmx&nC-`zBRU!b+(>F~F)fy^H{_ADngC$=7~K2pk@x<7DEYGB!k?itHo zL5U@dednQCV`H>)+GRv6WQy*tQ+^vo_w8GMEOWJMx!PAiCD#n;m_m1xAe@XG#y=$| ztF7_!{=CuN`!S+cbccwDK?n8Y;ozef&(o?Mm2Sf0^{>J&4vVg!tW1_(d+fMD>1bGvW_?e$`9rjk=G=b^w;;zPFw~?88QZC&AJrB}Kg5p^@0L zXliuWG+W^1J^b^to@!*b5ZL_T-6>S9;vz6b{TL{YwQhcPZ`LI~==7nxy_rGJ=h=7x zN5Q3@kJy03hTP-9-*dkZn_t#cSJ&;z3WU#6_|NP4gfcF_enVv?)wW~(SY}lJqd}AC z%hpc !Ftn;9ttnr#LH>tMgKMW;*oMt=KBRRf!0g@#3 z8Z&NaR}@61$@{&(%5+-Fsef#MW=EsZwWO-bJ5`75v-wahw{d@R*d7rZ_1hGF6wlkq zb?8Hwr+OSvm=sj+ysNvO^MP2v^6KAxdA?>Vdwb!JBZZuLlks+Ys=sP2ZoYK=g_-J+ z(nwlr`{_0@$7?k35G-)kRCFnFZ>VL|5nSBWM{zpYFa0)A`*$81Vb5$%RK;^y(8Ji= z%5tzh87YXEb>u?DgK*Y>m%1EEw{QpvQT^+keep8K`8_VKs<^pYAO5sH;rEj^G^B++ zXm)0XGD%tC7Odw+*F>EmNAh1((&?TR6&2rjH(o~pd<|y7W50fpoc*4q>6if{clEtf z=@ZA}tuB>^Z-0^aV{eGUYAP>GuBD}8!X-FR-TK%I*M&AXF-4dBg|J=j?EIhh-a4qt zH) iNfRupJVNlZD-Q6jvv;u;(ASK=10s=~GQaVLNI;CL~-`c--zL|6W zKQrf_mvP3~#Iv7$Kli=jy4G6PKSk#F@*3{5$NTXV>*n&nxIKeG&by1f7IA|FI5?s4 z@oJ6pPg#0ZV(tSl)IL2;{%T{hs^PoVkv=u&N^kq@?62Dc&lS?IA}F~xlq^vTh-VA> zVVQf~`1}=g1@_9wi0GkPd;$VU|6>R-9So}mW1Co-8yY@7_qdmmoV<3{?`$$qEfwoxpZmA-gZ_A|An=mS;B!~g zOPYz&`Dd|9Y`@pm0*uqr>b*9};n jZnI-4gH+#f6UBIaeB*_t1UV%8?C<{JwL^- z(ZnM{0$EP|**po_bS|g+VwMf(7&$mtY?wEb*4wU#?)6;5AS7H}?%>A|7ZYm;Kq~?V z5D1U~&lE1N=bfQcb*J8QwX!0`q sn2}$+BudD0uUMoLX&L`DF zH0wPd`du9Go;azuxTt5Be9kX;mwftUIu{QIhctvsBVAI$#M4aUI bZ^+dln$5-Tau@O)LYME)SNb|y)kRWE`;j+~Z*<5m|mrPX7{D)m(*DfZjK9K&`) z=iJ;slh0{sGbd5Ye)WxwhJ!zSSALerl=@-GP1jfjdbyqBkuO_<+kj*KMq^bO(^s9) z!{gK0a{10D>wEoEk1g);Yq>P9AH7j}PgbeTZ*w@C&T*7?0*;g2=X|XvG@y~$tQi}- z4OFodTb$KK9Y%?J)r*NmvOqzR54FvY3vx&gz95a-+T&<_*Lkhq#pVs%7&$zvC2-%E z#miQ=+bx>70ZS&)TQ-v!q`|*W!^bz5VSlPh)|)Rd+MiOlqn3h?cn#H9Unk1aI4ZLl z^5oN{H13w@b+MBjpA+mZKycdDHKCw?F`e*1WUOG+sz}}KqFo$j2E4pzZuH$_gJ9Zi z;4y?IG$D~~Qc}{__E}1hQS9<)_HO(6Q=Zyc`+NKBi~L`?BIG-zbKYoU zO&@apx@Mhs<*aX`(t8`q1zJH@6zPwp|HbpIKWG!pUjzoN#!EjyTWRJo>kR1{a?oaA zY#17Vl)D0gF_=kut;O#E6t`5HXN=746H1Y()?pD45*hyfle1g>@jTV}ol*d8QG8X4 z^%xQ467fYWH4ZZp7CFV=zKQwF {09QNmDv)kv-Q!=ZI(oOc6NL_LDvM9yj2w= zSsl0h_F$Y$hxE9Mvj;dTg>I|lE%gzJq!1AHhL*uWbUN+Rg6a`T`-uh@QkZJ=j&3X1 zjh$Zae;x{2ezR2Ai>|fmF}m^L>3CVN!h!Yi#^bpTYS~XhB#a8_oyDsvhW7U6|2>`I z107RP2_kM~(+<#|-~S4u7ah-zr82+emLBNGPPr_1Oif{ v*CAL%NY@yJjV>!`{P-SP49`J&h+M>70Um=v&GOjp}^kd}MW2{E?Q-Vz(0%b>nO zK){gyFT*GHlZfTPG%*;BgHA)%C-#cW^!{%xKxsg@%oV23B%Z|gwiGuf8z=~9t{XxT zH#(xY!>Su0Uf^Hd lF2**vluSDc)|Dyho3j%Nvjq-km?fb zAoTgM_!GCqPoDyl#I0Quz4%IY-FhZ8N B@~vX;m`^nu4*3&HFjZ4}EIU zu)^1Qtl;IfQ9Gs*?NlxYU*`WFjD{PNS`Ej+q18zFYU1!C9Oda6<3;8IyU+pU25E!t zv1&{LDt3*y;hG3nwLIm#5^XhE*@(Z&-J;VwUFOX#lJG88>$OzFkdeKFP(2<>wePnk zd~{zg{Ap&n_}F);K;E~RhSRIK{L3gy9k}hWVigT?zGEyYu8ic&ma%zN-J7poiiSqT zK%Ayd&gB|}MpjnW-KiE|N#9k~)-89eI6DOv0F6v3i-`q+|J%1qzi 1P7iF1MDW%odR;G@YmruH z!y@gLA2GUj)Bz$>I~~8CPx}9IcmhyiTADZ-?Lg-m@6TN*V;Li`a5W`Phw`+?f}Bh^ zj7Q0AXIe1MPxmD{Fb`@D&$lKUaA3@0=kWK|OwHtQJgymgyRjxNl#XSJh55MmcA>$I zC>zx2pXq~jM1}{qsBd9wL6iHrz|Wu{Xs)nf(k~_hfRt8G;|CBgfIsV EZ(R5KM)FR>imq9urW6NeBdBs?w9w;IL@&9Em8}Nwzx#DD=J?@pR0~T zftSWNC^*j{>i@YuyCrY0)RW0*Dh`-eTG5G7(d$`Ab9H$4HY{cJxc-&nTO}AFV zKplyXFho}PEM5*(c^Hfq{|<~?SGV9(-U84>vB3B`t8Vo*IZ#W=>y<^@Tx6d^rcK&M zt?e @Z7PCgFY{&z~$HtIgB(}BfE_`KFz!ho# zk=LG7x~5nd7zxb{&5|i+pQX(ZUtwa0; IokNe2dgx z-8uOBN$c@YmW~G69ip8Z;A!M}sX|6VP@;vH7jT2Y%eH+0!Kp;ERl(uu=U7>;0)nc^W7Zt*#JIyp0got4M1`bvM( z VLanqGtXv1cH?euLT_3A1=@=L=J+^+1tpAmt;xa3@>g5sgIlci=m$b*Q zCJh{)5jCnp$KNjyuQ9L)z?HtuzW)H-UbNq<&gXU-(K%QHDSN8{RWZP~1~t-C_w4NK zeq{IwqtjtHhCsa{xrW7bY6_WxuX {Jyr2Vx0(luEuXOw#Ln*-^eNvNfq_V#g905bt;QOpxP!JT;J!ys7LbY{Nd2T zlarz`E&QfBz7kC#SUon+l-f%;F0?}u*jiYGv-#V;rV}6s&nr=(Y^GFZbbGeZS27J6 z0CPH#@*}yjK~=H0ttaeW1Ku4J7#O&NrIwDgD!ggpveYlRSSXUj?~N~kPr)o(REX~e z2*vS)Lxi#!bH)sB^IsXh@cO1K-zJ_F-e2Ct?AnwQr3PKVMWf}t<6dqKj%V9jbC*cq zQFIS-Tg~1;C<@lZB#ZRE)No^Vn`?4!TY;(JX4A5&r=JCYdbnD()F-N}Ocz6R8wy5V z?JyhM-Aa1^Q|F$@Qa)7|X;(_DefQBIbsBWuXj(3f$N~(Sk!kKl!g=d;FE8CU_eL$6 zHRh{os>{DcSgDlzd}oeh*TA0NKgCDKP@R$F$dSHu6n#s+@?8u}yysG7yE~;yIIwFN z`$V@7&CB`Tc@eiAVW3P-i)n%>#?T4oFd{EMkx<9cr2Ur2zI+=E~` z?XnX*3Qp~{p@Je}z;~W{oV2q1M=5khrnFasxXo}1FRik%aZCum87s3iEr{@t?NbAS zDW$BbnKZBpxlcC86-8>?YliK*Tw&S6g?7bNqYQFfO%YF| 0zxY`Ex?Cgtf_KfWCYMHSauy&e=_(u5x$dp3^~LKuQ3p!`lxG=5uG z!mJB)xG>fr4^~haLW<4_=xE5+C^P7t@rRehckf#5c$_GbZ4NANlzuXMNy4e4Gb0 !jV)MMf-|C&V {;3e>5~lGS=|OkwD?t`N``u~`}#cV{G3 zqTa+;hFNZ&;*mYJr$c(iheSr=v0r*z2QiDua`ze^ZpzieAJ;H6ABKl1_a5tialM gXDNWK|G+5nV%gMdJR*El $!AU2ri$Tru{ zcUNszxvVy)$Sb}PBKKFx0GNg;GgY27 aOxa`mr|&Cr z8iS{C`^*FetzLXi%16 HcRz5Iih(&hB~~=@emv> zNT{>^+Psl3l1Kv1M--Cb7bWk(v!Jb9+WY}YZnM{>0K9wG-tr^Y0S#XiPxYUS7lf&$ z_`P|50!w}+P(XcIWOTG*1ck72{n4+j{vt<5$JdD(Rt@HXA`wbb#m_FzZq)nhcy0}S z$U@sb*VS3Vmvc8l-;=# _epJV9tcc5b@lPvU=_{DX z3Zn%EG)bsGu4Pn=^!QjXd~hCZq O#p