From 1c5c8a371124cf34df690f082c412ad085b9ce8f Mon Sep 17 00:00:00 2001 From: Vitor Mattos <1079143+vitormattos@users.noreply.github.com> Date: Fri, 3 Jul 2026 22:07:38 -0300 Subject: [PATCH 01/13] refactor(pricing): add page builder Signed-off-by: Vitor Mattos <1079143+vitormattos@users.noreply.github.com> --- support/Pricing/PricingPageBuilder.php | 115 +++++++------------------ 1 file changed, 32 insertions(+), 83 deletions(-) diff --git a/support/Pricing/PricingPageBuilder.php b/support/Pricing/PricingPageBuilder.php index cad3e8da..4e0357a8 100644 --- a/support/Pricing/PricingPageBuilder.php +++ b/support/Pricing/PricingPageBuilder.php @@ -10,12 +10,15 @@ final class PricingPageBuilder { public function build(iterable $products, ?string $currentLocale, ?string $defaultLocale): array { + $currentLocaleVariants = $this->localeVariants($currentLocale); + $defaultLocaleVariants = $this->localeVariants($defaultLocale); + $productGroups = collect($products) ->groupBy(fn ($product) => $product->translationGroup ?? (string) ($product->id ?? $product->slug ?? '')) ->map(fn ($group) => collect($group)->values()); $orderedProductEntries = $productGroups - ->map(fn (Collection $group) => $this->buildProductEntry($group, $currentLocale, $defaultLocale)) + ->map(fn (Collection $group) => $this->buildProductEntry($group, $currentLocaleVariants, $defaultLocaleVariants)) ->filter() ->sort(fn (array $leftEntry, array $rightEntry) => $this->compareProductEntries($leftEntry, $rightEntry)) ->values(); @@ -53,10 +56,10 @@ public function build(iterable $products, ?string $currentLocale, ?string $defau private function buildProductEntry( Collection $group, - ?string $currentLocale, - ?string $defaultLocale, + array $currentLocaleVariants, + array $defaultLocaleVariants, ): ?array { - $selectedProduct = $this->selectLocalizedProduct($group, $currentLocale, $defaultLocale); + $selectedProduct = $this->selectLocalizedProduct($group, $currentLocaleVariants, $defaultLocaleVariants); if (empty($selectedProduct)) { return null; @@ -65,10 +68,10 @@ private function buildProductEntry( $displayAttributes = $this->mergeDisplayAttributes( $this->filterFriendlyAttributes($selectedProduct->attributes ?? []), $this->filterFriendlyAttributes( - $this->firstMatchingAttributes($group, $currentLocale)?->attributes ?? [] + $this->firstMatchingAttributes($group, $currentLocaleVariants)?->attributes ?? [] ), $this->filterFriendlyAttributes( - $this->firstMatchingAttributes($group, $defaultLocale)?->attributes ?? [] + $this->firstMatchingAttributes($group, $defaultLocaleVariants)?->attributes ?? [] ), $this->filterFriendlyAttributes( $group->first(fn ($product) => !empty($this->filterFriendlyAttributes($product->attributes ?? [])))?->attributes ?? [] @@ -78,8 +81,8 @@ private function buildProductEntry( $storageAttribute = $this->resolveGroupAttribute( $group, ['storage', 'storage_available', 'available_storage', 'nextcloud_storage'], - $currentLocale, - $defaultLocale, + $currentLocaleVariants, + $defaultLocaleVariants, ); return [ @@ -269,40 +272,30 @@ private function compareProductEntries(array $leftEntry, array $rightEntry): int return strcasecmp((string) ($leftEntry['product']->title ?? ''), (string) ($rightEntry['product']->title ?? '')); } - private function selectLocalizedProduct(Collection $group, ?string $currentLocale, ?string $defaultLocale) + private function selectLocalizedProduct(Collection $group, array $currentLocaleVariants, array $defaultLocaleVariants) { - return $this->bestMatchingProduct($group, $currentLocale) - ?? $this->bestMatchingProduct($group, $defaultLocale) + return $group->first(fn ($product) => $this->matchesLocale($product, $currentLocaleVariants)) + ?? $group->first(fn ($product) => $this->matchesLocale($product, $defaultLocaleVariants)) ?? $group->first(); } - private function firstMatchingAttributes(Collection $group, ?string $preferredLocale) + private function firstMatchingAttributes(Collection $group, array $targetLocales) { - return $this->bestMatchingProduct( - $group, - $preferredLocale, - fn ($product) => !empty($this->filterFriendlyAttributes($product->attributes ?? [])) - ); + return $group->first(fn ($product) => $this->matchesLocale($product, $targetLocales) && !empty($this->filterFriendlyAttributes($product->attributes ?? []))); } - private function normalizeLocale(?string $locale): ?string + private function localeVariants(?string $locale): array { if (empty($locale)) { - return null; + return []; } - return strtolower(str_replace('_', '-', trim((string) $locale))); - } - - private function localeBase(?string $locale): ?string - { - $normalizedLocale = $this->normalizeLocale($locale); - - if ($normalizedLocale === null) { - return null; - } + $baseLocale = explode('-', $locale)[0] ?? null; - return explode('-', $normalizedLocale)[0] ?: null; + return array_values(array_unique(array_filter([ + $locale, + $baseLocale, + ]))); } private function normalizeAttributeName(?string $attributeName): string @@ -312,56 +305,14 @@ private function normalizeAttributeName(?string $attributeName): string return trim((string) preg_replace('/[^a-z0-9]+/', '_', $attributeName), '_'); } - private function bestMatchingProduct(Collection $group, ?string $preferredLocale, ?callable $predicate = null) - { - $predicate ??= static fn ($product) => true; - $bestProduct = null; - $bestScore = 0; - - foreach ($group as $product) { - if (!$predicate($product)) { - continue; - } - - $score = $this->localeMatchScore($product, $preferredLocale); - - if ($score > $bestScore) { - $bestScore = $score; - $bestProduct = $product; - } - } - - return $bestProduct; - } - - private function localeMatchScore($product, ?string $preferredLocale): int + private function matchesLocale($product, array $targetLocales): bool { - $normalizedPreferredLocale = $this->normalizeLocale($preferredLocale); - $preferredBaseLocale = $this->localeBase($preferredLocale); - - if ($normalizedPreferredLocale === null && $preferredBaseLocale === null) { - return 0; - } - - $productLocales = array_values(array_unique(array_filter([ - $this->normalizeLocale($product->lang ?? null), - $this->normalizeLocale($product->langSlug ?? null), - ]))); - - if ($normalizedPreferredLocale !== null && in_array($normalizedPreferredLocale, $productLocales, true)) { - return 20; - } - - $productBaseLocales = array_values(array_unique(array_filter(array_map( - fn ($locale) => $this->localeBase($locale), - $productLocales, + $productLocales = array_values(array_unique(array_filter(array_merge( + $this->localeVariants($product->lang ?? null), + $this->localeVariants($product->langSlug ?? null), )))); - if ($preferredBaseLocale !== null && in_array($preferredBaseLocale, $productBaseLocales, true)) { - return 10; - } - - return 0; + return !empty(array_intersect($productLocales, $targetLocales)); } private function filterFriendlyAttributes(array $attributes): array @@ -407,13 +358,11 @@ private function findAttributeByNames($product, array $candidateNames): ?array private function resolveGroupAttribute( Collection $group, array $candidateNames, - ?string $currentLocale, - ?string $defaultLocale, + array $currentLocaleVariants, + array $defaultLocaleVariants, ): ?array { - $hasMatchingAttributes = fn ($product) => !empty($this->findAttributeByNames($product, $candidateNames)['values'] ?? []); - - $attributeSource = $this->bestMatchingProduct($group, $currentLocale, $hasMatchingAttributes) - ?? $this->bestMatchingProduct($group, $defaultLocale, $hasMatchingAttributes) + $attributeSource = $group->first(fn ($product) => $this->matchesLocale($product, $currentLocaleVariants) && !empty($this->findAttributeByNames($product, $candidateNames)['values'] ?? [])) + ?? $group->first(fn ($product) => $this->matchesLocale($product, $defaultLocaleVariants) && !empty($this->findAttributeByNames($product, $candidateNames)['values'] ?? [])) ?? $group->first(fn ($product) => !empty($this->findAttributeByNames($product, $candidateNames)['values'] ?? [])); return $attributeSource ? $this->findAttributeByNames($attributeSource, $candidateNames) : null; From a54b6d4a51e3048505f07d7a64da401f98ba3161 Mon Sep 17 00:00:00 2001 From: Vitor Mattos <1079143+vitormattos@users.noreply.github.com> Date: Fri, 3 Jul 2026 22:07:38 -0300 Subject: [PATCH 02/13] style(pricing): move pricing styles to scss Signed-off-by: Vitor Mattos <1079143+vitormattos@users.noreply.github.com> --- source/_assets/scss/_pricing.scss | 213 ++++++++++++++++++++++-------- 1 file changed, 156 insertions(+), 57 deletions(-) diff --git a/source/_assets/scss/_pricing.scss b/source/_assets/scss/_pricing.scss index 66a2d5ca..0cedc10c 100644 --- a/source/_assets/scss/_pricing.scss +++ b/source/_assets/scss/_pricing.scss @@ -1,74 +1,173 @@ @use "variables" as *; /* ===== Pricing CSS =====*/ -.ud-single-pricing { - margin-bottom: 40px; - background: var(--white); - border: 2px solid var(--border-light); - border-radius: 8px; - text-align: center; - padding: 45px 30px; - position: relative; - display: flex; - flex-direction: column; - - &.first-item::after, - &.last-item::after { - content: ""; - position: absolute; - width: 55px; - height: 55px; - z-index: 1; - } +#pricing-plans { + .pricing-plan-card { + background-color: var(--pricing-card-bg); + border: 1.5px solid var(--pricing-card-border); + border-radius: 1rem; + box-shadow: 0 2px 12px rgba(15, 110, 86, 0.08); + color: var(--pricing-card-text); + display: flex; + flex-direction: column; + min-height: 100%; + padding: 2rem 1.75rem; + transition: transform 0.15s ease, box-shadow 0.2s ease; + width: 100%; - &.first-item::after { - background: var(--primary-color); - left: -2px; - bottom: -2px; - border-radius: 0px 55px 0px 8px; - } + &:hover { + box-shadow: 0 18px 40px rgba(15, 110, 86, 0.12); + transform: translateY(-2px); + } - &.last-item::after { - background: var(--primary-dark); - top: -2px; - right: -2px; - border-radius: 0px 8px 0px 55px; - } + &__header { + text-align: center; + } - .ud-pricing-header { - h3 { - font-weight: 600; - font-size: 18px; - color: var(--heading-color); - margin-bottom: 8px; + &__name { + color: var(--pricing-card-heading); + font-size: clamp(1.5rem, 3vw, 2rem); + font-weight: 800; + line-height: 1.15; + margin: 0 0 0.5rem; + } + + &__price-label { + color: var(--pricing-card-muted); + display: block; + font-size: 0.72rem; + font-weight: 700; + letter-spacing: 0.12em; + margin-bottom: 0.5rem; + text-transform: uppercase; } - h4 { + + &__price { + color: var(--pricing-card-price); + font-size: clamp(2.2rem, 5vw, 3rem); + font-weight: 800; + letter-spacing: -0.03em; + line-height: 1; + margin: 0; + } + + &__meta { + display: flex; + flex-wrap: wrap; + gap: 0.5rem; + margin-top: 1.25rem; + } + + &__meta-item { + align-items: center; + background-color: var(--pricing-card-surface); + border: 1px solid var(--pricing-card-border); + border-radius: 999px; + color: var(--pricing-card-heading); + display: inline-flex; + font-size: 0.78rem; font-weight: 600; - font-size: 26px; - color: var(--primary-color); - margin-bottom: 40px; + gap: 0.25rem; + line-height: 1.4; + padding: 0.4rem 0.75rem; + + strong { + color: inherit; + font-weight: 700; + } } - } - .ud-pricing-tagline { - color: var(--text-muted); - font-size: 15px; - line-height: 1.6; - margin-bottom: 0; - } + &__divider { + border-color: var(--pricing-card-border) !important; + margin: 1.5rem 0; + opacity: 1; + } - .ud-pricing-body { - margin-bottom: 40px; + &__features { + flex: 1; + list-style: none; + margin: 0 0 1.75rem; + padding: 0; + } + + &__feature { + align-items: flex-start; + border-bottom: 1px solid var(--pricing-card-border); + color: var(--pricing-card-text); + display: flex; + gap: 0.75rem; + line-height: 1.65; + padding: 0.75rem 0; + text-align: left; + + &:first-child { + padding-top: 0; + } + + &:last-child { + border-bottom: none; + padding-bottom: 0; + } + } + + &__feature--inherited { + color: var(--pricing-card-heading); + font-weight: 700; + } + + &__check { + color: var(--pricing-card-check) !important; + flex-shrink: 0; + font-weight: 700; + line-height: 1; + margin-top: 0.15rem; + } + + &__button { + background-color: var(--pricing-card-button-bg); + border: 1.5px solid var(--pricing-card-button-border); + border-radius: 999px; + color: var(--pricing-card-button-text); + display: inline-flex; + font-weight: 700; + justify-content: center; + padding: 0.95rem 1.25rem; + text-align: center; + text-decoration: none; + transition: opacity 0.15s ease, transform 0.15s ease; + width: 100%; - li { - font-weight: 500; - font-size: 15px; - margin-bottom: 18px; + &:hover, + &:focus { + color: var(--pricing-card-button-text); + opacity: 0.94; + transform: translateY(-1px); + } } } +} + +#pricing-comparison { + .pricing-comparison-plan-heading { + --bs-table-bg-type: var(--comparison-plan-bg); + --bs-table-color-type: var(--comparison-plan-text); + background-color: var(--comparison-plan-bg); + border-color: var(--comparison-plan-border); + box-shadow: inset 0 0 0 9999px var(--comparison-plan-bg); + color: var(--comparison-plan-text); + font-weight: 700; + vertical-align: middle; + } +} - .ud-pricing-footer { - margin-top: auto; - padding-top: 32px; +@media (max-width: 575.98px) { + #pricing-plans { + .pricing-plan-card { + padding: 1.5rem 1.25rem; + + &__price { + font-size: 2.25rem; + } + } } } From cff8f7b9eafac6854bce7ab7d3033663691248cb Mon Sep 17 00:00:00 2001 From: Vitor Mattos <1079143+vitormattos@users.noreply.github.com> Date: Fri, 3 Jul 2026 22:07:38 -0300 Subject: [PATCH 03/13] feat(pricing): refactor pricing page template Signed-off-by: Vitor Mattos <1079143+vitormattos@users.noreply.github.com> --- source/pricing.blade.php | 198 ++++++++++++++++++++++++++++++--------- 1 file changed, 156 insertions(+), 42 deletions(-) diff --git a/source/pricing.blade.php b/source/pricing.blade.php index bc35f4ea..c4221fb2 100644 --- a/source/pricing.blade.php +++ b/source/pricing.blade.php @@ -25,68 +25,182 @@
- {{ $page->t("While public pricing is not yet available, our team can help you understand the best option for your organization.") }} -
- - {{ $page->t("Talk to our team") }} - -{{ $page->t("For organizations that need support, guidance, and a tailored LibreSign adoption path.") }}
+ @forelse ($productEntries as $productEntry) + @php + $product = $productEntry['product']; + $price = $product->price ?? null; + $detailAttributes = $productEntry['detailAttributes'] ?? []; + $hasPriceRange = $product->hasPriceRange ?? false; + $permalink = $product->permalink ?? '#'; + $buttonLabel = !empty($product->buttonLabel) ? $product->buttonLabel : $page->t('View product'); + $cardHighlights = $productEntry['cardHighlights'] ?? []; + $pricingCardStyle = $pricingStyleBuilder->buildCardStyle((array) ($product->pricingCardColors ?? [])); + @endphp +{{ $page->t('No featured products are available right now. Please contact our team for current commercial options.') }}
{{ $page->t("For organizations that want to integrate LibreSign with existing systems and workflows.") }}
+ @if ($comparisonFeatureGroups->isNotEmpty() || $detailRows->isNotEmpty()) +?M0sh(B+!i8gPqj@!=aK#8GQfV+)q6v>`8CFtNTF_eHnzfrE9 zo (CXQ0{cloY2LahvY0hrp)SE~R_2fk7PR{@ zGW}h1kWo|}Yb3y5FRRtzaG`h*6Z5HWN@t*8pw%Lga;pv)!t8j2F0qxkU_({>?eM;6 z(H5&q&mPTB|4j0R@&XEST@C}mN5QrmI!CIF(E`HF_!A)*Wh-Rn)md(2x^ tlNf_&-%|&W%A}-cK=H4)!zc)jBq^5 ze}~RQN{%O}qDmTGt-$*-0{JN =I9i(!uI%(hu?PD@WN{tP}5$;9EeAr4@hl zzR2s7Ma*qXD^fL2S9(pd{e_QznvB2+1#Y{Pm_xrFy>wHl#7jp(nn}UGVAO-e{V#=R zeM`+N*|H-l)Ms)585d^%#Bjj>AoPU{ufwBavSoBuk%|=;SsHLa_75ZSDBY|{vhyGO zw7z!+Ic^z`brKU6#QbX9O6i}@{M%xG#AZjCy9DbQF5NH2bW_TuYyLImB%eI!g_)}n zDliU%@4+?FS}5~Zbi$O6@!%DJ&_9X=pQIywSu U9bUj^;3w=AGuVtk z+a_B5od0>kO2={b0bJVq%9~s}=7+K!B*!O@1b$%TF(raGpKa$lbu;(5%rPi(R8OA~ zL+y-8e2*u{QU1_`H}T|8zirctGBDwAJ$Ebg%Wd_`e^S Bdaj3zsQ2fvT?-b348N8RJ~I2UFrs-1^ba*$<2v{$WB= z5`O-eu&l;&)dT;!ev42U0} N193{ELQ`uSfKcx15>r(Efcy#cVfcrJVHHs0V!c zN=bh8FF3mUG`EE@Zb?t)>QvyCJrr&gVpae5Y$GH}@-Wv=I%Zwo)Q!~^$_eKp> zAvnE=HL;rEv;O#f;4hO9-FI(#^EPCi+XPtuORvjfLIU0~Ct<&8Kh_^Z26kz_^&wfa z6Rn2sXt4##c)s0vh2SOjGZ8&VjJpaEuK0}b+3UAN04{fV6O;0^tM?54MJt3VS%pod zg^{=q$q^}zn(BE^_@vV$u92PeNd&^N`<{U6)0x)b4v9j37INv_$c$9pM~bJyXrCb} zSMT-!DYG-IBZQ-!eu{$8jKMK5m~%6-*B#)z_4(aFQ8h_L1cHZefv@=6j+M@!$M=mg zsVH|9ZVciDyeYR{IW{Z{05DxF=a#*Br;@IPhrmyx;smtw{#~~r>nFJaarf(KZx!Cd zBtjlVstFJ5^7$I{_zsd#>?+{+SVDWqFmDJhpRr`$bxRtk@@wEx{A1#6RInHRpsql! zyB#L(AodO3ba=6w(6$Gs!KlO5#$fb|C5fL!lwvZ~OKf$~PR~%^4WC-F#QGB%x1*wd ztPEF>V|lbK@Vj~w1(uOOgh~HTVdGVDIE3*htHYkwF7s0P1w%_7$4zCYhIQ4Ol1+@9 z8QzHYX=;p(IVC&9vk=QBmS0aHOHw*zM!rG0`=7G> HVz@U=)9#-6 zYyB^YCYetnUUzp)T;p@JykB03@Vxnhq|xQ*>v+q^#U+P9_LjKslw^5Bv{Xz*i-LiH zFDW7=Mou$KkP7aVf4Kld>*tCuB{8t$XkVd|?DGcp+c^Fy+lt-oxiH7Q$*a6frH!8b zB0vsyK415 t&dOd|*&Eai3WKsyS>@yOjRy zd2=6mp|Vy9L+RA#QtA&m-CV{agJyJjhTIfDcTKxw{@*8iN8O`< L&5HOyyY94plF3_mG;n%nGkzSh*_~*pcX`y ztjp)0GP!HDSok>(*VuqW22ix^|15Ul<#7j f5@cU>sVHejws9N;g#0{AVvX!i5N#b7 zYFHCRGjc&cXC_%OSNgfDZkJ?OIR>rr)ALh*2okuGydFm)LL_z=G3qX(3Cx2^xAIOy zDQdvB_PXVw0kWvX-D`Hw18xaM_(K~HT^%Q_r~B@?Tdq`FH^LDKtq SR1dg0SzYjM1dKUn-}+uB)y0u2$u^~hzVJ%jOm&gS7KA56Y(gr%Dew1HL5M|X zb!D*gz^+?1r7U&3^{8ka-z*|YzgqgX_$(vq }h;Ovt@Ju66>v+RXF%dpRspJGS>pXDxW3OW$`L^V5XGy=nl zW}`-%-Bo!`0{~~>BENa3{TVIQ$r`I_|KB$Tb~tg9RuV!gr{5z10vZ3c4{gMBNT*pZ z(bVjDHM$0rdD@zyER9$sA>X6o3{inrm8Wq)4fki3H(GN>w+N64syM1HWYOw9`vvzx zdth_mdR{8^HEi(W?iAN~U)|IOI&d-4jmQGFcG52wwdqgu&BK$dbS}Bu4eXjz;bC1G zt!D#i&RlBk>j5iX*aN+12m538<1nv+_`Z*YbenG?&p9^cy1X_*i~?i{1;r-}!o(FN zt7`AfuOKLy!STtyv$70fp|38j+`?(}5rUxv?I~UOv_SRRE1fiJF4O7jky2JbyEo$A zrf-${5>Dfts}BNynGbxKq+6Kz!?a>Fn|s>Vcp$dl+*L+TgEOaTVsqZe#;Q^j474@2 z(%d?@y$V;L;g<2&er9W~?ZMO_U2ZXA_&eKI6J9!^3Q)Fp-a+ajWLFy^x1xabR(? zNb`+M{_@?(oX&pZn=qjLqB*LCRR{@1{My!>L92pQu`i(YRy%3`Pb!i5oc&Q4QOg#1 z1ieNw2G69(PG)oPMU}?f^KnWM+0B$+xT=lKPP!qfSYUe=Ud=>$+7hdVh5cH6So&yu z_y~lRDtTPGs%QKzTpc#m@uIYbDNZxMx6JbkquztDH3{v$0kX`J$5oNas;ZM_bW<2c z@%(SX%Rg>uoAZf;4!>tMtdTh(%5f*iT9>!nWnd!q4JT#-=K4X1dK>pdszClrDc9W* zH?{dV552Q2AH26!r-Njk+RAarVJ;_ is_8-74_Tu$-H%B(xhOof->*<(r_kGpqcD3@|MgBHW@tlqY4Z+xdYs!>j zGq=glyjsEV!(EIvhM{Ra8QNFV!~kJ`j7*I``;GJj? KLnvB7%gFPry&f|85 z45Ci8oY)}^HZf9y)tb7)q-MOCb_%B1hgr&E{@mx%iK~4->d8k9Gr*ll1n_K(5Um}w zD4)I7sW;uAy$c9vxd>*|lIZ{StSyOs?$m+exga*VYDqZVFqihMyWA2yq6Aito9M73 zHGN)8vFHXri`r~$+(BQEF+x~$Oi zb~rgTM0PT;BT6WDu`EWERKQYAad$lY z)Mco2$#6KR)4a0tEh(UTP?XX_P2;-b;wy1!DBin=(>!X-OT>MfRNme^{p#iVXtqm3 zLBXZI)#GqOEvUM%0v)zaMOy}?{@6l{IXTqA!~a@Z5MKFfe4~4TKrvU|D~8x8XO+*D zMpo+j{Y+{b2VWL7*f8>Q4b8aqTPjw$-#L`5WusJhvQSfx+MAcZYHAQsv0v7y#i&!# z4>f#>QYuPlrG3M}! 72laRBq}Njm%C(p8De7}3hRLvFWb-cZ(OVV zZK$NfWY(*iOHrIR5^Gk@i2--u1llUP{1~I;AujDtF^bBVe96ndj(y{|O$AEShB=@+ zlT6)3ECx<3^kz3F`)3Rx>`GqutBCr}X}C@k(_uZx;bGRi<&IobBQPT#%|+)S(p1r! zOhL*5#XboGj-#f#rILZw >;+~A8cbG3uzzMxw5`R)0iP!xBbRkFh!2mO%{h>1{;TgXXR8amkt-?x9=){Za5Nh z`>+{Azo+cjpMSA7*IMap=^AQgyP1L3UgUomXO^&ieuAaO)zBWp+)XSyg)y~#T;E+q z!C6B3-r&2NtBlM}Dax1NdB;`w2@Q!2lo%P1sGsPE0C|?Tbev93dNMoOXEhC#nQ I#-^hN_okkmuq!lK52i;D@RqM>S5k{bvn31(=6uHSgH;CUsaXWqCvzh x3H4 zj(rqa1t$YARa00}Xm+LBa~i$L!Z>_|Lf%%)Dtup9v%my1UKkP02|9}p_@|^}uQRCp zuuXn|ZIsO8u9`|4B3>dg%4H8@ I}o3zBW zVnn#rbf+rJSNiEPhU4(5-a5Hj-_ba7I8}SuO=`Gs*BCCRS$)|=50GfQO46E_aq9g2 z+0`t;6Khy=_d_xgM+6tw#^jZeyct8t=uMU2c-@Bc>Q|!4$YN4?u@O7ov&Gn~O)b&M zN;AJ=euvuS8%GT+by KCxxW6Ez-()dUdg<>CWF$>1DF~uJ|EJAd2JXz5al=0>^A8dce z q}WRV$_Y(YV$D(#zsjAaD)hZuaJau>E!JredRxL$epR{mX=`SnC a>YPQwlv3EJY`zj0F`2ZsNm1;|OE3Oz@zzGVJA(s|Z6Jtk8Dn#VWDSe6 zW8*QfI|TyV=6xn{jo0Nx=e~zX#P^vlS&ZzR^doDI_iT4HaN&neZ$D<7myRc~S4;CY z#ZAl^=Yyd~mW+eGFP(7+bXw|e-KZ~|@Bs9l;#-M^W~Cd}s#lk;lAW(ii^B2_WLhK| z3=sl)YbQ%< Lq{pzPhqy3Ht4Ofr+w)6oe*MGub8d&DPD^>7G~Xe)3r| zj)xFgki2TW;#j}kmHX#x%^wZr S(k-txKhldM*Rhl{iJo lztq;Mujb%(U`&x_j$3z*q{@~uA?t-^o7G{Hl8URQRKEy4gw|SiFTCFI z@)(jCR;Om)a12D=Sgr@oX=-fk7>ML`Pvp+EK2Mm^c@XVxe=z#WZDG2g8kgp#Ebwi5 zb4yY!>1b^QbHY}w)W~vyrkWMHQ&L$Rx`gZ0aN(n@<(zVQc)mKK#^$qk$JlmiBBY`8 z{&R`debVOMmUJDYJrX*woJ4v^Mf9A%EZ{L#M#W7WjQaZq!3qF(mn%x45}w}EYG1;b z%w#AQ1m{CCfzQJBt=z=xZO>$Wi8OlY?j8M@DdyiL165pxBgay>TrX*6!c%RP#70}h zkiIq1MX020l}KCWl?;wNs9}!JEl06=7psd~n_jdG(-*!dv44L1STef1gbG3>ce-`5 zSD9xUbPOhmttb}1*l>PKW}DK^vwyLfgU&) =orAt Bp}8xUMnek& zkEvyp&^?sIGD_QtGsa8pnOAjNBA5p*mH$YUA}n!CeeRz|bMfkz2>U6q#YS|4I&C%2 zMQW`Cr2;1HI6+@}X=smLMS-KWTE=m5&9LKoolFOG?$}hzOro$LCZ%WsS&FJQSf_&& zAg-$Vk-CIaMfvlMh?9)EnWggBUDlBYFYx%i^~>=b$6;KRDyxz82%~dnvf}gS6XN#F z5+qi^RtVdsk4t5`oO8?6{%vtvS>456NNK%-MoDF|QDSu+VV|4yw6=rysfRnL5-6^A zseDnRF~!iCXa&t3F`%;zq^)J-y}*xQ?MeSJfie@iWT7=;YF5;TVKNuLNf;PAs(J5n z^mR5H5dZpQYqv8|7$)4s2B;NP{s!c}IL6dP%&DF+BGOdtm(-D_-0ykI(+A$2WRI!+ zOm$~0;!8dCCJ@ip?zG4NT=qN^n*?9CQQ1l{`$5qJC3(?lh?ECBITk#*=&V&*DxY6c zCavO863Zi#8<)CsFujyhuW*Eazpz?m{P9>6vFhcFl4-VDne3!aSxMcyv+Bf`CH|G| zwNq1=_@XvlLx?9)RJ_Bwv*Rz|-LqMZbfl ^^aYDCLp-ym zrdJy8+CpRF43G^J^%XZhkOZMvkU}1TQC@|nR8IXPrgnJ1%Xt={d)`8Ul4*%{l4^6Z z*?2^FeU|+E_HF)TLe0s<$Tw>f%00n61;9<>#PlTlu9bR?`lRs9e8QCGm}xQg;f+Bj zlev#s{jJT56Vy5jNDOQ$`72*ZP@E?qt(CQrrUg5crHBCql#Rx+hD*p{SznOe8x&4p z=$gW2$ki)3St2{G)eCJOpDJRL7Ope>R%D?iv{X>m_Vp%eVSKoY_Fl@>jiarJp3K|W zn6kPcg6Dc_N%IO9RntQ-uH@#EBe=sL)gxi_&H9(U*bNnFAypUsG0nyN0BOm?rk<&& zf y*jt zNrzo59VOR&P)-Rx*lOXLIx8eDsWmGz4>6%Kt?~VrG-gDXE8?>^aW$7m=%M`v4u_J+ zDWw`O6HR-LNrbCNnoX^wMqtrx{k%1x=gq(o3w0)z`lODSug)Yt*tZ|s=vwX$NYLH> z ^BEybUVm3& -Y zpL5>MRy!eEMJa{C=2(mph9R7dPujMDf6~-nLb0StBSpu$cQb3*yHNhxQi9D2%>%%V z3O?BOac?2rP{A5%|IzBOnz%t@ihs*kJF6I4IQQ92>@ep}q_; P+R^!g<>_RKOR(-3E*v_wEHz zt<0VHRMLE{T#|owvSo S4?t0N)>Fe qWcG0LP&tvu%v7?m=j94$A8`$MRo+{TV) ;8;Ug> z`Gssi&Dmz*E(qMKY26QDTykfffHw-FyK_nF%(;HEKWOWqVFBy9<>Z31T@>pbn7&o5 zjh|{bchP((-pU@B cA*rVD 5l_^(Yeuk8U!la0Xz=LKYjDkSPtp>|zF*KTHYQ XAscRQ^>!PZ!M!P|vGZ zrOg`7V)S$x00t)=5OLcx)yQPV;N#5mp2SJSHX6(J)Jzd+CP4f +9PE1)!B;M)-I&QpocMf`9IhNmlT@4cmGzchtj-GQ ~8sQv|Z0h4*{t|N$JPhZY zwNc<(Y@Zanb?*20f4DsBH9y~{BlT!LDHwgTxnrkm17w-Dyry+*;MbA*ZWq^50|N&l zjZ?^J#DG?-LmG8gs5O*_Qzxv9cvR9xyJ;SvMlaZQl!yndQv6n9X{ln=PwjN+R2!VM z(25S&a!^Al#Ana*W+(FP_c9q<9K}7 )T znD@qCe2doYex>GawB5lg#KO7oXy=sbR_E><#EFbQ-S?B(m-4&Bb8tGEA%gNm#9y zTM0iCIxl%;Q165RFip-!EYfRiV$e}(NNi!_NeBu1ugZBFm3rj(aBDDFrhr-ooHJ}L zz6N$V7)QiRb|PBt4%N8o8AKKeyj#I-w3+U4+*_rSRS_rpeVV&4Z7^jopH-UWxwSf2 z!I&P0x@d7>6(T_VnqI{7eQ^R2 N`eC*^DA`+vbMCle(6LsWE+dV zE=rMDJ0cz`B-wNuFz+>>t+M1{)e`Kk}Pu0tzIrU#1iqqXE@ z2fO^Z@C_@?*v8{ UNCC@Y^af7djMQ&lFxuNQu{n3^23y5V<7MCB2s;ac5 z#qv9O8ANQ `|YJgQZEt7o`qtzeyee$<<7`fp9oAHax(ch|)X{w tH}kWhNc>(bt`s7bLF+_AD4t?nGJTYP68rgk^$XB z29>0Tjf@VnCLNs6!k@)8C+dltjdp38X^It_O&wFu()uiT*bK+*o(0>Wg_?Eanu)bO zLmr`{&!0 9-ykS` z{bnNsHRb)Q#v@8Jhqi0q`mYPmqUu*rQx#tMarKU*f~jL`nzvb(()&^IX|;QD_F?b> zHJWm^u5e&*FYvp9+di4Cb*Umt+X%Pll$L3+=?SLPNyG#Sn{D1@ow=Ew@SuhlW-E`O z@(q3fs=A8E88LC4=VY*VDY#lUriBO@p#=xNC0d;kh3s7BG-Y|M-xPth2=(r~_bvf6 z%0=8B@e-h$_|sY{^&HCj-xTYBv#bczDsX-QVo4l|u9t7EeJwL5=yozL=ApGMSiKq9 zI@9e7rYsHPv?ci!pB;ORn;7IJ{N$>ne1z&N1*5hi0lsXztJW;R($8aev9H e$s;lOBHZX!>M1O&gF$lRQ^((Jn?Bfir eT7eG1)81W*-7wN&ECnRmk|K=MGKutPklISs5(P*d z7EN5xH!I-T@GS<^Sf9A0P6t2DzP}2fiy9axGDCI-;00jspZ%_^OCbshqDOG0ek{M7 z2qz=4=kbegdP`Sj-Z*~KfNu1>CaP@0Q{T^uJcK~Q8G;Y)dlExH)}D6h>9zN~+ k@iM6A)e z#5}Ji)i5tzX$>?VzG|;KHruS#3ax%&pU#NF#Ty`5nKaf<=}29)EFPG-441x1aTlpx zPdM(6W$%rG4u53jA)^$;m`g-vn=T~TDW@-CH4IpqkDc7aJt1z#6-LG)?{LYL5+|us zU)3$dBUL@y!A#)Infsy?S)_H_I3Tiw$x+WzB|i{$Fy}A^)&Hgu6J?wI`*a8|Imr8! z2V}h8^VV(=G%w{huxulghx}svdSOZ`zfj)c&iBKm)dz%gnWqB`q2!=(9UYmO`aB ;5uVuY}Qh-I{I PAlEe9CLw`{Vrov z$YP3aky>;vGibaCqy-W-atbYt^sL#4(t;yOzhJHOisSxbl1*$*)?L=B^AZunW*%<* zL)~5P?zHWwv5kyoGIAlgHqN8)te}B;uT1@l*gmt-=Bn^@Q@BPERn4bo@Z*es&jl2r zUOwpGKvws{Z7hZp(>PkHbQNlg=T6BJi~KZTm(v$ijprXx&5yDZk^c=Z*wH)r&OsH z?)v>Hx>4qJjDIaPi(h%RI>Bl$bL>`?XIC!LNNCG(l1w3;A#|rTjvc&2)9+|&oem>N zhto)K0A9}|4i+C-?$JOT1X^>&K|A!)VZb^O1_^-4U4A?NJK#t_8%^c3gI|lP=`%wd z4ZSuk4qj^91kZvbu!ek1$J%&bA6d`nBdVYek{i0-E>$}Pp<|sQN2yLxA0Vdc%AoZ^ zE$_9% lOd)W8Pcy@4iANM(Hc^BR94 zvB;POW$y)3NlOWipBmStFc|Lkx3Hf@Du%W|@AZPHEU^lt*Ke0aQstZ{et!1L{zSzl z`Keg3DGWG4yjO_oY)QXR |>y3#n9@! zVjjkUTJvXPb@*uw&L6)Oai*reo`PoTlg54=%S@hFLxuskOjNF?+24k@$vk_g#$ TxSF`T3KlSsaTUyb{rSEj`5_DOTKn|WD&9Whe`gWeHguahgS;eQnT|K_G zqNILGWxoZ1nf{OlnnN}-I!L)0jiyYy7Ya0csMZnvVUx<%RHa&ZUKcJl_y_!DVeCO7 zlz+>?^xwYpx14O9?CflXf1E_fMy3Aui~7#aj!41xmpANJkoY%7|Nl~JCTWPo6N8J3 z#j83HXdL#y@$Use%C~V1J?s-Ac*ShZ1=|0j?>9PDOTkMH=LEj`|2ux7QQeHx9G^ws zCg496PCPqu!z&VF-l;-HOsF>KQBH@sqfe~c&0Y@iIU769TJ30(Ga`|lKgs#hYdntB zkz(cJ(qEm Mc8NR7oe%m|Wl(JMPivXD?vFXkF|vY+o2NjkRY{FRC5_8CPz!d$RW624}D$t@JX9 zg;`(@LU@*SCS-s3w|#|}Am11_*-7F!liWVgbMeJF{#as#5485$cEM9Sq8Bjy6v@g` zF$bxsiCH7}gSu`(hbOj!?>D-S2h=V3z@pDo7 +3^}j&Rq5 o`Ys;2xe~4pzsDhn3I~L^`##6{%djw@ea#{glOaZ z+*YuDriyyt^$Z{-27lqFELn<`_92;8x2K}-WBz-Zn+>b(@X8{LLWGz&jV=Xx! KQvb z>V*4$+W{Afl0GEW8X^&qhWJKKz^;t&uMSA7@ewcUrZScGLz>D(#{ciHK_Y~Iw#CJ- z#V!euVQ;VxhG&q;a*NBK$_r!_RPyEHFwrwc8B1AGW2442tM2?9H^cV?aWV8>9ZwSs z!rJB`cm>6HN<5PQ(S&;zR(F+`%Bqc;)V17x9y|g$JI_37ZKIWR^3EIxv^5a8V-?Uy zWpS~U@9{ilDSNHQbGddKb}z+l?FAa_kcvoQis;7S@Yy^PLiso7K3K|{CscjYw{;(x z7h4&6<9p1d3%L8vpN{?Hvk~0%sXCStc!Ar)RwhzfQBh3O;ld%DWM8Ik8}<`6!Ml#W zJs+@ vU)`j0n{6ma0!C zPlkZR{QDx2_kmmC1f3A<>%z`Lz#z25Vi#jS5?}(iEX_5z!SH J{9~2eAX0t5dW#FstPgiXGeb>Y fbjJ1~T)u7&{g+WEX_Iw3u%P zcj0V(QNx{_*$J5m7)c(B0r2f_b}#MVxuW6({BeP|_naVOMUf7dPJc#Glj;uobA{;~ z>Ex)1AJ?ps(Qw&~wsX$7Y{Q1CTY8)(LWXcP#rZg9<5V06>I=tzI|J7jEa>wPh=_q< zQzbtF^4>?5Iw#CfX%AO>j<%X#F^#wRUqSwA&XF-|d8kggpZdzccEOp6v&O!Ly5JZI zz52(f2d`LtXTEe?+Q(kO$}lUemXYQfk~OfD&jY92R(6hU4yKJdcWi%EJyC2d2<#`Z z=|1OeTa;Dc_rAdES v3lgUqPz`~b+9h8KwCyq6LH0cT=_nm8NnmE |fT{PLhnB~L zW%vdlqu-ZYlEJzR|BW(gu&P*xcx)zr!vBB z;jXpjualFWw5c`>r<+lCc{%ZIX&DW|aTdL3O{eM`gZvzDXwDPTs52FBR4?}Eu3eJI z{4A!m`s)nzi%qzMl;BeQx8%lO*T2%5+K16}AI6N0U6PQtVj5Hu|!N2=jAPiEj3 zJ?Fh!o*dQ;u|^`8N{8k!Z5F|o*0wsSGE?{6+P6#QYfxL8`XBrGlYeqZ0%a50UPkdX z_R6Wu+Ba)CUqUpW^JP-lX?fHVCRtX(Xf3X`)FT#KRHk$?y|2vLU3Y<<61q=EEnk-d zltyQ}+72JfqDtD_+lPy?tbzX@OhhO2Pn|@#!gSZ7yH*6aJQO^$Md=Do0C5`Gy+4=# z?$pYXh2Y1jG4b>gtO}tE*>QE?vgXZV5qZPC=fuhDr^IG>T6r)@Fz?>|bsKLm9XK$W zo3|>tx2*{U_?Jb7!1HqcLh$34VM !>+UmrkmzBCTQFpMGw?mM^@m`-ke;?`tKqRsXUO9hQl3aKh95tC?O6jWI4R5SqcT zDbBwj*2n|oVWHZZ;n;H2 A+XrESc|i4 zu!=Ijw0Hf@urqLVFS%;Ayrx@gDwO&-`%}ag5-YxIISJ)6TR!oj&%rv7aBt3<{(~5~ zNPWSgRxfuy?PNKMo1nRcqEbDi<5qQN6IZb>K`fp0TKwuNxauloh`j~%>+9#EV{=I) zJiIm!-Bx{$)*;7VrZ=#X2Qx#89cY>a-NKaIkE?4nvK-46%6MQK)gUE06rkf{GoaYd z)$Q@=(aC@>)!LIM@m*)Ows~
G7zg?x=$zqkSV-%X_V% zS`36}*k@RXCkAqfEi~12p&Kbf>UA3r@x_cQkbCfBK^-7pdr$dNg|(^ z8Nm_7YCvSX*pddmo->goatPf@1E;_WXSToqIfA {#$cs$26HPr95Y+t!mnzD@L zbb{>OWBUt;GsD0r#x@>-FKg{AC?h4Ew8^yie1#Xr{|^HIGO;fjKQt@idbA{WOq5K8 zr)_ udgtJ5|SBU9skcR7%5wVmqld*`Pla}79O2$@Q z2uJ 4R|w)m!jrj}vZXiOr|O06cUt8U z7tP~O1^C(rexTwHg9jCAv*zVarKFL5z9Yc$cMI-Ol)$3N<`#G4oVm@Jd35t*#^#16 zNqP;JI_CCL1X3=8J>Q4HSc3fpc6pg)EKN!@xPV$=8A@(|fp$;!*7khL+s&2;WjIH< z8s*q1s G_PLwi4dTzBwT4#rU()AM rEj+4r2=eNu64zWPl#UN$}p$I5vsoyI;RtYRn7} z6W?v;kod}YqN?n(UY&bullWxxFQn9Uw+G-ubF*MCp 8A>XNHeo1=gf-^BI?j2yNUcpe=8s`a@5yrp;zc zc;gJE2$?Li%7eGhMhyfW6tgpA?Sr0#CX;m$aT%*y8?hW`5-6 $JJ9S%Bqxs)1ZXPaT0|c>_ zCWp@EFaoxaHkV@vL0p@tUK%x$!}BZFUZ^G?5^hLZaBGHeKhC4ufJs~|8Ewi7-2_LpI?~3P zxLA|s)B1G85w-}&W6&*v0uXX!kS&$-GU=2Z?19)>lxFMW69bYgCzck9%dD6jkd+!| zmL@FJMw7KpECy_(NAvUbthY`o=t%C88ey9gk1e&!>qij;aHYOwW6%GjM(xeojnxCZ ztzUtj<#fPw6u8vQSD>dZ&ywxvOy=RWZQ3=+!lm?T@e$?2;}I1-goFtP;6D=rPB98T zBczYyg5(=_YV5Y#i!0*Q6oj&H0XUIX^!u#ha4xEMF_;6X-;#$EDc9aQORQj6;qz-O z(g~ptBft-XTXUT{I$UzFVvj74#gFE`{AAoN-rJ{Z#cz6mGVC>0fbpa3EaIv8cgb&h zzyGeG{SMG`KHwrtP^)cb(AlW9n!C}6j$t2tfEy#!)qM++Uq`~hobnI`RC=3H6qe#+ z;b)vZ^+JHT!`Gxun|2VFzKA$;Qm3Sg^=>No?8g9)d49y$O^)M3*J=r!fHUywe&e8b zTA1FE#1Wsx^|DO<2!$Q1cWONxqk;G8J#)Pw0g&_f@MA*2&2iU8@3?G347|=)X}u$L zE)}f&P$WRZ&6UaG nz(DLzxO&9%}+YDkYQjfkqG1c*O+WuC`DRNgyIvq zz@!0!qJOqgaH(8R%V$DMSJ|JoEkam*M0&MIKXKe!7m9nu?~>$1xqfO6we}0T-nV_S zoffNAmxe5;AoxPs{o3QhLtva4vLQ>LxS0LzO@pV25^4+d=*q(&z YiBDlFaiN272Qe z5G%I0T+0GpNwh$N${_|^_Wo!Gb7!%BZ}(F!Ox-FzXNQ@+-iyQcqT5vm_OOBsX)$rQ zY2KTFIDm__zg2xcc5~d!5q>ofdBtriterS~DboU?Pjs=#kA=kP6X`(N19e#R11(4! z 2=2;wEJ?9@=`Xa}j#PGpIp>_~LPE1fU(0Y*y$xOe063e$# zo@_AAU}(}7M?}&?VSUi dCFrJ46#g1SfzDw9@{vKyG zly*io^23)5Ep7RF{`#`|oP9|0l<}j*u-Gy;N2F# Pvu4|w!CAlD^-RJVxDmSCc_JYR6hP0HpLF+9FW;9D*Wc=&2V~? zTRS=b&7OFjOeI~~j#dAZrf(KnTSCLpL&s}%#=~`si@TWptQqW*=NzJqO2$}m+90-m z%kR$A$E}8B#s;uPqU~)N*|I!IDgEnB?P=MY7Pl4C?j>S}gl}@}#{|_%h$Yy3=Ktt` z^cU;71Cq|QQ8M8Q%y1I%aTBE-;H67@Xr}d~8^K2je?0djQ`ezxD=JcKW>Ob^?vkG{yzuehM21O05#}BBKU 2m*yjVIegUl) z87~;h56zLh0*hoNwE+5A43^ kLE^DttH`=5$8ry{k*ND5H6J zjoon`SeS?pbV^CtV&r_KHh5gdeNAO-7HfXBR;JB+ba#FueGKSDaN5y!&TfF7DL$%i z`&HuuasIhK`(j~Hde>3btA7Woq-ctMzw5m9eu@1#E7%Syy3HX7=QRg5Ac*Ty@-`oj z+Q4IAo)z5R8#Xt-N+dX`y%~2Wk^}%@OJee^wK8jji<%70-W^sT&sV;-H?>SINwVBo ztKU^l&)2Iq>NR=J3IgeM=$nMCM*ywEC!ZZ>^SKYFIK*qt)bBK~_wu2tvRY%ZPm8Ie z;GVz!$6#IJVL73Hctxx1T(Qm0?E~WUZdV09x*%W8MKb3$=eDb8spwLpC8F=|WMb;I zu4kx0STFZCQHZ>$e<$1qQ@!2bZp+*|OGx%|V9KaLp~C&z`-lcv622x~mniV81ry~& zWI;(>a*IQZcCr`U5z#lz`Vxzvj_Qhyjldo7MNhKrpaN=VK>>)S_mb3|BY(Fs#OZH% ziv!&n_e%;BKZ8CWC&Xu1S^XhH)$>@jZEJqZkTNoFZ`e{T{G2M{-0Rr|2cT)G4Ux;s zg~6TAEv<-4kHy5=+0P5ZfMhnSS^Jb@92zYyV};ol$N(`fnn0*teX&X%C81Lu)xT`q zA|B@c?1cEY&D3l!?(1y?HfET`b7S{H#52@QP5`EOsWW4!rc3@3;osp;xj(&aN tWe$YailJ;*5*I8(|cR=EXS@3lC%o{dASB^Hap8` z4-W|PTyk1q5yt5wDnh05u!|Dw>zdT Id#e{M%Ge< L~A=Chhx(!NJR0` z&PWK#eMQYeQCjBRDG|iGbwgYsOu^`Fy;-9s@N}7u72BN92h6J`!L-)K7EfOWwKU0V z&ks`|{=C@2YUk!OUfzr39D@UBq?ktzYE;>c9?1`VMABS@M00Ya3Y(dHU9<6O;kdCo ztK~YrB~J)NXU5xOTq{B?lnz4%0*btkH_U&hgb6?sViFr REh%P{ zAO}Gqns {z_T*ig{t3D !0U(cHTbAnxD* GUoVS^w)P-f_Wi|aXtcB z)tj37W1GVH^$gM-(Zb0bsbMQ6BkM1{32%uSPNnxcW$V)_YQac&Xew*AglrD}9YN*0 z^(vnz@7iz2+ZH8nJdWWhb#nWoCb!iy@G~4683^3$hn+uhrociS(6C_Q6qXU4t+%;D zhVk!7S?{5;80~I1;VA;IxPIq~L&gI) 0FkIv-ju9_AB=BiKx zKQtTyem7;NAPg>}3!?Mi?T9Z#R5*^Sw?{M@8fM>Z^~aJ8u+9DNr367%Lxd*efwj^v zaHX{H)5zY9$9Z*)@wx8^qQ}NGC$rDW`Gw^E8i|lHA+_So(i0xwiS`6(#gKCI ln+9Ppn}Vy{^UF|G^zrO6;AOYP8(MWp`!_ONP6KxAH!&ir3k3&D{Cn*{C7 z`0p4GDQ!xHF~kP?djHjZny^^RMEu)0m>`V >L1YZNC*D#_xbPEAcrVK1)7uV|AywC5;z7? z@Dbkq_sqw$DTE#9KK}QQ+Xs>mqhWu~ME?CB$m0)@4rJz~j{2W3Kvq`v 1+W`J6l1S5FFTUxV?9p4np2@?q8mA&2x|m4EyUZRi|W zMEGC4r8^urDUT$V%R5{bR^0ESF#bgjp<1GQ)qj|Ew7 zl+GN__W)*?mZqi~d)w^WWAWGdWJqYT$`Gx7@h8O9+Q0VGC&&ktYx||6<89KCq5EtR z&~g#gpuKoK=g~wPu)o^OKJmV=Vxivb6rLc~hv5QAqx!C!pVsihDm~*gc u&DvCfEcH(H?ogE8XQPL*@f*jDS z&^8Z`zT5X Xpl38~Jy=`|Cnp@f76?YKMft>w} zu;%Jnz;oISEVQWW`H&xr&?rDpM$jJA6p0)o*>c;a){ye*V9e;|=s05Y=4ut$)DYr> zRL5 dm2~JLB zu~)DMEPwP_Ld_4lgkvgB{G7+2o_01t+ezQlt8t`YbBIU?q$x5S2v0BKN(GM%1WmXf z#F2}0zJ{qc8uXETpX_xgZjo4LK4GjRLk$uHr^+uvZ2$YnFFh0@;Rtuml;-g OcYcKk!kKXLqnQa~QdB4XHgOizA&FK2a`_p9) z%;Q5@3#U3TB`qACEGdB4eAEoCia!=$y`d-N-P1=JHP%f+c0WH67!!`)kFK;B>xo{6 z9{4rE*;Y??i`6{G;+96C@8@Ssk~7NX;ICdaDn0SDSX$+rO`KVt55n=uPRJ8#w$*^j zb{0ZNlQHNq&{E`*e)fT=4ShY55OK1}?;-Tg{wANNg_hbInbh-FrtKGuXq9!ZrpvMt z$8DX(Yt_mOFRM2Ty)ey)_}4|bN7;_pY&IWU_ zV-ghec1eE<5u!JnIOdpf0>8dvUGsE>e%VQ=Kg2Mfju8N>sgi#QYP7_3Cu6r+{`A%} zOE~)T_?)2HK`!rgg-Q^#dwT;vUBb5r?lGHWHhd3;jZa$vDTyofO4g@id^mO&Ul8aY zP^ogQzTPJ74t#QH{nB%qa>a7lem-p xDvpE^+u3;2>W>*Z?SPtk2@rqxN{`M#`$ER=}d0zE9rXu zCCIx=Ss=3e&fco1#e 0qAp{x;^RSs)YFTyuL>AWlxK?Q9Zq=|Y1d|o#T Z{= zkbn&uM%oXI!CM3uJ2g-Xn{>@~y`Lhx@o{&NczbuE%4DT+vV)anYh*B*pf;>zu>6^~ zMdW~G& k^_G^RHS?lAeTw5~uOX!zj|7Ip zn;gs8*d<=qh VYG8-9S}%VulT>5MwVuQ><+6t)gc z)jFTXQNigkcnj^s Vd)c?^0U|lx`?E9V4jBTZq~Z~HX9^@XrtW6FuxSuk0^8Rs(9H*N zuL{eHZGRD&2p!fdlQvr0Zp-iYf0_b1fmb6+&&~-{aNfFhid#p @(ruSfk;0#3fKi =8zv2ogS2f2GUfQ0s*`>4b; zsbQs+tVcxTEqcv{F7Nw G_bsV0l%5RH`XikIzfmjFMbAuwVGjxc} z+SBqs;|(HM$DDygtecC6<^6UhU}_^YEs6IABXsX$1hYX=&)eAfwStTuTcCWrb9}9K zE{py%t##h#F=nxEC$!@t)3l66n1iJ={`c|>nUpTq0bZIlL*+GBD?F~n2P3Bd!>*u0 zHAyYTES(oh>76gehpzLhq_M4TCP(wzthdP+l_GbQG1>z^hFdoKkPz@2jTXN?%HSwW zdmTm~v5W$E(i_Qq38^Ft*|zhlg(;!U7%b_lYd)X-R?76`q!uZq8hl|c)E2%r4C)!t zz&>c(J|)z;pRrfoN{I^00iod{|0p#*DXxvdY^&;erhP$Bqg|_g$ghjQiC${liw?1% zaHZ;XEiPnu@o0PWzs5stwf+)RK{v=x-BNZc$di -_?fO1(%eFUjW)>tN49};G*xG_Q+E79BjsR`;3yIQ$Iw7CU=*hTR3Uy z9JX?>Fwrs*{T}&eLH|nR->!0JZMY*mTF{(iS{oFLcwB{_Lmm zh qBtM;<68B(x2j%6KYJ*{NlX=M`LzS2bI)$I%GVVuMJe z>^}2KX_AZ$g2EtkWEyIsR)VTX?K$j$xnwWPDV}c9x><8qRdhyouF%u4D2aj5kC_R& zLGteD=zxi8ODm0~-qf9Qf6pi8z$d+xj$IqdR8AsNwK~(@BawHExjQ1weNTo~r|Eqa z_R>1GTc`K3MOubcOl?e;ei-1StlXU1IXhxoCATZf+qlbE*TtHZl)a$X_|UI+R+sGv zL(4SAiR03C^L>=`p9^ xJ}U;U%#v_iCws^dywaah9z`)XNU!u(td?iUA@M(-E7qK|mj@Sk8iV>GmPtLeS@ z*F5fM;xTd*cT?0bp<7gw=od}8%e-L^1abE%5TmSKjMT)gaUXlyyWdGLmT7;HrnOnb zzgmf~#jsj&*)Wo_ljT*ZGwPk%FAPAhf4K_iLrO*w(_Zk{@Hsqg){dTN#|pT}jH)A< zB0WDw*3?7Q*R3E*(J_9+JNnj|I18N)1|Q}mHBWbIEUIZPk#e!RqPcvCcU|nz^m;4G z)APPMoB#Z|03b0;t#Ns@^;KZ^7#BBlDo~AsIZwCgw*FiyMXzT2@OiKjLpL~Y9-_d_ zhoeIf)vm@Y uO*g)=~f+LM5jx=MWKS zw<~ktm!qvK?B#rBV;|fqmR?c3{)hPWgO%~ub5#AO$|5;ErencHqVZu2PUJensk~Ae z)DUy3{DzX46+K+=2lWrYSoi~~M8Cj}cr|oRZI8fbhkh)58IjpXkfqWGc{RdUmk3oi zlI<_#YX{~cg;xy7Uk3?~tlv=ORfBs|h!s}$l8L{bL@|w*E^-&zSKjYmbM+kxANYxh z)i{do8>izk3%OF9(&g{TSE584w{_xiOwVyFF7dXGGp8?sAli<^iSzCckIxH9(0 R(qd;PUv?D6Wn~|33I3lGefMF`} z43A9)s oLQg ci&9Rr zl9kA^0}dXH>uWrKY_&TDZw~{LYom=5Fp ISY~2purjZ}&vAj}_e%^4qMZD-?X ;x?IZvahM=mQE@#!sFV^mpJq= zMJDWQ5a4mMLKZL=u-@l$2s0@pFLP`6?Ba%gSCTTvyXirK?o89;l)I%DaZX_zGj8rE z#!dw9u3Uz$7*@T=+5A1X2}3CV=L?Y3tuTy0`g{pWAyphW*sr7z^AEqHLoGHv`MGwn zJXI%&F$w2v;jN^cEU52U9-7tczJwRNG`BVh%RA1T;(W35s6=_i{mv_+yfLBmKq_Od z(x6^tE7sUn>S6TLx0c9P-*!5!l@*DyVL(BUcNTIsA8qSo!HH@m$ff?b%^S+<=g@ znnOA1U_6?s`7KicG)mjUc#UQ?Izir1!=?_#?#!1l!JOrF4fZ4nuTMX@D4b_!hn8AR z?&s##<}_V5PxP);j8&H1wpTUtbF98jC@0cdPx;*@UiF<@)NxiOXu$`xq>x1a5a75= zf7=d~%)7FX49OEw)~8}!@<>Gy`L%TvX;Ll28G7gO(D;7!BKsx8T*0;Nk(GmefHtn) zqt H@sA5uEX3e~E4 zX*WQMQBpQb&H`~x(yY85`Z#lHhnZM!(IUq#{*kt{v{}1YxfTw}g$xCO_nRtWx{mfl z4Z0gNfPy!8)HG`Fm}fxq#@Yby3;w!gtOhvE9uD5A#8(H2n`QeR+7*aLIqZk*IvO}{J>sS)oOt|ZC5y@?a9 zj*6|W!b&akW}0-f@_v6Rk1rLEI!U9#ubJ5lId@M$#;w@sQmaTR)>xF|vtxgX }`woF9D zj=Y^h9XWK-Z8G?eZQQBS;CRYUJyO!$H9pTgg*x0^$GTWvPTFC~DnCTw_9h#Y`h`q- zx-im9C9BhdpO$Y}jjuF;?Y7S|`|Ijvx;gWj-UwOMI6m8*&r>8y!-@bl+D|Zju))$e z=SsBH%?lN1p|UFFGt5DPd)-VO>1U%zH@1!YB}J}}@6rZ{kVBX}^?obsuE)2#?!=2P zHEQX3@0U}mwO>9Fpfa26 X?Cl=T3oD%_8M7T-iTVi4SO)FiWzd``9Mt9L9}+@ zb)}^E;(WJsoOtDx3q;zj3JMf?TtnAsvOI^)xgVcfTXc?ShWT_2J{~`PR-h^=n{@Kp zwxAVhW)BQZkyb_bcJY+Zjn1}R@=Q;D(mCE2^j%%KSm>GdzCpQ{eOWFlk2eXmc?y!* zb7lR|J$Tw0rJ-tg`VQC_U*CxR`tEmz2xn_0`~5Y+kU^vCTk{ii%@Z1@#R;R4nF OteJM#?E=RQ?M z@7S9II0W>+o}dsYB|mOQk9>hdYTj?t@+P4z6mYYR0v;gVs|x9N1gM}#%U?oVA7T1_ zidJaHeJ!9~Ow^fbuT5?c^C%O+;BqxV46`fWKO)4&?Qe9Nbx~XXVd#?Ld0A?MAo5c8 z3vlS(x~ODjN1-PA7?epzkPtlh@%V7Ea#S>3(T(RhMQ)^S;O9`oWSj7pf=ke;%_Km? zOHbA_xYm7wE93Fj8s-_IRuWVC^eG@vJ|VAK{HhyNE}-Ve!YL;i9-cnTdQ2g%`{@W^ zLBwPG@#cszOw#%(5|}2CA*CD~c7&)PuBJqmFzxrijA{tBkP=DYeTmW=pXTS&=5=o> ztEzXt%P<56qR+SJv%L`!*hH<4svKc7=M3K{fQ!KcMek;t0h+C JdlV&AkN z-Je1<;vV%TC&zn-;{tZ%j3hR4A3FtE!)rq{!d7}7`i5FFlGW*SMgF;2)!@PD__NMD zGs`v^9+9(%A7r+> 1_q{Hly6$Bi*a zi8E+%=2+ZH-Qkvs+JkUy=E;{1jtSmgE3OTwx -i?DevtI@{^%-ITB=ii zU9_-5Pf^6uSJK08Z@aQJ&P&xz((XC_02|KuO`_D4DCr%Xggx2|oO|Ey#5f3| cv^EZ^S6h}Q rBsKCc z$xjLuLdPUy0sUj?MC%$vYOPG&UV_fO{;wj_Ru<1c7&N@OIrTXBsSo{T(?+^tYIxEq zQxmy ?qIE!%Oi}n>*ndl $ 3J6EI?$BYd`D$IPIkowHE^7AYWHrQ|2(b@& ziYYe`y{0`L)w-OjRp5*Sz08JiRHn2jHr=AQuYxg_h4Ts}B_(%h48B2S3NlpP4Fp#D z@7}5YJX0OqHSbKyOZw4Q$us_aq$G3D&2oOetWEWlu*2;+DP{#>Y8cp_>*pG+Z8BTD zs+U=BLx5#65R;g>YmwKy&lo?uG8bKcuMg_^sks>W)G(oWOc@jKp`wDTnl-)6dMxy` zle};YA^^c32ooR@@L*9nV+y0O_9d0@{f?`<%Nz6E6h>tS1}SEk(QMC8hD@w43wcp9 z4Mwc#G@LKrHnQ^j>|2Y NgY+&|?kNk4N zvhq3vpTCp}Nq%}?U4@2%v^jYwPKesJ6)=a2P}iuUqGlx8?_{(WI!v#pZDAqh^m;8E z;#G1P64teP`;tZ0HL910nAyQrATfWLuPZEi)Cj`|7*ERV0<5TJ@Rbqa>{23ID#)cr z*B!KxKULo04k1LGaP{fn$SmYl3@knITPb+#kmz1dnHx(yaX#NW&gh8ic->SIs(dY| zjRc}ctrM4$b$v)3Z(`IWD4ae#A<&hh6s&i*dI{e*OgPicvmq1H^#=2@Q&J=YtO(OT zJA%-7=SsHr Zi1e&1vM~EsSYE6e^REZ;OkJ+>e8CALpS5i`k;> z_ZendYMk%V4Ixo0TmhxgOy=zuZ@OE1@=Dr#vqQ71rshs3n*gr?k!lu}K4E3~Db41o zS%=4wnQ1E4`*R{Tdn{2=3TzHhdMwYE-4I-~1crJC{iV(C6yf+pjLMfJhhL)2aK2sT z 6p#lNTmt${6Vjwd^{U=Vc5fQtM}eLS%h1a$A(xHpPjV zVB3DA?GY-7Z&K=6onhr=$tLjd#4x6y6=%-%AZ%vY*Ex2D{$98Ch4@>0tFu?V*0Z$Y zdqEEM^<8;2$Jd_qDP#RG%%J+S=$m84wM6L GBA>VTf#%!(B|O8u)s=dSxKceo=8q4T=pXSFqM^iPu%VeI+{$ zwRLAa_5Jho&9fJq6~J*TXN+CPnreKl{&!NV0krp18OqCNPFfaZFlD#vUh5^q8Tm!l zFm?}R!u4x8x*HSWT8dhxF_y=xo15r9rM>sUSK@IG@cYJtQhF^Z9(FJVpCbPe-Z5r) zbO<5nPppS9w?cX{n45Nw-Sf>U >h3drr}UY 5+2KG$JeK?LA3<;A%$fecyT|c z< KolLH5ZOrD82gIpAn&x8EI`Nm0^}!tWR$BhXWTKyR2i^2X3RDf zARfFVUb=>1F-E$p $x5%zD{9^ABdwZp-Y;cqbRO(bUL#10PX(tR4rupPh}=Zu~Km@NGB5@(|ym zzIqKDK*=&KugeJ*RaPANUaYSZa=U&qE_?3!DaxP`#l`PaeBSFx<7uHufD`uq#x^)$ zH6%R1Xcs~`{4EFE6OC28+`QbAPq*EO5Opg^nefZ9(Z8RL6!x=~{6{Hd1%0c(_{|id z6k78S$$;V#=;?wPVEP^KpZsU2jXx*|gmi|BDE7Gj7!sduAv%wZw27?$Bv|8pHP{sP zh0gz1`$iIEUjjC&PyfEb_^Ut2XMd;u_k|0mr%U|XdfE)OIKjUk@ZNU~=5C&xgjWPk zI8VHgu0L*cJAZt2*do^dIOg(pe(uedI(#5QX!n0qf*|l0${I24oL3XT*fOhi*Z6-d z#JOijWq|ua+U-P%}=nSVR$n#lk0SX!Mv3Ka0@U@DAI(+d};Jykl_jWN4c#wV%dA}Dirhudo zg@dh=7|X{4C&*}B+3`A*IhA)r(Mq^Iq+55_tuuZJ!r!u=Oc#7xC46P1PSOmRo=sbM zxr?=EG@)_y_mh`sY`-6xPK`|9{Q3%!Q(u@oyGL0A=eu*XMfV6P2U^cW3Xt5zFM9Nw zQ9 wyPNs;3J2pkPdCnUt? znCV}RC$gT8OANX9%* _Kt6U=}iDr!YKS1 rb zsvn^8)f8ImZ2(p3UL@wNkoG@e`xkSwkqrsk>yKb2j@Y6~>O={9IfBusnL2^oR_{0> z4q^lCst#U-(m3re03)3XDL3Y7r#B1to_d)+pu`ORlIM`~l> t-d31O!^8ft2Wc-60g0tgwyZl)`F?s6jy2j7&W?mF%Q pwU dqX `4(}yHG>Bn+6Y(p2$=HRJ)l{hLj@YYJb)MPe3 zh=Z^HQocWwAx qe;-8z;ozAZ WEY*@_(D2gF zD!Po#Q^yB_Xto8H`^8Iiw)5!N{eH0+8 ;<~`SZGjo2QYwA~b?Oj#d zYuCN*weEguBC;!)Rq$PVDBOO}ZIp~_mdC8enTR_1ReJTwdsXNypbljASz<})F}AkW zd?>cNDAsGSy0Z1x!bHV`$0tkq{B`ubLV5Z0BqvF#=9RNrYylGa4oJJ#Qg}Ct^qMTi zU36}4dR^WQ5vsDzs|#=3K$P9bi|b#p>h~JvFg^w!=^WmD2^`~Ff{jgVPd+3b=C|M4 zLQ?W19Zu^Cd!vucORHk>>LiABhE58xoqm`nBhgK2_d{|QAd9Spd2v)J9i4;|?lY&7 z8B(aC-A5OzQu6vFN0VRXbO!-imqmb5uPHUL97x8HUX~Cx(GG3@BKG1lMa36QaMCwX z@ 7S;DBJxMc=Rr_+3Ep~6x3#2-!! z(6N{-T0DsFONq?X`?rgm<>jK}NJz0lL_^#I+L!zL$*T_rLw3WO&?14_OY-)h)-6r- z%ni6<6BiVl@fwVWmd3+(2U+p|8xM$Lc6Yt!o0!tN`(6xv^OV$0hXWZMRMg_67_UW= zEbu@p->b$#!n9Q-JqkMn%P~&WAo9504;tRDQ97=~QoA=W-n(kGoG#ya$QbpP9M+vL z5`H6f4H<1CWVag)ge94bX>8s!E}NVYlj%36Ln7Ey$+qm*J?`o~ea>fkImX;oOG`$t z=CJlf`)i!TF8O)x*wpy=IWya-p=hOhf0nFvAM`AIVm=Ft-*!bl@+OjAC*3Ly{rd@j zM1M-7L#}t+;n3dYklVtk9OO11;}cXsYjHw%u4mq;o#pXtwDkf}MU6~cAl^PtTh!$? zD8Sa&^Fm&Pggi bR( zUG%&?5Wd{%tK(YeySk5`2AWM=GF8N-0qeqhD6AhaAawdW?9x8>^;gnw6}X!0WA&bX zNJ)rC6uLl8>n>2q536wS>Mi$zIPDBs4$2a@dY;Wa*aTH13vgCL!cIi$xg|us#t|fT z`J6QD)`!~h$(fS}iPCPRP5Wkbj^>>EJ7bFOJ`Zc5@`4)jRWGk(IQfEX@AT|fkqK(; zdn?#BW9qJ$i+4H5j8|$c1)b;^+lqxNK2y8^eM3PYc$I>f0R(hQJ2iWw)vFs7rnfru zVE!mQIen=n7kGw6!TEuDq{H$t%PDOll?l2O?l`!y6O;t_Rw=5ayWF>-@54<_2mU9< zP2V(@AeMCK>h7Fri!?y=nCGYim6p`chIDIaOoo%wHJ$$ay!${TfP=#-c OQZV#7xE|B_8zwdjarlp_yPw~d61x*<(a@aijNU39 zbCN4 %-$WE`~F~m|uy}-68{$F(1;<7G17Nas&rMPR7_UH&%%;dE) z+1b8~mFLlY?2bhDrsz$S_kKoz*r-Y$XDW@?^~sNlLPfgCk@bMPj6^)rh~3lT=m)!) zU~C*Tb~Xup4|X$tJ%jm$nz}H~{?*s_mj;Me9Y4GQua1ETjf5Cl^*VjWT%RO4yIf77 zxv1lQLe(1gqel8BP97OHz`>v5RbhJUo&{IK2t#d^xIy4quZwb_w=L7CgPIpWH^>gD z*&gqY6M~GSt ^RZ{=q!=JwR1bK zga@|r5jD^$TwHN-k4{S%6o&Wz5VmHGuv+C2)H1VjuFG6 Q67qIYmm`g4A3o(bpj*W+!H 9!F#KiT9&i(fr_T;La5;7E#51bYjYZ zSuPZ2Rh9>oEi9?Xd0$u8ee!p8(zDnU&ehZ S|f;(IS#w|DV$f%3of!E z6CrVs^S&7bJypu(gnnfr=t09J3E)P|_YRE7jS20>NS;7B4w4q-x-q%GYdG=V;3Ek? zQOL+3&s9F13T+*d*V27ulKlYI7VY;Bbhqi-z9RH`;4inBECGy$8na{h&8nItvwH(! zqhjieTn };c7G9Zs;BA}T!!q;D@w~3V;f>ukXMG9G0?)ROXgkN;-%wzufv~a; wBYR5+&^z8p+XiHCc1(<=*0`(ME^Y|*XnsaQ z zh5Hbrtk2ztw7q*i0JbfPvPz-sn&;z6->pQ;YMm 5y_8pk z&p_PcUrHW(IG+@)p`~8!omMe?kZ~|Tu`!PhSQp2`3$2ln<&-RoEhOSmIq8jZ8(Pl9 z%5^1oC3($4{81**Jg3W+qg!waF~?#`r8^~wL}kbmI(Uj^TOj|CCaLHlrd>J73ArFT z-tEu4=?S`65Rg3HT#kAlhP?7CZdWFwZ}-KmTwx%s^Z2ZPc#@9#veb6O;#3e2IPUu_ z+mtq|MNi3evAGSp7a@UW`9$md;WNqW^m>6IGv} #SqDco zIu=t_nPtk_+LKJ_ZVFG(K2rUci3##>bkL+*e4Tu1o6gKQZy@rKj3# SZ5OQMMOEprOQTQ zl7`3enM>m}r$|ELegHr``Kul1y8WYFS!8U9kLN>3@b!+;`JBAX_;lHR|Ky_7W6N-D zSav4Ee~+sV>2enc$Cr^v$Shs5c#;P(`(kZ+vvMkwB6nfRjK7^fo0-hQcAn-mH$Ra- zHgDA`Yc4<1QE*HH7j!Ly(~!7R;e`aKgP|v{Xj_C3@b?8|Njr)yP47{DZ{x8sXmofw zhm0KjJIDauz=DFRyC2o`VPZg;I1A(N@~sO$ge`EXinnK%x>5TVc^QXq+oKiInJF`% z_}$6IO#Jrakfw_Yj|az;c~3SQZvl1qtS`+L=jVZa>q4HOjmU*Xi&AnG>xL$+^6x*s z<8={EWmVKc1yR7Gkp1(ra@w5x)7jP(G_%ka73tP1vEF)dn6LQ30gkea){P#GQv;s<{b?#7_1HX( z`^V=gj{3I3aZxk`703dd>w=1gllmd6i5Zr-c|tBdQJ?fVX_3sUb(s*! Au6nQxtpmCbgQq=t`=rd z$IY4}DohJJ_6$f%iJ4xNn1ShRTzaIBT>e`$-@^RALGx8y7FxI??&9`w9T!F(@$y^B zCL8WdEvHc9H7ql jrp{Y4bc&2 dd^MxSRg?D*%u2v@mjrhI?^MAav9|p$Jps zp10Zwg)R$w;b}auvA;7qdUU!C6|qMr*N95BF{k8@IUI{!FK mbBHqzF%$asmvdC*v+F=9&N z>3qK0^O(z@u=6`S>`LbP8wQ8p*j$5z1f%bB|DyU-%5oi mr>_!)Z8BP%t7&02Zt<0N=oUxk`E|>a &w+`;@2W9&zjkMl`NKt8WPO%$zUNimujxP_Y7L9IE8Q zS?nIVlf#3YC;PNDSB>>-kKe+*hF96KlRzf|V+pcOb#lvJ0~g(H=3U-c*r0d^UPw(M z)z?hUt58r#Z&WiXo!;SZ$S;f%ATOA$eyaMae|P{%F_ZG+C1s}v6$H>4)85FbQyd7y zq$Ynl;*T-)oBx){?HUmvBc>wc_b6dZZwEL5bS+zlnOj>}wV@D9vQuGTh(CvMi#@(m z-&<*Om+HwXEd1=(5=gYX+%n^R+(0L0&cgD2mk@4CSU?Dbo66(2U|0Kz8ZC*+kua06 zZb1S}sL#xr>&I6z$O +ap!j~{4|;!72X%-SlF}ZtH}FlKiZb-v?w($r9Pac>!yR~YPF5Gal^nBD z?k;nIj6wDiRbV%y*@InrN(VDx>5>TVgC}oNF$&f+PQ{D<+)!0% *b?u| zBH~D2UuuT7o*B$3H?D$lto_QJvm%Os&n^ h;8&}V)Ow- zi}1hBL&oP>Cn;)VTQ~1{kLL14a`?+RV@F9U^y0F &ww+5S0o0L8)y+4HO9xx|S=(BV zM3hDCAJ%zN5F=vJV5$%z2 &vC&gvFG}s2Y;pUk7-G!sTj%j~+-53&a4h zIwVvg)NlZgfnQG#64HK7pmY48#FC1Kks%F@(?(tFj<{N0$l${Gdoo{7Z3t-R;XSvK zHTc`lPZBEMU1@h90l77ygGk3+qUZX8yu$7c*7Vj@KM=&D`tE2GYsyB0CB!SIra1R^ zX@Wy`OlgthXC13qjNA1%2P>BhB~i#k_ClwQ51*B4=BR2%H#mYOIJ0y{!_dOWYQi{i z;cA3(DZYkGwyZwLmClq1 _?`Gv?Z^m{t|b2%~mp*^;KN~(S1fgLy2sxC_9^-8;YET-a9p( zk*{eEGpn8)S%O+IwHH*o%O7@ZP^`U;0_2aZ9)!tVO^oTJQt`6Oxtf)XtJlAk`{`bF zkL`WWN(o= 34<;rZTU(S0XqtFrMH9j!U`)3r_(n~JuuR6aUfy3art 1MdQDE#@rR)d-3{1=6sp(;_x zlv?HWX`tFkVV^XupFr0LTc{MF6lmLJ-zJATTvv-tB2CU0dDo_KXL!yQR|eZxcEhpc zyBd{a#V)9uRVcD26b;Z ~qH$JowGBb-x|ZQTwUp-H@`jcz3^*Xm-a^1_W*GY2H+b$eSpxp~XXOVZXWqHnq! zu31U$(aj4Er(y`q1jX~zB3SH46T!6AuUl;|c0}Xc6*UrT4Wjf1Al;D%0S%*HTb#xg zT1KxG*y2r27CsJXG5ZO4DhEFVreUPOKg6x`UM#y@P&QNZxhnH}rdDo+PqVZ{_~~wT zS2-F_@GdXaXVBE*apN2tmaDQP+vPo|U1og|i;20oJq~Qzn_L~JaVj*s>itm9!Dbut zo`X)_8{zJCmHp!b+azKfHy)86%oq<>gjA}*Ub{OzK2uyWi9S&Y2?q(z^UL@At?ZTj zgABKjtIJSpkm!pjlwlL_MHyC;arrWJytA>F2>kS*Q_&*8%x$~0t~2jV o$MvfVb1PhuU=@ zAuPfk{26A (V$9UDSbRa|UNSkdkrroS&dIp}mJNPBY%=GYezqf0w zk~=YDZLy#=HY9EbJr 5wtvdUK^mY+$FrapRZXrQj$7GI4x8WV8&)a27rd)xOOyW_+9jnG E&{re?s+#l5QV *NOM(_5CFSgH86@Pu@+ZH~y}xR) zb7esn@i=Tw++P%S37ITZx#w*VUxj7yiD9teA3i^fRsfe?VNfCx^FO&9QU>22Q#~JA zX5A8^gv||l&smQ()ca~|a6DPB`eK$|>~2zlb;Fmply-3IiqEmHOuI9I@8qgc$GcV8 z E50T z) gOQ! z*qR0tcH$U}!f-LkAR})aAGyJs8W&kvjv--w|FU+!S%V2Y@Kr9+vj%Lu`0HRjt?;~9 z4vw5gG@lP9J5wSy-|^EMod(D4qz;BxHWm0YPtuwk2ixBWDgQ6P(&@m)cgq4~X6lER z)tUk_^cl8g|JnkyjsP0_-DF9x@HSE)MpMmhxi+8HL)LJI9U7^SZwmYB@mx%f>9F^| zkl|zM?dWjG)?*3zz0SQL)hw_xrlgb#i+po_V=dpmU6bqk-FsK5Sjt8pm(@jniT9a6 z_%PW%U?iDXiW6leV^<$&>yH!c{CvwA4Ctl}kl4;Ns_DD>mBY$Audntxgw)0*D$;Pi z*;cm*8sTH&Wl;OM3xCUWTnbo-S!D3}oWzXIh!Z*H=J{L}CY(1xdp!J)VEK#daW&r# zx<|hv)85`BN=uh<7Z3d>+OVC+QrAvvHN%%yW+;UYQ_QGS68=K-9UUrNGPBJ<@_Ql* zzt4b2Fxpv2M$pA~MI9W{+lzibeEhZD1zATm3Wfm*^i%?J8IJz|EF15p#uck4E@_xl zpU~CV%9t$5h%t6W>iiUe!h!_0jyDdEeI2c_#XNQQ@h4k*ypfMq<2~hjv2a~Eo4vzP zJ3&Y{dZw2_B==h(=h^XP_;smfEW^)oUsU2Op2!tXhR*I_?3m8FF0==8Om)M6#( zrO7$#&=g}wB@rhnvp+glyx5W=CdPI?0iTv)SuJ#5Ryp>;hS<~heJGDV*JD;Aa^h6O z<4yOn0FCkIiG1c?e#_JB=V9`4JtepRN*?hW>vvqs#&m&REI}nfd@1#4sQ|if0UrMc zT`q?mN;pa%4;5vlM8m8vGW3f3a2K(Kul0NE=8m1q-m%0`QA(-i=HtUzoES}}B2S;b zjL~~W*FY&(@PmwDXkMm5SZEAhq(ZHhX+og`6x(5`E%>l1HQpoTE 6cZlP|k*-OE5SHE-ZGsU$EkE#hEaWmN#5W-F5^F#8)s0Vn!C)4FvVDWB z1Ifwd>$8GEfA8e19l;XK=`Su(>D9;ECI+qMBTzctbe;19tEd>%vygAixd<5b&iyuX z;HZ$`wY#X` ?a;|+d*Bc7>cE-ORz-@ zU|qSo$D>e4mR)4L;tGh9jmBDCxMN_c2AAND-{~rg-}(2#ZLdSZuJqQ{&V%|Q8xxlq zcSnc3X8sf#H*1%1$L-7sHU?H`ErK)=EfCT95@G9BQG&4_@4E-5FhxXPGI1$7P7r`U z39wor67x8J>Oc;JWeMlB2sgP)@y+G#qG!u0-oiK;B9y9(d1EiLtvz#T62ymt$K0Cp z{ZvH>UgeiE$8Blz{y;(?>iDQXt9RSiy#WH~GjH&`YaCt;ClOV2KMyZ|U^xK+&fwW@ zBr=hg20%-ox!1?wgUkcQh<4i&)!U1`IFSS;sm#1PX5VkK2;vnEY`(}5e6Hh#SXtOd z9!HWnr^&_N_cKqnR!4(z9NN}86Wl1f5IDz@h;W!S?=AS79?spOdV7Y$*RMM49+sxz zpcZ{w{2dNn@e&1~?^Fjv^SQK*OF{m_p>CS@gG~s5d0QL(n8K&e=a!OVG7~lwde49V z9&pnV$SS!|hUi@WWRbg`ErGuYrNQInvYpHmb^C$jp!DW~TnX%N2z`-#7v;T^5r7^t za3MHe@*Pr}E1t0XDsq=yOs>9gSbBfdaHZ zGq DW=VLPA^- z7 PnpEqSvU_o z1Q y9OqwK u%@A()JW7KDpHnHw ze?EblXegB*+Dca*`<_-ctY@F4-NV}?r1XxN@`7PRqs{KKrnQ =2)wOnE*={nvUj8x56Z?bG}j? zwfKak<<~aI+|6EVQkGhb?Agq-5*-h_nhwaShRhesX^uT8^fj>>5AgB5xktc=1)3@} zB;$=CxSxQZyhZou#u;dE|Aa}V@`MT=xg5CL4rX*3V7)klmf5i5^2q-WfRBTyCtPzp z7o!aQWovjWI(VT*9DGH2; !vnoC$8Mu%oQlW+a|vN=^QuplH48{bt+KeU?U0@ z6O(X#QNX4iC#M#xQNoDJTESM?+w=Ns08S6lrW&A-@r!rTI)hh4l~ MwxY8_t-2v&tL6+ d$B&f>a6X0>MB^y0woJZRZ`cG^4TeX^Z+Vu`R43XB`2gUCU8 zPa#FGj3%}_TsEx(cW0Bp;%L&!F(E*Q^~l;kq>D+H&zGY;XOVFHMx6eQe)*zKML6a6 zwXt9g2df7iWAVD?f|+=noFL^tq|wWw7Vv4Wecc2)P7;+0s2O*>q;(MX^LbD+dIYzY zLdQ2D2)t91x9*dPPiqUcNuQ(APdX5wblz$<)9q?78x{32Q4euDy1NYhSPyp^T%6NA zN1+zsK@JH%&F948zYq1H=B|58?u-nxloD~$7PGLPmSf3Tx7o({jf9o8&VSSaazMuK zMV?5=H&$3g*^mEC+0HNW;c$S}%!HcW>;Qu#Bo=!}k2MWBG%@z|6|VU} MKO7)rv?fDF!h2%?z&5@(~Y7A$ec4J5)hIXg@!N?`#hdlM86a`H?*=!WD5FSWi zX*7=SBm#N2-aC1zw}mKYN{4?%Nk>W9?9hupwfC#HPN2YjhPQBIN3A(i+^_6vcvh%~ zeES<2GiPt1@ `RBHHJz#_ i}$_iRuSAeM`+x7mwX@%jw z{ r*OXpb}aZlzm)4VQPSrshYWe20m7?VSnMylj2E+c*H zC>}ni9<-Xn=qB%raS3pc&fsF5Yg9X`dXVPT z2LV#YNBeAdI~jk`y4MjFj@uvgu6v?iT|p1L<4H-Dkqj0r;>~Km+B$WV8Om@rx@W#8 zn$^=l*TDNOdT_Fv*CBXweRJbPerOg`^n~qrC67NhNNVTF>j0^O11k$+55P=auOuP5 zAF`^vd4}t~*8!0_tHF*a2ci{;L3xUqHysZgP|1{5<-8Lf&Z|34Ww+!?;n{#_gR2+s zF^bwAuABO(V A5^m*dw+!5*F-T9^+5C)EsI z ;FqYs(3&ddXhPyh*D1>tj`FfB<1jNkf`98a{NY%>6&B1Kz(t*c5eU+KMc5Edu z =3MY&@%|KAg649$eK%jT~3T_H*B?_EB(Iq0Ns{pj+nQQ<)W7~g*;Hw6nQg8x1PtL z;^CVmQJ~r4_beDVb*10^UG6L3wWEMCZM9o5^%!{X@o;7W8QP6~Jl;C*w4_YU$FGfx zO6-mG*BR0?d;4VxQbXCj9t(9ug-FKmEE?@b4Xz8OR&7+xi-rZ`as8LMD<>0K-&p}x zdD!u{)+8Xh)ywYAiUZVsz`MGwg|lJ`)Y>Zy$E;y dDCr`#8 zx6jMVXIh^my{mmf#7fGY?DkT|04~zd-T98Br6lM3dzlSxYi-Hkd2wE7*K-e0AX49O z92%*??zu qnz