From be056e0a9c131d19ffdab57723e7d7920fe127f4 Mon Sep 17 00:00:00 2001 From: m1ngsama Date: Sat, 28 Mar 2026 20:00:02 +0800 Subject: [PATCH] Add Arch packaging and harden webhelper lifecycle (#6) --- .SRCINFO | 20 ++ CHANGELOG.md | 12 + PKGBUILD | 56 ++++ README.md | 38 ++- assets/screenshots/big-picture-arch-i3.png | Bin 0 -> 138092 bytes bin/deckless-steam | 310 ++++++--------------- bin/deckless-sync-webhelper-wrapper | 104 +++++++ bin/deckless-webhelper-cleanup | 63 +++++ bin/deckless-webhelper-heal | 85 ++++++ docs/architecture.md | 19 +- install.sh | 3 + 11 files changed, 484 insertions(+), 226 deletions(-) create mode 100644 .SRCINFO create mode 100644 PKGBUILD create mode 100644 assets/screenshots/big-picture-arch-i3.png create mode 100755 bin/deckless-sync-webhelper-wrapper create mode 100755 bin/deckless-webhelper-cleanup create mode 100755 bin/deckless-webhelper-heal diff --git a/.SRCINFO b/.SRCINFO new file mode 100644 index 0000000..31d1705 --- /dev/null +++ b/.SRCINFO @@ -0,0 +1,20 @@ +pkgbase = deckless-git + pkgdesc = Keep official Steam intact while fixing proxy split, Big Picture rendering, and i3 couch-mode handoff on Linux + pkgver = 0.1.0.r0.g089aa68 + pkgrel = 1 + url = https://github.com/m1ngsama/deckless + arch = any + license = GPL-3.0-or-later + makedepends = git + depends = bash + depends = jq + depends = steam + optdepends = gamescope: run Big Picture inside gamescope + optdepends = gamemode: enable gamemode for Big Picture sessions + optdepends = i3-wm: enable fullscreen handoff between Big Picture and launched games + provides = deckless + conflicts = deckless + source = git+https://github.com/m1ngsama/deckless.git + sha256sums = SKIP + +pkgname = deckless-git diff --git a/CHANGELOG.md b/CHANGELOG.md index 6577700..b731cde 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,18 @@ All notable changes to this project will be documented in this file. The format is inspired by Keep a Changelog, and the project follows semantic versioning once tagged releases begin. +## [Unreleased] + +### Added + +- A `deckless-git` `PKGBUILD` and `.SRCINFO` entry point for Arch users who want to package Deckless from a local clone. +- A real-machine Big Picture screenshot and validation notes in the README. + +### Fixed + +- Wrapper timing around Steam's updater verification so Deckless no longer needs to present a modified wrapper during the verification phase to recover the proxied, GPU-enabled webhelper path. +- Wrapper cleanup now survives Steam's shutdown path by detaching the cleanup helper from the launcher session before Steam exits. + ## [0.1.0] - 2026-03-28 ### Added diff --git a/PKGBUILD b/PKGBUILD new file mode 100644 index 0000000..7b26124 --- /dev/null +++ b/PKGBUILD @@ -0,0 +1,56 @@ +# Maintainer: m1ngsama + +pkgname=deckless-git +pkgver=0.1.0.r0.g089aa68 +pkgrel=1 +pkgdesc='Keep official Steam intact while fixing proxy split, Big Picture rendering, and i3 couch-mode handoff on Linux' +arch=('any') +url='https://github.com/m1ngsama/deckless' +license=('GPL-3.0-or-later') +depends=('bash' 'jq' 'steam') +makedepends=('git') +optdepends=( + 'gamescope: run Big Picture inside gamescope' + 'gamemode: enable gamemode for Big Picture sessions' + 'i3-wm: enable fullscreen handoff between Big Picture and launched games' +) +provides=('deckless') +conflicts=('deckless') +source=('git+https://github.com/m1ngsama/deckless.git') +sha256sums=('SKIP') + +pkgver() { + cd deckless + git describe --long --tags --abbrev=7 | sed 's/^v//; s/-/.r/; s/-/./' +} + +package() { + cd deckless + + install -d "${pkgdir}/usr/share/deckless" + cp -a \ + LICENSE \ + README.md \ + CHANGELOG.md \ + CONTRIBUTING.md \ + install.sh \ + uninstall.sh \ + bin \ + config \ + docs \ + "${pkgdir}/usr/share/deckless/" + + install -Dm755 /dev/stdin "${pkgdir}/usr/bin/deckless-install" <<'EOF' +#!/usr/bin/env bash +set -euo pipefail + +exec /usr/share/deckless/install.sh "$@" +EOF + + install -Dm755 /dev/stdin "${pkgdir}/usr/bin/deckless-uninstall" <<'EOF' +#!/usr/bin/env bash +set -euo pipefail + +exec /usr/share/deckless/uninstall.sh "$@" +EOF +} diff --git a/README.md b/README.md index 8bf7302..45a73f4 100644 --- a/README.md +++ b/README.md @@ -14,13 +14,26 @@ It started from a real Arch Linux desktop that needed direct game traffic, proxi - Keeps `/usr/bin/steam` as the official upstream client. - Proxies only `steamwebhelper` traffic, so store, community pages, avatars, and embedded web content can use a proxy while games and downloads stay direct. -- Restores the original `steamwebhelper_sniper_wrap.sh` when Steam exits. +- Restores the original `steamwebhelper_sniper_wrap.sh` shortly after Steam exits through a detached cleanup helper. - Removes Steam's `--disable-gpu` and `--disable-gpu-compositing` flags for Big Picture webhelper sessions. - Exports sane `GBM`, `EGL`, and PulseAudio defaults to help Steam stay on hardware acceleration instead of dropping to software rendering. - Launches Big Picture through `gamescope` and `gamemode` when they are available. - Ships an optional i3 bridge that lets a newly launched game take fullscreen from Big Picture and hands fullscreen back when the game exits. - Installs cleanly into XDG paths and can be rolled back with `./uninstall.sh`. +## Real-machine verification + +Validated on March 28, 2026 on an Arch Linux desktop with X11, i3, NVIDIA 595.58.3, and a 240 Hz monitor. + +![Deckless Big Picture running fullscreen on Arch Linux with i3](assets/screenshots/big-picture-arch-i3.png) + +The live validation for this repository confirmed: + +- Steam updater verification completed without a wrapper size mismatch loop. +- The top-level `steamwebhelper` launched with `--proxy-server=...` and without Steam's forced `--disable-gpu*` flags. +- `webhelper_gpu.txt` reported `gpu_compositing: enabled`, `opengl: enabled_on`, and `video_decode: enabled`. +- Big Picture opened as a focused fullscreen `steamwebhelper` window under i3. + ## Design goals - Official Steam first, customization second. @@ -66,11 +79,30 @@ For a controller-first session, launch: steam-bigpicture ``` +## Arch packaging + +This repository also ships a `PKGBUILD` for a rolling `deckless-git` package. + +From a local clone: + +```bash +makepkg -si +deckless-install +``` + +That installs Deckless under `/usr/share/deckless` and exposes: + +- `deckless-install` +- `deckless-uninstall` + ## What gets installed - `~/.local/share/deckless/bin/deckless-steam` - `~/.local/share/deckless/bin/deckless-bigpicture` - `~/.local/share/deckless/bin/deckless-i3-bigpicture-bridge` +- `~/.local/share/deckless/bin/deckless-sync-webhelper-wrapper` +- `~/.local/share/deckless/bin/deckless-webhelper-heal` +- `~/.local/share/deckless/bin/deckless-webhelper-cleanup` - `~/.local/bin/steam` - `~/.local/bin/steam-bigpicture` - `~/.local/share/applications/steam.desktop` @@ -119,6 +151,8 @@ See [docs/i3.md](docs/i3.md) for the handoff behavior. - official `steam` package - X11 - i3 +- NVIDIA proprietary driver 595.58.3 +- 240 Hz display - `gamescope` - `gamemode` - `jq` @@ -129,7 +163,7 @@ Other X11 desktop environments may still benefit from the proxy split and Big Pi - Deckless never replaces `/usr/bin/steam`. - The Steam runtime wrapper is only rewritten while Steam is active. -- The original wrapper is restored after Steam exits. +- The original wrapper is restored shortly after Steam exits, once Steam activity is gone. - `./uninstall.sh` restores the local launchers and desktop entries that existed before the first install. ## Documentation diff --git a/assets/screenshots/big-picture-arch-i3.png b/assets/screenshots/big-picture-arch-i3.png new file mode 100644 index 0000000000000000000000000000000000000000..ab1e20e8f251f2ee3e1e208e842f01cee73e2536 GIT binary patch literal 138092 zcmXt9WmFtZvmPW!0s%sBmp}*v*Tvl-cyO1zxI0UNI|O%kcbA~SmtetzFSh6ci(bAT zcmDL5IeluXrn{$}da5eoi;67vYtq*M0AS0@NvQ(>dLRIx@?#*sJh86Ve*ZFHI?3s} zzKs97kbq!sqL&+7Kwe5*(<|$E?M>p5oX0;;`rj2DYd0R#iWwA3Kk2&2^23uKA4S6k z@M7zlJ6o!nxk)FLR6RFzgfYnR0n8uNfE9AOn8=f8jKgBJzVwd>DcZ|_|HK}zPoG3O zOOnR^X!sv~6loo!MNk{6KcBMBBV2FM>Bk!%MV?_gr_a}|r%#Kg7th{or{kRWoABO; zm67Ld^K(_ld#bB-g;dSV?b)aB2C$vP2au+UUa!0+gSUTHGV4ZAkd*)rVo}LAtu;dU z4YjoTv$3WX&aP?80EDs&R4CmR^(aYKd+>Lm;fY0UWpIxPPwP3cOvv}clx$f`tbffC{?DAW*VzqbTuNI-MGu?(ay&y<4$MqH+*8eYGAlymCb@rS}4^y;a-4$+^d zU09n|%D&luM@?+sxt-4*&lXRczSm!I_n~kDM?S(z zGN@$B!s^MKF+xys_?|my``hkRz_ELHyYJdTo|4Y$AObUZvW=$n2)~ckVC-x9-rd|? z2vVg6oZ9NE*v?mfl&P59#{1H51=C;cRM7uq#zlPkz|7?i?a?6%>bcpfSZ_$k&C2fY z;=V~Az(y-W!bY|0EPa<3^?Nhz3#&MC;e$xm<2ncc>`dx|J|0YMvL2|kSo_cU40m9N zq39hZ@ucg759Dj;+UnQt&dOe<8|<@>btlOryWo0M*{eI?17Zaq?J$5g7g6M@EUAd{ zdm*A^Su1@yK>0O!feF`wZEA=RbnlAGSp$cVrVU&v;Oy!Gtym6LfIOZ1{A`~ec7`Go zHluUO5~6+4Fnc$NG9eD*Y7s+gs{fQjX&%@I-J!62gL;sg*gn?qA{bjhv9Lxzaamt5rWOmmb9*=UROUGI2(9JAtp`g%7@$pI#Yt4gnc zO?6#QmujD9LwCjB{=-&#=y@@)yB#CjK7ny~9#<3_x=Cm~nTC*DECVhwprTY=7d-SH zK&_R`XQ%X=~trr!+pN)y_dCE@;ZVQE0Nj*GseJK*bII} zW|*GfDk&faEM$x)o?_+V2BKX}h{#^C3Uu^LeQOQ9wD*Dptt#rwefX>E@6c&|=<~~) zV41P*^@~C869DMHQJ+2!ZPGHsuvc<^Mtw)J@nLq|0QU?b{ejhvy6t=2mU#5;6cYQ* zLs$3xyV!Nf4&(p2(difgK^jz(*oR#RSKKaY zN*<(9c-6cK`SfKyeGU_*)F`jK-5F~%2r6+qyoiH%@vep$S(`Nt7~}w2YIm&VN2onp z2VYk+lPt~*1d8I8gA@UNh|zSF+e>gRE0_-I{F#g_)chadv&B#Ci|v$*zUJaj`5$9~ zk(H$W4AmfiGYU}G_nPO9MW*fRtT``8m1@TN)|RDC5J85P6f&1C*gj2eaF%chxFsd* z8f`8fa>?8>ar|~uJ;Hfpz0BKR-vM0??mDZzeZ!yWd(c%Ab&-VvaBK^3h`EG|sJ<&r zme+Q?CE4y&GHwuH<3a}yLQjS_q_B+SCbq@j-1OVPxU9BFH$fkNnTq4bVH2@7Y^%5b-W9m32zKYPvyj<8K>B?fUA2$-)GLRO01j$2Z2AznY5%4f zgGM40_rJy}#u?pGk2xximaqaC*AHoc^l}YtL?VKF%BdaKp8emVb-oKYJ&|rpiIbR@PpD<80*%jO&$PlLsqSWSposKkBKu54(1JraU^NdNgg8JwO&UPiB65_$&@4>rr5y5fXlD?Jc8aI7k;HVL@SBly z!CnzfOUWCG+PICrxSb~^x5^U?3jF2ym%}9F(b}g`h4)`ygO!o^R}{cc7K;@4VP%b) z>xZ#fuxM{Akf#xIXk2CAYXH_alYn|#qUM>VtEd3qYJIq62F@CbB(nh2JdwA$eH+jz z4jalhgeuE_(E&8PpwQCa{tM#F#nzAKddh6cbVtFD9n(qQWy(TPASXZngpF=Q!%y}y z*XDv$THbNzmHXb$9itPXG{)m&o8UEAl^Eu%`zgErE%x3_{k^5jI-^vACNrK#>YNC5 z^`HpqSqeScZtnayXVLN|X~3#&N2F7bgLUIJuY<)E>!yg@VUwRL&v1mm%{aYH=At8U zzGD%>SaK!9#2jPUJtUwz6p{t~oUnsoXHz+!s`HKYEL9ZA7~Fz7BM_1^aBTb({qONJ z$$v8%6|>oc2QXXG01;Wi^Pl%D=Be%{X<&_JuQ`Ic^7=g2#cbdzR0j>sx|q_iyv{8x zhOqD-d+dPoM@KfjpIf%Sr_qj#?RwY7j%?3$3RCz{h(llO1Ns*B(ERLkhA=_Xd)zXF z33-y!Mu{^6ix%I?ReJwTt;q@-I^+4nxI@dHJSQM=`OH&T(0JT~@O6Ys0l6wyYE^Eu zf9=5Z>zR|`G9OyH>;olFR%e6=<8FMkA(WmSTabaZcy<)%(^85}yLfG5Av`bDm)q5m z7A>3m_^0+jXjjP5?W`OboHS=hX<0k0$avH~z5!fazzQy3GqYT0_&^@{VjfI-%||0> z%Fu~D_%v%8^HJ{Jvuafr%o7G!Nm|o6KeZ^}L}f>!K;{t5qk;z!C_V(~Om5F6}{mHqAbUC|Wj; zyMW(%kJ>hK$eGAE=*Q|L0C>gxwZ!m=c%!2$ek?95l}izSjk8MRyTB#1?}+9$n2}|3 zk+(ndR_BhP>$8!n;}of8ithrrrlG?xO)eG{7m@Wns`u+QrHN zhx!=7=Fb|A7gCKm>E>-*Y&Y%VfDc!2K8MZ?OT(IW+pG%XL#)&yoVa5}XXACsZu>G1 z%|0iy)YzoQpLP=Kb$|6|kY~*c{vHq43Eh4woc^2nRfX;AUvK^|`e_ntPqwKY4@&*r zNmbS?E%eaUWFO#;e*w?*djtvkx)gfmSd6e%7Dev_FJBh%)I|L z2o2RfP0x#@3RN=76o;R57>25N7OA0QzTk@EfRFg=kPY4A8SW)x&9tkc`VXd!f6Hql zvifIp*eEI55N%AB!UN!=S9v3>ws14r5}J4FNBB*a1hE=wuk5!s*JhQ!F0z%Wc;aS* z6_@{;>0Z>-3b4PAQn>HmJGoYUf_3qF_$ZNfx6O+DX|nWgmR47AetoMwI$cb}MDzFn z1Q~a&1r+?fQ2{l@lYmvWjs*axaOkC;_M5B3J0Vjqw%a)a8WkUg)^_Yh-kTW@uBMV@ zf4^#n7JJGFwvF`q5?LWVv2XwJ@jqeN94U@%zfqv@=nu_Mvw^?HE*U|r#b_*Y*v!uf z*;ui(kEx1Jfg)O9Uc0-Irywf7_1}bRx~hqq;`_9Tm(V<3WpGPDE212xi+^CL2LMhu zn<&9$&#OZTef?r>=}!)Zt@4f)B9+@6M{Sy{N2~jXtec>bL-M4Qs^?3T+5@^tcJl(Q z9K3>C6o{Bfk$~xfyNA^7l8R+#)#$x8x|+1`$oXB7OL9&3P6%(u6npC2EZK*{3oHru zH9%j*1&xj3UgQWFpeB~rx-QHK)%i=Yke$&)bw&PozLNo7!BRTdH>c2v>fEl--5q&O zR=3bq6ONXpXqa6iq6xJe`qviAcGNC?=W6f+N6d5IJ7^#e-frS_0K;2pAPlRS8h9rI z-nqcjbbV~0wDLSOEv39c@Cm{-6?A`ZDvJvkCfLk(n)TlDxbOd`*5R7C*ur50 zn5$UcBw|t`^>I#o!sS~lOAQ8(Y%8t%9d6H^v^fQ=`gdxax_EyaTa-k&{O;))O=V#& zmJh$SvQ<{Hy8`J>i?@*a5&8joBggR^Z`4?d5%FSbi)#POr^l%-Zm1~1@X4n|oTV^H zkK2p8gV_}-1tvv-k6Jmo4xX8owugJEaApPDx)f}RsECwe|G-IX72-530PvGsXyp6* zrm}NRz)n5?a%7E<>bm#I>N(RNksrU9+L{XvcnnGk;{;dcj^P)&H{@t##e`MU;{{&p zCg)Kod`Dt)KOH@*{otPSR00z9&QMse%%3+B7T!6{Z7>%4ebaed{rj5jaF*s?)A;vi zR#yt5eM-yIp~R_B-bUwurdZt@F}yAmppSWwRdR%KweK%?+GE{!Ui?bE=Y8*&4pqA;Fo6i5mB_k~$`BiPFQS*H^ab$GJiMu5~R)QQ9kPh z4_I%ZjeTUT;>1Ila9+KY$X+Bqd`RsIuu~6s+GFj+n$u@QOn9?C{$~2^zR>81n0g-= z8@mg*X*l*hc>dImVO5{DOmvL&`lkH@CS)Oy*x<)JmdXkKJif?T`PAhy*!urmK+?q* z(TuvP#G?6sl{}buy#0{3@z~kam)?@^-}p*}Sc?KsGbJGKvpc1Pmx0ZDOYbj^VaK~P zzN43=L0vsb#>P=Z+3MbiDe{jN2`!}{ z1b|GKOueopumD#`bxIl%AG>IOXy@HOg`$CEX@`P z@KmjQ_8<3gh`%Ri8b`8u40TR#>?(W2?+0Skp{k93gXE3Qed*3OlwI8=3W9 z%>7dx(9TRj8Jv&Jy+|8dI-&m7@dBZoQ@IK?pcf7Q^s|%LX8X>XA{fVX1BJ8#barJ8 zoK3sUwF$ayPz<{xL*AnxH7Qp!qER0Ht|#~bW7ng6P8FqUkZiuZ*nTET|FqH_&@<`< zSH2=?pZ=;SxWCkc8rHhY!n>5AXp8#pQwU~^0wkMCt0KUx_P;|BzT|#Iwc+%EljyNV zI=jzBdUUAf;;0)_(Lmr*I1x$@?G6ETJ3^gcsV417-Y))Lh+M-eIg$1r3A)s6b4-*- z#u}bFq|o^8N|$N!1oX!sONavF4UDcLRd`E_^{k?m*j?M-hzA*%uGNo-#wDf<20+*Dp(x@Cg_tZD~sG|?_MqYLq_S3ZAw&A9lN!2Acq2@%<$pGtm;>0TM zrnFtj9{x^4-a>I~lhrbRzMqkltNm5~|1Y-}G=!$O~^~59(36BEblKS6v8y z7qjN@_Vh)`Kf4+Lh@0h+V|-0~!*crFyfNw;zhs~96$lx$tb zUv5(y0O)t&YkQHSg5dJBYoYJz5n+s8p-(0jdO!BbC3o``GK4Qw`*N-{LQ*SGw}sV? z)3DSkgxYZ)`2@|NA-{1Ph28PT%%?YeXw}|O-emdrOArj@n=2`HQsBkH;Urz(EwlTB zYqQAqAl~XFc(wv&1DMQE`#IdL|`P+gK3nc?A(gFG#hUkH-?}A~t*R0dEZpz!hRE zwBX1xhHp(DJ_H%T(3u}@Enf5@yC+6#D@#DfUU9h0>*N=mU-rY0_O=Oj)Mh}&lTrHj zAG*-K{1!=|G8X+N8YexyyB@Yh?nE7e33`1p>K{sUogrNGTDyM2X02&xkk~w5jL{q7 zRHQSTURl_>^AmgRs{o_VuwXqAzNfFq7BT~*q3z?9hnd|SN%tc)V6yYh^V*$v!X`7i zx|90I$4g!iC4<;zT%E|ye_ABet2-Y}N}_ho5TQG$OOuTPJ5Ro%8`0tlgB zR#d$KpnOFL39GI+Rb|DHpIAf>S7R6*`_a8|5s|uHO=7aaP}q|*fr_+1PvWYP+50GIsmL&;-9a28_1T2gbeE-~v3^Y}pf58UW`6!GT?(8;9Tq^|2 zol+Aqe9b8f$aw8%Qg#ICaM6%#n51{fJWqK4xEln~yT_+zzuzG**7>$~?O^+{ksm7s z6#4Vk9I|<~(@)dF!$tx1TBlhLBM9z1cJJ7=rS#u~A@^l>{<18X_RvB}Fm-+BX;j2_ zH5;l}?ZNtCg9M2SL(JM83sgzhyTYdMp`G|Dno$luwS!u?I4fha-A-D*TrRn{SaN`xcPnfMWJT2@GqIf(dU!MMjnT;4*bmq8z(}EH|ETP7D#ENWPCCg zE=_3ZzZl0%D0Bpqx&u!Pg?B0uQ=rqM<7D_gqTdEXV-E?MF^8@<^@$rJyW33=lkPLA zbCkgIqCr+Qo`jae%fDq}2HQoNCuHrdj+=djZBkSuBL^bjBE4>}Ux*6@LNe|L=0VxG zeM(s0IFveQ8i1Im!rnQi5W9IW^C`IvrDJ3FIkI>m0j^Hhb+HW11rhTt;N>{++C-b# z$**&MY#`jdG?GB=Qm?i06>l{HQk`Y?CYij0si2VAdDIe2Nm~rMoTZf*B)fV=X1BvZ zec~6D#5528EzTQfS4cR*7VUqftV(@Nu@qC>KU$%zoDGXm<#(3B}J+mxKCWTr315p ztq4&d`>oZp(#_+}R}RK?PnYJ)7L$L+`#oId+AGcQ4~kUK|Ne5Q1&7>_1kRHrpBD=e z0VWjdY||X9!xST^AB|clzt!9K8rMf+q}WW`Bf&~mGI#9J^Cr`I%>yR`>_c|FM4=>p znckHmH>=#Ih|E$$3KNSKo(H58wSisVh3)a4cD|VMmC@7~`10yJqqDlKb^w(89uL^+ z<5EQ7w6%5~9@c&!Har%sfvo;umtG53$!+`l)idqvnsZN&jK|S{7gUginzu{d+|fz% zsa#_^gX&rxSGtn#tf~9kn=!H3JW73`B);8VPG+R7(U@|o3YNjV<_TTYrHz-&3FPqe zm(HlSq6Ok#hux^O6*WtY9Qo0k__PDle6Eg5qAk znNYVZ(cZc9qqr_p{Sb4PRBrjlLzmGolPj0WkY9HlD9R+|9&=9JVd=#vKp>zzk{Tg` zB34j@&uH458T#UzSlslr2EUTI#8gmTAxwD3R=R!cXar_-y1HplUe@bua_t}IjCCL8 z+iGTRSyg<7Wgq4{hab*_wEkx*UP#aY{v;8B1O8jZY`eE$EsTze{+X6MD=zg66bOgYuNNQ&ptLpOrg||6|02|T z$CzlVHglWaJg@fY+moHd^d#TGY&|9$3MuJf2ig2g#{LrPbOq${{OogMkmdno@58#I zf-5(M%#jTho+1ZSe}6yut%m)u$ctE(^2UiYGgHCfWT4bD9+{#L;oSel+{zMCj|o6m_L$RlOTM~kF<%TT$6=`VC%iU4|O^? zjzdSKwW3iz$q&*EwBtt>J$u5+Tuk*H2NeV>=y|3(1Y<;_jgPZWe7y*m=;PhMhA1q+ zko+z9>A*PPdHdPp_fxl~aYI+rrPYLiGIu#7VNcvs^nEJxw-+q{YMK?6Gi_bBvP-Hp z%_g4pzY`_rw>&6?`j&i^Q*cE^ioA7e#5p+bF!g!!9(+6L`8+H66qTAY`Lg5EDaTo1294whGk_3N<@xsjOvi)-N?Ap^u>d`SED z%tVp3Jlr=L>tKS3nWBcSi;He88`svF3S)Mur(ndUW57-2^MlGGPUi*DY3`U~L$A00 z=clU&ffXXhrBszY^M`JgeTm3iM*nQaYs9<2Yl+LW$=TG{jlpE=S=Q0FC-$|7Gx=WSg^za zXO2#+)Dn|(U+>?fO&Fd=&;kH^!}`H$5QxluXwD;je_*YKl3RhfBzQGhH0nP}?Ut3@ zxYJ(5E+0;>-$zlo^REhstJ})c^=CNFv}%|{`I@t1s(XQ(lyY};A&NrBJPe&ip8CEtx=x=^s($Bi`1Cq9K>o|ESb{&tfoxsx$rQ ziY48jEQHVjtP3VNltJ?ol2-H)X9>)*j)iG|j}a~Z{mw&(Ccdzm`q(*GOIkOXsMz9@ z=o45sMK|D~B#TnRX7_JmNeX&O2FJ+RN8lutpfUd>ehm@TaEQ6PGQ#%!6on&te7#|P zSU)j$d1Nfo`&j-(H1+WFIHpE5U9%8$-MZcbiW~7Zb*OvS=_6%sh+Tlz`vhHqN}tV@ zndk3Lcs?>ewgkQ*T!2HCtor0ybC9-ohqzQq_yjfAX{R;(Upl?1*Liozlrth{&AQ7L+eT`@?v*; zAN)K3qw0O$L(n|W>z`i?jDR06N1pfddUkx7DsWRPh%84v1mdu+#U`Pyd)z=ZOoo3x zD^TKefBtpqhQn(H-=*_izX(pz0QZkLme;enB9Du?y-)W8u$3wyzlYmYvm5z~+Je_G zfio%Brzw^1L4j7vrJWXsbo@F?BGZ%=v7T8Gzw5UNmJssIHS0O-+&~*2MGo~2HehNl z3?*Rm9C2<>)k)az9`hKv4A6a*6ZfWD(xc)uy&{<|-z9=9`gy`TE={I@FXC{F>5fLL zJm%2U$~cPZ8P4{6A7}jJ-RgVe6-AU5jNuK#9PQ;qbT5KFX zpjrDQF9o*eI@f54Ejd~|XY(SJWcq(DfU%=fV1(`~eJZCfYgB9M1zV@25#{>W1GRgA z8^uR*d#_7Ak?v1Hzv3M-oDAj!+;VmW;dL6S@L8m}e7_n6KHVc@4GhVRjDRmRaUW4> zTLLKE_=J?%N&l|Cj+oxjMqw(iJlD3q6`J<&zW%#fTr<{Mp?S)L38H9C?^hg_Ol@RX zV?P;dpH9SU5@LSIO%GgNrixbhc|KH@ajvA!$2_VVBh5$^6myy51BFo67H@3m0n5R! zU8UatMy`$o$KqOaXzpN2Qx=Vl#5*D{JPw!5T+DOGW#uQTR#m|EBSG}lOQb(UXyYFGAgCnAc%>L|9v zNN}mOQM11fx}kjhGxt^Vzua;2yeR%DT5y>a`5&@dDw}*!ry=@e?(XAv3Go4 zTjy0?SgT}%D@h_t!CnXF75d4?W+VNV^v#+_*Dn>GTJV28{6KJR zs>pnBK2Ew%4SN4Y+g&AR{>ijh`(E$x7yw9e5`IQJZ0wv(?6JFa2vdGo% zW;2L;e(3$BA=@FMp*0Sx9?={3pLN*y7rTsW{3Ue0Q*tuW{yk5QZ6gs?O&%u zw?!>@n_@!2r$3s?3Ky4Q%TLs0HHALTObq`mx=NoiLY&)k5Sh)Lw;ZRh9wg72tZC^@ zIC_ZzGhSZKP^UtxZqCm~s$YzHN*RWI@bbCM!iZd9^=m^+WQA5b-Z_Mdz_RWmIf|`T zNT`;N?>NjoSBX)1EzEU3t>krLR)#cB1gzNcu}6@rK(mS2z+yT4@ZsAF*FykUamIM! zQ=Q6pi(C2mlz`G0cO*};D71|HPp4|3RLtiwl53gpRHeTs^^{{@C7sB~2|NuMB7r9P zKAq|>oU@G;kTjRl_cAvlLQD=@WTGmS%Vocj0J*SVD3d{B7Yhi3b7`LAKfY30O?%3R zL-aLhnKh9D4C~%}e4VRioP`ZUy3-~;b=fDv`S$hGM?dMIs}>46qMJL{HhMAT`GGCUEjouuemGNL$xBmwbyj! z3?d3^_~|e!su9MK#SHO=usyX2R*88}}D?r&9(v?Pwro}ryiKkYNfNDe74)p03MDjSR-rXf}PH9N?VKiG9&qPAr^ z^7%E6EG2V|db88L@FN^PiQm_Kh@#KNUOVb?_P--I{A@30_8b^E%`%LnTTVuU9A%%q zAFbU$mil=86%dM-v?zGg1kdBM1YvMXc(W#PG#-@eW^;nwp#(aJGiplvhIp-$nn2A+r z8^rBxs+jUYGj8i-6~4XIZ|-V^%*p=dzr+q)eyk^cI!WI2o;&B7Xl&fKK{9OP^rr2+ zpTy0z|6qZpWz1hO#TxavtnJrOqd>$v)|+>vWGj7dChvIM|H(*j*sM|u%oxA%#6sr= z=qHYs3NMZ2ab3m z9w&66unt|86olIQlOMV{>)F|B9=@gT& zu;y#feGEq_6h1tdff`}V{E7uu)v`tR1t=iog#bkEKe?4I3T_e{B0Ur=|IWgWZhN9=l}r zmTXY%C~j`qe8Kdr<4*$sbfnZ)kYN^s6>2(EEK4=Q@|gQg1=pOUoWT;L9WKsyI=e30 zVnn|j8h?lLkL(X-VB2TWK9UbVaAn(eWgI`yliZllF}PXY(~`Y$-vYYhgw7H3-BfLl z=epGbYM47PTa^dc8fZqwF<5t%!er{^Z~N)0f8u)-NQ~9gJY^8`Zt1#R@Sk-p*A1F7 zi~<$rIZ;=i^{ZQg-$VK)-G5~FcUuqa1NDOrZrtDc%LT=|<5T5)2QbnaTzhAr#WyRt z(Y9+i#^E3~r9=^3lyK>NJAtfZh5>oI0c+h8F2^&*Z;2WJPa%=ub?Usjv`)ClQLmp6 zlFcMtp08yEneD3G@_hNqIG$bKWYA;H^C3SOY52sMA+fEav{+i3x9OvQpEw@2$A|us zLz08}*TIeNT2ei>kO|u&Sa6Itvx)bKk$D8Z4nmFN!!T;QhEk9E8Z22vJ?1-` zuNL{=0&O0r^~?)@i6J#sMQGDL;!+(rQ(b;sJ0?tfWUJ>_A@h(q!Zyn8mPvog`%*7t z$dUk>@FPl)4?M3FOgx%LZnW)2&rL^fYU4j?Xj0yqHY1kdBuK+_;|tRL0~mnVTss)Q z=`d5(^W=M6im=~jhwe#pb9X|U}7yX7FVZlaGT%|aRNG^xCpqjqIpe4U2fTP8eTlxIo_Z@82DRJG0$0xadrA1XGqn{iZrn&B9HFc+*G0ei0>`XLY!aANjHqmcAiw-rkh^B2zAvAk0 zhGmxz#@hF6)0Ed20jd6UmPQI{Fp(5Q>h^D@3i`0^izMU^$ zbc{H=P=>H4KcDTh>_AT71FjF=_m8Lm24w!?V}u6NmJF2SvsUp{vNtQv{jnkIse(82 zPUVhc!8&Ink}3#{tOt85qxLF~>x2=V72GndrP72WyZgd>99y>N{#kU)IGx{~g>@SD zKCj@Y_I_T!V4F4$xV;1S{-)6g8H;qi(q-+fe|M30pOFy4iKp^`IEd1#ZemP#bW06O zFHA>Afo7s97L~>DP_uHdQT`{d%SBBxvTd&uqDc>)=zV@V5DobI_@C$BUfHOxS5oP1? zS=+sc#;H_K7Wj)hLjW@v@?8iDGi~vKznf9M<@1)m{JYY}%Uvx&Oe#{KIBdyoYh;`R zFO)@a3CNYtBV{tgZb9Ex{ugU+Id|9+9pWpEts?M*)nQwQK=s0+%?V|iFKp6el}_JB z%s#D@KBQ_%?VjabjEpFGT*!WCR~oGT?K#{u)IJ^ah|s>PQ^i{_9~&kU!}3YE6A1dm zocvxF4)i}d^d=grk-r_vl$&|_o3i4?VURFj$?kJZzbVnXjQFv5ZUKH(1=B$B6)pc4 zfNx4ZRmf58EP6}3N$THrNWnUFOP1qi)$1;0xGB;rQZ>=Bidke2Iua|$^jI2esH1Fr zW1sMfnxKM$UrRU1IO;-t?umc@Q$s7KpeCHJsli{*%rg8F75p@nV*5`d@4zgX2X-SDt`g3v$&m9go1ICZs;S3lbfQe*7$ zuO95lj%@UcL|2ASX|?JdDRfo$kY6EfY9S)}o0yBDG}KlsEDcvUjUJ?(F))UH z+3n67CvK}T*&!d~lyQTzsXctk6MyxZj4P9|8yw z*{XzFO~ErXdVU?<^rxM}T|W=S;4y($aa zg{6g8k7ijy@|tr{1<%njvw(5oES3nZQX2mpJ^mn@jf4re$-PA4d|np~7?hThPq!>i z3IWY&xSFqvWV{yhGzP5_U;XpY7XaqHLfw@X5aBxM z-QF*3*9H@tW$*yI7LCujbCHDc%@+dF!0BT`8??Hgqj$fxH!RK-%Q8>;_?yhau> z%Q~v-vKmPOW&HPxP_yBydKZ|{D3H=tEH0Ymj`y&`il4uws|90m7Ba#Mi;KPY3h2Sd zCYJ9bLTxMIMf@sgP)u9;$ZEnmDfqXn$l81>Mob3&_am)0NWo?nRWScfG81B-Q0;6I zk?Xf_S{!cSD*5}U(}W2P>XlAb0I9BP+qf2di(fKwrM96U;?h_+7b4zSp^KSg+xj^< z4~YeDk_oB0P6f@34}XEo^dtoS*^z3aBO1#nLnZW}JQ!v0eVkU_-mpwT^luxGr@(wu zzX_JlOD%jtzYt zV{rdZhS37G1W8P`u|?H(co%<}0#DA*XHxB0du#2DzCiVd*<)~k-+yBcQnC!SB_!EO zqk%1S7vc_xw+WoKQG8_X4-1d}+(vSLaVjOU0Rc+`2`|lNF^o`Ur_^TQ$VV|Q#aw$VWzG&~UE|bgvrW>)>4s zz~t4S+m<_7y*{P?)T*TzBdLi+KRPhu^XFdL{mpca!E94!?@ z^_E))lBVnxcePLdzZZY}h1939cB$u?v*;&Uu4w=+N`HOwdX^UmM9I&}kzAU(#S<|M z-fNVuC?Ri4K5PjY(eLUY5gn@^>eb^I^}N45bgW`e!3#vQQ%eLJE}o4F0*i&~gNc6a zYbNGW1>Yx?H6!xhqs5o}q60h0fAdc+$1+Y7A7gV4Q8UO4aC^-#Dln>R=wJF|_Ky+0 zCztx%_FVDKRcdBGnJurHB5>i^>w8Uh2NgRc&ZLk1H^~ql$g0_YO_W3R!JzKZ(I(vu zKaH0}iE~nywtkM}Fp7f4laJbBdmm`jfSuvjOqOz()44uy(e@RG91YA{{UhHOE5bsj z;W3oi_Sj^OIA- zM+ea!tDui3RIxA&!&gg?Ku4u%!j{*dxNf#>f2CV&JlqNBT`o4XFY?Zta--b%NuU ziXz%ANopFxx!JUxCd+q9e%Av`PZPpbdOu=C?mcR#ff)Cf0`t?NO9E%X;Gj7Tes(o0 zQlRd`@E*c1YP3jFMR}T1jQVA=Z#ZyOQ6jsn>F_=LGup`p{x`B;B4H4^eYzAsBVaTV z>W6*h{T@Z$k_7iv+#NQ+LS6b}RY=nbcgFe%Lo6&$kS1muphoL{?NCvl-_9IonV+uP z%r7Jy3$V04k>uvnQ+Lb=@zLn1mK0w7?eqHM2uP`BNr%PNRvzl;M1MmG7wHrOmVFn$ z>k&*sarLp5@fSJvedJ{ouzBaC3U~$}GNM?0JV){YM_E@SA`*k6H^?fJIZuR=tmsS1(%(BnZtp{uWH-Y+Ej zAzdnplP4NV0tNX*qS@e&(^TT^0)uM=t9{LRm)Qftzi+EL?@6X5h;=cwO6aRu$h=6Wpq)F*jk7{R^DR|DE5^?Ig+V z99{+2(qht`f8OxpR^v^yIw4%8j`UY`LQKt21K2pIFJ(AiCULu@P4mAd z`ZQNfkxB8t?t!8eG6n>)bK`cvYXdw`aLl^1`<8)3#LzB>^L9ou#|;Un3;i^$l)X5sT#+6g5?OXl z7h(Sy@~>RQdfu1{nzn%$wUI*l(%({_k2EybHpQHGCgG+ejTe2;iWg1kOvxpM?G6@#NE~M@?vW zO~zLb1%2{A$P0Ks+94D)Ht;pLKCf_kf!Dy$xPsr4OELYHj2bvem~pM5+Fl~DoEXFTQ2Ej5YyMM=pI)WCzkA`||Iz+k!NqtK@Kk&0zd+}!> z%54ve0{@WGH2(9d{uTa%x~!_|UE76FZ4|OXwwrcjlClF4IVS&|(D>lp(RHWzjUX5W zg0CYa+}_vpbFSne)(oNycA0h8Z1L5k%9-;mrhHr6^*;CQ1q&jxEC}qWq_iV$zG{Jn zW(ujkQjlw;JBE-oRrun<-z8#bp#bshdjQ6;07BvL2N}XS{W)G#cyB|fth8zZXZJ|F zhjQm6zS~llW;tRwDiNWzuPRlHEqqVN>oT|jaR1q5#p&R?W{Z+l%vLoh7Ohm8kgeIXxfcrWnY#paU?!jc7t^k&U%w23w36?Jo^JJ~E{;dJ5Km&(92MK&MtP$U3b z=)2PxLT0>Ut8u5@=k9tl)fd4qO}XAMJze|`p>9#ES^g-!pBjy}L2@$vkFvTbRt6bz z_6O9=U*wZ$~sR23#ykG{xb8>(Kl{}NvV z>!QV3L~#i~{^&<%aHF8N+8MB`YVE9mcN2g)v1Stw>t<5EKtX{mc@6wg07|lQ_`cS{ zJypHWlPb5LBeU=P9<&7+7LOkP%WCI~^d-ja8|EITlnDj6{dPTtp&As+cS(u+?PFTm z*x5Q@@(vsa_ys<6U)-~@MGeQNukR^YF=ziwGZ>>;5Ux=kA@2L_f@W$*76sImrQU~Z z%eT=ot9r!!jzJjvAlA+kzY0B&W{sS#JW|Bk(hx3iG?+0Bt~g$IdN)9aWGc-D%`$1F z1}FkInR2_=6==RMRgCrM2G703+o4TG#H{Ug zRYO>V&&9vg?a^|foD?A{W2GbUL~Q%MBVil>$TJrb%w!G|!*wu!tkNiPL*r#?-1;Iy zw7bH3UqCO)`k=@(b{ubMS#qe!C2cODnDL6w;RPR9{Z}wuP~@|omjoYhs*EbyJ%6J` zJ}u*N$24uo@WDb-e|Yj$CNUFSY!@HMH^)E$(&&zhk2Gi6?+Pn2)l%0!YNilf{HaPj z+6BW=`)3CNGeWrAbwgq6NO+dEF636Id6F}N$nAgjqV~EHb*xJ&{)N7uZ+u;GngVCl zD7AJ(RAnwG@izH4MYClry|8zx*=%HAUK+jtKwm&vGBa6{z(LzP`P7dU!IHfq;bzV` z1}!a2HId|A3nfr_aTgeepiud%B`*8A9Zm9Ga-W)Kx1PqN(Ju@BCjDnPX*waW9+%;^ z*VFEdF{p))w2NTeXtem~jykgGK}qtDuww#KaN3b5SDn!3*j<<0U8bTcQRS2BC2tnf zoh(XE@eveEu`n8_3Zdvhwo3GrjBSTb@^aIss{^gkP?`9TC8y=rG&!L>-#dO~%Kcb0 zhg&p!6rl)AIgP_c3Y0P|)@7nOeVvgJTY#}^NC#lk7kA%*60kq-iQ7<%(am(DA!b$* zU9ssVO^&*LNaT7wX*vu9-%*+-6=_nkY2aRnEQ_Hkho z^I%m|Vu~%$YmF(8@bOkQJ&?GL2ruRmA6*rE;Afl>y#PhG?8AKNvus$#-#@WC=MKu! z!XY)!ni!9WsmUXYhUGslI=z+T1JAyexzv;dOwTRymf3^lj^71>=j`Wu7<8g&-mnu{ z06vN331+XNFk-TV_UBE8iX2cU_r`fsUtkUlTHPUjO6%(7!LQA#yYY0lfQv zE?{eIKva~X5k^s_&Dxdl1G|s$g#euh5N}K%#><}@POD5IQBcMmZR>t7_R_;VVE69- zXu9gKCcn4;(4EpqcX!w5l9cZ5?q-CPv`BY15`v^i_dvS4Q|Xd--|M}8|8Hk!+d21h z$0r(n=zokqVsM4=xKMl8)Tx0z01i;a}zYYKEJ>B zb93szyLf(A8Z(kD9({ga$eH-BG%m{u9*V^pim~3 zUS8C0h4AX{9tH+lS=@6f>xZ4Z9IJL_^eJeWblRFWby%HAQ}ft z|LHyX=(s`#x8bFwa;^jCtQFR*4}`6VfEkk%q}9m4gH}Xl=(4zT9c?A>6PaLv#&{hM zF^}<*b9*F1P%=&cxg4mbohICJ*hCXzT;6*!$WwPc)~l%WXUBnG7}A4mq4pj zFiYl?Yt(Yl?R{}4qj*Mo#8aUD5N3S%n(wiEEc#xBceZp=+Fi^--@~+oT-24?QJu(0KOE&=eTvB0; zL2#wMxOisMeM{GOdZXBt=Q*zR;nC)r$tj@}V`|I>o%14*+R!jYeLWb@#^ zAJBt1d>pP8j=Jfwd?8_x@!NOkU+dnTqno=?g;QSOMB&dU7@`n3MSE+*#ypB=m(eiF zbkR0g%VS&NUwI`yM>33&^lUdF;DE8S+>@kHb!dez3Hq?Hx150{r8GJCY*D@USA z492_^Sc|0#rkNywb3-aRWJ}l+?C&nsbPMBLA5ujD!ErVTl0LnBUi@fYe++!xbuUW$ zXDO#DKq$CI=`?taL}lTP2B(l~eL3s2qe4wC*IAJH0e8xHXXAqY27Q7z8>3LJN3QaR zobBR(^Cf&?3g@it=+1x-zt>PAz<$CI8fODzRziVzc2$gS5kSB%L^B}9qFc`?5-+&r zmLSCf9_19?rLG+-H`&!zd84F$qGSWtI*G#pUEa@Oe+e#sFM^%%DTKO7)T zY^bY<--HZV1(xM0-1sB@E?ATS0?J!+Jd`b$N)siUu@0M4FfgL)@0595aH24W{4ec| zV?2YqF+(hl2FFf>B@JB%jQY6W70uRlrF7Lq1lygE%HcGpeJP_KcI3ijf;h>uh{-H0 zCmbH}cyTchIl}l#szMWuap%0h`1wx?^uaeAy(mNmf<|NPsj}-J$lD8Wx zRy*Ywjz#zLJGy>i+xc}(kf(F96&A&Vo_1h|lXSPf-hb2)*|L1;pz{Kx8-_>~R=~!D zd7Vh!4D%I3bc~xg<;pvyxIEqp!8lyEM6iWET8CBJG%v+jq8e5bpvdpkGTbT<%utBU3 zE*KFV-sI44Xkj@Ix#4c0Z<41ctoOTbfu5j#h%QvFvY781} zK06~|+Jdev0%%d$lN`R>kUVrxzwyTn-01q%c^$2nBxy+0E=(Bc${{Gg^TGT3{`+*f zlg4H zC+=0N%Gk%~H2s-8C3X2qv@XG0vK${m7bR}<>n~4INB30NmEz$~_!1c4U!z8!MVDst z?+0SmlB}tT^8j;=`F~@OEWJEUo((eb)y>~sEnQJWQ{yUFw3j}_eb5@6%1|v%CUQ#p zj$nCODQ_pdJ(b_Ja6;>Cd77`}==%8f+^JmUHvQB!!zI-ll|Yq!ZF8;KT_uw8hjgA< zi>BzyI{+Id4|gKX-e-)J2LYzCpIYf}0K!UbXj15icP3w&y%nGj@vhHO41D?*h7HXY zkUs>e1sL7>lpGLL2%qKIKC12yr;GC2YrHBquIT8MeN=$Q=`>XP^YTunm`p^wzAL&L z0G8I~gp?~Zd5ns~Xtc{D4x3yTimi3##?@RS+CyBv(sRXg!M~d0;KEM3Xh6%B(E$JH z^BgVR0y;>uv8TsabCWvr5{fr1);BN@z3fn9%`~nilY5w+rL54gFCJTpdLfrod+;r!$(Gp4C(EkI8p zMU>v?WOpG4ynLgjiijWtG`X7O5^RRz#QUdt`lu@+D};gI7d58py}vNY+1)uB`Fzx7 zHuKE5x63`XYHx?=N65bm0_)|Ad_qci%Y~&fp}DNty8)_?wC5Bt=`qY>%=hgoAr?t+ z_C@eWThaWW4kfXp>)S)&5397aazq|vaVMvuG#KClt1TalI1d2yAbboHS(@sWgVUFo zG^Q|?gy+5TF*rrB@vM)iY1a~}0`cnT@Vy9$fgGRX+RJj4UMTLSt;%q@eu1(|=a@xzfi2$z|Lak38bRlU2TFJGeeWl6+P zL30{4H{q;2Lx7{4N85O$7ki(PG&<+LB{@u})H#{b_0!c2|U|s|9X6f+oJ$z{_ zQZ$TShLN@O=D$n=m;x#d-81e*NW}C@?{% zzw|{pQo8aZdg+jL`bF<+l1FUCFPa*}!c}oXr8!7S4N0kQHnjw~@TBlZEqz(#RG0Qh z3<4cb6Viaagl<2T#7JxfPqxYJsSYx!$^0G<5qxUe1iJFh4H>DsEqHyoo+%<&7=X%w z-ee&1f=3vFbbBU=Z;FIm{Yv9=X3(BW??r#;ZI}B@SC~yI#$pR9$gVm;m(g_m-TkZ8 z<;$#ndz$E~^?pQZw{VF6OV$h9N2F1ul9CvoR@r*jin~(t)r4=nu(xriBFOl&p=Hg(SCU5(4gK!GsuPUy;Qa2@Lo9uL^0782Q>$evp7{J<-|Ljz z1To1Gq)t5DF0VxSRQz8uhVPSpivM#hkO&F>_jJ6khV+=a&ryuI>f{ptlF;BF?Ap`q zbVP}0M@~(ceqA;^-fX9uRP(11HtKuF`?d_vj`<+5=Q-pl2WdWI{HtEC2S34rZ-&?k z9RJXNwC$BjF(e{-qAh*3O}(6tzTAAh$Qj1+U=$a7dnkKoREHGjOUItl_I)OqR>9`X zOfC?cWaxR?QW4eC$`=drd#c$Ce#3$`aspREpPz324kx``LSfyrhIf}u&!uk!zT?60 z6k&tQO-^=MZ#9P0xMV-*7KbCyck^j3CpW`ikO6G)KFs3e@L^37=cD~a=-k$UFJMNz zYu1u>Mm`_C8T618`g$I^VSCvuC4T<)5}ow6Kf8TDSYJ*3?G|yT?=#?aju)-KaIw4= zN}HF&nxXdrAN+6d`RBiXe_RVNLz_8z{KwF4*99a(pS&1D$38$M!$y8P9c@jG8D_|I zlZvX?3L0AZ46lCkJ`MiK7!*VndqKsC0ieZvdbqYvbuo98TiYDiI~1c;wNM0*UTmB+iv<;9n^tAUrx&XzjUABG{99>}ewVAE#aJbbQr zwY<~3pdGLAc#pLy8dR|-*)EpSzZ6A0eG}=q7JNj+#^WCxIC*ES{YRfHspRkYIKwDv zB4wx_Sw#L=RALjFa~=i;Sw%F?ZvMEUxjQ_Gp27)3tf8z7=~KB!mhO?f##AN%#Kb7* zuw%yR1k$F6##6ke)|wv+3)#h z7t8eD&)2q1F>%q1tfz;U;h$YEAKTv;tCt*VIH3cF^dXuE>c`bT-ySpi-)^BaB2}^O z9w>nSt|9sbVtv=whhbyoqkRN|X8QnW&ne9xajV@${j)TAFPK~8eG^CM(*vY|W7+aw zH{J;pbD%c(GrdzyUmfNs(?KkW3h4gsQTb)Qts?y|6c2C@;gGOeRxM?1ZYT@T9^OUU zxavSfa;VP12)_51@bR^Qt-!X#l_E~u7%fm519E3#i?cB$pHh~;A*od@Liu0+uN^2b z)d+HO>F0QVNW`-yFyt!1cdSgp@*;BIUT$^$4Jrlj_*e7grhoBGM@+JgnfzX74^q4V z%WT%^&r=@(+}t4+TignyF)Q6xO^EYJz)R4PL~K}rd0mfcB9yr?X(jYdMCKb0*#kW0 zJyk=ga50v?+3Zvo4ACQPb1f^(nNQxtB5Xn^kaQBQwxv})=KPg((*ac<>>QGyr(#=Aw) zYUT6M2|S=vN7N%1QO`E_###p~tE#I`mfKD=2pEx4lo}cTtr&?Cmx4IX9G`a=C{}G* z-)nYIyt+Hhw4QsMyHs0**C;l?O;7%d5$pEqR?9GZGlAGQE&S9`QdnWg>)uu5zuDp< zeonTXC5c$s+NkV@+!6?eh62hzMCDeG?rz#Q1ULPU=(5{jz|(7aHC$iA3*uEfj@Q-G zRu1`~(6D4E-)5yZgi0JP^zjK0Jtf7x^E>wB_wt>v{MHGv_hTA`f`?R`?;tlFvpUN~ zy=q;66y-Rs(>u1Eps$%hVu2JR`l`VJ1u_|+Y~IC0CJwGwERbzmgqHRd609@}qgd#@+jUx-zwX$#+0@3zanBobMLKaLtT*jTmnf88Os~rt| ziqlNdIj;VM;GPXJ%T6U^BAA?0!k!fy7J_Rb(*L@J-};Z8g3a%E9b(0|$VquR$H)5N z*85fZu%TjOH)NDV-Or;h+pTN z6{a_hk)pT)FT?f&kJvB%(evFh zrlx z`1r!FnBs~sLz&(#VN+#Q@lefA?r2+Z_5^)VUYyGj0DT)mAIOWoqa+h@1KrUPI zvWyEmHQP)oXI|$m!EXM8H&KB5>0{oa zBR}cKio*I=qLw+jB>7FRbUzlEkMqcP_LvBFngkX4Ussj_jvARs>V%f;83SLq19;Kbq4fvvlwfDr_3Rppr%3 z`IE~nPuKH*GUlH3TFUN8WV*owdZ{h3;NCZHOT&H__=>-v$?^%DHQ1YbLt$@!KiK?n zpdCY)Wl)Nc9UB~FeW;<~@jY;)CwL`vsj6bv*EA0DDTuA9p?D*cVv^=CZgh>`#4{J8 z?k5h-lHxVjF7!8ZSq{1ymhxWmbPCiHS{J|;$*(1Bv+i(*O_Cr@{3`d>nCGz^Fwbo8 z*C?O7$+vxlEbyo(NN8k{m4ioHILNXz8sK$uRJ|-a^L@U@`uT9N-G+4{P2Z{35DH}~ z4)5COST)=x;h1FazjU#4%Q)6pNhd8txqM>)53rdiu~*AETT&?tIRQ&Vzk~)pk&~qc zWk^6}WA@t~UGE+(^~W+6Da0xMc_kmlKQEf&!`Ln9V5$4}1g`yjwz*&Ld?D=on>XgO z-xCxVD3(?b7r!Q_*Cy+HgqXLC(w#}NXl@qv^+TyO2Nha$?H~o{M;am!W5PfuOq$uR zR#t?>v4Rz~ua$mzJ?vT#@)-P2gbr(dLa(XqOxa&BO~3JWfr=R_k*Dv;oYC}T%KqH7 zc4@_7-2=(@Imt^k{-}V{f7Sg|s9Se@eOxbIHt-u{!|e zI{EIdZ5PuOCTj)&AQN@@RNm~iNhhxgrKQ&l)4sW9=YNO016Hgrn=DMzt)bdOcZE&4 z-po$+3ncJ`+c9_^eoW%x`Izi0Mko|Vx#!8#r&R$9C9oY{q4$^>sua_l! z!Yj5z=&z?jAH?tO&c9IXy;v;1#l`t7C2Am+)cPj)&)!Tj+)I;!YNavG|yd7nop5eEmyr1u~?qz;+z^g3>TC9+f`>{{4KpgoV-F@}b-Ooot43 z)6nF+txp?@M;Q!&oNiQqvKpw^CV_<(uzm39xzL}kOzWdLrOQ3_ZSzMS3s=G6o4}21 z<-n?9h-<-k0j9?YEyw4-+CA@^GIlf0+*#doSkoHtGCV z#!td&5ZOEC$JJ@IqzfF9pNe(P;mIDVap#*LpAhctD}SY-x8wY)h?PV~X^v2#ZW6No zpTsX4Fk789?{2Qt`9d%c$;kkI93;i?y7z~tgklHqNmqa89sEF`i$CPfd42sjE{zg*#GGQxX7&}%Opu@rkPg^KvG+I(67Vi^tqNR?0 z5BXw2nN~!`*w@P6SKd<<^)0@V_(ioGnf#{lZ)>%o+1S!Go%PU6Z+}mV&H6|{?Y_z0 zDHZ*VElR8N;)8s8)r;Fl|AL%`(g`83YNstQ(HX1|Gp~icqgPSkDt4BOD z8w(<4BM21cW#yl*SPXSzjw^CaamvP1mmm zWO=2P*d-4?UhuF9&T8{}&8M@FE%dv3Dh?36_^vzC;5x^UvIBs4=Eskjvv|edU2cen zgdHo*9ocHlOq)+jJ@2nkXAY~}M7P_n63#bY|H3L5<@K_8v*S}~qYF3ChrTe)LgnPx#RVF500l*hWCoy_WJh}W0%Iw16 z?YAz1eAdd*IXUy=V~hL@%JaQZ00QpD7eb?gGk=vC#imtI($tuT`Y z3|ys{8#D(DDdzR#fK%?W-~uGX8kZ>J@_Fd%0{kDLCeSe*bDNOt~wqmh)j(%|M$z^wJ;cq?1af*rPMk`dJS5{zUop-{&URVO zlAPx!kNUptl(gmwY>zu1OB~qUm>!6M@u_BvLBBD;MA!ivnf+_?KHa8UOL~CL*%W#qH zjfXH?Lf|jc^cZc=TgK|?{q?MfQ^l^%s&T6X2}NgGQYVaq1VD;V>PUaLahocqvH;|5 zW0#!6k=~tq2?u*-Km&-mlSZAa7ZCqjTRD0_dF?kSos$s=yWb1y7O7T%fcZ&Rrcr5D zk90;Sowy&|2~0HCNjbJh4lqQ!UHKwa4_%R$f`=wfMJWwH#gfz^wA36J!qf$jTyK-T--?IvS>_kyD@w$O7PqK zx8&P;CzU-RoO8IZW<^GUkWZouJN*-15nf8BDr!#Kx!G?#!qx>YqObKkC_|EBUm{xk z(IN=tn_LKdq={H|_BNL{5wOI!npBdH5s((6x6ro_BB4?S*V{^|hTMI&VInLU2s>cVV@tSq4%Hg-+A` z>V-cz_KCj|HO`BEd`q+kz8pkGSmspf+42tFE)P@`q5l}1h*u5>!D3VIM6+>SL2-0d!kxGV#Rs;{$R%5T~hfdkI10#KZ;l)UP=+}P6 zY+LGEBfK`{XXM6_+_JvXAsjlF8SVaHbz(LE`8`u0XL8MENU9Y^4;i1a^UcdvF#bm#Qu65y1-yKQnAh2g1!5?nD5df*J%>)CiuiVgq!G8>w)r7-0M*Z|z~;ZBR5^%@Hza zACzLpEYsMn2mxH67>xH-L=a^?abiI4bA%pya>tb!8nW}fe%hrE!GRT>xRKpz*} zDpYM`9HCSNf4o(s+&h)Bx=>!FJDnbF!uV+AaEiX#Eb_r~59nRK;g0{K33sXooKg<^ z{^lnu@K%lcH==P_0(sNDjnk(XD*ZE-naEsn*9*JP&Y|IfWzaN!uct&7nwvMWLj2 z)QRzl3beFvwzy>C@={~E~%DI|I;y9O%*jzNXgf0aN)egx%#vIV)$ZFVjSueus z24R6Js;c!sXTQ*HU9dIIwI>}8-Kb$))VGG%`MO)))?&PPhLdJD+|fuo;5%H ze6Ojpd9S;mq{xCuuYb6`C@^*sx0XUORPVDw#LeqHzMdz(d5LCdwar>tr{IU>2ZViB zRIp#mFP=jIdNIozKx4QhF!g91^?wqFnV#4op5MotUmn_;7{|{Ze)cVVNe0`&6M!$G ztSwDHZ(^pWgl;*nm%AP?Z`!J1J$6RFFtN-TKI)7}HgQ=0OPxk}4`wLm$nZ}(#evQt zf+ufA?-h~5ls+$**06j%guXl{`Yh*z7S*8P<4bxl4tW5I5gHq?E(HEkjkLZdKxnf> zWu!Ff!lCy3H!oH6OLrPadjQiZEK{!Hf^7hXP!$y{3JPzUvNMy@wo9J8jShe8%%CBwBQQ$=U4P32JkmI3^^7k1h>!ZFTo5vM{;q&wAu%sMMo z6I1psK(s3DQL;&QbnMBfZ*U@k=z9k$ulnMA_a6U4(r59)$PLlhYH5cejQb*Ij$-%2 zmZC>WYGF>G)TL~2v#ZVAx`WT2oIsoWUWO@Jb4-|fa1TcHhhOr6uoNZ;E1}u_P&B`D z*~|5FJHmq3nVGD=-?)kF*WnOtt7y&c(LY9--`y&aL}7VToEsm^k|<>gSo1ZJmx}zQ z4%Oi_bvKj7Z~>OW9E1Zw7LKvMl&<=Bti?)20I!iybiOnh9V{k@foU#;fLd%@E?phk_>S|?Ao{>0TQIw~Yr-lZD!0fUgX#3ITh zgPMUv05&v$YAgC%#dGGTyhIYRUjqDh3O~!QnO!^1Ngt-XTq{#dm&&PhCCwZ@kK4nBK+fOawBnVY4wQw~oYHO@aR$BuQ%Tz;!7`(sxlG;^9(aE zJZ+pNEhA51N~18|j_BQpI9Q-@9eJ3#d64ayx1Z zH?0}tU-7-vsCGuYVX`1oMkncUE(Cvmw;PfFX)2m;P7zib#KW21k%IR9Z&ouxXs+mDqAELtXmV(nw*cb-wc zpo$B>ek=btI6v;8Vo?tCeur0fj$bwurpPn3KE_tPS@xXFEh-=uixK3*hMV=2X~AdW zwZ)Vv7UMd+tG!^ixrYHSR@zl4uL-1$GR;=x$&nqZjBGg{esl0!FFtvT2oyLkkV#t9 zXT3Zpe{J+SsyvBXs#xXZr3811j*T@kuP6k8;;#$mtxstC=->g6UTTbcFKPvs+5A8E z=bqAVmzeoj%e;#`bqQCAmZ?gMMtFJN81YTd^@b6zR_mdD6qIC2)WoUj_hfdLD_jqc zQ;S|yz|uswzq{0UpcsplFby@ki1O`9#PR-(dQHrMt994@$2A%`-DYHvS|R&zrU_Pw zJHJefmF4aAA-~|PUtp)=cYXTvZRbflnSnx9fo2aiSY-|G9F7fcy9oaY zbA7haf9CMXU+jZghH`f(r033D1PESBR#-5UDS+y!?!lM-xC0(6o$$6O5x!ykj<&Q- zzGQ_`DEQ&?Eh%JeLoTjwQB&VLOz?C@B|)`*yKr!JW`Osd{_Fz-JiQ#|P8t{z^}LnBuI4t2&BxX`|rF?Q?kWGUr zu~`$}e;%BBjJ$rA3OXXLaW`ll)dp6^cKLE3=Le;~6U5c>Q!BE620rO7a)|sJn#rRb zq*W~W_b|ivYpfoVjf98aL&>53D6v>2CGi^KLKvU#TW=xkZT`w7X_U1@vQCN&8Q_-a zu@`+Q@!sLgX$Z*^@htfnG~q*G5r-;ACfetntAB z+(|!Vkq9Gbox1MCX&b}#6!aw87@3@VK*}wEh1ocxJw3AOMg(q6h3}4AJ-Y5%O)C%G z4=O%;BdQUK7re)prBKXzROe-g4iK5VYtM#t3Lw+6d^++wDOvmZ31+jCnjRxVsrijx zfGqtTC98!7maE?J=j>fe)_yxEYfgws##6L2L84zxCTsia{8Py|`q3F4a#auV@xbDE zEWe8Q`#=?~L@}v96TH&rkFg58UdD&&fn-rGO0S)PkEO$;q2;Z|7ZD>%7}%R#E1)EN z{W*U@XE~<@3;W|rM*9LSv-zftA5Km!%2}a!yOZ}Er^^OQOBq=3l*Tp2NS>r%mrIU2 z;TJAYr&LQ=BOywSb^4b8E`NKBYN=Dl|0KZ7hcZxS0BW~)JoP2Wo)Bf>>zYrVoN`?; z&iJiVMx{0S@Y!#wKZe*oHKdg92AvS##gIvN~ET0(U@1h^2j~}9R@N$qo z5zHLchv1|-w^Hk^f290ncXTrUwVulp_M2YtM=yq~^9%puAY9Ayi`>EaPp8L-^SV2w z6G@(Y40#I-=B}^V=$P)VP5CLMMHj=9oFOHBiV){OCvObrGN1)M3u)ag1tS5ieeN2y zG0Wx;;X|TkhJ23 zV|Ct5wjMrjpS!yE6rTcf>fu+5DeAKnUWkSLx}b1T3j<-~bJIUNIjZT)qZgWqlqciy z&vq;gFrFwd+W&4N-$Mrj1aU+t==(BIXlxHx<(tAHrf}#)7+lX{6W6M6a~2lx1L4C7 z{z;b!e7rc(p^8&@qV0Nn6Vd?IQ4G7^Lq2zO>=FFiOp=HekcUtsRht-(>?Fa(h7s5&wa*!rAF9tz)y&f zyP~Uo06b8t`Q4vIOw}$}7gtGSuqwPs z-u(>|gR>rqMJHywb?hW9$LEiNaP%QEPNVY_-HFrUO|HeO75P`bO>r`ij5Z-RW>Y?4 zSK?$_Dm3Y3TIVT0vnCa%Y}4g;eY8k;jo@K_fNh(G4^5#gKT~{H%`Ddp-jV2f1a&=jDQ;LEROaHT`D^Kkb+BwhnvhW^B2m|Py+GP8@`p5L(c_+(a$q!c>rdCYw0GM5f>uciCaedoI{c|Q6 z>4PTd%n!IyT_E?&+t8OI^pFSn@V&bNWxKabX$0tuW~A8jMDyg_raho%9MqNj$8Q6$z_-Q<8S4~#+SHYC`Aep zVYVVZpiXyN^)=8SPZx-l+?NhmMXJO}W?u9rc*X5b)Z@TUr-QIWPcdgCXHG|wSJ~~- zyn+l3pIt&&Gs4TEoI?-gH%s}DoCAdsgE`MGsn zUT#a?y@!rsZU|6`q9G56xxX*77LC&tAUu`*oxOC zr8`TG93Kde@fI%w$%uB-t$wkoccD}NG<;H~pBrMV5dkoicasPAn)_J!+#3~Ild zB@YmeiqH>;`G&R+GMuU)i27YN#M2oC$BFN!#pqy~)PJG4LU#UXUGUx@4CM+4%(hp~ zOgG*^BP0ee!Y#W{*o^Th1`Ze@DG$VDWPT(pMA|;*nCgqxpyQq^IMns|x#Lpr2s$FcCj4_=4NdbYF1`x+Z>2eJU}mgn;uM@-Df^^i)=CBAcpYMXA}BOY(GR{`%tL#iV!tiq{58{` zIPNPvqPht}xP}29sIu+s8eEx8TD+(3bVna8DZtcy&ppFeD313H!A<>9cAm3dnr zzE56ilEKi6ymv*Q{$6`L_mx0AfC)UD!MroTUFF)7hWCRSK=Yv+{) z!jHEY7EKOhA+7X?DWpSJxKm~*C&E$%xPde~Z1jR{QTVcPj0<71xHPDSag4Avr>7Hta)HyW~F7h-CV;3S@J|fP#h>m$!DWh8gLfF-8 zsN3=+ftTBd;vFFwI7)_X`R8wFNhnU!ghH6OcH-}ZOjKxl+pn`GD7hKa-N#{VV50hq zM4n+_y*Qt`zJ8uxJ;>uI3bTXm0fCZ>0&2^tkSJ-q)CrHJBE(9C+n}EGev^P0D800(KG`V13$M1I}Uqg}&$uY(NO6p3ENz zjxb8K+HYZ#vLgw%5E)=fWIpHaW09hcq}VFwlezl?#keq_8bKK~y#yJEldV6)5V2`B z5Gg^?3=X%%4*bx7ycO@qPrv`(`HkwTE)h?`2POFfwXgVK(mMnXib$A!B=C)-az0zK z=_fUS!9tA?c{*h`%{E_TC!MF4THoP}jf~L)dgE}xLq8ud>V$w_y<1Q)5h@(Xi<8F9 zOL&-ETw0$O_UCT~(+uYGhknU|Iq}s6T%!w*9=9<++`Quy@=RrE)_T}RCSh@woK}ce z9$|AOVZ(L+MX0hGICAS49=KAdL_Pve&rsuaorN8^(&fa4@%Q($o|?aS&{S}$kTrZJ zowcXhT1sG%@0IG%lUaY{Cz01grZe~(_BnXx`SZ^yU&L@ma1Z)#sy>hCC`>SQcr+p4 zPxWu*eF8%Cj6HiXy7S)j)$<(=u}U2Q<_x;L6@;)tqbv8xvx{<%U(HP#B$Eg(yt>PH zVVMzM?H;MnSr=!Tb`0+2Aps~UX4u!aQGEQT3;#1`ok<1rD5jB5BcR7zz+bI&5inxd zx$gW~a7B(yNpK_ibJdJAkbL@C^R@|g&lVe_TZwnHorn#eYQ+kAuHSW=mjwTe?mLU1 z=dqK#cG&V34Nswkt|}B`{Z4Ai-<{WP=js8As9X6tl*Ow+^7r)7-1Wf0zt2Q$m>`(# z^vi?23d40@iae>oJ2@~vMHMO(ju2gWIKpd}jQ(e+ADBjLbkhgg;kl(*VR@OXc)cX@ z4PZX+H^}N73A=eop`d2PB|h<7B0{G&=1xkB*jXqMu)tsWK#at3n0{5t&+X9-%R0f$ zix2e(0Pr`)aL)6Ap07@h7z+-tK+yhR@FZiqhc|-gjxtS#>WFpjtYaYP)FMB7fa{1e zOW(I591hIBk?fY)B&x0uXoudtf`4s9Rl$(jVGB@+*x^mLWO;)#ff>vWYRY&gp4WXD<$hyje9t^Ny7){J4r!>ZX-_2o2OF$*1 ziPI#h`%5phsJCF3z&J5^`VJs8gHIt4zmEws6i7x$6tv6QUWhqiz0{4TMvPN&(k9e^ z{KffR8a)C32fWTEdGIaUv9gqxi@V#!>6FBq#XfzQrL%0>O;E~Q7tgq>WZ5z>%*3G~TgB{&+F)lipJYW;7Y2%X2tdU!2uPL&09QS+ zk4?)i>L02jq`sITfV7n#0ZNI_)|46-FG{ zq~*en(uHL&wg&hmKGu{9JoqE8?S)S*aZ-E>c1;1F_^bNb%k4`y%*J#12aGW0R|csU zwFe1fX0Bm)?Eo-^*#HcXoQ;0!ujqOWZIyNR+R|tzzi9M-$cj%XAIcy$o>$0YPUER7 zs`D^8EY+w)DsE9GP9-R8B;5wcB$MBbo!;($Dr+uFaaS6TPbnM9`ufDGdy?y*b+&F_ zyD9ZMi|8*huN|aCDd}gNzyK&5w={U-=3aGc1_sx9iMBu)4yVmSti|-x0tz^Y#z9c- z3K~Qy><6pDdqqq^GShd$@1}CbzqddBwl5RaF1L*5CDet~@*fbpwtN+cYf(#?qb|hI zN8t7%TnWIo^L9Qy`<+tWYM>#PqvG5iQZGlyYpvZtpI806ic6up6>c#xvC=&-<{!S?(G=7$X zdf7&}TEr++WGBjX9NF`Yg*90kw9*`!myN0?>r*|u<~V&Rc_#&?H^@-;o!`a{?baoNyyyYF>;c~TxO#41C4`LQL;VCw8;#-qvmdk zL`te-KKl?g4QL&Ba8VxGsB5#k(5prbu40CU-pl_e8bM|a1Z9`5@{!yfo7}jUsGv=& z7IWQzmmiDlGt#!)DB92dsFRp5Fh-SPySrwm*zZqW*&7G#~|SlP|>V4LK=T?qA;=5ud5HpM@a3iV^M*WW8?NwW)Zl?tMFgH zM~l!z_d@@w;~jbl!;lyUeRPAMWcxnHs_qb%A#^M%W?KSnwj`^j6KQaI+^<{i*PjET zWmzmj%pVLS`7xlUlZMs61sm$Q2y7>RyXV-ZgGSFIgrYG3yaNLx%(I1qz>OS@hygHC zwkA2XM7G0`@g!qWd-5EwHr$SBvf#&INsEjF-=9dP|^!hNdC`%nHqd0VbC) zn%*^I^H(K2kyp8CPbA<$l4!bc8M;6+r7DhX;srt0c@Z1{GPs(`5H;g5;40lsPBnD* z(k6_T=}n%dw1jQJzb~{OnPuuvU@eT#S}uJ{Kf{;tr|zD|?mR9sg8@YQa0H+}69~iB z56&X*Z~2Vw1qxMkkb09z@d)sqWmU;VdmsN(x*=0TWBHI{F2C&1KzFw{2`Cg(VVIyg=6XWk zvbP^i%qcmra%MR3#H&j5HGE-4PnL%F0Z3-Fh&(^7(js%NVn+lsx^c|uz0gaTtnr*N z5POJOlo@HXE5%e_;o4@)o#fhSc||;bk$PK~%S^mINqrS$ktDaoj3uDb5B_nW14azH zGD~)OP7IS^)?#A$iX*JAF;pc*I=NEKzgfx>FVIYeoD!BF(t1Q|>{75VWaHLptMI$q zY=ehlI-LJ+;|6avq5{7DQ*j>Awwo;g$VmR&i*a!dbB~Wt-~WRH$IPTXHxtKQKCNV2 zQ|Ew|+u%`*GaRker6i4ON)S8xGq+LQAmLN1B-a26{S3q*{E*%#Lr(vJIkre zA+OeBW3ToXIt`}0m0Bo8Cr0lRCSH=HqA+qhCOfc9J=~9;th~eCm?|(O?y`9cYWp-8 za>Wd#62eegpLxSp=-G6aWN-g*+W1ra1TWzqRH6D#Rl7Rf-ugqQguoT{Xue$UmZQzSy7` zR{DiLFgNgqnxQ$(a@Ac#l$t4gl5vnWz#xh(%7Sd5JW@? zf-~%^guo^UoEp^0q{mW^>D9GsIigD3T2j>qgzRZ!ey^In1 zh@m1+Hv%vn(Z6i*jEdl>rg#xFb8^{M{sJ{+I=UN+DIK3hjLc*NFQ_;W-MmzsH zr81Ju{UYi-d|DTBbz^?-CD0S%Oh-0_+f8?af)mk@r+d-FTj_W)_af~}|Bt3`jIZPS zzMeQ~V>>r!*x0ty*tTuEvD>(@ZL4vbG;VC$_H)0#=kuRe_tlxX=j=Ia?X}n0GvV1~ z)Sb*?Ex+aU2tpx29cPBv^w%akUiRt44Pk~2Tr3Lch_BSV*c=w%Fc+AVaz2x^z8jnBT$>}6PBKG6;Cl||kU+MS z&Zop8DgA%|+9;xsbRodcuTvu0e3FP%sPJp?OZ;BXPjksuCb$m0w z&5>Ub+|ABb-m{72g@=K*M8zVetC~eFkRJk9CJn=JNF37w!71}4LaZhC=Rr?wKtb`i zp;@SQg6RAQD)*#A#W^Bfx#yw6+`6ko1{EB500d^$WqD1uU2;H321E(I^(Xj7699dn zxW%l)qIl12#I>#OrCHi*ut~@zI~cFwh3a|yYtO=kqdy4=??2^&sl9QGb%|d8Sv2rA z{8L{iA5x4N_D~WFqy|V~xqkcKU*SVv8sJx0hyg;2S}4+F(a{#rLfQU3<#o(@Z>-X# z=^6$2=XfI+{|dn{(EAP`nGRdJn9XQsY40j(;EDz8XG6J~$_M~S{noP(y#IZQ2nfWz zvMUzeEJ+mg{CI`92(2V4?gMO~TeEVL{Z~a8}gk z8rd18KU2i1IKp@5RQX88!G;wAvRT5bY^-?LKN1ALFOLbh83`%U9}aGKfB8xB-_WK& zfe$MMb^R;?I4jSqjcG|ZN~hFW3dcQ=gM{FLeh?Z!2wh^Gp}<{-%? zCY6?Vi+%}HyssBsZ9s#Nav}zE4X_=6&iiM5H65=wr|kSNBtppR1Khr4Fr>wSEffR~ zS21Gj;;w6L`J__?*F3nDP`a#Kc7d{&H#iLbyZ8bR%>gpu_K~!|fv#grsJZ=pdBRjs z9?I!mjNQ2@HTo1b_TDy^as99hJq3TFfl&Yda%=FW!~c#rBt$FKI#Z+hh_`Bt4u=U2 zR2M|jR<{cDJ2qO{{iUH68eie zSiw!;ajs1QOoz73+fGmp4n7Cjhc@P>_vajq7Ojgj`t$-EmZ3jOceE$oUz7GVRf3KlrXFSS1Ys549T z-=;r5jokZd)c?+U)7Wd1LWKqkHq$1v;A5^0Xf;OawgU3LT{wY?j}iJoMy@GWM8%<} z|Kn)M@7cmDKiv&4T%~3Jv2PWOlXylyT`HdWO1VnVu+MBpK;KR_JxOPDjRd5QycDB+ z6XjRcM_5955*b^GKmHnaAfXQ{=s@-#ifkUBmS0%VYX!lFJp@IA zn=db74IKha+?vk?4vrDZDO(62ai`NQdw0NhTtGf&@E?>wAdrO-Hm|zOFE5Dg?TXsk z?_Vz;K&4pJHI*!vXa3zxQ#KIQ3Y8Ql%>#p#XKD#dVgrQs0H763g&`wOyu)B2 z3u<~b7#TG;T72OFw04pJK`h7XWGP7V?;ucfN5OD75#T4CQJfdzdVLBqZS2GnvH-`6 z^ky0@91K+Nqw-7(nrfp|g>d*2MakqR_l8pRHW)}YYU*i*1YrYiT3>Ndl0(8o_e868NVzomkSH7cSs6#$_?6`_f>2enX3DSf_Vf?O#bSoTHg2V|=4wSw8*&eMjp;}0LH{XH*MoJnC$dP$h!5I+B zF!>D>u7w9biwnQ@s%s4?9OspWFremshA#K_B zm`n%HG8dXr1ar6z^$3W#9FTF#D5MALCB~?^;)V1atx$lcc`b%e+n_3MD1PW>PeLgA zbr@t33N&SR`x>6Wj61?02&_eQ2F|1Je&!Tjs>6u31`*9aeU+L7!42?=#N&wxK>>vY z4iqtEPX2oxjeqAs1o+CPo z6gOEAwLx3PA4S5STtc^mN^FOiI$;*X;s~eonm>RvZp9TWkSp>2+eSJQ{Ya_9L5tin z3H}ffZCWG3*&|-Gc6V`Nm5<;gX6hHmP*dgOWZ2 zBcIb~VSmRF!V9POrc&{_9+V2nzyi`7nDAf(1!nrrnPc-9E@eY?41yqRgF8)CUcpDp zamkoXB#?GtT(QynrCE?`e=c*WZF8qS1SdVbK+T{>180pOn0dTh$B1@RNhpP_@7q`- z6hPnrGc-}lU0WWzZhUmWct4@Qgf}{gLULthEP%?sgp3h3fcQ!1r59$49_^IEq^`yV zgrNv`#~oA|Q)4FAHa@5-_p|Y3MoNW|0w2OI#sws5kx}i%c0CPM$A13HS=?8Wq1E_Q z^e_!vO#BK7?3$P6{t$hjuBSd^UIX9?^}`6sc<1<|Mr;r2Z5<5U znSGF8S%fJ!9{nb_RQFAk{v5X+NW_LDj7zBJy&;vyKgh}y64@z*TEP0HQH`R5j==@E zUuG-B1cWeK1=UpS+txH1o|9&BJ0MU6|43@~R{|q3lh={?goHgxJC@+q*9@l0fv{+( z;#AEaSH{VOc~L`gXeD8;$Z>Wk2)({6o29EpU4kPh5VG|TOWRBoH#BttmYDQmV``+Z zWX`^kGNiMDCdGJ4e{UaWPrphQ&wzkU*uQMsy&QUZG$Gq8r&r{r-YC1u2;jkqAbC0m#byAEZJ!y-R3qAHR*`R{Xw{W%jy0 zZB9MZ%}Ei)Ce34x#9$t%rMNV- z9s>>B>lI>UZckeb5LP}G2F!v5l0S>8SmWZe`|U(*fEP5{6v%zb-yEY0BY25O(eifw zGxI5k-&-PN$v30;w8yA|_924`h7$qdl9G+mX;#IgJ*sLc4kg39Fo|5Afy8w2&a?py z7$h~pryOzLbg3No7*()QExZj1(B%^fgasCJ1@E;(TnFz;gDhCX=G{I0e1#97f!m-7 z2g2L31cYK|>nIDOt*i@V8b%$gA7|dcrFhET-{7P(=@451#c}JTHB(0Dk?gcUFn5IZ z!IcT_A$nq2Mu@<>uv%Q3L6xS#TcdGYbOHd8VCHYypgo9)INOsH7+4o*8k2cK_^I4n z@M9!xH;0o-AwRlNNtTeu`+fe>-=4qXH7s%=H25EC3z=J0Oe#*Xz!!rV=usjZ1dqB8 z_NgO$AYIC`B*N`s>86y7bmX?vtWsT`*nb!bBEOYMMP+7%Ek^W3S1?w(*pC4Td$YoD zW0H8G=0X58(-#E@NIdARiqvkr$RprSqnXG=A^z`H&z^D7-&uZWp}w3FbU;Vvp2X=U zAe%}X|FpD?9A~bE%{$5v#&{GSi(|+X35kO(=$Uocd$f`8SQ|XOIlyYue}jN*43!Pxr3j}a;peJ1i)hq)T@qTMEl&~_ zrV2h~*MQK&QplG1Cl+^X(jK?pu8^%(2;MaWKt?|b6sn5h3&&~Kwdr>m!2>0jp|)r% zCS3JLaQh`Z;z8l1U?r`D);c76x|`&ai-q2b%*O;xKv`LCdk45ar8Gw)9{3yEywn2- znbe}ie58ivgwQhoEe#%QUhUE_J<6H4q4@Yk{yHbT&;BO$ljXfUNcU;=dJd|J z*?d|V9+$!v7b2gs4c-z!|NTROO$yqNO8H#v+d22>f(Z;BF*(DU8HI1$<$nP!`HxLDOGg@Ss+uwF1L1T+{6MXgXE-6Y9UPT~h<=Eevdj#L?QjE)<(DlVM2HCaGy=B#>bPfY5v* zr^;a;XhhlA+h8H{Ly3x&JAegi?3|ShE|8+`q{5=uKIm4;4Wlop$8i9>3FP-SlQQF{ zS+3x^A{7j)`@2rxLZVRRV#r9lva?Ma9#?-T>_bM-ICD*@sy$ z60XAV`3MaUsa~o_jg2h=H)5h5Y9t0_!)*oa`&yn+4T4m>&)5`6IpJi9;{!@C2NEEa znh-W7Z*lTO09-R`uD`i{A~R4%5DNCBKB3+KA&ZC$QJu<~65yT5ckdL}1#Kz9z6oO7 z+bB!~Vg~B&IAsK7_$Ov7L>+5cqWciG`l3dG0FWISlWsFN`3O1ML1kM2H#N0MwSZ|@8_wY>Rc&WYDguy$`(k5G6w{5;Bo}*)&>02bUQHIN33-PN7xcP8pImixeS5yJPv2pMVe&-Aw;v< zkd!`pr>6vY&8MKQDmZIeDOAS(9WEJD?HsUG8*Q;PxYCf-_83!t`H6jNCT0}sdPL|i z#HV%&Q=SBFrme4BJSIP&3-Y>5YEXm8w&vJ5k|y!ByJMn*T9Y~SgH4Y%Rk5z=Jr+}- zL&c#GuI5BznQWJiT)>kqfaCK*!^n0k^R@!lA z!MTAXRvS=e0;(OcU43E2h4m8>+))`1L);6^h6f_Gy(JjLAcwEP;+Ln)dcXCmPnZ1k z)V|M~0UnTq@ksi0MH^xhL2@T9&D*5$f>#RmL3nzTGCUz9&=k=wF^ukCzaV*jgl$9> z@~+E*Ob-mB5QHV1Msb1+g9px`H|W-s&{mW!Fp*ewfRienEy5-awa~P9GeR4VMfqBv zHdd=TcWe49};Tg6?LCYm=UE}VhoUm!TMVJq$6u!?zLH)1o^6qB^*&%~$TMV|3K07^EiZgb> zp&r660wUGCFdzwUnT{4SkC~d|)aPyB5dEMZb`Fq={`dwz9>F+vWEZiFra@ z%UW8psuXmNk@aOg2Dxq$#F|?eY`kp{$Z?p(co$?kJq3(NPqO~ukD9qDQ(OQN!n>)h zM*d5M04Z1l|qic)ztd ze$_XbEJyHw%h-TvYTop?xEc!oy~DPqQGp85cP*Y=|=`f)%6=OBvp9OS&a5ZvezA??dcu5f22A@b^_6!W$;bBpP`asf9X2691; z=dT0+tbR016bf(@xOku$`2})$q#=;bzsi^mi>h7_C7b~=P}fkNTG`n9`e}@eU@T5k z0B&H+Fv4|%IBdefH7DoN72N}51YYC>!bxXn*UwDQi=0p((k*d|k$K`sxj^;9z^)z@ z>_Dx~~ET^dU95 z{W6O5KpU^`@#W@2o)(@n;rDz3gPHTTGV5CpJ^HzBR0gY?k#0^9L3LLB1h%M3?u z!dWDW=f}EZfBeH2S)}TfW<+V=)m(X3>+t>Wx}ZP`{E>|ZeP3h z;JGXxGXVQ5Q&LJ3=!Hff^-PXrIhyfy zH9MmGzZ|NrbQ&fu(C9mxLb`tVwP29VGtI%T1XuoD+!r8T<((f@-?g-CK~D^0Y}nI6 z(y+9O^zhLL7$TwuP45ub@4jKy2|BC_iX(#sEi}{(BxW8%Gun5wO zh80v1C~3^TF_QBOJsOVf2rG|Aa3~L5!i2wf9Nu{8#vOEz2Y9rvK;cs`NEEb=4o_K_ zvf(!llYcA2hxx){t3rJA83+<40T3`6hq&z(NHi1f9lux-uj0u)cDmA^vUaNw+miQ! z6*h!x3ka-KV2w0bs1n+eKvRejs*OVY0Oo7$BnW|TxBZEsuW0&wC=Sy{``JS3#R$d@ z0e4`zx$!MGmN7Ly%Ng8$8Pg;IPny5Zp(Ld1Q1s;Wj?yH1C0q&0@ zzOkD>e(O0A$E@WeUyK50#$hawzz8c#E6o6dkOhqVEaxtA7<3W5DQtE%P58Ktofm?M ztCm!yxNzK$!qpd(w}@7~WeWpPAdAR5@M(6<8<8~IT6^28DziNI%B;QP|hNLXE z(2Al&?gRl4yAv+Muw}!!UGx{kII_MjuHCPc_=yuhpe}iMrbsokWl2#oHwXN=J!fzDfL%0?8m;iEZ+f{aH?`j+D?h!p&7=I74-W~%LkVV z8`5XoUwBGW&y9(P_PD%&%MKi^KT`);C(#6Gy^oLufg6s3%&ULzw;`MoD&|8{h%*dW z6V>{hKb{QGQy0FN_0CzK2D*0T*&RKH{{94q88I^EjRvRm$2Q$k$Y(_!z4U2!A1l1w zytM>n=6=bM@Angyy{Xhm*PgT0_`iPxy91VPuD&9#oIE_*_HRw9v>Kyx)=h=w?Gu0T zW-~I1KWf-B$Gy9nTN@j}ZCdN=>l-^eTU%YvSKGV`wor+;k~~5fvFh}pdMIpLPhXv= ztA#jp3o>bf_aR1b_kRjbcg;oV1+ZH9|EvV;D)n7`_=N~7ibk-CPmc-=_^HF4%5hV| zki#q}RQ8w&VGx5*BHbFMYJW`@0F8LyiZde+%lR{G+Sg_;~KK~{ctZgv3y4j%2Q zn1~OF^0`ErB30Tlo;_zRG{{E#KfTcStld`Ms@mGME9PJ-=+)IzQ&RW$_b0P>IeC4~ z|1PnX$mjUq&1ooP^DXgIx^d^LR8HL|pLFreXta9!<47LXE%a$;;Lel$d?*hu-4`d< z>o*%92bXy@VbR_Zh4fL^sA4fFvlUg*>;jLz8bO<57VucmA1}$|L*7pD6GGW0V?TvT zVvCf<-enn66dm{GS23fK+SYbo6%tCA!J#z~9}@H-BKrR5L?^yzAm?O})1PwTYnP*O zy+`iy;zK2){Ihw&L_#FJ*-UXs9NYX-yN!LMb%Ar#Fxf6O)>?eHd}i5HZ+FsMrPJbI z(oL>R&>--%a7mM9~ zJ43OvCoyRU>3{w(&uGxydeF+e{PkDKC2+6G2~Vg?ytXu>PuHhYk33ddtP;h>PMOHg z%F5#RaKAsbp;92`cE0`H8xoF8WbK#5&%1!8x*WaeIe8=wA8bs^IH>Qg4YI7=#>JNM z0hvQ$GTEo&iv7X@61Ny%qa_p{U|*QB9M!14WS}>RNzfi!p3s?8md$1OHVND48hJmA z42zpJ!6ol4T0qh8=Z15;JqqUS9T>ULHano)`$iWyHkL=pB+FRYcGlZBHa4q0;E(U4 zkIBjXcPbW;786#@(Xl6XxaM(chp`&5R)Ygfp;IATw)kCM&WWm=oUYLM>FxaR4oRJ@ zZy7?r;IZ@AB|Ce)G*_kSI!}LpVc>E&i2IhwVP{`wwUbd+rYzkQh83ZBbgy*_5&xyQ zUE}r6S?dh2omCEr`UW3ql~x?RQ-y<7UYSmqNl3ERvm>rQsCjWS2R3DLqi*`@w@qzIeFSb280Y_!#^n61JO@`e}%u{e6AVb{BmsnR+u!SX*MqARV*`aIlgag zXP@UJQShx8(}r2Bm_Psz=1`yn*#pYp#KsA$J$JUEPF0RMNolmmy5c-G*<6)lSv7;U z>R*by&0#3d@14l4z$P|;R4T7+TeRfiZSJVD1=y+)JfQ*VqmM-L;G9niuqIT$t4h-1 z=r>*@$ue|b_W5N(3iFAu{K$@N~p3hKYKS;SzOAGlv$uH&p7O5 zErJGrhPCD4WI|wf+HF=|{OW(oDEq^%qVjT|wc%}N?|=1pg&`S7#P5B(D9d;jaC}sf z|@YJ7r&b3t7aXP}CX7YC%YA=K{3<|Z7N_Y+gpjA}D zyVaeLoHA4~YchHZpJUBWg{59)r5#({n4O_bl?#l-#z3;+)fRj~Ha0-bTox*KOsF;P zXg#9N{$cD`IHN3$M}Ot?J+`TwKqakD*7Fk;(l0^)UdnpM(jzF)xhG1-Ju?v8L0$^} z1EQ(>N+8yz)Ty(pHzsfM*oP_la63`P>>`_g!60Dm3ywjf$3^zpN{jtcdl8TFOh!2thIX+g$v&bRl@KP3Gtw-|!^>`@Y8 zMcB6>7pI`t`jG$mfrI^Q_m4_A3W?X#@1TQhpRKZzY_I1divygL7*w0@%`bzUCeTQJ zEP|M{;QCKaF4PY+<1BVjLd{}a7O*78ilt0jfk8{4lA+f36Rk*B9h(~b?TqD-NJjB5 zSh-b=skqBj!4@7!W6WoIGdqI}_B@rwR@E$XxK%czQ4$*5O6=8hOP>m~(=cSi+^n#G znVst?(FbZ3#3f|3bc9b5r?hD~M{oDqHsncZP2DM$RxkHeoM5(!m8#$EumR(9|EtC9 zW`8uoSmuu%f$%zlIY*&oId0I%&?I=OO60S7+>Za2&6W(dG+0bz@wPNJeq}qDOV+MZ zui>Ltv1IiH~K@KPEUlEXIFB`82Copi67FR$p{?@qAKkqqh|9VXahl{a7%hJ%0o?e>M8XmzAzxpUyg8L4+36Q)Z+%YMU} zr~6l?+gdYwXyka+Q4Ir^yAyqn{$ve(r|Is`EeS}A*b7Z!!!Eg?VxEc~=`xsQSqq9_Z z=rY7cGaX)GpUhY5wYZP}{d;?R`*(jlv&DX`-sB~Yh_|^$hjqz|{A_@|MbfBhjJj-e zew;w(!@l!9V`q5d_I}0Q?>XJV|7wIW;OWrBVse5uYV@0Id|_q@kYr!3f)Aen31a`M zQ;|;=91+o=#Hh=RRG=(AJoOD8&w-)pZyC8-Uvk)dY2DzwpgaLvqGYEEO1~~kniS*L zx@vu2h>mo$+#8{hs5Px3Y0a)So*rlKbOyT4zShTNnu^uDowd3|S+a9pc;?5S;2eVT z@?BAA7Tz|ZsVD2VOdW*hK|md0kh00a=Qoc$fg2KfXuMk{-|rVYV6!NJ5h25Yd6>nxb29UZxyfGOPMU)$wYr=?&iUf@HpR6@95^0 z54Aeg5iu{bwYiUsCKO4EWWpmbA_Us*6v(s@Mn$E6ewFe?Fy)q+V_Ft4)!SIMx5#xU zfN*%Uk%J{?%qGt}Fli z8{T$(`OMjh`>N|Kfx*Kw0b|GO^;(C!nxsrtM0=e5s(SWdW(Gd5^X*|YW7n<7$w#Wb zfdA`b*^d%^pEIz%{Yjm1)L4?bldZK4g_NBk3S&m&%(uASEXKmGgaLU$onSaVhtK^L z`k-&v#Msz(b|^NJ!(p}AZS4GJqGL1oGs9|&!{qteoOPKWto;&#lCMqI-f=~BD;TlY zFP|5B?&fufy>=6G_%1i28P6=XhyJc`KJc=^M*LeXttFQbErkI*2V7i8V*%(_V?RZ1 z#$w@f^H1b#)2caTc;S}rwzhO`l-H?0%zsRBHhR^Wgj*G*3>3YbA(<@hi)=w#`Z1fg zBolqDzFt9ajn*U_=zxE}A<#VeJPNz^)syiq*X7zXbX6_L4umKz#(X4|#CzU`UU zKDru0zQy*4KY#w58Gjz6=XJO3*-eVB?tVW0%)r$H#x~EB?UmzJFUWFQ*N1bWj>#3L zH@AiEJ$eWK-9*Wrk2ey&yT1)pKQUImI!naX+Ao__!-KO`w67J%M@NSB5qF(j_B{9U4AbBtL%73pt5d#8m6$_-Xe6nu%eeOHY z&Kv^XP7FMruu|>T*$R5>q0u8^Q;{6ZnKjidyYh$xTz4afb3DQP346xWIU09 zwpOv~mWYe`U;8j+;}|?0bYx%qPF((0`7dW;IwveXC-^!ovJ>O<6XQLXx2%)NbbI5O zoM&qt2d_5|y8cH+8hUPnPd*+RV`dWVnas3Nc+K>L`7O4c$5C|lom*ky{?C^v{+9(7 zIRSaS&{YKLrG1_nA^X=~RbYUDK%75|ESYm3=ZJRJpMsebd6zx z)2)4%iqOC=ehuZLYbgpGzAP$#T?%a`6WyA9aQRRBjk=rWmUZW`afi0+aym}?U!?mn zY^?bnuH0J8+Ytvi*u-A9bvYleIFo!gtN-Nz#9XcQ?d7HA)jV|1zBxywc_0TgLBYy zD}|rGYkxm;!*g&iwd>uDQ{Z+sXYHfw#lUk*eC=m}MSw^n2DtnAlkv-^5jsL=mmnq{ z)t`;eqFBjs)M9pfem@p)4T@A{<$lLPA;7c?ATYxXcu0azu$~>=?A~^k6u+($%^1Nl z(p16L<%4r8&Bz$XShhuUqekgtxlk@e3IW0b-t<|qS%o2j~HIyz8r!+k6Q);&x<#V z-QbO+=5JPJiKZ-{a9t?8XGudV*kD0y*clv z2ZHZc3Jh(J`E(3Dw|AWDi_dww*wI6!GwU8op|LmV>Fh1**F*EnV6JqA5^%fY5OB~T z8Q)!AN~R@61*7-|F+xV1VLB2GLhLso5^CO5wQ`F*luDPQE&R%(;#((wELO=rNvRBL ze^4_s;4O)o`*OrMyFPBfb3*V&J&i8ESs1EGl+TEghi#$8+H5f;j&lTS3ihX8J+PhD z-HJ=Y@;}nb3J~&nuXFrU!XHE*h-r$TdB*lKDJXF8-68P5i}P6X+(9}xTb7A^Bw9w; zERyp`n#x$lP~f{F5%k)emL&1n8hi_nC!8C|l~D?fPIZ)^Ojk8(pYePN!0>|;HuLh@ z1E&Cf=WPc8*FWHTJ}v}1uSew(bf>OK`jLWM4yRma2;f;M3Eb8NoG~%oH1R;+s;Qv+-%4u zyqoV?7ACZj?^Eo7Mf6^O`xF)NOZ~VAsHxsMu_ZC)mXB3?kl#-UFbAImA9`%;lGHCN z)c0O0x@g~tq5Fp|6+DUftuM~#68Byi}w3Io#xPY)M} zSsL$``SBJ1Grd$j@2k57y_>3lw|hq7C$p2YUrmDWYJ^hXS~#Y*ctM4d!LdmHEP%iO zuAOa?q8MEKXvG|IOXatwF|_8b{W5Ahh1J<=ZCI8-4~S)lYMB+45lXuThKfs>DmVHN z^*5$NxDmoTPjIxWb|9ZlAOB z-OXlRp7uGI#W?L(Xc?Ng zmF-yIOkhMq?2$Ow*EchY;lFjUU)r+A{r$OnYX7x7GnOWa=MOhm#F|&W1>)>! zSSf7+9i)th?o&n7{r~|PPfcYx;T1fzOu=d5NVOdP1<_2|VcD_+wg_h*G<$jcp*B8OZt$r{+Y&+1`teP84i==J8u5=|cTs8J?&>31S&vM+? z)T$D^+MQ+WZ2XuWCh0lPsBq}s+t0N3-ud@v8J|D?w757D%cZ{vX%uV+;F+?wK<2CY_s3<0;qBRrxRT5u02C>MmV z`IRL%OI(;qqy7VLZ8vKGLkTuO_5yhX0X!b!Jl-FN$n>iukG!|QP? zNAT^mL3XU-XL%UYH!L$pPX0gJs5^!H0SxFWN+)+iDhm8v0UxqGzNd9?#J-znEo=Af z1P+y|GErNO#<#^>8=Y4D9pLZ2boo5!yUisVye#{HcWdR_a}7FXa&1*`OKvPxl})*i zZITty)hN`VpHCsP>Kjo_LrKOTh-g%mvXc_O46rY$UGw37Fpse}ngY zxB%CljE7Yi`|>JeL^o|0IfnV!qhynCS zy5>+W$IYph?xz~T=PQM5-|at7gI`1&=S#rnDCS^@9U}Zybjmq7?Tbf`t>2_cMK1zg zuc$VBXTN!@I=vL7>MqKBQ%g&ZxHYSi4~W$Fn=|9}u`YXcbYYU5*FNK#Vy~~sg=99&)HhQ= z>{vJC7l&}5<_1Ck<^-E!Sfm$mEmQr;w+o8G+uyB?E3YyA@uKqU_6G(YdDs0{UN#K}V(T{B z-G={MTFfb3cze$tsttRB1L05IbJBBi?pg;!qafhF;$|Q)uqT96AEI}EmmEEhD~dKs zwc~pbm(}yO(sNhMyY4mp-6s}j&_1+1V)?nPdla1Il0U3IG{F&jJARDSpjM-6v$#=> zz6^ask20Mmvsc8!&C@dFDykYg$zE2SCaR0x$?L+DLD8R|~d9NGJe!MgAdHBZJ zm8Yy!RYH^c&!)P~x_{`d$(*eX!FRMd>;$tEVecH1BM1_lhN70tm>y#t6AB_#(dYb4gGXG454LUAP zHXbM5HvC>Asno66$xgG?&{oXE6n&O2m^2hg$4*{gn9X_YZefG)-vn+dj0W=Hgk8iH z7|RLy{kOAyE_|+vQnNj;BmaB3CwLv;W;HZCl3Wh%&w3s@NLHIn4g~$TqW_~wY_U!! z=AjWGu;&9B0=rdf^8H*u61h4(F1TAt-~hJ;0Kubl+Q1x@vTn8m!6yNXu&t_E!J1mG z`^3P|q)tIHja(QrWzM*)9;}6 z^$((;eRUm}`D|b2^-l`CoYwRlEPyd5W!icP|CvdE<+^#r-wd3ef*EDU zMYqG(uM92nc~)WnzInypzyW>(?0jxF<}$JFomLnB?HNMv5f=zxujQm+hQI?C{p2;w z_CBkyM%el5u{RTuby|cioEK?p+1ivg>U%GZj`)q6WDvu;Dj)7-pr3@$rwbwTD%gi-m0O<0bC`={a-T;W3U*`u&V! zKBX9vzrRgynpZ~aJ!8>aB&k(iw+n3~R??Gq8@p^UInm?sF#vN-wxW{BUvK*@-CZAh zP>h|AGcOw--C%M3Q0YiaZQw{%rn>Do>d0-D*W>(kJGI;Sa&xP>h8n*JPYvX0Z1DvwQ{gnN8eJSX$aF6n_eqp!LeO4pz(xM>n z6a$~jQ9VF;k8cX+kUs3=-<(6N6j&`>pgvu-uIgrr8vt7A>xR62k_~>?}zi&+2OsA58tua47l6 z(wB=uGXzm}Yz29=m&(#lUAIZm7wtC~4go867#LU#kp3ObePeVL4;vpB59>Y`P$&Y8 zt@R>hGJmV!-MHs9kFz`Q>hF=R+%JMvXhXes;_xuSCe4Ld&$@$-1ZgFf^#rOoqvFE5XRcis=3cGfz*^E|#i_1k!yPc#`0I9uy^Cb)RJ zb5k*SR!h6HaCSb8TiM`dXTNI+xOqU~yPOT1ZzqfM8jZm)eFu=pfj__=ULd6Mr3_;v zOn7t%^QCZnio-2;0WOatZ$V%1X14c}6rMd|Sa>pKd^l3~xWIR&Vi*9C)W0PHTFUmW zn!+(pAXT=Az@c?(LgBq6bK|u*5luz;yj85z{rFa+$9rmVMx%pL1Mope^eo(MZ+hp>iH-j5qC{n-j^O@g=~EC#41vwdU!+NYIl1 zCn5@V-uwVpGQ_2sFE&~ghekd#o_~Z-e(bb#-_=klWEV$`BGwqA0e{_YjGq>epNB3T zu?^Uq;y)c7wt3$YV8p@El19n!)=gHK8igI(4p2o?o99t}p40MljQIH3Jl=4goQEqO zdsK~Q+^splh!JZU2F4^^iO!~KzMo!Yx1+`^fM86pkXr@B6Sbgc>KXTCT5WrrHo=0TIVajW(AHo+$ z0)i+{IkULIn77aiMwVqD=-m7F6Y_nzdv_N7J$qP!>9q0@mNNhVwE=wCqk1{idkk+v`&!LCwVdix9GH&|HM_dj$Z((p9sS zqv+UL@ZrH*<)r_s8#YQQ^njMb-_p5zKSX$V*eu@Rv~)<@M`WB5_U#SN3x(&At^e~j z0+i6FfqCv*0&R>*M1>Xj;Mlmh_v4y%|Aj0M{Z@z68K1v1GH>q}>mLsvHv#xK9t08>7qVu}e`^vMg@uVSAt~%dGXIq1C1~fQn|O-jVrG=v z_*k^7W0Z?1piL=F&5GxmB)-}FOC@MBw-c|Rx4QeXu1R~fOl@SQTw?pZHmoivkGNa( z`{zccZS{2f>%3tZf_hG+)@n(YSoS|5D15Hq+>7D(A@aL$=sft5^Z5Av;NqCq*53cA;$ijXX)<8z>A(P$ zUe^YOF#g)+Ak?^y)~Z6 z(O55G=Yj8WzIa_H_$Vb!@An>Uz~i@H`HnrCuOk@TZoiui)D7(_&r*KjLq51P2=H5H zEAOyM7nA}UR^yFbl|8P$zyJd0J2mjxO zlTY805;%lL4~;I~KUhdLnR-t5BDZ{6q1ctd@gl_|I-2#Vo0ZmEG&$zFXwwaz7|7& zD`q>iRKatg{-HwPUa8em#KO$V)0D@Z#_b2lDh2Ir>?GO-v8R$EyfMZHj96GA@zU6$Ry} zFIeWdmhd4cqSTfgZRMqvSqQ^%L?5q${zt2AZM=d{S2ynGhWq*vWC5J^`X4VOZ;EBg z@0mR>9c@oAMg;i}wyo)aK-chU{9R_x)#yed0;$zq@l-Sv_weLD`C4K|TD02Un*u7S zqabLMYdU@c&-g&%(og0KE8S5-0Vz>(BU4%rAHIRv&04 zIu@SQsox0Y{9p{4kk1xl(lR03)lohxpp^$Gu}Sfu!%qaqRJ`d*{f+7Ja}xv;C(Io ze>8mqdtF`EZW=U6lQg!~*tV_4wr$(CttM$~v$1X4wsY3=o$K8{VeGl)9OKp~k~CJr z#a3Ok(#xd#OQ+Lmcewpt3g%dSk;~&;(|a_Oq!C{EdsMtWpFyQ62{oAcp%Lpd?$bt@VS`np+D41-Vg%C3IN10sCFp{Bd`pPX zpG%Mr$j9RkxE|(atz}_=5{3G1)Vu_`&ZDah3Y}9WNYS6TythZb zFR8A+7iTb1V;&VXVcQ4e%cQYS*|J#NZg z5rw7ON2_90jLx$p!?iEkc39kYC?bEs$fj zO~0^|4A{+AgH_1=%gBl@^@If?9&+gwyV(Ow4{V(`aK7(ixo!Ieca;m8WG4`&^s?FN=Hg}1tCsS?NfwEwxaU&7GjFcdjkHfR~58XL^rSCyBz>NJ_mK@cmh zsXPluD{)lY6=Y~s$E811Vu*B?3$&^fPaxSMshCbIn0VKAF>Y1R)V-(Up`L zKx><=HlJ%_y`AjMU&>v#6w6uCc(eIw7X1e|_q+ve*^v5*Gn@wLW!A6)J z!7r?RRHia4O1xo${DK=ra6?$9vBQ6z%ful}$zE z%s`5VkgFW`&TVPLrW6AUj^;c)7(^-8~ME;#pJKpRzc_(a|X7j7mBDOdRaB0-JT! z4Tqcef4Q_cFUE#8zUeFyfu%~uN;?fD^`wVTCyUx_`oUynM$RsqsY95mT#l>N(^v2E zQ|WA_)`A~nh~B)~GexF@>4I3OMLIi;2P>-RQ#k7E-bT)s!iG0a-tJBEnl|$(xfpqi*I-WlGr~Z z&mJsW~i@BBxeHok$} z%DvhEHVlbcb6m+0HHDT3sZxE4F~w-#AUepJp;&wpD3SfkS)kUvLNu9-$C9L5UEXWi zx$pgz&6^c!%>{+~&*fyFr}e%764O=Np|M2l8!cw4DmY$|w!DUJwuMoowdGJ#XS`&L zP1|McHT3Wh&SQFlG8432f%Jve3zOsAM{BlA5&%H4@knD-lS?ZriQe--oi#kjag71w`lFq(vBg|z>0LuO zt|2y^M*Ts-jWd_z0Y&d%8f(6^RmN&(Xmx7?^Ihc2$5y)U#mG&aMuBsDyY!rhQE^!k zL$Pm5Z|3<{*T;rK>wU@BnrYL;axuB^f;PX#lIsC#s?Y0O?knF{_1D_~`je&f)Z%zr zxj2LZEJ&R7Jp?aEKWI*TYaSoA6j-9l{AG=s`IX{wbCJs_0pqG?x!=`bjg1S5A{nUpBhK)KSM`bPBf~|Kl#$ zGbFuN^i|#>Rs1v$0E`|`PJ-1j$5Lm++75#TG{)GOrR$*70(>tp!mvAVe z4&fyQW2ep>aMv@2Vj+)v*gK;9hb&mC9#nbJF zgtjY+yf8-HD5mxF>3vFMvyR8v^QNYXROX?3a$Mc@`nHz52s^zoku%C<%8~3Oo`=E7 zvf-*_H_2G&7*O5Qq*2&L_PbHJ(Mp(KaI%?_ zXBn_ka6IR2&L*P67Mr{3+;=4fuL+`9MZnga+(zTRxVKE_uZ`;+oY z^XEb_I*hBWK;rOQ0^!@U`j|m(#YyA@RxgPA1GbpBoFTP&2?jPnIEe@`a@?BmroE*o z5+cGMmo?!q5V3dQg1Aw0cHDbB3B@;5dc)%Xd$vMmo*K5ZtCMCE%DNsFGkw3F_?Q{w zS(4<4NnG6BA9OFfj_!1yXV1@Zl$G_j_~9_;9$!))g%}Vv#PQ1(C5kxeT;^WbtXiKB zPeUSAlgvfSqo}kDm6Y#WObg;nf-6|jb-3KOYgdTns&hPwcwOD3wSO;DlEMk58EC(V zplW{oDEWA5`5h9@QXjQ}oBj(&ASkASMU$*LMcnaV91z35ml8(~<*L`aZx!>XMpteL zi7wXHhL6tUNp6lvB1ekh?=J)F|KZp6aw*toV2y;$!W! ziO8^D`lChL`NVU@<8(aC_r8aolA`)>+cUibkSV)8)?nyhfso=DdZC~SJx^_e0^c|r z)3!G4BlgH1E%v%-rN6^rO$b(Dw55I*pvhF0IcOfS(%Q{i?QqG zOL(OwYf~(;e^q(o>r>a$mG4Kh@7HSST!aQIK3nfl+R@(5oHHo0DDn?tB`O)K?(+#v z+IAUD*8yrxp|mnPLM}z(qW);bMK$k-Xw zKggKEVNwz5a3in5ACG9UO5Hz$p)fVfrZwsXkD-nx4wkSY-;O4EH`qU{jMpA4r`q)m zKDyf4e4OTzxkk@)X<{cYzXVF{V^~ucR6?33i2|CPL(M-d&k~Og(LZlsbg}Srp95ok zjJztWe8@>Hmt=j;;dwo-r+2Qrzuq1~OteJD?Nveirr8^qo0#-p@o1`8uogO(pX*dW zZUks_zlkIGc6zTtnU&VMw0j!dg+|UaLGJ52C4rcY0ZuxHmR4`{3^fAikJ(~|NJ-Q- zKt|Ah`MRI1sx=c1Vbi&2RR^#Z|2^p|V30pg^*eTl*R4g#8Vt0Ri)9q7lZv0TKBzS5 zd_4`V#1dmEh4agZsPi!qv6v6an)0%_9QIp7P2l+!(|G7-*_i~s%^o7990j3ouCdRa zQ_t&tcy3j>Nl)EWT0rmpBshsd109MG%@B>OtSnVFjHGP%r`7B7x!&pVetpKY`P_4( zctbVTn*coLe^@~E3U5~xxBbZ3PqPO{KqjiJLeVU{oL5XeDZ`+?1$i@nqL}*@I(4yJ zdlAEBQ=QZny%>Y5$>+R8_7ji$`aSY(KnxV5V4ze5;*x#&#R}Fpl<6N2ryw&%tLHSx z*B_(#%-3BL1pKTt&omHtyD?RKBRRjOSvt}7=pAhxLBjt$pdbW+*+h~j`~A<5K1X29 zAETPe78;fqwQqo};w7^C`D?}V>X|(P{HndI%`?G4w#i7{VG`5S&~Q9KoxP`Dd)A@n zVzd2i{jKY(^Q!Y{z4K}FsCBJ95Y7r5%|%@=6^wyv~q+=S~d5K*0HHcx}X0E^=(@@vr zaA}E|Je6HG78^+vEDOd(MFS$ifS#YD6{UT{q@LnC6k&3{xrMK?78B@&`o^f$;8dR0sG{YXSaIeUE4pY?Q0R(J^OrChJNWBjdHtOmQH+#+Zy617K6v*bw4}+gYG;* zH&*AK+e2O;FAh#henOoQC_bpC{@{}J^z`(o-MVegsmkDJETIpP!_Z!RRadeReQXuP zuEdRiIvtC{@wo2D_gV6FgkMgkEIHmcag^EdkdhgT^Y(h6s`K#bg(2n=1O*-tkFZ;z z2TFw1si#FK+&>Z}J{~^R7p~*?Q%4};GQ;j^oakp@@M{)j)a?!plhtpnGm>EbG^JHs z!u$Ar1Z&E8_yvB%Eh=#YtNujwC#HU3Xmgl-dt?(ea9jbI%Iw>H*POrPbWQi7uhm0m zpC9GbpF6R(Wmv!bzC)T`PBKw~8?31F*g6k%Sn{Yp*d)L&Q+vl@r85v>P4j$oT1SiV zp7Xus%)73Nyc++Ns4D;qi+=q_EtRSAtAd-u=OL2iG#+|!>nam_4^7993<6H~Q4>IY(Cw8kBo~$c>O7IUU{8j2NDJn-c@n>Y7jY;|*Ev$F6Gk<>g7fKhn7- z<}tQ@pf2ukSrV7|;p*uN+nKtevcVBD^{n&{aR?Lji#r!)=5ycbr(T`VO{-9!bk104 z7N#@KO3`%6o&(f_v!!Z)%9_aHa0IR&E7r$j^qnurL*gj4tUQLHp3;Ei!GoHKbe4^0 z+l?}1?4`=B?ysJqT(8@Os_J*)19({E!{8LP_Xcod0z~BjkQ3pn)0UQ@4bRrR3RW@s z8Zeg!5UTw(E$)V5RHI(Do41eZ?wi4ibS3~;`dOm*J>{;mtLky&ihI+pE5Ee}wf-+6 zbpQ%Pz%k-%JwE|L6!eU^binUaU~x#Z8Tc__IrK@0^u<_AeC3RwH=b>8?so;(Y7#FM z1b=?|e-h2@zjiG+=4z5etAdtM)&SdsZR>+ddaDzID&seHK*$p7`}!U%l}f$msL{9@ zPhi*M`tOo_ZOr0ufv#gSm8TsZWtsrSMDY83Y?Sftm9=$?-Sx(2{aU>Q6$>vIE>gy1 zetCwxCe*+6^>ctaw{CIyxHXn4nO}r8GWYW{vt6)45V8@wk)Pd0cc=J^&Sgh%c(h;9 zW%5!-DpjT4^`1Dz>-`n@1dq=V;cSvs92_4756G3{Di8t?o!Y}Rt*tN4+l?F#UXn4Rt&H-t1Y9vVxwvw_R;EnGv%1`Fyo9g#(yp}I^*6Fz*FVp6yZ0ZT)m!^fbNCT( z1%Dz+yY%y}-0DX8m7vLNXy77qLU3e?oXaw{+lKg3|JlM_`JL?eNwl4RPg zJR^)P8@%nDw*8ZfC{KX!ho=~x)1P21E);gVRXDe|oBq5a+q#1;rv4y@rGq&iX7u zW=4^MIo#EY**fD$lZl)zvzd1Q!s~v!^t8UfWvnsB8ayw=Ko-fL!D+hzEnX}4@OZNn@4Z&^r~3y~xgd~_Q5zD&ibo&hXy z9b*22k}xed_X`l{jb}0;3mkeEV`Be)D7EeWm;|OrbX-H;C%r-C>QVu0J|}WwRf&z= zv!sXt?HXw?*|u7Y8*wA(zaJOqvR502d|&2hW`RBMrCCyz;I$IZ4h{~NEqhIxHeK!q zEL2u5>CIAUZmpXc(8S02yoOu+;tqA$OV(O^h8`Q|D@>bidlN#Cv8R3$@Z=H*$TCYS zJ>kbz<3WD0xo*_RUM(y)jWZw#)@yufHF}?gv0iH@HJX;+6)no}z4zlCkG`%_%B=-r zo&M}KmJ#GfEuR`%;O?ZN8CR!rnpVkM5>exkwN;AWHVytx__rk~st>*wvRr5`CI zw|Zf<;}H{4`?pY@Jug(q;A&Z+mkqacDDF`P#SSGFh(bCskAuQm1}Wl3{yDc(-}Fx4I9mFn+sgm^+BLfcuUoj z?)rS)pUU|X5felAr*|(p|oT z^xac+S*Hin#qO?vD)?@PXY7k;ypB#-Owl`AKW>&J zk@yP`v2`viG*)*$hPrNTEN&d7#1|N9FF8RA^dIsYkqVi7@x>t^$sZE;pFMQk&)TBV zs@2?PpeEGfjNx~lv_G9~ za24xVPfcWHB!7Ma49}n^4sMe1D+v;xZyxgyxM_-9my9I-+nz$j+NACW(iK$vdMwoT zb>W>S;JR)aGB6ZpD(7&4TOAd`RGH0pY^?to zf}UNKpvP33`OAmAt`2bg-QJFtNhIoey)@%$^9+*3lYpV28cZlag+NWk$HI;Ga?|Qq zy{}C9@K$zJb#x^8q$>xE9e6!!!e6a+KJ}N*WyI)XaTb9SVl<&6Z}LRj`=Vc+irR;| z{hlst5l8$(QrNr?15Ocs%^TaJwj?WvGhIlmw}8=2)X(37C<>Tk3=CaF<^7;#JQ^yP z^@k4(VQEh=;2cKobo=mjjCF|zZB*Yl>&99a6wz(IPyT>2K`!9$VRrRHBuH5F zKHS!ApSsLzodT&3oiZmSJoN7JxjQ7wakIK;Tc8dHgJeOs)ak2XVdK;k<)pCtJ1M%`o5#KC&~H^EPg6zWP{x7g%GLS{rSh5Rm)zY z+}8V@Zr8)L5N%1cm;knJ8jIm7kL%XM)z?ifPp3EYVxXGbA7~m*YeZL}P-Mq!aP!3i zR*1bG@!dMJlmJ-b-s~<|+_6yN+hHboVdc_2QhxaT;b@oop_+*(P71PkV_0=5B?s3!{q;ons%MEncDCY%IN~P)#p=v!Y z&v+_zy8(+0>a<*5OsTM3O%<_3+e31Fm) zBF!I6`g$q6gNwtBdaGB2;T-MIhSm|;E0_F~oc4?|9-e^j0_}2(^QDs7HPjrB@fyp_& zNfa6h`}nG@;cN7>8&o$Dtc5gBAc{2QnN$dHh-ms;2Yy*^u44j=AE;V`T-7>4Dkmes zgIO|(VT!Tq-{NYvF05^BuP!fL+BbZZ7o4?gDe4OLkB-py(NR$Lg;);=Vwbj`tV?_P zgG~8#g}vmhA_Nq@S+^4<4vpHIHa+PCk3;$1r^;0|5kWbl)$^-dDhz4s;s0`5fBp{( zi1hpEXu0fF1C`CQbUkXtaKD;O3-nPE+kktv4MBfW7_7N_^ zTP@e@_)2JmA$l}@~d?!)Co55p8nkO;U`__-xQ zGJZzrSBvF~v_{lVn#)h0HiM(r*M;mtXznWrUm`T%fmgUEcDhUI?#={2SCFFKx`ML@tL{j3f~HD)6-Ij*g9N#M!4T6TV$*x~x+JIA@aHla zBAj8$Th!k=PS?k*E8j0q$D_$V2|N!{cen^;RcWXhWSRsd`ht^LJg&#n`G9{o2LQWz zgCi$YH9b5$PAG5u%rWXV{vDwzp|n<1R1_3+6c>9uo~t_^jjK0VnX9DCX&G)8U-4f$ z{En(;an^TfGCW&s@8q2V=5>2lTfS`LgcL0Ke^{CSuvOkggZhHh+F0-1yt>~PV8&8t z%5yb{6{lFdVW;(*`Ru;DbA2BNULsS~SKJMt(&=Lpi$Js_f2wW;;<*wB>dL;&6$0ZD zR04SS60R{H;%%V++AK7U>LH@s2T8Tf9@aonH3+V6@GtLYu6Ms5wUY73*}QRKzTZ1- ze(v?@`2G+?OswX>iGN>}cdON}Xuc6Hp+F!>4C0O<%aM)-rBtD;YcP131%{rQ5>a}& z@ava%e4pnT)7-11zZw}MJXral%!I5<^AJm~7s)=yy}z4Qf2M?0pN)<@CbpBT+mP{u z9T!hw2Hf7(;lFQRsZ#5L5|lHW;DvyBuTCEhbsO95_Ls);eE_aio*}s`Zr{&<;*)!x zASgNMCQ57pvtlbfT%tdv&$C6vQmIwvtM%0cUxk=V#WWf%dIv0HOI6y5sfm`CL}*n^^F8f-@)(7yUw#JAn`i7ON(9(wz^Iq%sHXC+r$FC*BAx){JcdXf{W`Di}~D{ z;PZYeC3CF9jWf~1rUHdIoM_h{I|T0aqNxk8-$+Bd7=1-X7-o(_Tc~eBK$XD@2{j%# z<|FBM+XMbZsged`-}SK{`AaB%}A}B84vkCUJmAdDEm~y0-XSlvTds~jKW9P|j#mI9e zF}hsHHyElmD)BdhGFeGxtUO~S)InKq30gJY8S^#1yK|??^{wI&4!ALe0uP z;F>kKJDf<-&7$fi{Lw3O;Di&#@94PJWWC0_UTX+2fHbO_>i&N(rL~VtT)yYB#5p&O zt4t^+Rk}{t+nKsfRcU)ZU2$CxOwzett-AKXX{J!CQ&ZL5UYW*4jEO&g+@|zB{T4#hWftCDbMI2evC=NV>nQe?h3u$) zY7D58po>t8(sC_NYjB4r!pTTKc#cKCIk%8_88KYQsk3;UVlsrGm=!#)03s3*f)RNH zQFX^*28*RiZFdVA^oP&Z+Es_+@iii>9zkVVP;8-OBbO3`NYd}E+Vis9_H{CJ54|c$ zlwwruk38CMx^u08mr`%_cJmFB~%>3yCCVg=q#8MkQ)E>Rh z{i(W_J|7Q!UJZs~ijFYFr!Cu?LdioG9B${ZV&`s>OACoO zsnPk7FHH736K(R?4RIk!4QZArA5#+59tf2=a?4uWUh03SCTI-rIzpu32xf4R_3_#C zezJAu#PN$v1hG)-b}BtdPW3H6!4Tw#gUKpAp3YI^WU4lBL9daAYG)E|%pY?-XAj;l2UWmDp51M?(^dI2p3Wo{ zPii*O)5n_n(z2GT>0nb3dMzS!C~#1Jf-u+zUNZh38Geev=muJ^Ur4tE zQj0nnX`oI11t+n{x9`adn}o%6x)SC?qlBV!z8QSS2V`Z+}uT9yb%3(iCEk zOpLT1<+NwhhRTCyA0r6LEYWFqy|=6S#zHe)X|P=>IH&fH_T2joHk~+)imarlYG~B= zz~3_1Vf7gnx12@P9&F}Bit$0V2z{qS{SzKTBJ5P>aKN(FvG>y_l|F7wTDoX+J(YPb zJ)1>yjm!5v@yPdWZOhro1%mc(WsNZoxw3%3=Xm;DiFCSxva)hqZfa_-r6S56oXlK@ z4#2#)YHDf<^}PV67qE}!m1VqCtZ&ue&toqART!t9j>7IEC64KPI6-Z^NS93UYb zBMfgRBSf`(dH^1EvFeUn3tL-!a45s!d&#=;ZC)K@WT2Fz^ zT9F!uxq|34WA*_z!N*#m+pNFQ)(wy?#fVgf9(ldJhBl-PRtp%tF_V*9U!RQ-cZaKY zcc4;fES`s_3shh4sm<#)_|;YHk9wT(F(vH&{Ce?P=`vA&g%bW%9VHPgvhp~+(`Oh% z?V9|R6$;bT>hnTz z;Xm>LxI@-9d7B^HaI+KQ$as+h%F8I5wYuFG%8~(eJzYuNAE8H}IKV#`iGc98TAXfN zZnxgQj%aLF9Bo&xuTQYGX5SjqE1g_9V_l& z7Y63bg*ytkT&7EMeHRxu^9^A|VT@u;I=}wC!SlUuCk#ZQhQpjUT)S?0KZ$XovFNy+hsMz@fxC8H4A4FW&1mMP||Z zIrVH?NU#IdX*f^PaT<1DTf}rusKnOz_z|_mPi7%p^rH0@+pD|I>Kpj$>Ogs9{@ZW{cby9&_db-~Db{9U~-x)H7`` z2Hjed4r1|-KM((l3If{ZZ+<|2;(iofVB7HXA}W4knC064uz>tWkR6}Ka62;-qIid* zQnaL+Y|hg{wvkXCL^xG?M2Rj5?&o2HK0dSNwd(HA*Sfl0e`mzm&Bf2xvuZ=8#Z*jZ zMaOky{ONHbQO@|Wa+BjGP+amL=R9T^Fhgj!>Z}dOd6jfGf<`_e8*tqYvl$jDmEVo% zp&0pU$l=q-FFQhFIo^+A7r5EnI2m1GrB5q8CVe|{DNu`QDpLe>zteBFK2i+`i7hm4s{RUZY`gNFIlIy~WS}Ysd;SYGW zr&pk^Hfs0wE_1r#_Habi!{@)Y={R@v%md6s+wxT)O{BqXrofV|Vov}kpDM7m zM3q{T*K@F<6Y}wmWn(o7Ba?Itn$6rQrKo`N+8p;9~`mZ1RMHKydlwO)jG9RXL-+^JI~f&IX_mn6bqy zBFhM7BhB4piTj&)^}D4K^9o)hu!}EcQy@U?f`N*ppwsBETYKR0lp>^DfC$*?ZejaA z7nYrhD=@yi_uP^%&!LGonI0v}-td!!)TRG~W9a#uY!aQ`pa$y}_LK{E&Z}u@ahoeX zGqVjKb_%(dNPcSauDSStKhf>4gREbM6N$fS|Jp3cd6gA$XV3)s&dwf7#``TjC605RRMgh1H=(|d097R|O{ z_xy~gywvm8pnK&v7?ME+diTpw_j&f@DfBbVp{HT(%BM!gO;Mu6QAR`Zyqv^Z6FVQEEAun-c2Z~6=fP2u_IcvC? z(CeHXDEclWNjhniKKz$^hALABVnCno^9W0xl{xXOogCGbv7|rWm zi6jD?7r1BG%rac|yZbqvo`{0)V}@$ewcnYZ>Sl6{56~pl2Yk|sz-amF)9-<%ch@}c zaoJCf=zT;igSysaB4f8e3u7~)C$K$YBbffsP($b znss&OXUN(fCPoxEDp9dBY3BHd-=WcTF%Z)Rx>3k={#>%Sm`Go&jQnDq5 z;EC~5P`XBU&gY{yGLuzTRbAGUxS!g&P--EbNi6eb&OHLpnsM9S}E0aP|FdWBMn#a8#EYCPH4W7_AcZhpI zpah{l=dn$=+a!5ylmUFnIvx~Pie&nCYJ?~bd2*S4n`YZ}H*0$VUMaz1I(_LXW)|D6 zM_$1?)?ca=dnIADtoxGV z0g%MzaCoxv`NmTd9}<@Qqhs56j@E8>b$+;KkP{t!piCDlRtJ^>MoiBtgrT6%&h`N( z$V%oXV)g)GA|trDjrlyMjOd=nPf@68&>sw)^g9Kpc?au1nHFO7-ou{$pz`W7?xrFk z3ug&3HWTnbZ@~t0Xb?cb2$PeMnF5HV$}(62!R>1YfK5kjzrzzE zM@LnC6lfRy!|#Aa($fC%ekR|2R&07DQ(Ngegl!U7MF~JaTk&!1Fz4K$j9K_F%5ZCaZxAI)sYe^we~pxNSUJ{Ct_R z{g(GFXGnT1;OS~@ZFxB@lW8pK`DY&>@o{vh1LmZ?E@**rbD%dI3^8rR;Wrov{8Lxv z_1V#?TE*;V8O*F{|gF zP@LoxNURNg+)rXC4M=H|5GX{ytQ81w4rpYt^uV-%-w2(}dyF7D!t{S`X<+O{XA49k ziHi9Yx$&+-@h|igUvDTpOGlR2AuH88JwD%GxI;k6@(Wt#(jm>s8NIeYE7vyH7E4MS z-opm@u@6ozTzy{_QUPTN$9WS}&9=v1~PyT`qm#0{qeBNgU1 zCjjc?{oH429vWNUX5Zr${I6F)2nvWI$QFs{3ius1X)gNR%re}L2a=eGeK2P}ThTfQ z3_RqmUwlGdO9iTz;ob}(#7v+UgK^Kq0b#a@Ae(?XarrpO(ZP{Tr(GU$J}mO@1-i#a z*ObfU`N@S)U9=n;TgE}jzyiV=w>a7HTy*r*DAmAlss1pD+4pZyW|vjJ{N4!jHcg|# zgUr$fE7a$i@GiZ2AI=iV_zPvArNZPq9RHrX2jV337DiE7 zGb5+=%{uB$7EXJ6112wRtW0v$Vfj zz(#V!OJP-?abOVg$1(`b=D2;=^?+p;44>-H;3h-T?=6G?_1B9M*LcEroptJ98w>`e z4TJb)H=LlPsmS9f%0n{lGde%r%ii;xFEe5uHyfz#Vp;q0~DL%2|ltlG~6`Hh8zC4ofX?|`=K zY7p;MYkhkO8`W6w@_MXjCM6YBHkYXlpo;a8k;@%p@+bHf#8n&wNqm5zELzXfXr&~D z%*B0&x$6o9eS2E{AVvrxnZY|6hWh3~4c)3pJOz@oTSAOsEi@5Cr3M@-adPOmyne07 zfMxnN>vkFSF01gl7^oeNVgA0Bo7p0Omk=bmfrs)kYyo-DQE5^tHN7VAtPo&aT~%l8j$b?zqY3A9Vif>u`RO zD7(~|t!|M#-Bp=JCkVANqJwKlGhW`=Aa5jjw;4iCCIWyCcU0pi&SPXF=zlaG%r_!# z<$%^Q=7}+@{6Dq($wCs`p?}GBiVHZbMHCLqbsX{rwxRsD{7g5=&dl+i%}%}=y&k0e?yds z_!}N0S^fj2J+fe2Ta<4#-W{e2&TmY?`v}}xPK7;uaD93Coq(6Sm0SemjpviQ7rxJD zWKIqoiTWAm`|I`>Ck=iqZlaTE2J^v)+1F(6ykU3;dU(lSae72TAEO7~L6pMHpfc>E z2iG7Vg3|`v#PfTH!j$b(>9hmJt)y!vah#k$dtS{S0!wJ6C28P~ccm#Qho@+$sI0Hf z4Vb9v>=4nQXP1}5SjH9dgkTw8yzpP#-KTGDkEW8z(BQm!)?QrbeN`_hgsx__gAof1%XE)q-P+re$X^zHy>@Ps|X5AES_swwq(_ zC!QgWj7}CD^|+V2uogUCVY8=B-Ak!1arnHPd?Xd<7!7 zl{?uVLL_c-vPuXN{@btL#dA>)sg}!u#(CggZLh3U9`e`^-ZwJ60U&ldRCIKSFxr`C z-IVDFRH{dO_KH$GLS7i~fT(}t&*-L&(qw<^CF36dw4f3z|NkN={VEPY?NsHwcK0VZ z2y4WJQ3!=H@h5y^CY;iUbRj~B0?nLg0wCvUW|8S(!|Fpmmvc8UF)}|SxoB}$P*V(_ zw*-lA2%!Cy+ieW@&S)~4b%^^@$0DRY1em$;X&^G?{Y#FQ+ixCgOFw7n7#`B4mS{^p z0L;n(#yw~*c4$wZ2|**BY|s^Y!Rzk!jwYNXyoC00F+|0o^v2Xj2Tw3;fK^` zX^C$)0LMiP6dRQFbm3~N(Q~T9z23OpKzs9FW4Y?rYbxC%GCWAHFd+gIqkm7jG^`?1 z0%1Y@@>oDEX&!Hh{Two=(;&i}NTHoHj6y0xqHxI#hYEmdC_w%tAKfL5taPM&Fn{s> z%;xHzHkYnR?vA5yQ37rKNKf}oN6#2e_;sK%rIE{KZck^2QBB}jOi@4}Gq^c8*S;#} zTe{5}?nW>Tof(8cXa~fjjAycuy?1zKz)B^;ingPq4pu9Zf=BZJjzSuk@Dw<~5x>&sxulsj`_F z0UQSY1kT&I`omokPHLEfl5bf;@t>QfF$j4~f%44#J7_tut=lL@7v!&j3m2+pV30+I zA8h>4o;oLg3<~dureEF0Qiq0h?iN$BtoGi0;6S1L%@U>R_-_Obx7v1M&(B z4YjfkvTwrwqAVc9KfwQSoq zmi_*p4{zslAI^PlT-WteQFL^|RXIHC3kC@4uZ)8#uO8dLf5<7;Pw5;=X@v&Nr0Fc9 zc_hR6YLgtiO|=NQS+RskYl;3m5f*s+Xot4{S=Aio>3>d z*je?%aHM3q*A&&@y&_X!1x%I;Q=5s}^~I2BPol_vNik;<(mH|xW=>ZFwS?F37S8n;{|xns=DmzFi8al9{(9sKcr1JuGC@PK(`!9WboiUZTwfH*dz5pB=#YMv^& zeT`JkGIa2rS!{wXZH*)}geaI@aXQ`$I|WA0Lo)Z(P|8t|w;b7B&yhZ-5!dFV&umj9w6Aj5O+s^FKM) z?Yp~2^mRMm9MtiRDvB2{HSmvq9&!+*rQLqej~W^8_JVZA|mO6wCR%>vjg}hAtnM@2+(3SUqb~_` zi6n=1o=&(Pb5?fN>gp;BwbdI;mxoA8M|-I^i}F!&mG7^cw$Wu!zwJB|&M#eyjD)dUkQDWg!|n1-$l6+$LC z$w!t4#7jO15N7?j6$sS?6~tLmV}Y&GEE7T4V&z+lo0fsRUSD0(szlcZFZ|sU1sMU2 zFC|K=SjO=SRPasE8RAU-ZmhD^*S5p)yf9Wx!%ReY&7O9TE1}_+(SnwnM20mN_-H#n zy_&T-nMe`{B;3z9)XhY?Iy{h#FezGS0b`}7+{Uir=J}U*wE`uD&sqx&(%$aP%F@R! z1aBpN*#rgOJEX{1QwvGS0l@71y<*haBuqv^k7!5fJBRsUY_9R8)r(;MMq+oT-IAl> z5|yl#*7mmjX((%F;42E@^-E``iEDMnW>(YMg?h<6>6fahj8bWCBinvHB^|(sA%jrB z^UuWzGsAF5e-3heVP{oEL*cJqij7)0?@@-Hzo2bo*E6}$WN!3BF#6jFKfCHVx;n4} zsk*PePX zh*`A41zncrfZySGSWMjgeUs>A1SQW;SY~&?Rj7SZ zU|XipmJNz;@yzZN9swbfhuEeFA0Iy!g=W7!eyuhWgsfL<)a864XQ|s}VHt>93-I-b zcwd?-p8FZiffgZSI`*k7$)pecax&DK^<=Og>!)~1@en!mUjMava$+$Jeuxy??y383 z(!3zkpg{0E<+3RO4>Vo0fwu9GadVa zE59!;EfGitPm^3l|2MBs?28po4ku+N-CdM8B!xN_MV*_YmZ*rO`c29B;2F*)fXmmG zt6d1~_+457=+~hKuUngDX1+AA`K`L%)}tx}lvQ{ij^kw+Ai^rkN-u|g8{VO-OoyjF zxs34-#wrAloPdR&Jzxtw3|}UaY_vUex{(X>-<}PM8=FO+vE03NH{|KKGCX#W=(po@ zvl-^BsH}W{y?QqUSB(CnD#Se1fm4K0R#lb7>9QCU5&@UM&V_^U@pPC^?0fz3)=3DJ zaz=S%`vgnkJ3l`kTAzujgb)H3Y_ivM<`4}1i2c7W~qARbj;`z#L~CR1p&wN&rd38)(}QeZzhc zVV{XZIRP^*#3gfJy{_&WlGJS$@jzQ81yh|jmbjE(J@8qgE;`>Zu@ zxjg2M+$O@tE_ZeL)poyBl$;1)Lt%`|Ya6N7yPlv+mYCA*RBv3%sjK_=zz!M+DXZAh zbI^ndc%A+($*!mN zbNT#%8v%k!-FcT16Du3AkNz@-`Yu&0hM&4~2t99z~yPif<{5uY==!ARi1>$yC)zQ!a!3u1M zFHL3-2ED^-_H4N-(VUa9^3fF6BPiwa{j#;aCcwhNQc8ExkuB6Q6C0&M1&NX8Ou||A zGcjM+@HE1);h~kFq4NaA`;&_q+!{pxm71? z?mmF!PwwklyFFPU---Ba8&g2W#J79iXRg-=iVtfd{dzxY>PlFpgmB zZO$03iI~D{HEsl8y8GXZ8NcU$4hi!(aHWPe$1RWhmrmwzF3v7pE!IEt^$cx0^8%_W zF5RTRNb4Zh$A3rs!jI4If&GGEl?%j?UNk>0Z-7+Ayu7@I*}^}CacQ~+2J4~SA6C&BSNHwfOU3N|Qu9f2279Wd2CK6#L zP}4A%R=i0B9f@H_)LZqp!+5xv zbiIE1rNEgJ!y*TQ#6M-qbryug9%N!c#6&?tUrfppsmfbhd1z>cd~>ac#61E6)YUP3 zz}3A_M-q_{s0@d=egWgH)oOYj_e1T8v$L}~zG!{{MUm5QWJD+a5*)#9MXyC!G#J=$ zQv~snys<7923Qp#?9EdB*_cw1{{)SVbWym?U?kiyvX zD+UKJ9#_f{x72H zw@DCYq&{BGFR>?2guczq4?&;DmpA{uG3+5Fc*n5CcckOnN^K@%+G}XJ|IY%-bJZwD zAbXh?78Za=rzPL+nOX%>89ed`Oe&MpOi;)GZaPJ~j%b6dh8x1%}M%uN=r4pJmrAzuPCL6(>Doq`7UA(@Y-ph+OcrvOV z962op1GriG&(sUL#MlO)a+?2Gt27^M$9R{Pf2QCqH^% z56ldY63zXn7KhTDm~+2R-5+k0^U z3n(Repx9pELX zgc1-r{aCA8pL({to`tki2LmU*xflZ3qqAwd_tnYx69GuknsxG@yK;9C=Z^8SlIH6D z52%jD8l(F18!xU@j6y3j;Q7p0K*(vAAIJLeH?A;~ad(wXRxa&ybWu%3MRHsp5{=3{ zoR`0xT{wxuB64c=A37LDULE)IknKW*4O^HLpM?(LVff31jFsXHn^hRT@C} zL>ovc#rTF~BJCK1Omb!szmY5Z^*TWQuu=pXj>Ul6l(CbCCHeVnS{am;rRV>8TG{h-5y>-)mK2C-`b32h6GP?X^o4n1tt*@@all6tl zfK0KA3(S$s6_YM9Jbm;C-UTn3*Aepm%~7QsVW&-nPdcNFJeX1*VeeZ^OwiZf+%udz z*&W*mZY}s0)E1%bIO097)WM>WkVDP*S_(*{Aa|RQ+%pA28aZ~$ zl(TvWGKf77JUQj4#7C9A;tkmMyZWuAo;w*!5*^TL}b~VhkHK1oqBzF!Dr^$^d6g_qJmBffcd9FXl~dSKy92&WVq4ac@U`k50+GinV#{r<7*yJKeuO!q1VrD`5)z`9b(6} zIq_{~)j^nq&(6*k+Ier^1Qb>j$e(pku5eJPAkFZ(F1ZL0;$>;;JocQVf*CAWz9HKjJdNZYpd%^&SDpWGfTc2 zXFN2J!LD&u#Esi<#GC>uHA!4#qYf<=)-S=TW<&(SIhLF;^k>@lz33#vR3f|2Y_7?o zKRFF~-0#m&u-=n{eJF?74}KHv4Jtnj3){AJcx>0{iOhR0qn*_HG8m%bej ztC|^B<2Bj8QOo}W8j`H+?5P~y#)Fp$dM$=2=apDRFa|Mi(m0AT(z|AGn03jxWyBzy zNp8REnTV^-$IbMP?tk80gW+c5u3rlYgk!NR`3<-Hk9+l<+Ez+Pd4`Pyi+|sVRTMSe zPH=zj-@mk#3$Xk(Cu~CXhO4fw=4nmBP*G7a*(_DWNpsO^okQNYq*7)EO^Q% zqb}Hy_3}~Uk_Z0`U%zm;ycC@Mh0yjZLcU~t>`Ok=k%o5$w*e9d6d> z-~U7vK!BWnOHex+zh=h3HiLV_hzTUOq1xNq`@PTie0G!~IJ?-$xr!Y*nAi;hy1ti) z&zq3X=c!NUx3d(G>|IU_?BXmS`T@xK#6r%V6IlymX-v8N9!k2pa9ByI-=1LTne5om zJ>0)<@J17QCMSZvRojQ8j<0$mQ%k+%3z9MvF^`ql2KnNVV?= z#>^kyi2wIM=wZA(YyF2+GW=zB9Vn*}smsJbwhlzAu#UZauOoz!u%=}JRv%InKELLS zC^z?wId^pGj*)Vv90WIgQj1OrA|n+wOb!f};Xkpxf5^3M_x_{F#ob|Rsni}LAwA-AmzAAoy2Fcbjw}py0A}S4S4B8*D{sqO|skV&ml;h zqLSitR)FB-*CDX%V;uzXBAg!8x}}a^iczONi<0-nvhB%?6w6vqTtE;^H#4ZGb z2APm=eSSSw*9eA-Cf7vs@7p1A#C!ajlh0}SRcd-Vs!RCaL`JA@8!acN3tOH4*8E%2 zGxR*r*S>0Nb2kNvV`em%0Fcm0qqD20QXNnS6~06-D891dj%rHVO$OavSVSE;@u zaClw@JpY!jp24xtcxQc6912tgIdBnBg3NzvKjz%+u@6j1J~0|7eoz4a5i86}{y);%DIO2py{wgv1@7sS>VO zx8(AzriUJT3CRh`nfi^JaU2>|@%t{a z#N4E+0DK@!=eh4rn06&HRa>R0tij)nd3-K0sY&VaYEvS^2%z>%gsV#pqX zkCg&wvs*U2hAwDnTPP(|WPJG}p!q_8OG;MkxF^r=@_5D^_xj#kXw=NzeD}5-7KND4 z^;$*AQAzQBzoB8aFF3ff(>LO8@7qahZBK1SM@Lt6Q+eC-ZdeQ*CmlOn_Q=X%Yecxv zoF)JHL&xV~O=+HYLvu+umGkyD42WqDUCpkC)ia<6vE*eC5o4(`Bf{u?msbH7fN^Y5 zRa?RTx_YkWXhhsTD{+PW?Wz^m58%}B$jpDCJSi>gReIncytm*gM@zA-U?batD5A6Y z*RgDx9vgMC80NAP+>Zy%MJ~&a2M5k~TQ`4{h;vzRYXB3#^MuY&FQ(eSDz6m$sU%$} zEP5MrPl+9t%+z6w%FlYa7Aoofr~fw{Yr@+Txso6nZc!iX&;5&-ZrZK0 zOTn}3@Q>q~8YUBHk?a`q-dz$BygD7&8eNRs)8^?b2*K9IuF5No$ARe0v4~r0#_@`r ztKrHSi)<1Zd<|ENM=+exFU}Uq^o+WQf{c<5rM}t;4;)0d9)^7%#2}X7j2h5fzs=cc zv?L0KzvyIc-(YsbO>l)>XmoX=B+0GXzo7UUQ}UIZhxLE$UfCLJlqACofuYZs{vgzi zIhT8dzdJ<9?gL7zU^Arodnk!v2#13AEn6ca&dA44aF@!kY1Hz^i~3Glmj$!qiz2gMu@cET(l-r}M-dX$`Ys)o7pYLqMi znblXV7mLy)&kysfwsbV=6kf~U(R#`RU9Y#V{2wc(&M3g@tE{cP?)Gel|4twS^t~sAW?lX>AL<;8>k;I~NxXG7gk-~hf_pHVB!;>?6o8b=M z-=6>MwRckAcE4m*>kKf((Q+(8e34U%O8xP}SnrqC)Tm8QNlRCK(UIPK#zT^rr+;H!ONiRgK%OsL{-bWPFA) zds0(zPhTetfaKntLTc3Aw=LJc(&b4?LT|lpdXz3GTCT|sij=Y}e*2qtHa0q1Nk_ls z|F}_U4D73>%@Fq-rXTKQ`?kmp9v0z(g|J(rN2>@q$Q_sL) zm~h|MhcSX1++gz1_>j&|+vD+8`19a7oGyc4@c**_saQ0;>#kdFSni8P?7e0^R7MqS(}mN(=1LjE2NAHeI^TtsxzSPLWNb` z?+!Za*C)xER9Rv5-NnIa>*3}%#k-SgN*$Z)JLZ#qMklWz>MeAWS zSuEtEXx_Vkk(ai2SvmC1LDmilJ}$-!%7vSb^^?M7x75<4f}>@dkY8j0h|g4+dU=hb zguDmCs)em`7b})O8nxVu)Xr(u+{P9WSf^hmiCzn@`k2x;DO3FWsk_;^Rvc5VI<7W> zn23M)_}S{v+WzSbdMdg`Ty~4&kIezs2ihI$??&{j2pHXl?;YnGAxJ%805*?#y%JCkHXU&=I?CT zWN7+P#NzbSqD3(6xkC8~b*R?Ef)9gA^=oR@I?3lW`g6s%ik`_TdiHK_3IfdI5)$W@ zL8R!uQ0y%6c$|G#IX1uy+XUjoQe?YL9&vn(LsaT-M<`m&vjqLH1^M}g>(xaH8Yv}m zIIEO}g0$?ibQ(x_ilSqqH{jPz_qnCwoQ7stGFy95DEtx!QLv8{6~5byUsF#@Y0I^v&n|x{Z)kYa zM-goOw$t}0ynM5u-GM?VFuySe8H^;(U&`Jd~L`%1!*kpvdbnJZBr3L|0ID@1H%b zKy`~|jVt6lKZi0{qrNGthEvyC$SKw>=iM-c2C_;$zL|ZBRUuK9*l0jufGlhXM{$$x%Xxqh~MY@`SXV zMASazXAMR$=89^DCJS$mbBTcp{m}wXjBQl4NQe^AFg`eO<(4%1v_>NvCCE2ddy>c( z$9s}jrc_KI=&TiR(*PcX%+YAIzL3J93UH_hQyFx(476D^{Y!>crF80sa1sKmBP2_j{Ct}fJsIAE>9#)~@3$_Y(Hu?NV zdh+Kg$lwIv`w0WemnmcGc{q`2jrItxaj2+1NIZNFKZuuifA#1?@WnysDAgBhcPS0- zN$4U|Qe4V!z6tue=n8C(G6=h5&{rRWr`FVB{@DHF!>6}D3F;R^31t~n(Rb!zMBqk1 z!{?cdM3CmG;{6PNlcIL4#7}c&ibO%v7#Sv_VM>n7^uslzG#xw~Oo#%3Ppqot1bhxk zzP%I*7D7FvM@nq@r-~n;1t;NOgrqOw`hRRnSRThKU++Ld;_IHKbdD{#F2BTDmMt;Q zNVE^5%s8-^CqQt8XPcLc zgL~DC+RimOOjS8a#;oi;u34#u2V_dZ-_U8z&0v_pih1Daod3BLI7um=6>dJrcRAqj zXHR;*@&}%}TYTlcrIV}pimjpOfvo`ZK#paJ#yeIkKQ8l^sMqx#G&2)jfv(G%RwJ92 z#tysr*y4WyCdkkp@){GhQDeX1eO2*;9+d6qbRGe@4h6MR)_+o0tJh|6GCKeS=JEcQ zZm(WCY1}%!yu1wbXe%ox53L2|-%V-|S1*9v%Ffy3WI#^}_^l|H=dzi<+^x7+rT@T& zJ)eu*L^1Kf`lsWB>iZ6Fx?P1ZmDlrRJSEifbxO$a@ARyZCu8Q{zuPdWI;1M^ry}Z> zJtN8JKRyUGI7H2Y78!#SsyE@BDR}Q&*zV1Khv7gjoZFmycy)RWMqd|`14_p@49l-{} zkVY@AfOBTeX(*2W>+PxwOIZB!n>oNO=ep5`*pp%?4=XAoD+M1^Of)O?!aJLT4io-u3uMIMagrg z5s|rWGG_L~f%C!9Q934$wuY9LwlWhP-TqEA2s~{7{JIV?Ca~y7NBJ}EaO)qzEzf6Z z;g6H%3z8>aI?8di2?=kzVDYnXKW9qsEYjfbb*T!qZAqzZqhD7O%lS#wTkLpB#Mr-c z@r*!q%0q~*Bl>k(FOwurt@Iw6Z?o$1!9Zd_z#i!QlFTmViw!;J+D{Eki4)O8GS7Wl zd7^1o1PP`8nxfjX9$sf8h$sBJ7(L1G7u1ex>4Kg)iJLVi9v~@7B1wjWYE@ve9$x^? zOw}=4IJG?+gYW-+RC%cvr7&JHNXl=%czjzmaw>Sgm-so})E=c*=dg)7cev&hadkRM zepY&n3?(n{A5!&-aarB4L+zWNw_phBZUbc_a^q}#MOiP>4=4{G`!oUk&xoeW=9o`m zA14SJ$)qE{uM%3CTO!;W1`~=dB+ek(ZE#}RXuf#9qP^JN@v=QycK)Hu+slsEXMy|; zzfC`P4`jE+6}$mefi@=z2}u!DwEgbdLwo$J?u2%>-HFKIs+tPmLtn{O`C*zOT}Ls66+OhV!Z3W7LN1Gmt21OD;L_6BV$&em3))w`yFu zaKESNu?Fwf&ETG{yY|DzA#lT;+14Jwx%Rv4JNSGaJEPaCvbA%GHWR%cM~viUsX7zG|0UB-9Kl$g_DxRL@((}9n1LA2q0{*=tY7J1KRnjmsnHe z>Y+_o@XHKYh9ynzs1Zvcbgchmk7Ozb)d;SOe^D$_44#U?fTe}PyhUHqM_SFN&?+3j zSBP4fxXQ*|cOG0~V^YN4xt1lk1&Bl6gEN~ez%5XFzaR$h$wbr=6hQ00J`epfieT`n zZ(-H86+_atBS_%LIotd-l@TnI(td}ZzUG!lKF07(*UyBW!5SB+OGR|;1c-=W@SnCd*PFe zX+AfQrn4dyp!P7gFYsVygRSsRfhRyZiBk}}!vMV_5PstIf@&?8pqetgDi=vCE6 z(oIFj;=P?q{XXhd1Y)xK?>`Ppu%CCIcQ+&CUt^CK?Q~j_KO8lRe~L*utBlkP zN9^Dw$?)HsjaZg4?N+&PY58Q;wq>1RB@CT8s;@KlubtXfI+gL6YM)w+gi$u9vGwUl zHUF2ky%W(BLN%d~WaS*g$#ZqL5Pp;A^w{-2*=d0jdHN@z)g*46+*MisL;*4$M2CP zhS!>}uCFR~Kcw@Yamf0sNf{1xy|7S{)^#Zpz)T}W1LLJ)IPO!RBEc$mI#Zj!^v6B* z3BhMKSLj$Cf1&K05J&AxJ-x`Eo(WI>rObXIK_wKiPCL+EAOjisBdug_Il$xuLJ&VP zsu)2;7H5pSxNgo|m7KwG8FKQ%xd}GKd11z}@kSAZ9yAMw@f$;~-0JLC^Ot2dL~=4U zWcBn7IX^}7TbrXFf=Gf9IQN9=%jT~Bk2}MQ6JxVxDJ&R2{gS2_LUnm$ROVN8uIyX4 zD+JHVh4-rYL$a7X^=vU~waJYXIzzqT3cWOvsA?I~R1RnU>ilhaw7f z3keKQ-1B`U)@3zVLa0?R=m8cDX=_LF`|o!#U(uK!Da#F--U1vqI6td{oS?GbsSR}1 z)*Owfnb5+dxzW#PPXfvQkcZ;MeokzRK;}7BEW)Rv);bZ>#F<8iK5ruoxiIF+kYCH? zd*vL4T9TL!eEmd;#X)KmwX36LHB48@irO;%ay%h%tQ1B=Z7CpR3K8u=hrz9=hBp!;9l?5&c3A4x->?p^VuAEvs^-)>?Gnb~>h|XsUTr_Oy(X8* z!7;|B^wdQ?0vk6OC4~)i%Q?+Uw*Suph`9U@7o9L6$!8R_!(8Q(EfIZ)W-vZTEkUL;?2B!gdu;S zGPy@buLBlX;J%VV9OpO8Q&Li^WG>U3Q$eu&T7}o!^=Qi!Zn3Cz#fBqQ&@R-DX#PE= zZeU5206SYPeWK7C!3`0%B+4z;&Ju>e<4p2#K~4Wr);`WHR7SAL%}RhGm3f_W6wK<$ zZ#XF=l*stfUth?ZiWHR@24B^rlvTM?G3Vh#Z^r74%3IYVbvjwBR@s%qqSyAwLK$_W zpUKbAO{qHpzVpR*HS&7NrIhHc%l=i*@lVk)lzJIrcJFWeWdsFW`|X#Vp4}Cv+2OOI zaeh)q54da9pBg@n%;`%tj;HnxWtDu>8t+X3SXL3CnnBdBf;rsmJu! zQ9rQi#a2$E-6P(kXo!2xF8Td5VV8cgUkClnH8jCGxtCk>@NIJ3Xum%bs;KA=p0`V= z)8d5jQ>SUu#bC?RyP@;)^3p-XJkI|woINm=Qu%AZ23`dgsj8Y@I3F=$*ynJ+br%&^ zrIFuxDL-dml#Dl&>sy?3qvBt11`yKuJ=^M%F49%1jdj-UMgaB(a@G@}^Z{B*WMWjb zxI6lZ7>tt3&zm3g6sU0QhrH=o#+U7o~?-KG~`@N05eXIL{ zg2MvbuZLKomIJj?1)%;#4ZCI+F$mH!9#t?n+B?QI-|?yLF8JW~TU7+&BRdWFv8xrv zs_oIJy4{fv^C;H&)%bj$ju#n?Yd(*Qx_lnnHXO;$afMe2Vm}Rk8v2LA|GTx+B}g$5 zr;xF=v%{#ww$wC){2Kw5Xy7}`zOH{r(Y8dXsjY)q&S5vbvk3)u298ZA0)sX>!MoAq z=F3IBGXK7d%P0iQ>3Wu`Pgul0qFBxN4mYw{2&zT!D`_bYc}~OPCW16%1N)Z-H zD(WRo;o;$J&$42btTX-u82VY+&5@4J9w$f1tDSZ&F&kH}ZK-JJO;>l8mly23@WMVU zM;3DFSRQJ}dF@&r8Yz~KL*!W!_bGPG|D9CYft-rgelHI2dVYImPJ6tJ;#5qta6fMZ zF=b#YTmYHzf2Ur64L`NE@XEi-ZOw7AW|1*pocm zs_Y91994AX%qSx7T#E2gccc>5I`dx?Y>d&ts)A%S5wp;{(f^L~?gBUFY@@ppCa-BwqBQVp&Nm{-v$Oomz7`&XRl1J^Jv^BNCU=GB z8oq7T89|wZeZPaaf;Y8q6rZjy0idD-SwGZSoC)q996X$>8R)1arf2Wft+5VD-1vX` zBq-){A>H8W)6-AMEQddl191WOAzr(mMZj%dvZb(Re>j^E^F7Z7_++yhs@!1*ZPoC_lj{o+3e zf)KDu^z}qd=?x}ENn}TibBnv&MMN)rz zP2;5Ap7l}4s-~VbHHE;ST(8UyHyCK?jTVK$$t}!DC@1R~)xG4e!fU3;M)u_uVcyaj zQs=FeiA9YC3EKNu&69q=&xC%WvqzGwDl<+}O&}J8K_pym=~T9PytF(Wab^B83vHb} zae3qYRUv;cF1$@7MyUWS0a!L9Jl{+{yCLuI zkzTB5Eg=zecjYBiRST|A&`P#eXDeta6;B`SWq()A`*NZm5iOo zhKcxrl$dS2N^6!&O3ez`vS^x!HUVmi=)rPZu^BRf@xKGfF!NH;*~0lS7u%RFrt+>; zXNh_+FRZ}T6{=IdV8ix*{i&YZVK40*t!Xl>tg=Q6O@;u2=9l_=rOwKK2vIc^AcZkH zr`gRl!~%igqeAjtaU&btk>B7{jm<7&$r=xC62(9$+9e?KzNL#)w3alJE;w@Yj+e^f z;)z3{V*i6*48r>cjy(zs3)*SQAeAwm&Q6byC95DkX;LS zY(4)w0On9ydDQ}d=hlq*&}1(E)lI8SXs@TsbXRfz&hU=59KxBSBcS$oAnQ+F0U*Q zrj83)zOjj7%MB;Etink5F1my7FF%yCIBa(NZ}tY`30QqSW#KTU{Y;(93@a9VX($EJ zbJXxr(H)^tJ&3+{2%Z8MgbNOnk#l+LhFg;xuuYnpnzU=#z+cwejW!6rwRLmh)$QRDdJW+AM-im}AQ`qy=b=$y%kXqS)qb9#@+-DV789 zuE|`-1*kW$0}6>!_A?R#F{~|~)bNtOrEN~CblFQcd~f$hxRHt3B5TWr7z84jm)qVc zTiJit2*u>5feMPUd?#O$ba*T&eD7E90Si~Z`-Mqhk2LeI}`6N7v@S(_#;zVz3=JBOnSllVd9=>P_syh@XGJ)idTbQ-eoMS&7$N8 zz{bU-QI3l@YOFdiig;L0$Ab2i!l08wG@*{;L;aaVw|MtZU1ZHQ@)h?yLB-J4O%Q2C z>LKEor;SSVe63iq6cue8C8DaS74+I~U6b})`hcr1g7_iznC#Hk^_BWmcuP?&b(0hq z&42$0ks~%7zs68`cSi3zSeJS5)&fFBnk~=09Nx#tEY8M&p6(1@$=j~$uF*2T z2qKi70N0cjc;C75< z1hzB9G}JgiUOYDQ#`F?&yGpUISeo!7c6>?0)DRpWjPKXpweip@xdt@GHU<(FA{f{S zjl}^LuS6tyNXah?P}GZ-zTCY^=jK>C^Q#pGSt#J9BU&EoLdZ>`+OA(Vv z4Yl`hP;TAv=YqWtK1B%wp&_|h<7e|*_;sbDt^I$bE#Wtln|LB);9x{O!BY#`iE&Or zJTRK3I#A8uo~_m9+ouc=(eAb|YZ^Y#8QE%IUqoPS4lV4`ujHrH}lkibHuAwG40j$Ts>r` zW#|EH3%eBV7%t8M&clVakmvQ!oxc%r1nkYgiLqsij*fPAakkJcLD$boq?L0~pS!^r zIz1yOQS1PGnibBG%o)ofbctbOFZcRRb0fWq0Rq)>$Fmx}MeG?5P3N8&6ir4g&9aCos zhDlseKEOox3Qzy#{UOqf=5iA2mEr#NezyuYR>Mui1oV_bW*rJ6LIOJNtJ)&+YK?yS^Te^+#Gm zzL?+P6LV$8BIQt||Cb9cAHdt(5--@msQ;fUEY45;k!L}IzWBGQAy1fYQ_NbP5O zQTy6TMsi-x+fMu`Qt!$CZqgSU4>`XhX>ZNR+K-tPtAO#-23=bwu+&=$^%vp>+GQoK z9huDc0@?l!P$WEReoz(kiK*6(WAHdi(j@8p*z%#XQLCrvQyn}V8YL?`Z1x6MvDvqS z=i5O>CMpfJu*A2wx9I5JBB{6>KDW`Q8}7Rc{mox?XzFA(CevLYotYj2uc?f&3F2C9 zGW)23)6+^Mq`2y82L}fwx39<%f2qd|+ugs=(_hS$0+Kg!xuzQ8*>R>mE=08`nedm} z-GP|1MJJt3*JnU_fE8wKMJ?nJud*~OS3jkpuUp^gaaAK}SU0{!$&k@eJ)vpn7S=}| zDpG=a2EwV#G^>rSa=C?E34_b4tVgFFpyk9k5F`HUota_5q0Cfv#FhxGMvBf!uXlJ_ z*y*hjAFf@$dUkdXuE?;N-p#-gxQNxxnV9r9y=h1V(OBdluS1dOhuEP#L6^hxYg2J5 zS$(%@$3{)W@~87#=G`@$QWwmyGI9zH9TgUf;ly%vnk^oiT_o;UM&_%O^mK}wi~||t z1f9Zp5jnq%p8%3k<2E%zef_2N^K`j$i-calhODq8-RA4Ks@~<3twasj)57x=dtc96<(@=+> zM&k->%7HLovY}kh+J{z=&Jb(~?l-&^;Eic~U|_7f#@AnBSKRxdi0AxM_>-23a`?RT z+J|UR?vQ-`KMOEW%ia)*J(>BA?j5hP%{vAEhlPFvAid$W-iai9L@&uBXG~X zv(Gy=A`$VWj?_|)JXSj4Cr?nPr#}+2TirduamRL;8q{ufopULq2Ew}fN^6bjD=AI3 ze%}NA0(#SxfbD5uM}*bGkc~fwpi+M)i_PRxw3z_>#N6$-p6{0kULUjh4hD7E0cp*H zzP!BLZxM6H-t#q&!lNzSQP#n}U*3;-@0Ckcx^2#Y!7WyTf_92%sBK<>B}p7U=cr@L zcX`L1wjiZEo|Ahz4rs@0)s*N6J4_c4I;EvzsHeb!dO&&kmM>9AlnEVz1(hr_s#Q51 zJCXPhT(z1aB_}ZP&{)h-%cxQfq=@V=@1l!oNpmIg>`}pQoH(E^=;+% zb3k_eZ;O@mH4mO#B|12D3#-)gwZ-M)V(fZ|;*CpOA>WJ%>f1(&41G}&VgJ6p8(ZS- z71yb+3nMVST1yHJSXb&Jy_%RZu(DNC1#cxVMSk-PcaaJDGH`}kf1#>$#%A$7H>z`U zn#ais?$)0X5H{b|0Fc%H?k~+%t9jZ4^$?#ORZwVA(U1~g=i`6UfCa3lc{o`C+mxu?Ip=XYO38*PgnLvu<@$%qFG-lho{YMi5qBN zd7YmCvymY^y|wxMr|#gVH_v$t{v+SwokXKgD>yi*Am!(#yr?*b9UbELLZ)=PsY}5Yh3vkx z_Pu0#rFg&5)Dfr7=Mw8dN;2Ux36SO4r)gW2bixND%-z*e?Qfr`Sj0>$3Cy&`!?IT&PsGl+vOkWPtMngd8Z5^W2n7!hP!Rk%gLea!`=q(e%&r4bOMyF(fT>29PO>268s7U_~&kVd+@yQLex`+m>! z;~!w}?u~P1=FEIVFYrlu0;wMBABs_UGn1+2jb&7Rz7~iRAo!A%Q2WxqO*))0Cw29`4}Sey)vM8cHFF;Oe~6d~5BZ{5uF687UjbVg7pDD0~- zN5T{%ICvKP{C2{tW-bL~zP2p4xSbZIJ9n=%%-iNm#tsb*T3b6&F3(b)ZI(V%Es_X$ zCSC1Mwn)X2qK9TaFulDHUN@V3{EjD4_ME`Zz<3CzA!<)rjWtxA4%fS+u0aZ(+bL8@ zXi-;3C)5^zQA}Dooi+bOVY9YB{_I-6eKuZw!-p+7B!hgWb|aoTA=~KFWPJDcyEVAB zEG)LllB&bte?3!m(oz45ETZQb$D&QN2;GQf&*Cu*=sLkHS`27=xNcb@HC9E^3aA^z z7e+9;Q`u%!3T;q`z4-`_%^9aVLD(K;fv|Km4~H}+)7uz>W&rO!K1NZY9ij-wz9>VZ z>4P3s+@OLXXcsWT9`iU9q6_Ok7F4!lx#Zj7tN(f-obb{jcG2m4t27x;Q^YqWE|*=h zXSo@zoWOf+jUs3(hvHApu0b8NS>Ce%bcBV4%W~jPHX``mW^O(|2OnCy#@DzrW9@66|*S*r@a z^MPVA-`{(S_BWobdM7?*hqd=1c(ji^@2?ic3+udY{)izgnjCp4J%PRWL}~|0TnNNj zv}9M+%vI~#kW?cEqy`l;Cs8pflj-;V1nMbS`oRFn#7DTjA35#^@}u=t$HPdfalAXo ze;=b@{duJSicvVw#Y-F~^-qRjs_5wWfw&XoO(~R%*H>{(O)(kvS)OZaFvtUcs47LW zWU$VBQd9z}e`KUAmg~%JY*fGp-yQJv&mjx`@!Ijbz?l-vMUs0Xh5-Gyq(ryGX1Dzl z3=C9S*jbrU^nYGz1hDIwrk=-ktlzEAO#(JoK3lH}Y*>f+)o-us6P-5C!aiVLmqg z-g|!oC(KEG9ds6}JrWVdobOUubnZ#zP#U8!Lff*a3b}^(iMQv(-iUt=+LwO(czkT_>=bQbwpCEry3v^voI3*9 zhiUB27QyKajVqp^8A1kl^TXY4=lkXvLb`QZh1o)6?asv*mSsZeI-iABZU<_%2SL$y zV&n9HCzRx^{T=JIA@w3&d++!3w#j0p!GVGC=Pe-&VxF<7IdNP&8FY*v)S`ihh!6-W zxg*(=Gcm64vx*?5^d3Jlp=Wl%ky!XJoZJrVXJG~iX!r}*j-3-FBp;B}v={Z^j!m>V z>td03TLkC%_D~F6;QT(KCRsq%x}E8|cO1xC_(>`TqC1yrM1x&gmid6E(@B#D5*6N0 zCK>b=+o^sma6hPjX$pz^MN03B_L(@$y3Ms^IDWH#a4_EV$b9mL=mLgx@X?^NS$Aj0 z!{z?fp#F%xt+m%_8^(0`l-rb&X~y#YdF$0R-_20g7j_d&eOdO;QZ|A&XpT==BuG^I z|Kc|f1y`!v2PSI2@1~9;ijqjd56yRnB`QYn)z90i7Rv*&xAQ?_t1pGmmFEkKqv_=p zwXye7&>}yxQn{AxEhS#11&O_=ujY~9$tfIU?4wM&I1-Vw=h_`Q$q)1(%)n@$6ZMm&q*s zc64}zSbOg9aarHH+Vn2s`&+>395~D3;vATZ$Dhcv1t>=Is3CwYk>lrwxA%)MfGRfS zWTAd=+qG=IA{kTEC^-iw-hyx5$s7G&<}wut6!T6Ohn|5@>o0^nI;dIIxNX&V!9x<; zw1=qhk92?Aw~xq>R8q_w7;@Om*C{fw36h>mvhGwP4&6x!OrE@m5@K{Hk=q7Kd5B@7 z5QC4D3by2RP^jJMicjrnR_R+www5Sh4t|x7_Le4GoMHe8J(k$*fw}zSMhOp|JAnue9JtAF-}uj7mop z)PBe3wz<9S!oVltbDY>T9l;h?ZF6zq5<|`vK_u#4;x(2u6oDd*YI5j5d7LcWfephS zv5`H%nM^}Sg*=9g>efy2LiXfftLFcV3X#OB&O#&^WA9?t9GnU1 zXeMxF{Eros#PQLWedueST8T!Pl|AQnceu-@6{7^q8{SfvZK1sTJ`zye*JoxQuT@keV z&!f3lZui{UA9mXxzu#%7GUpr|Os7X@d-I-_(&d*%iPslDtKpjNf@BP>rmx2fF7@?S zNP{*(>6mA~bBtPf>06h$$EoH07C*ha+u6l9Y-l*?EFYC+@@1rF zSjL6mh(*5JmxDM}#5 ziNZfRNx{C_+y@$#K8=0r^I}%ug0}igz(=F|Mk|{@VaaJ>nT8Qt;^_G zM_FJ4OqoDam&xPXxx?BZtyL7h9Ki(D%4KFQk48fSR*t%coXf+^NAJ%szWQEHVWhC= zXgIZ@J91bI8Fi2URWHlFA5VOLZc8}s^(wzi(;A$8$AJk`FX-~10F6oKn@_F_-Q3B< z(gu|ugT&fR+CroJ3L5{-=P(uN9jNLFnhjaBEblBTKArU>GqV&kj=+WM(^~1lKny-? zIR8dg=N9{dL*`i4#cnwUfoLIP=1eLAceC4v^zUIsp$_Bk3Cob-G+;CYUqLq4P*Aah ze+cM#olfrg<4l)p|v)9uw}FQgAx-9~;$n+**O>FI!Wa?z_a>YA%t z?v9`cG#^fHG8uUP!APDSWk!APx$U7+WA^eyo$}bx?|)bTgTz0NvDKIB#V1D1a=j*_ z>F)<+2?eab3FP4MEGgRNn1YQ*cIH}JZr@4q9se*7_&i6A_v|g_D8tQV{ce=(%G||e z_}K@MpH!*i*;octc*3ya>Z|?(k~Xhiu|7!A_YuvarXo*SZo+1*2%`ds4}zRvqa)>h z4m5zy@7!vcIo0kbwhh7d{>?Kz zsIIz8VRKU{O=aENi#)dFVOfvcn#(z=SSIaOaU;@^g+<%)ktam->jN$h-Gtz37ct`t zx(vZD4K_Uu<@(LKb~`@hC-8%uggZI??xEwUHz$o_CUvXA2~3;wwdMc>L25)>A3fVn z;j7TEq^UB%1*?%9R}MtKd1rv!E!HwwzNU;Wj)F7>F`$fcT7-e1z-(|ps7bIghP;sH z_Fe7gYp!}ye6zB54Op<2Lh_YX1ruqN?jJ9PDE(v(AU!{6Y0XV6NFw3;ynAq5>-g4kk{*uLn1FQq`T@n*`EhC= zBnz>8sd?1h_Bifd7-ee+_29{!-&+c=N7z>W#JRxp0qPgE{S6Kgpcy}w?NY>Doi4z4 z`vIK!9(Qk0sdYU1pZxG~CZ#!UuYM&#nE?YHWC)~+X&@T&mCW0Igt!9wEgREq&{}}X zk$gX%vFXmk=_I4}E|N7YZ$*>e=wro0Z^1`|Kq9ffBymC-6P zl@%JzE5rG!I#@`YPpaz=9Ps(q{2{hzB@Htqhb_4lJFc|9Lwt%&99|f@*b6K}=$R6c zArJ$!-*O>a&g}RxhxI~?@Ahd|G#AkT`ULg5Ubbg(XFSP7fwQnZrjV_eov~Ym`t+~; z0X^g3=xAZkYoGL6#)f@K1@l$tHg@DP?fVq*X*yFeu|S6@OqlWGw{jELtc_&6?y1rV zOp9~jNcOhn;USZ*M7=nw4ua;Y7zV_@01lfIV$snC zNyWy@DGxaHAUZzSM5xrwzj>SU0IHRAN~CQ>HZ*Tv|5R~=ZR~!Bu+LL(wjYC0_}cI9 zpC8O>-L!1p{~aFA@OoL2AY-z#cA_w(&s{~MZnr1|E)s&Z6MUZ#7TI(je4Ki7kNpGU|v~}3wry8V&10yt>q5yT@JwyuQNwg!tJjh3I5d&PD}7Dw{K*Sv%japV-p|$$adQx zk{S%x@&jO?*U+nL(Trii{a%@VT8}pgn{oBhHaIz1>ekj7aYOar=!3pGIn^t1#o8!D z7EAjzC@JSVNI&VCD>q`bUWhZ7 zv+@+X{Mj3(Y=mgoRd(V}K^(+HmlJb?w!aX}O%_A|ZcMHW`>QZfk5J`hbzCE~l!z$z zoo!ayhyWK(xYgDxajTB>R}B3Cu$bju{UP9G_iqhGI#IKbB{(=%@P2QW&+VOFPrF}8 z_fqj(@T;rjpOuv_N42B2A2Rw5GxJYH7uFhUXls`~n-~rU)kxr$s_E(y z$MLN9{jmhL#os2r)wd^m{@&MCR2Ie6PA2nqu#3$q{ID+DIjnhbm?89FQ#-khXH2xO z@D5zT$yjpaO8jLAG}|8)^R0!X_%-IbC((tXVG4GRs1gwfPzCTYbG`+IxhnJRnVRrC zBc##)OyHH=osg__E_Gu!?Q$yZ&z*#?l5!NTyOJYhW$3y=8Q&s1P_wU(Pk|o3Y zx{bcez?MQ|rmaOwNU80_)YLSV|Ga;_>!mYvE2m?FbL^i-vtpBK0<~>skBrLCDD_Ww6$!=X_^IL+~fe9Xy0EW;)|GnJy=u?660A zwny&7QPl-+;S+Dt?JsgwR_DJXDB#R-Sw!BjnTBaUrD6TCK%G;7+U6$1cgdTB4@)2=I__0OS>=f1#_1g9AC}6r-f4po zKQ2NrPK35EVEZFVtm&VbBpPqHwsnK59M{3Lt*zx3sCN$>20xHYF`kPh7eajo$vn2= zL9nG;KmI(9rd~A*IfWHPCjnKEfL`Us6>r<$l{PQUUs_yFJIua|luvKpNhpjhqTqks zG`d!r6HZC~4xVb!prD77kI?2UwJ$#PMLW%}4x9*(4F7E0EIBDj^k8O01&?wM@=`Ku zxBh}wh)^c%_va0x#t%Us1m%D@`72Laja{#kGNyT(52Cnv?rAiL$!~&5KYs1r%tc2` zq`h-JP7x(we>h5w7E?&|1b!d(coiHQV_LnF#j8t&a^L183q&5(Kr--}zm!7b-d_3% zlns7au0`nVb~89Q*!xjrusL5!$!58Ec=Nn!mtA5l1q~9OfOF_EJ0&QyO=L10lgFc-=0Xlj^bZ#V_z;A5`Jlu_IbRb=4VQ6 zU{n>w6xFNT1?kBk+^~}1J$XUgpm)$+vx}N0TYY!KgU7zzc6DVueFI%kv%m@%qR`h_ z{DCyERPtGYWT1Kxgbnklv8IY#8}c>y_2d`QFo_Y{voS4v$#dFW5%RpG&p@+g=E-sb zEM|*}&-7r0UhOi%7Pv-Q7+e0YqhQ z*J7K_x+1{c_uR4cpz%w~acd7b7|dB5t&b-7nj$L)ov|9#ypOa8qR!<8TOElW$Vnyf z(k7q}1V9xsmfIB(@tWqOHLCloYr3w2W#V z7>Zs{cXKtU)SPd2DJyd8>IfHVT`HNamWr+EBYW``F%;DNhrHwZwpdBixAiRXLvf@n zToXKm0{PdZur5MP#)!TDZ3c{k6AV^$-9yA34hAfz0Yc7qc!F0G{I95e#03=bRXL1f zwt_E0@chN<3Xvz1Wh#ykz^AHQy*XJ{-9SO8F{w7N zDv%OT75ODH7BnUn8v6*^kuP=_oi!U*ltbMrq084(szMA53`h%P+({;k^jSO}0c2%9 z(l`;n3KTkW-gmA(jktl!+AIZY-CDR*yAacIJdXxQyrzDrPh_e=*qFyiU?F7T7#yL? z)$9-O5ON|w_Qaa7X1#{^V<9ak9>9L)_gM|ohpgvj_J2hAXsSmE&r|$?#Ox|#ufQ%x@!| zTP0KLPzg>^c#Iu3-pta`=d*E4G}{kD9NL3FiJV`bkN!hdw(h&X4*^lcZU+jgDCftW z^@PS#WtyWN7g@Ytx1@D45~bC8-&3ePrHpZHOjLMwH{XY-muY}>T2@P=%2TJHBiDy7 zZp&9^ePoqiTAl$LXFXHVvR{+|vQFQd4W%mQOTKxtjs1l{QjqI2U*dIs*oDfdD6yhX zF0I~^$J*MTS$+NgxWv3q7-t4i(-$g@#~Mq=AkLWn9gAdG_!I%f>ffLPWvfG?nF<{# zQQ}tyS<9{&kGD9hZ$Goo*@-plL=+^aVF>9u?{Cml=J`Kx7`Wt^o71QOSA#@DssCXC zu<7-G>R6}7)`#g?UoTlg#*laR+j?Fjjrr4rH4GG|p@?!okU|Y{n*GC^Z31DF>7K{- zFDpDOknm=6=E1SD5z2^u`#?i*cj4!F-d#%77sJ(9r>3s|nF`)Aj@M6F3BFMP<+Q+;4jj>{|U-5-t{>6EgjYNgzA|4_+BBCE+D_U}7)9(_?#)R_}L>ubI=Ha_=izDt_Ut{KLKa_#t= z0-f+WhftR0N^z{`F%lWn01nmeX3@S~Rox|+{&nxyf;(~Th#tfWrl8ehSsMB<4XP1D zMXR60zk5V;waE{B=zj_o@R78Im|A^H!YcCg-who95B`B*#v?`N_A{Qs{RM)g7-GH|>!*7_mNYv~ zbmw+407hQ#^XHu^#IhfDjVh|D`F4IAK#31@<{lS2Gc$NDLekPINd`2MPQGT}% z?WdY6iJyi?2^>o_CdSfTtifd+>Hd9JuwShesgz{+)7^znSP!7S>^Ld%7?c*v$Ks# zKs!j@Zm`no!IH8Yh=KQ|wE3^N;m+8Q2KKL?KR*Kt@B6F6z9>>IFyVa;-R@bAXmQ@B zEaMX`0S;yrP-tm&^}*lo0xdVhe6CB|Upcl3jSuK386$3XGVJe%?R^CtHwYvQ(Z`$N zL+!dKa)E%KRqJ2ThPswGj~H(IltC6H(cXkYsVFW}tqn0-&Z?5{ePTj_QFw-+arl?M z^yY>3w)(1~A`L^s&3?8vF6O($O`D-+>q25 z0u;KWZBAHlBn`*nSi2I&k3BlvE#8MJaUouq$lGCvGVaoPFQl`{hzOI!+hDhwdnZHh zi5znq!cWMHez%rhwwZAGUlz#uC_W`JdVfiI zCmi&(2o9fzgqlZ<$RZtI>;kRgL!5IbJ_FI6afiu&`;(lKg)6;}`nQBRPk(?q3AM6 zpH40^!n|2Rklq#QRo0juHo)6M?=tkCezFN^S|le)iJ%OpU>C|MuVZ9;d(VwgFltn+ z)Lad!7LR^HPcX%kD!2P{X+&+*+_cMvSKNC{NnOoo_aNWwdi=rTJjv@61kj)On3^tk zXLK$su*y+Kjpb5F>3eJ|%~sA**laRzkNnz^kf+PPwc{(;pf| z(qhFaF~$hZWLxfK&icGOqltoWod&x_zqK`>MbpvIvHieD@p=bgI4oEc$C1=1O(d=D zT{Sn&RK3pZdRGXrxj3w7IU(Y6tz(jl5KYZMs@?kMk&Be#=zQ|nv-+|gyLz&0-Wp*A zUuWT?P^ekU%RS3}x?fzp!YR=ZPE0N8zfxy8*<63P#DWnlW0q;GhG413(K$lVJ_Sqg5VxW*P_ZWOni*x3o(kI0k!^WJ zNhwW0k;i&m;;Id7m4$8{#-nu1tIwRbfx~K@94@t>ugU^yX%fce*SenFKXy1&2-}~ za#!E)DH?!rubt+5*M(Q_qr4&TGPHeZl6KvHHj_z8a3Z-lcGgJw8e0mZeK>*Op<2GyH%W1nC>;6xlFlFVG z&f=_RV1yaU?N^Of>ends+4XBwzXK~eFdjMw8S8<=W*JVW0w2+}S81>{I){eSFbxA% z^QGp+Fa&e#T*12Y`(iT7_}vQcWsSv*Rh<%NH@CmO1MV0H6NM#SHwl71o;Rnf_P75G zfd&tI;~fX42<0P@oSGqB=ZYCNzvOun3O-otFsQ~iT)nDn^4Ad{OiE1na;!E>oWW6~ z0_Wze{ImJyZd`o9WOeuPliS|r>kq&~hx+xjb?Z>Y_JpVFy1n1R9j*T~Ok`7C;G-`s zG}{ELs?k{!5>7%U%L6f?Bp2?JXfAVtKxzmNDzBZ<>(=ChPdop(z+h8pU|4tiWWh;_ zT#AMT=sW!R-n?`IkYmjf@;kfSua)nZ)_jz!QbSSN z#i3Jro;~$Fb!|Cqw^vjaL0^5RFC7;u{-BYC+e_4h{!oI|HT^Qh+N@g<5)#tf%nNd} zuCTR}^gJn>VKR;0%R*xPfZqg}1tJlhVB2((?c(4+bds%#N zc6(Gfe%1YYxDfKP0}av#ZL^WL(pvVDqe6?V&im&xcy!!Ll4+#RKO7#vF2TKpK5zy) z;qMXue%ueCEfRVACd|KXU&t~fAkeA7;87yPC`ra2LV`iK@CF9bK`FjmAwQPGWfdhT zYo^xpZ2m1_jRlQ;icst)Zv>|^r%RYsKzr9vQbv0Es`p_z7FFn~?;xjW&xC)!S*=2w zpL$A)uZMn?h%qOxJmQOR0r9*c^m6D1$kkFanL6}?vCGa=~Vib=g<5bjf+M+ckA%WDwFQ* z$^nLBFB^sOCU=tU+XxFw%P_)Y=Gx}G!GBnJcg}98D-u}ArX#TqHPIyoXmH9c@446ck@D@Y+uBmh&Ct|kIyqn+rFsk zw1B5B7-e-CYFw;I@jkg;O;t$b!+E%tHqIr!Sm3DGDB{qC?FhK^FE%~CG~dRPq0idNbn=^Zq?5nsIVQ;Z&v+Kfgf$*-36F>B^f_ClEmX-owtkXjCZ|~74MZ;X zNBN$t(ztjrt*PH$?*NV^nE&L*yOc!|!De~)&iACryzJ-CnevCQwt*=ByOBDXfoFKy zgHEyfnj(!aAWzf2?P_KKr?36tpIGAxZ@!X;{c!LCzC*r*Waw&Q5oUyiZjm~b;nUHs zPWkipRl*bEwcq0a-G4Zq!&!o8NtEqW<>_gnGT(SMpP9*0f-`4x;F+h}15!>EGllbc z(p!Dc{hpOJPeXy5+rpG&R-IhDzz@Yb302R(MIM98dXEn=FN>qRxLs9+>3%}Lz z|F8h5e%bfQ0$RZElot**`dm{j@!S1yjj4w`q-p8zG}6~` zKYPihB}^<&SSaI?I-FB^)6PP@Q2X_+2;99=CcnsrVK=r4 zn{3Tj&^n*p<7@QxGR&>rbfeJogEI5cEOmMjo*p;5J&Nbw zZQo(Y>kIs<5Tq%pr)6nNx?mF_rohI*1c3Mu=e=%aq{&wkim7%o4Hizv9KWeD?L+v) zGtj~sM&5I7E0=fxi->%wn6~rt?B{L$7q_0Z=cUJ#KaydQ>iDrcXMgkCn?z_3j2 zvxq9EGNPOrL%9ckK7iVP@ID=kMdWf6DUtbg-2w$E1`$t=ly^Zfy!-(pAw8XhtPTA=e_@Fp}hHnifC*u3@VD_8b+ZW{X&^%kJ8{|`_H zF15GvC8M*}Z(q(++I^dhTNV!~KF_%yoaq17^1u2f`ol1&EoZ0Bm2p56H=+<*|NX7%$niguRnMcn>V%C1 zcH_P%;*Ul^6aiR#2GrE;B=iZ2&{2aF-s)@TpGrTlNyw6?sksW7+t%yan4nroIt zuhqGs=IicAX0cKxMUa7FDs0MdPgLYRKPoZBJ8q$yhgHAJJ|W*`9Y@Up)`-^O!q%H- zM4;dSjBqvNmlA^<`_%(7we$gF_Lvms{NHcKa)ba0O@#rHItYa6mGi%+v4v@b zEu?OZ;{BzPVNEz12VHW zbe>qx#H?PU87Ys1>F}4ZT3a6i%|r8DBr_1#gJEn8()YhLN3(ipdf@Nio8$w{l$%Lo zi<_F7>I>@ub^xt-{`>vFX?Ik=&2w4~iAH=`c*nKpQyy>UW?y}^qEyV&H^klN$6eMW zXV#fMzd2L&lDhSLG|=#v`S=Ko zS~xREOnn=cISWDGb-}Kpq>f{t+;wHLo6>&ENYc=i7L*`gqP9Br+u+ZttehO+pDVfy zakQhb4)k;%0rKS1&?NNe;3((Bh>_Lv7#FS&4@D$(8SG4c5_I6r1VEn3AA*OW+NoLZ zV{ux}+86pn8qAc8aPj%#8u_N^>V^=CF})9Uj&NM7Q^bP{KqyzG!*ZMnpoKOZmqW$E@1^B?W^Sb9Ru=heFrT;}tLSmz~CTQWbUr znV|41?@uDjCZ{WKez#9#F(g8YxL4Sx4LwB7XpdnqbS{GA$!DPhE7LIu2Bu6u`nYzBs*`?;KQjh0Gw9qdvU0b zM#c+vrP(3pdonwh#YDQ%$8`)=zgn-@4I1w>8C5Qg2?^r-@AE$_O9`v|GggMW)nF;b zx#?PGY)$IgLU~@5eGucUDfuSBl5q$`aqod62TTsf<6CU{p$EfuBEx*e&+_YU4z!RK z4I+&))`s5&*wJF9cZ?LoJ4GZeP9hm22P_C(zi_-O;H8xlYG;auKRimR<(1|2MFQ== z+bZ-43^V+Fd5C@CaXmu1vJ9?fGHkF}?)dif^4!?oFu$cSdDt>6f~SH2 zNqODSh2e%3%j&fR!9b079|_0HGj}^7m(lNEeW{VA2&{T0e@?S~o`VOsu~tLPVEnfJ zwAO3&PwZl02B~MY=WfQ-7k=hzMHcxBju_T|TaovVzWBAK0hLmO%-{IL9H9rfUf&iJ zHx)=6s%Y}k+-q%VOP;$%T`2)R_h!?H)99%id0t5;bFowUbf>5u{aajpT(EOv(t*}gSIhk7?2iB4o$JdD z8N)Kn4v1HUB^;Xt0OQoiN8J82T*(lEt|nxth!!L< zeoZ!Zn&QW;-!PBIs=Y8b7IlfaFvZ8(1s~&IvQ3|usJ)$%lFbdM65p$`_P1P~uXgeg z7S02to4xN2-h$zvl?SrAx`x;Gw*6WtaP0lU5y+tH`Ur9V)c2_e zHqU-(w|oE?;qzlk2MT?(@_ANcKzKvYk$|^Id)Vp?qUwKqNT=mk}GYW0%+Sy2$fv6^Ezy7=` zgTe~qIyd|yhiGNaQRRqyLx7<8Q|r%GJtY^CG{X3+VcDB6N=xmJpxX-D53Fhu8I3^( zDS~uZl)f$+6g-3BAP`3G$U{6T@bWlD@l--;r9=-DeY3z$$MtaLYWZfR-F^N2YM}Pg z*Y%Y|>gtth@h}w)jr-+O!N;YG(d)xmO>qfh!Hyj0FR1I&aU(v9?yaJaSYXhW^RVIo zXU;QX&8vgNDS71!IN^h^wwTaj*toN97U8a1ILHv%If}^6Q}-upZnn|8=4O9Ojc- z5hkS!lWep3XpMRHgJnvE#3}URPqlF$jg0$ir!?Lo3G&*>^FLKsJn=VShoe3Z*BoW1=Ibs0iPVvCNbj=tl`f~cX+hXH=-y0`H9a1# zD$!z1W9)CL1=mDL;7Pv-FLg5sOI>!q@<*kMLjL-hc8V^#yDgXRq^9envqeHQ8rFm% zSCi**RoH8`U%UeiL0l$D35Fu<^`RnjYTAqVa5*!;5p8U(A9`5**gd;3qvoxGTKg08 zSm2ceuDWVYOi}P2ZD+Y#-W->THI3n`V%5)Wav4VHyn1uz8%rQ~v|sFZxrL*Ii-%`1 z!C08eC#(;))-X3PJ?O34@t|YJx%X^A!Zb*(robd6}tdDNdN(L89~e z5B4kR4^>DMkRb9$E3e$*EQHJclG8His%3^^VZgejY#m>h7WmTt(zv_(B(7&VlxAQ@c`D_VXX+$y~KYqjz zycBMyL+MxJA$VN8+ zy?QL5G3kzCf}_->BpDzdQeKBCMF`S_umQLjhMbz+gIEP`XZyyjq%it+t|DhsGh?=`85Rv3BC$s6~1Xa14i}wFiFVj`r ztsNEMJ1!a+l1jbVm@+S5+SIXcEA+Coj3qTa6kPbEsX3Z0CO9t^q!H<0CAU1=n-B$& z5D;Q-7bY;gvU-EJHTuJ4kz${dqcKyPFhEFPVg0&&Q&BLE86A#hC2qJv{-)oT|8mggFWkaO1jh|A6y^{R!hm4Li)_nQ? z3N0FKRN!Hf&urPQaq)N6z;j;>zuD1V`%7s1>3Hof7;I!*c_Ko|hFFCZdH((odDavxf&ddLW^^P3UeQHWa-~Sel8U)K(a284#~;QSg50wapyT z5G-O!9-y@6OSxHe(NKh`BD_z}$s^fED3BpoE`rMTqqdjT zqbWH-1PesXH5RU$c`K(*%n31p>0MRO7;jH_qeHUdOOJ{-K-S?9R1Zg)R8k0}>^7^= zwrfuXIk}5vw`FZDHGi6+{LIoQ$5TB4zq?5NOJ-L6daLP?N;hCbLoj$?9;AaY>1v22 ztBL6-DHaLiF!YAJMInpL_sEURL#t4;l2jz)T||w?1wQCh?vu-P+DP%H6vK>a7vrPC z^Q74;U%?%)LAoUnv6#JuWw0@<_NWo}o*^M3V$fHR4&qm?DnJ?PpNh0uEMFg-D$Z7o zr)u#1)As+c0Qsk1JdgP)3u3JRgZ(&P6ws4rV&3CvB0N>KAsjA>rPC49ERfYD75nti z{vvgJwGc|`StS*#B4Z!$GaDaw>*-&pQVa>7>w0G}s4wP$iHLRqa{`-@>qHRtRUvfM zrUg+fL70;>k8*Wd_gGKm>tQ)Z7O1!Epm#+}OT>OUELRe8a*H765}50cK42W}hA?P} zOM3B>Y9}k-)(7P)euNa@%gs`U(2}00cGM79%n+X!9Uf`@VHAOZU_yXk9}^Dh@kfLx zdbC5utx~)>l4g77jks#bm9O*PM<&=V!meLs1i0rG`_~^K)Hq+Zt7XA&SbzbHma1Cd z*|CV;z5eKQy+rnWEBockQ+}-Ady6rMwxoBHDAa;NGLbgsbh3D~%1{i*?>zR_3|ZBY zly9MN*=UHE3320NbzOW54+mES?B3lzPCNW(fqjUmdyHpium?BwWz$^1Y{%#6ihJaT zz#zXeCT&oa2<;WG=e&fWCg&I@9)wByy+Bel&0IiNRg$&dBgB9=Ir=>O=$QIrkVn+2nWUX_^5XR#tlw!kZw8je!==B z|JnOrE+X)V(N1O`--Ry)4oJrT&#MvFn+znB>ok68bsx8LBHwy@ffYNRRJm$tB`Pi! z`8HmK^6TJD?!6MlNxZCRm? zB$yI-5Sbzutd3 zauUkqaohkyq78P-uGcm+v18xa4s{Hxt&h_dd^z1?4pdRyTR-|iu~s^Bg6Ow>28);Z zkNGhCcCQ!h2L}f&U(hkUHJV(H@1@9W-5<&u(Mfr`x0!c-Q@G01W#Gsp_)$p)Fd-%= zaMqWX%4VjXS|m`XQ4>Pq2y!A|h0QkUe86yADq;aV0ixBIhWOClcyr%^iHUm!ZCd|i z5v8}%sVrT7n1mp-5QROCI6*l@1l5Jds69IWXx#!GlkmscI}wb$?FLLFk2j}4g#CP3 zJPT|$uG&t8cuoIq1w8Wm$Q7ya5jX5l+7k&H-4@7@*)RQeoSj|Ot!NIw!h=r0ZdrFl z+(~NR+Mpd@FeMpL=Jfy@3?Sya^)g%ad3m}4188P2!x2H%cG$gzPoSg&VdiE735CGG zEa{U%x7{kCl@K0;K<;*NPMqV5#RF?%$tdPBDnte$*!}yuv#um8BmpD){HIGN03wGV zR;PQP^u2$oTl)^bCc0}E!Fhc-s4J?KuEmf-8MZdVjt)1ZB+uOW$+}4V9vA7GneZCx zlh{a4Y?W_5LACJCeKXLb&HUi;*chPma{$|K(CY@*`V!j(E^E+qIWpUO<1C{{{!5G9 zF%TxX{_9x350RYjT`0RJYX2Npk7u6gL&Q0)X*s3tesUQcmq!m!9sp}WfmH)ps@F>@ zdp__ys;p|=&3`yJZN4u8ZZXi8=La3=+{U$gSk*k9l5tt=3!DaxZZ*fiu!>22_QPSoBuiuU*Yk>+NGorZhO<4*%97C9fl zjALK(k?a;+^xb`$4pHm=-9qto|mwyIJA$>b#v-ZlHw_3%y*8_|1Wbop?|D!|z zYEx{si79iR+ziY=)f$j}Lu}8gSLc4K5#}aD8&^w6EkX=5RgiROVhQ(a)RLj7X95Go zxYe)4X)7`E+TD^`?4P|Dxk{_p(%-)E>qgOxJ~%kw21M+vm^3EDwB3cO^CW4Xvls1HJM$1H>tUah0L^3$>MCC3KG~Sn@ zTa1fc=d8Sn64N||bnT4^h8BIY2}3nu#Nl0Dgf97RYz=@s%@vRXi9@G&G*jq*SY(Cb zPu`$GIx;xg1Ppp;71Do$DHk&P$F0RSuUHa+mANTu;XRDoOV_ikFJs-2G6Z7=Lk99x}m{sd&GY-@w z_A64)hm&Zt5=n;>Nk?of+0^uq&UKNLy`FoAs*bM?uV%>G@v-A3e`cG+O4yKx$K2RB zdsOlNXu8UO4I&_^bi)OtyBnlLy1S$=-5vKkywCHU zAN=9W-gn2DnLV>+ZOvgG(L`2*@4Kdocgh`$Kg!5_(#y6J4ShYDE+4nyn|?magd_pNbxUI?5 zcM+)%j|tboF>?4?pZ>Yjbh(Eb5e5WW3+Izt|G59f{H4^Bqf?iz;}Xt&b0u z_%yc6-6j7}%_ePNxBUCAZc^k>taG&H?jO$N^tqwKCGloo_tlRafuTeZ%AFC5?uv(M zMts`vJDy7cbK zyDP4X>(CywdK-2-8$9j|*teYgY4?R2!cW=Y#Ui&kxiGDZB;cRW^x8=SM%bQn{>y;|ufg4jtJl=n%WvGhI!#{@4EuCN->uU<# zk9K8xJvz7FHMigOg6RM-BW>7ZZZGgQ4}b6@Z)O@h4wYf!=_;=8^}7ATLw(!bl3&Zk z35z>Fn!0k(!Nw%n8P`;=w^I#Un)Kw~Hp($`mk&MA>~0TCax{%F4yZntOF9K@*D-NU zsPpc3VtIM*;L?aZEWYYaEGzD}VOLU>UW{(V#FPg)TBuDB>pE9lM!m#D`<_7_MOk_I z2K03-L(NcrVg8%pdiY6hqVMU^<3T%!i@zUfI}RH0+db)B>rowh$o|mZIXpd0b^mze zw-dzH3i2?lz#p%`%w>N2bq|~G!=B+vqcc6$%fe$f&rN|g#^b*E#YDC2vudeq=`Nv> z=Izc$@TB^%=se={c$NuY7kRv`9uaJAr4W8|zn$3{wa)1JFh7)ef4=E=pYL}&y#nt7 zGaP{;*eD#$uQLl_ng}N{-gUfFE(Q)Ek1@;#hk~|MDR`M`ZHKT zeBeS;j=ot?q?($UMZ!o~g4u^Eo=b99n)B&uPi!=H_3H zqh-@Mmbtvho?s`PD$xCWIp@qb!5zia8`^&uxkm-hho6i19C^WS&HXO(4dJ&`PZI!E zX>~D1Fv{}QfBhCK-cWWoIH4%~a2^YPEPp)BB{sb605P8Z#pP`$Te?SWUN^_bU)t6S zjXFg|$gN5070kv?jKp}G$=GGMFeO8b-$gDhElGj^+8q$~vUryH5GZo}z~-|Pba&J~ zf^FXS(<9?*-)w&8$Be!AeRXEreP%lx{*VcusWsP>_>S;$u7TK^($=WAM$DPoKJJj0yxe=d3OvC$5RYl>(Rw1=&@9npX`;yUj z4$^kZEf1#yY<}>&75HI&J9uw)c_e)-yI%PkPbjgwYu1@xgu&%exG(IDmw3Q;2WN37 zrzIj~%}O)pKM{OuY!T8%gu0?(1mMV^irb12C;46~!v_s^9PDyRBzUvfD~DGb|-l z|N2pnTHS9NvYD#?9}5^xZyviRcvCpBH`GK< zf~~)M+viBc&SK2rnaS?L>Z>%t*FPM!)_t{D4WIq|L+J5(T~Y9)`)M+3%Y81A%`@lb zNrSZq36RGg;(P9oyNX5NH*5ypC-f_im-T*NWs@hNVzxz{zyPkwq&q8vVgzsDrFGZ9 zMZGs=Fw>P;DfLw$gg8&=&XMJ)fmo&Ye&`^{myU-&fcboTFii%q zWHg6V7pA_r6f-rhqX=bt6eA9>S$so4BOQ%nxheTl6#2saU?4Nejp){kjAw z{iJ%a?Rf_781J+8yXpGJM@9I#B4~Tq;FtCy@WJ z8TjLY`|{0{b-U+9tzqlKr2t6#*ywq|qgn3z962XvR`X?2dZbQFq+S$1Q6n9f-j}=- z`DO~Fk-%K+d|-Y>1P-ELh3=0)=FD zwOvk?gNSBB-^ZKn%!k4ExWW#G_s|X1`&XZ5U6;%=eRq@dGjGG&uftR8g?;yiz_h_# zy8BA&{jyggcslYtn6FLcvGeubTMrDR9=Xzw|NE*V-te;3qvr&b@ZM~3K5X)RFJOJ)f(wM88DQcT9&L(8cU#FUS-=4^5AZ*3-{29eeQ=I4s*X%=cM zZ3w2f#)}_D&ChafZIvyUufubx3j89_ATwX)vQfvP|M5CMbW9uB4+w1+*(#>R_EqLb zQMl7s72-9^qh>Sby&7VjsI3$97j{I5j6k1q-DKNnBJ!P(ElGan4sQ->|Wg>+XE*p5IkHe8Ii#A$=S4rHTz7PQen8PIHmF#eCtL>%(EU=S5Fk zm*sf4GI4%8%U=#QEh84i5K+UPlJLSEnJW;O=wS?7!IKu>&or!Po4=B&O{4kpkYl-zq%W+jv^yyN3qYl6IU3J> zy81>n^M2!ej~Xl@KA%uDY^b0z4Ggv%t5#%n^w>WB+{-3%vJuEc)dCWVi9GZTfP3?Y zf#*psSP#_DAJ4Apd7ELpFT@(zn%!yHQ}EJg0>k(E6K=Wjkku~x3BY6W*$V}MVG!n5c< z8?$AW>nhV1i0B?_|iUV`ABIW6L~tw<5?W#X-;YUYipWckxeluiW=6jy1TW@FR0q>6l%T_@K2NxHYFJHcR^79Mv2?-1H3G$Qw z_+#)kskZa%zGA-T74xd#OB9sA4hQzd`DK18v9znH&js=46kjE97)J-jy$uO*u+Sj;|oud>?sl@jK(d0+#2Fp1_6!kzK_+Jpy`6& zfaE_(a&(Rd_2obEw7UE4Wu5H?glD#oq_;o&Ysf5oH$#F(YqC=&Q+^RxxbtdGtV{Qb_w%hFvYF`{b6ruk@_ijnjR%XY zr9k`m8)8l(^kwwlz61l23CZ0PvC*dcir3N6 zU#7=S#P*pGe9H>FuI5SpQl=8vVRZXOcVR(5K%i^Y0R*=!9v(gl-4P!)R@B$?JZ#oWu_e*9>{b?XJe)afO*w8nkrl;GWsKIqLiS(G)QSPNA1crTf~mb;FHsP;ASmO3hB(T&AWU z8x{AlS#7<%bjxy3x+=-j(-x1Hq}lV6OncQ8@%`(DUE(+#Oc&yvMX%ES9zyPIT@`{< z3l(wujnr~Zb6+B`cc@&9r!*tSL=&I_8YwF>q_k%8&BBts^zHYX*5z%dx0l10?=w9> zG(9|h8?0{uoq>}bMUji^&p%eYPL>OVlbPEfoc39SGjdTJ(Sb*(W!3fWcJ}ZzGIMNX z+X5=N1ak4nrE3Obq=j^O0@z^Qwd3$wN7NA;(oom!tEj#1aKfOu&Xm_y-0?L{URT3+ znq}VC9aC4!%^(A8`|Zt$?@73(LGmL9Y#w=&YtiVNYXUQc`S*D>2khAh0&jL*{aQ?` z;u4(muQ98T;pRuaOUA(u%PcvDBUBgeOlRBy}X@3r}tqkU&P15+-t8= zlIpH?#Ba4e!|M>VDxMpwAyi+EA5p2k{9DWQ3YmB(J1ctnV7c)2@V9;eB()^6AiKbU zoytg!uq(7{y1F@KN@YXSL?dACYJGl4#>}#Rm2h&O-mr0OpHHUI{gBf8dUXnf?SXbEdX=Jqf*5xT%`JPGHviK^)`(48w zOLPZ|m4*gezwE4FH8q%ts+ohJw?+I=u)`sD&z8vG;iFihRJ03?$QOcqG^l$8*oIek zZ|#s+?`M*yEepE-h!;tsw5L9rbp8`{N>lJVIxPytKWl3y7#8>pqTF|GZmx0h<~G-f zI80@+$#pLmv|+i41}Va3?&hG!MCEt+enj~6xa*18L=;!VWhM8Hb$4`}*$?;3yDgPDmF7csph6Eh!?8(tRuAZD6fR+yAUjWCv zP;al8xIJHMO{Ld(+5s9+zs>&5tL4;3<*kcU^R3wO&?B}?n&CVowQ4*Ury&3^W2^%Q zi17J(c*DZmdhG|wZt(hDh97?d;R*$+<`$nC%UCUNE+cX;XDwjLsaLqVltVI>FZ$dt z&YdwQ+8s~+Gh^U!IiqV4?33zPw|v?4@e`aB!$hS8VNY@S_25T6s7> zcbPZEL>%DAe51_5<|PyCdWnh*{3`yr`#}kl{d+;*-{gqauD7ST*|!#Uvymz{0`eBB zGtWk?Kl0~pR~LNQN*<~=7!fqG;--ztc_C7))4Kou$DjPt*piEGj~5_%+d{+gQ`V`I zTfI2BU*#Ebq*~{*@m2AMuAH1^d(Z{fwGVMk2()lYqHXnBUBf7u z^P$)pbv169dpfKSciKMX=g_`!QL=)z550K);^zv7*iilI=1H|RH+J#sIns1YNV&4` zQboqBBa2zRUN9l?Tb?qu26ne(kn-tLw0|5k|1%&|qgPp*o(m`~mPnn=;UZIt+{LH) z#KMH7U7EFcllX*%gdSn@_QFkhDh97kR5+RkMPv=52$IcfKV&vLvdiR3-w^`; z22bPbG2FeGTjX{$5sX-s_r}Awokf|jb zG1y8mA<7B-F02~`xZsGTAwa`5Iz?}qI6JVftg@19q|c#1ILngS-xI9g8ZoEohdgQ# z71j`T9G`5Mwe}C-KOpD`vqk4yGzd?P@=Uf|FtNu3#PAo@UJWo!4J`dEh(i5L1o#jv zXSdBCa`GA4yQE|uG!fH@ld=1a#fK89PptRux-QO+-KW9vj zwD!KIjT|#?@^lc$RWGJWM@{E}+R+dK?8>=O=sBHH{j(J|_Oq;Tq38X^5EHy-qeJ5= z3QdC-uX_T}08^>RL;}|lWrQbvUIA z77Km_A|qi*5#v-`ZNlLDw||3ujVJ<~!oMECFc~r?NFp#pA@)#OWo~Q)3ji|HEfl$F zm~B^EqRRgb@Q*5V@*Q;6k@EnlW1LAxP8As9&3bea=EHgrDio6~oK*2Go{a+jIB%?} zq0SVOTsSne2*BvOc!lVy#z}8O0X}&@E2f$EV0bX~6RKfB<)6j>#{wi}XhM0u12q>3 z3hxFZ5r3NnrLa3ImIYTh{X+sEm%7VcQgnz$ zQJ>t|UZhgSFH7=FHe>T4J_ESNmwljq&wyN$jpN{;G@^GF#rXb*DS}svKWVX{?}9v0 zKi*gP?H-7{Xhtb6-|qLt0wNiflL(t2^s_p-qy^pAFKecmH$I{32EPWD_!`~Zs(v8= z4|Jr6cxk2x(07p|@~BCji)iG~4#DYMGiBIuJqxQc>5zI-;5Qa)RT*^1mGW3JdP&=# zXTKR43dw6kz}W^y4MW*Al%lA=cNRJ9{|$O+jpu)un@wy|()#<^Z+<2rG}2eFthBgd ziU9uGisyAGqq;0e&%O%*5Zr?JqpeL|as}iUPb&!AzTI4tkY{*q`=SoTUn4pU1t_3t z-A+~Zc$1P+p;$PoV=ZSb4v+#yRW;e;1NvDqn+E5MMDz1#oZ#a6kKH=4kkv{Z zGLzkv?P~+`pSP2^4}5-LIBcK+B~u)2p{Tn^n+z56)$|aY_|eVbKiPs zZ0MT~hBloxoF{U;dBJuD-=*LtIWaEQ(iU12sr>H913-QDhKH+eOlWhRbDdjw6R_6R zB^>ZT7A8Rkah5mdOa0Lpg{(Ipe{TITDEt^p#so5&P>!c?E;+~j14qHWWW{U4M^f zO)N6-Uz_P+U6({BVD?gJ>Emxcb9L-6`#26}UcYY`l!{oSw3ANX6N-sMFXTXcy`x6r z+;S1MwthwlI{KMQG54F#S0Oa@LIiyI&A5?2e2!5k&-t)l_;pbvKVX zWAGtpl@Vl1TiPNSy=m4tTV|abwIHpR1bd{MPs3$pdc8BX@(NYv8z?kcW`Q0>Ya*JX zoqLpJw1Nb<=nlXCg-qYQzx!94E6!HU{pWkwcQ&`437MY^EJxth1xnQ40YZ}8oK3PC zC@uToe0FWfE!bqW+3q@-vWYvj8EZ$0&|AH=-?vTishW;9Yd+!1aa~Xn7t03K1&~z8 z1RVUtjx3AWMB}{U1^|y-3Gw3I4jxop%vSNOa9i)_KWim(p{o+vKas)rw}OMHd#u)5 zy~5{4#qk>@Vqa2%I>}3WDIk(K-BiD~c9``~O7}4Vo0&KoNDcW)U9{dgOQWlk=dDb} zKc^j^fPG7gXd$oH_@Fw>beJwy7hTWUtoFr^`!oyccIN6)uPmm|St_)=*}#c5 zas40c5tpUWz%6v(HaJ)Wdq&@ydW_g-&sj9_OV%4VPVt_#_pm$gr;+7e8N=qZ?6hjs zBm}+sYEsFBDqRY(q3^3CGY7TM0NdB&RyAB?`Hg30QQoWjo0F}9M5#_+)4^S)WzAP7 zSJD_BW)7j>B29ZpD*mZ=xRgKZJKbq=2&;Ec=!}1DZHAQcKnTJ)t+VSRT@Ow-Fc%z1 zsIOmg4D>484@-w`rot`3RbD~E-!^#r!XL-0q59|9M=JLRr4KZN$-||i8QU?R!X!** zVimkfmQ%J&v=D)&U<4`rlh)Ai3y2Dn6YsD}9LV@-M7N@Tb^jXeW51S45z2W?q*uI3 zsK0BL6sJ++o3UMvzZD=wR5-SDZ{%nNY3B~=$e}Ta&up!m-0R1G|DyKLjB5+Mo75Ev z%7fvYw;jNN41%L%BMD$G~#f5SqLiReHkVB`FI-Xla6Is*Ek)T+&AoUh$bDz&$nP!OGz5bGX zE|H!`NkKD&!xmrtdU?ng1*kwe0gJ;f+sJ_*^T{64%kaj$O6eVKqq;(JMYOB5{RRJia4Z@ii2o?JGF->_! zy?ihrBdpRy{D+ZfafNXMCVOlZ2rNInLp3KRoSx^KT|Iq?04Ia%ppKmb;~ARs)>+{- zmYC;re;gby_1!Afxvh_lMV-~e27Ss*(XFu9x1YXL$Uo1|2+4B(q=@{68i0@`hV(hQ@FoK85w`02*4NeQbu%X0IYb=Pn;?=u zPu{T7;;E4l^VMjYj*JHxYkGOH+s#D%X|Vp3<~fxup&wEWupy-!xJCWMUh{qaW!b7X zVvQAYID$M?4yo8tS1likpn=@J077-Pz|L}kbhvh4+no`f1vhiI6G z3l+iQl`6T9TRxnOx8Jopo${bYbFV|nXo{FYqG zT_iOE;ItaueChJsF{&sM>4OD&&dAg1%UyKkp3$3t0_WsYX$ZyQ#v5PpEgZwt+_-5} z^t~C-AUTx!ksn4>WN5JjimMIxSTk^D>F=Ng8RWD>BeJs4$cY8gU; zTI+=)y&9aFdg;=+e}?aalECR8x8WUrVIIoG*17YfjiN7vMm|1B#H0l9qfysQ({e*X z^JM&hre!7l<4^leTk{RJ%);peE+{&2??ZI>I^-heSd`6F&`G92;ksh`?z*xg5?5Yp z4+h{yzSpt;>ucS5+$+Y+C<1cQAo0Lrp%n|2yz>a;A!NWBd1!nd&7~`5sNo$Z*!QS3 z_Eh<+Y%I>Wpr(FTt9t?q?+>bpO7p3H20u zWq9C=C$Amo$5*x{6x0myzxdI{|3Z7XwCsoNXTWo(+TB^IJxyq7;z98FvKfAFvu(rb zGe~NclL{Kbf2u*<tV-QTZDTg(~dI__`GK_pzk1`KvIN zeI>Oi?f0tsCZ5&xl2abtzeR^??^m109t-Fe`{y{COnDMx{nlZ;Cl<@x9;>y`xQZfg zpi!c)X=dHWg;0xnF1x5UFSJZssnH8x>ln_661=kjDj-&fQrcD&+!^Ltn*c!5gRFs0 zi1P71qwccEn6=n|KlUi`i=T zOZafYc0?Cfjm#I8$eNmE3PXAL)5&k0p0j@R35kF)!eXg^Q?^z2TfM>9#+TZXMSzvv zV8ekSQlu0!|`uUy_BqH};n$l{;U)w9!d z1US<4LGQlw>>WB_tAaSQM6$ncm$^cj=KMfG(yygJ=d>n}Z_5(P{J=xjg&&T^qb6ID z_mHN*RjxB}8FLL8oK1g23`QXe#;_n% zM0vP4d5ZxAGttnPU8RF2s{sa`q%sN1^~CesERULAC2L`yy_4;4H`|;R$^3)FD_6Z4 z0vMMFj)KWwI1+9#AoXlT!Ym}>1;_cgFTw2~?x>Ky5*h@&sbsFn^h3ounq>7r?-Kk%k_-$wSr;NmU z^rsC{_D1uO{fXr39MhUWyWp=Ay6)8`l0x2)-Lfinvp{Iid5R+lr%5YhRA?$5-(!1R ztTr!*Tj|hv02QC(2PV4DC-qZv-Gj3D=e-DPb55HcsvchU$K4zX7{MgHq~`10B4=$r3+0)&o& zY*x(K{6sREv?|V~aWE~S<(ceXM(YZKD4-#?AYb6?VxM{koRbAr0a_Akf1RFxb%-PA zP2~j}?RFRM?8fD>n!%{Clf_kMT6u0bJU;R*G?>;6`R*!UJQJGydTVzrnX4u~cXv5- zz#KD|-pr>G)^P@@;Y~Oa6(2u7^_#tMNe+^_BlLOZ@B0VmFp$qJXx|2$do77hZIpF| zy3;^!^Ju7@6?rTxxwTe5kDTzz-zY&+ZndDTT0Mo48V7n6qJ+lK+p)3A_NJ5}(#1T5 zod$;xm+YNTE0n^w(sJ63Gc<)aiFz2m^I}Z)H=a*MZC)ag6nHV;xlzv%j#dO~=3Qcs z+I~yVa`~Y;%qh6%O=^rBJR;vn_wLJ(@dV@8M$CEpXH2T178CAsC!E>N&9a^WbBUmd z@Zj&R`3@rn&7X4pz*eE#5v@Te04d=gc8-+J+>%Wz`t7U5}_NKnQ(JDGd}xWRW}cFlDC~6A9p~s2;y7P z17K9~FN&mD8u{U^G3Wn=oeWj_r%1$!R74k5bg_eXWAV!LnHiM1Q3{lA99y?=|I9f>qC6W-o%XxFIyJ?bnj896*W30L zU5b#(_>ARc-yVU9C^atio(v*@QOxs7ZI2<~45avgsFXEmtJnlUx!`&%X(7SeIzG{f&83xXguj4jtiE_J<&$VUW*{bUA zgq5>~H>2KR09vm<^Cw?AJOZRfvyQkxdX1hj^^9|vP}`%gp4oJbv3Zoq*Yt1I%6w&E zk9ZGOw<}PW!fyy&k;+_5FYC~qtbZY)jx%pths;=Z`d175T>XvBJ=9Hg*Y8YzRI==K zJz0}z?LbVk&_rgH@OD>3f61%KeuaQ=BXwYD`O0y5L!vp#bm6CT>+_hpM`2_DLVcblB>Sx=HB-K_&*pqyB;BzP z)MRBDOAZ(cP-tU_buHXnwbNymqtdBU-zz*pf3=+SMoDE94lr{nqb< zq?Nn8VsxXaLJ*+P+mX6gGTy9pv89LQDz404`Q+*uP97Q^1+*%z)Zg``cZl1+sYjhD zTlQ4-9*LFy(&bNrtx|8LxW__}bJioT{5ICpH=V_?CZ$pr5y1MSKt7R1JC?PO37)T) zFyd#lcmrH!Oq{33TR7}lSMPv(~9qc{!Y!>7mY)|<;C^^ zx@SikZ$vDy$nlTNSWG4}QIG?xn&_C@O;Phpe11odKFz~Ii12#{_Lhci@(f>ZPp7Uk z5Lm@=!1u|BlIhT5xHXCVGpH88sG!MCd+N`1J(W-18BLF!=o6ijQe2Ay?mL|~ckbz4 zQ(wGzUFe&8w>B7Ts&u8GYo-I0Fde!UGP13#fZ7s-wJ(gB_H7Yh7r#=?~tp+{JY zs}Ng(Wu^Oom@I)=lA@&@9+^d6-KIXB5r2u$WS?5OkfhtF8%oVhvnSUAj3C69)qOZ` z4CAt9O_CVOTrm?`q&&nRC|fkLur0V^7zg`%n4eW zUH_+Mh`wTu24R}I_$ej?G!-Qfj6A4&(4_grhl5n}Al~6RkXrIj|A``9y<#h(GIb~> zJg-kW)VJ>)22O-VZmwbd zS?*n$^fEo~@x~XmB`4_i)F9Oz);}-oqVC@##;QLBH-Q(S&Om6VT8`Jlkhv_Oxi?3X z>o$xBge6b^TQuRg1se&4S2pBytFSZT*2Ew$mjf;oR+c_$Yt3)5`Oy>^H0AHdA_b_@ z(kOAKGPVo5CQ>u_3AikaBoIbp{#@EC@H})MGFzDO|ER=cJ_2L^-~*K~HkMjraSO*F`nGbLk#_Cm$={SKVLYfE`VHRMUR-Um)24hN zmX?U;&)qe5UwFb97`lKszaq=MYJj3eJwg)l07j3%FfU=`#miA5rB9|Lp7c$nN02CPvUuiRNet&6BGLTOoWRrB*+rUz zmwdC(E^WVDZvU0Lk%wy-t4+5~RowR)EiBI@uaVaTDydv7Su*GYtP-xxl@v`U45J=g z8JgZ8_WMi>(U93#U=%X%+K(o3)egZO+%c-R|e3Cf+H?{wBiW1Zi~r-oW%{1 zJ|!{X$1{)RmHf#g_RDe91faMROizP=Rb1py5Un5!dBtt~^;T$csVo_K#BRC03RV6l zwo~#UICWm_BQ2Wx9=hNbTZgi#ADx9xal9bRV=jA2@3tgNBGP23yu9z5491i`hmOc) zkkc7w!SEueF2R*u;HF(vllfceJzL;9-tL&TXY#+Om9{`PbW51+ z$d>4zaf{{o(q2zj<`5OXZj~OD8Wac{&8 zx`p5z6&ky_(idE|GVV)wWTUL%GW^oT3H3mKR>wV$`%VyxuA0$?v1yD>?TB?Dqz$|b z2^h_e!@19UHo%3ex^sT@-39LJu6#*1uo)^+&n2LaNHQvIEu0&lT8BIqjkm>8G{?7T zvowV1IM|+eF0I$KU6gAs4nNREBZcU4XIxuEf-M>aHGSl-b@gwiq(O2~9LtdX+2V;;*`#aw0U!<;e8D`9~ujk!0oqxgJj%LVD03>|j9#efBl$0_k^ZHMQ-rv<_t~wD@vELsAMS0Q5^r(|4ir^}3P!gfEEych zrJgIylsrZ{cnVe3v^x*s-Rj~m3posoI6w+iUwoKr20tGoL3MjuQw<)^1XbuqL5t{{>WJ!PJvxQs#W-*TsU{% zg%SV$ic@uo5>pKx3^s?DOY2*yP8VXw>@l`-yC{jt*tT6r;y+kwCUZ2|aA*Yy7=yx4 z?P%{#E_Xsih_pwbz;xd06lKJwf+@O{d2A#9!8D7$`a8m}cG_7q)=|%0WGl0tJo5ct zcYnt3?UkVLg4H=$-=^LO z_gqf+?z@42NK0pYoF=D(*vW6huj~@?dFzemMj`KR+|C+5BJ7!|8B*ftgOPC!vJ7LD8|;?>LeJEH^(wvCXuflO{K_<>7V5Gkyg!8mRYthUO#i^`VmYO$PNl$g zyJ6rJ87Y7{grVcJ7wZgy3Eqb*e5KesiCzqmGkM!(^v0viQv8DW?67}2Eo5E-AXVRN z@K!U(kRd2Qog2;l*%5{;7mfq?r*meuTQ}_5#63%vTDtxBH_$eUu_ic4W_IzjleFsp zV*%6X0zRyfC{Rq>XdGnI1Y!3OVeMH?nD8jt2Oe8KGM&3St{XF0Ja^-sw%!FaLcQqsEoXiWSgziC9d3=js$fTmM{RRuA4xM~-hH zlk6Koi%gxfuFiRW&EtEUW^dl5g9Jd?cKO%{qd$;dhWGz!?BK0pS)A!dDGVJW8I8Ga zW122OloiQU;m7S|_bj&``nxaWe_7Lv>cp)-5`6Jqac;b-V(#5_g>HiVEe~BU>bSlLs4(Bf<9D=kUr>tXvXalQ|bYg30;mPlwjd(6TX_yay>Zwn!qh2 zl|^spbwO*%i2%Iqh*Kb@cd8(M8B$`tetxc#zV$G=2-H+3AuRRSz4R-sFI1ly`YhFm9ka1W&CmLk}uK0HDpt`WTm0vxL~cCD;uN zxs`J=Ct$$29uKIzG}y}VvP5zE{~SA4*y}dTQV`V&*x>$J;G|W36fz&0a#3&xx3c;< zt;RI|hCmk$_F*Kr_tGP5EY8$lYOwkAFXN25+Syv38;O#U&bGA*agS-{MipTP*of<5 z0T!|2dPzSX-<6Bc`j3Ly$v2FTF?S^5xQIF*0imkG)$-GRV_kVoBpoh? z@xwXclDNI159IzYR^0DlsmrBkoQ_|_$F|!pS|fSmO0XchzcO~G)am}wh&mIF&5PGo zNrBv8n0EV_W(8L-jdHRTVyug%R5VYVdEi#Jw^o<7Wtyxl5M#Wh?@_P8Y`)kPL$l_R zRZ53UR*oNsvyTPduAwAlaQMXHwpeXSv`U<@jBzNUFA0*$FHR5kN zRHk^9{2=MS(e}0g0V+-Rwmgjm!0t~QM;9KZI6nVSnKVW7O7qR~p_ zcS1V$a}LESjj`v)jTs!p2kQ6i)z%-)p%a`d5vacveE8)zHCTgS_({q9r}HQs^__4r4A0G$S}Ih#__9;$bPF4PzitLC~$R z*1X=mkUWy+4w3)u2)@b5O%mX82c{bHOhiWtmp8>`NPEDP+h;F~8oeM?U!F8Xm>(K> zT(8q$W8E3>ivV6~@9~u^S(TKFP}m`TkRrL9aK+1LvkK94Zfal`+16Gm|FgL~fhGN; zO?L;Q?Me=+tqvNbnyIuhrRI|!sVrU~w{@te!a!kYcnXZ9SwW6G1A;t;FggC)PWek! zWMXfj06PCc{ehneAS5>N`OTZ2zj)6fa}DmWC7+1!fGpOye-=2scvktA07aTJ+J|zT zGOeXf#+aK#*V!-nk~)A=OkwF~2g{Z63uH@bV6uBMm=MA;Ij&fBDv&m|)V})#9tpTi z@Wvs855*$uG~*hbaiQimSYQE#Say_+rwddRRQlQ0v&I3#x`Up10#z^Ean&H;8k6@I z#5<)4y8n&)qMs}Bo6(I5ci;&nFcGAAEN9(Jd!Y+x_3j$D5Nj-l6KYd4j zByH*8+?98By_;@|4CBe&zQ%qw>Pc8B#;+s>jW0|6ri%(F1#53pMC%OL0Wj?9`6}Nx z!I%Tl7dC8Nx|v*OETHdZ>-V=X1;_iEeLG=MF$cz{3tQ@zVTeX4^K~t=PP%J?JmMUyf>LR%aBKXsLE$<}pjASggonUt*=EA?aN-H>7vCqGJ98&q4(>HaOEY zB1KW@a!n28)7PO+hKNR|qM%-`=_yb!+m;}<(C}pF4_cBDvuv8->nO-6(q6*EPZFzA z{ZWXpRDiR;Rm2qSVw3G*pDxKcu`F5mg+C96oI_&3izo2YX_rCur{Zxf0Ej8!^>{6k zqj0{juccxFSCfUij!WoNoxVH|RxZ`&)20dlIQ>nrmx(KbY1nXN=ZrY%53son9&Nv5 z05AK#(;2f&T@e@p{>b3PrJOWEIUWzH2^rD+)27d-B|Q`jE;Ih2K@i!8t&mzws0W6) zE*Pc|IUF9`v*_uE5(M5kFqMrrD3n~^1OC5Q(+&`3>Fo2BgGff0-dVhwjO>uy9W7Y} z&hH_`j`2>=XG@wKF>+^0ghWH%l(&-U(jfwIL$>2qTtRuRAML;d55WENz8+t-9?$1z zRV)vwf5NNBH1+dZn)*ZPL}R*9inR@9r;^AA=kl#m!t@ip-%i+@sm>(;d$Mgh$-EkH zP+8i8l)_1yI2U5isWX!r zg$DfQ=Sn;&`I|<|AbUkGwKw%`Jt<{HtMsN2{Y0SuzL@`xmQT=h$H37hY1-u#pfBlf z&%IB58*ytXbmmf!XRA3y5tuM(rz@#a8mY4Ock_!Fa^wZx-#QdPi(c3ff4n#d7U^YT zM_@EoDy6Js=U@_dTfC_-*hd8cztz>rbqNK zGX>FeGyBRAhK1dIC5BotK84@4`8tTOB8lo!rmC_`gy*JR9e)GRpmpfebJO`(NkV!W6*~5UOgE@=Dv2iSgCe{!>iR53p(6Mtkr_HMoldr( zCVYzdn7JE@FxeMINWwzW^kcpsQ0jNeb6ik67hgQix12bn_tZULGk5^oV~|IMTC?>n z_vFlxy4CWZ4MclfkvQscIizPfEkZ+yRuV(YTaI0xf%HC7e>;7&_C!a=gifu5InytS zvtbu0^-1lJAY|8?l_XRkbvCZhmaW;-Np^olsKnp_V9swule8Lwu-H#2OrK?2hM2M| z=^Dd+pMa^h4Zd}DlA;S!QLy4Marz?)XUHp^*T|no`<2T`ai*e*>*C%T(q)K{3gmwT zNOL#K*4|VXYD}IUsYmS%iK~=Oc#3ntWA5c|WyeaNK`|e^O84zr`Y2HRPqU4`)}8r} zuSk*oyb#Qf6L6?^5Aj+U=37a9w0Gj?I}dbBl{C!rDiBc-Uq^u1l@F80m0>}@YeHgug(ND`Ui|7;fV>ddpPSn|i;r1#&lsQ@E} zV&}mfDMX9pgPe~C1Lfl=ueqkGIp6H@Nn@jQtr}UwZ20;!<TJZS|hKIAX!8FaJ>C7=In($syq`N`7ySqUtLApV@8>A5wq@}yNr8|`F?h@%1xO9E%?|Hua$Nl5( z?%BI%=bV{&=bf2>%ia-XdH7K^Z%5SZlnU{Vs%vQLubJ7nQ(-?P$~F*j6@N-QG`%Wj zqw5q)y)AZNcTV8DmdlEyDS)#|!hEzuCQC?yUEi+$& zy|~-vtA_f1&3I+~^OqyT4QvEON^qrweH23_IzO4Ry%Le*;g`PKRE%snZ8N+XAd|~} zco-4_wH@*|(I!?;8Y`nekDtQ!RN4QM82_eB4Hh2Gm>=`f-j)fn7S!1T$*YouLUV5X zs$!f8ESziFhG3B^9D`SmH>*b%BWMYI^x4YOs}Nbu(9>vz6i$38StfHahN{(4_==kpF29(B=`@5!W! z$3H1Ryf;wx?P}NDGDIU%f`w}H`mM>qRMaGm zz<>v|hWCLjq!PsBjOgE^gISslux1<#x`W?x#pwP?XssrA*#48t_W$~$P{91@QXs6oc z-Ru{U_AA#?>*T~KI%&R1;^n<#SYsgiLV2oA07)En#BPY*mfChCS_5L$-MInVxIv-n zeHS&D#Y@Gu_{AK=fYYuAAC-sFXizMU@+;v5E7zqm5c11kiLcNM47C|&S{3NlrA67G zz6(GAqz5b_4{)f zH^1IKDs@sL2lKGAVNXU1+P1ssgXO)6rz}$_I!(i$Fs+n3ruGu^n+Epq-}%DZ$bq{x z4g)t!9b24%8txAb7E+w5;eSFZe(6o(tW0^2vi3?`DmgJJf`IsY?zrM1>OXM=k84|8 z8q-v^(I&LPq!n5m*k85lCR0^;iKgq`)r{DhsRmcx>?SVX!Azn-tgL=TmWXqpy7@ID z%<|>6^+WGn62TFu2N+mRddply@x`MANqMRi#@)Hutm0mYj2z>yEsTa9OF0Rk!%WiK zUJ=OaKWklDXXJk*mDnDM$zGVefN0leSgu8|!b7Lma_Zt?Jo0BkPd7)upiQpwgSPSf zJ%lLy6K!Wz@i-ao*eVTHe}VP!q1h9M>c0`Gu3(gFchX#>Wzf?b4XVn8jlvV75mef| zJipsn%}N|ONQ%|^pJ76)Aha@nj&kIxQLZn4qKeAqjgVfjh!(2MW2`4< zEVi@A!1<&fWiL`g#1R=V!~ol=p96-%l>Ce>RYaYL^Ndgsat` zA5*qcxvBQ6XJNmLTBT6$oxW8-1L)t%kD7|pAt_OPs4(i8+N&@xDfeO^^ULbIGWKzD za6EeM_z4T!u;aD9xxbt1X}?V#el#;B8wJV%vR2DVaOTsR0{(>9_HZ=Y@OfzG9=TGq z$R73RcQmph-W~CB+EWz?L2E}eeO@oy66~mt%WG19)_C|e)a}dEAA^oB_R(#cwWjoM z=qJ1r+R^KE|1u!^za1j8{ibHYgcS-IRe7jc-2T~dZ+L~)8qt~HvYJ_Wi9a6jhwO$z ztC1G_y|nUEo2dY%rDRVi5oTZrSsp_0X3NRb=M2~Olh4h22>3CXQd%L;I#4gu!8c|8 z)eS>4&_9{vaQl7cp}eYeL|&!yo^iLkhvBF#A1-}r3Kiu^j47UcTHWsT*JtU}1U77x z3@XtWob|TT^pj6dGsPElNd4w3do5L?LF1%x%~k3pBJ#>PeFN#4k z-%Um~kS)M`my00XXjHR}mD@d5ZVVHB`^l#4h3cy_#STUY0`ru%qgX~1%LLqHfhNOm)Uh&EWe1pWCVpRdp~?N}A~g9A@lnwWm* zOP1BR`CwZK!m3}fPi5MVIUvWi_gpr9OHZy#K!CJmy!+-!?d(lTv%+1a64G3ImDwCY zG{DXMJqMjRI&$0C*PEdD6FuevvTn_e+D9*=5yNsr&Wj6Nl!xY@p3!X=@|XOC5I zXMOm0eCBKM%5Opw+&?I_7p~+*GCk~Qn%4GY1HlQhcGb`HRFt4H`w^Y_ci!|pcMK#} z!Yv!~LEFiva9ZU~a6l;Zti_9lnc1XIipzf>5xrbQbGh4Rdm$IQ;*MN~^K^(SVCb{p zm2nK+eR~kkN6dU)O>9!yd{L)tjKC04l6i4fI3Y+q9sT*j2dacirHLdJ^{;qpc^9Pe zk6)j|TzZH?m#R~7C7JI#aSii4qOK>?hIkCs>|10^3Ns>OCMtRNasSi>md?9XEDJga zNO*t}4D=u9;Wwln>Shc=%-FlURO(&^ncZ8Dj|%9hs{NGCNe5V-k~W#ty&DmtGCYXZ zE6WV&t?;HSfy!w=H1^Z>&<4d7Ly0i{nIt6lfB9n_;#oYv5quv%W4&2vFyRt34tIlF z8NzGxW^VKsce>@ttih{nUrwUAsF;K|u^`Rj1kP&8bUx<{&Iyr>7{y8&tH9==btgZfNIdGo~PzQ@t z0^;w6;`a|1fBa==?0=98lW@ZU4Xw1Q&k-8fn-vlx8+>rm5CUcT*B~uiCG@He3!i}C zH7U0p7=aKest&WO3bd10`xcR3ThZa_hu_ORe>Qf0*l3klUF%N;prp8A7M@!KoLun% zJ&A(N%jI1XLbgPW-##x3)~I4*L{R{!R&PSGW;HBb>OMQTC04NZy+yT!B1jzm`E@Pf zn3B?u_+;@O|5qA3{PO%q6e24yzzv9xR$;;z6ecmOP0;|F`F;RKU3n-HcjP6FchG-{ z7ofQ?36uVDauqM6_LX=#wT(M}2INgPT75FFJ0IvI08qSm)I1oNNd%-l8_Zvmz$7`2 z>VM2~H)4oYU5Qf=KP#g|{F_+~tFw>&zZz_egh=kbx|zB=M}jO!{t+R}>rwGnIm!Y9 z7XotUy_u8DFq0uF=L;q9+75_T_$t^8wOn7dq`t*eYHclV@`HI6lWfPXm_6{u(Y`gm z^&`A__@l7pP;17LAhwI6deKekU zohBM5D|qj+oX}U@BqsFDRTiZx<2rODzvKSQi)VUfvdAH1Mf&bZ&!+6BT7!>lnw!z) zB0XdraPzsN647&3B!4EpZHsB(*`1C5J1q+qABt@!vQ*MkQNu zxfTw%n94*ZU-iA}eHkQILA``OX4G(x`dlqA4yr^wfr8_$z@*wN?CDFmobO}J=cJr!{|n=fvXMQ^c@ zL*0J%bARd|iw%%l&G)LY>bChxC&T>K)|+S2m6`$s`i$eFdPKIo6O`CgUcxPA-wO0( z{wxG<(*}kDinR*y-eawIHy_D>?{wi#2F@+l)k^~Q#Yktr#AB<>AqGc0(@(&Yy` zoq}G24*gFP#)USoo8Zfyrkl`Wz47s0VuOyS-BNvQ_vPz2$o!?+` zs})MOP(|K(f*wusTAcXb3-R4JKh5%oo{o{PyPjg}jkj#&Z}pr<#rp8Q4RY|=1Z=I? zifLA_A@#;I?^}9fSxK9}n5lMpFw(}u2}&P9NVz?R?|ISpX;_qkrv(`_+Xw6UJur4M z?-8{eU+z!$=UXz7JBv?A^up@9w8a!=paqI{Xb#Sco6`MwxAW@n{?EVV@+JaR zUt4O^aTev9Wfhb}iZ7e2%VzOZq5^JdCrbq$mXo1O8`nyc!sSg~m5c7irK7>0)Z)qd zzw8N#nqV@&8W_$J`b%p0hd=+P_%DNywO)Q6#GHuTy%1Ggn0W>)CeG$8DQsl7XnE_g zTC}U82>8iAIanTVwq@yl2%_-|fhbV=JnE#lS|8e%Y29@(t$rb_*%{*)S$DWhr3DwH z=ns%1LzPQ5P+C|7(={21K!W0y2AyQ8xI}9Vp~;(2qW!h^S0{OY%!&vR&a)H5oO(eO zg=$5`(F=1gS9#*gvr3OKDsFu&3U0PIth53ox2109Gp z_5&$%s6>HeLpBC90Vrt*=s&Q)?Yp}ykIGRnNIaiD`CDiHg*(gAoJ8bB$cebFwi*l6c4DXJ5xJ!6!lZLfVE2Up#84Jk!Q1vLgth!H zYo$2K{Od&VsutNJeMjJH`Q%1YQK97p^6*#D_JwF9i)gIN=@g zCrdENW&*DpmAs(*d@WtsBzTl~=!<41?Nq9g^&eC(X5Ku?Dh*_9zEOYs1>qh~}O zbiZDHPu{w+zdHe8WPB1P{oESO^@`E41gV%ZN9!IVaDJ_9$;Tc`gwEtQd;2*cLD}8Gi}={5&K{ApehnKDfjenskW5j zoOi)UMGDEDB5j$eDaKC-P#jku+=aAOfgrG~x-~QRR0ZzY-Xfc04_WMd<|0_Q4LJw-!Yh9YG z>|!Ca`CP5%_TV$2b>WwxK}^iRd(6P90{I-;vMypjy@d;)rMKZr@yjI*YhU4DphJ(1 z1w#0g+eTJNhBc=KFQFWXiug(LaR~&qC)GQZNPwY3u9NU9a@qs~tCNZ}WFnE>OQ{t3 z$dE?yO6g@}cQmX@QzlZ>^Y7;4l4s|&wHZJV0=U`!DG$Us7a!SO?Bovz?GNhU7?=!s9^*pP?aI)d~bC{5@+M0gfxF&i? zGkBijK;r0s9;EVWk_j$HNgR(lt+9E++^`67Ii3n4J#Pu5t|pa%mi2Ts6KSMm7#K-Y zk;r|H|2(x<8}6InVm;hJ?o4yaj)O~+KXG=oe^&;%{|vZ|B)vD3kgY$RU)at;Nu#t4 zkQQoQYb@bed-+kNc&ik)prIt~(gUw2iq(RP38FiB+60<3U2`Pv%*$a+%TIq?0wfr0 zZRZy(WMC|&J}F`a@<#6Fy;pw(M(4fpE4Y-T7gLfPE_%aQ5jfjHNzhI-IN-k|9BL(H zR19LdO@b#!pQ(|7U>`)tV+A4rqwY+|K2lN9`fRa{f^N!%ozAEY!uuz zqXpq!O0;8(jd83e?7tZXf!Ok4!%hv=--261oFh?HcSUhlf53YE)h)^JK%l6a?Vcl( zki`1q-CS1I5ev2c+j}lxk_s+os!RuSc9_c%BJOAACnMOe08+7JcsyhVIS~MEFeIo; zTURaZ25@bYctN+n8$58>(x2D-{Rlq7Sneo1;PwUnKn)zF^VZ>dNkW2`+ZdLWSYUZC z3d|Ftw_KLv=p5}!` z;s7c!Jh`H-WwKa-Az^Xg?YzTA-V-KSBFjHgG+UK;7J{^oZ5~OGWH$Tc5HgiLnepuv zuvqYEMaS(+Nu?Jp=zg)!^mAoT!InG3)jcEsi$Q~icR}95nR<^L#ERS48c`J4 zNV?R`=I#dg9@@!#Pz9FV4`Agn+EZAXY;|{!2LRpa4(yQ&0k2D_*cupw2EgiNAs(A3 z1kPu)UOt~5eNxx>lphJjO(HWc;)gxkSb1ls_3M-xd4L?{pA0os@hKdZ#f8*O+XN^; zU?XOr?8Bcgg77{EPMNBB1E7<^>h})P^EISf^vzAt3I%7c+5lzc2M%+ zJD5B^zvR1t=gtM>2)7B+qoUhu)c$rmp(EZLrUO!#w93gv-X_|O9Pz_D5!E2+A&X-- z6Qz6wuhR9|uc%C`xouyfN~T(#T?4z9>n`||=Q`qN^t-uZ9DITql)T|XA8N^x&qV%3 zH>G^@I-MBM1zkDaidnxb#GHxn@AK|w#DH;;!WLLq5!PAL{i&G3r5v&?LH8+2(w@G> zVz9pxG*|yQyW&hX99JGgK|9+po% zJN_y)trI(fO#Rm#01#3xVj?WSB^hPe%9tjkQ0C&U{n;>|Tn|wyoop?_eAirAiVp#x zp8U`NEfZ@gLN`k59DB%Hs0ab?p89pW{1K`<$CR@#hJM=nIe%u6 z>vW?YYh6?(vl>}pms`T0G4kY6SuvrFZY`#BV3jYF1eQUUy z@Gw=z=ldEhNJH$>!oGgB<}+LlJI3 z8Py^}2Pu@%OcogvT?WmO{_nY z9&B@~{C+XvtrJRyGf#4@agU7K`%+3Dq55*^qzQQV90zX;xfS?efZtuta<1j^8Hd%H z_fu8+9T_FxLT(z9kcOicrDKd1FJv+0NV;Wo&QVF_RC!aZI4ou?d(V9v#>q;j=iY1N zQr+*dgL@DcPw@DFm>Qk@+GEiu!Hsj{=FT5Y`ot8o%=XbOy+TV{Dp?j9z04d#Zwvss zQ!rqni}GpokULM1PoRQOag7aYzNvBin!EjZEZELv{r1Uc%|8tlgOQ_FInJ^W+Z@WM z^UZ8?uTHesnr>UW+WFx1$5AF^&p3}MDws)esR7vN=viIOiIIsTt4j5DUJIIuFx~KB zJPNbVgg`z84=g`zvaO(+&DNWYFy!RwA2GZLU*scGG%kqbVrmS(O^ukf@K)z7ENvk0 z*z=<#5Ac<+Jqi2^^yH-1)A6z$g?<$d3+KiE0S36;YP;eJixGgF5Q#th8lQLHMJ?jr zcvOdV7oKsIKIwn%rU9DeF9Jq6y_C%eWwkYgb)F_{q@>t2gJGdLzouUF3A= zhTV_hB-+8};dSNTL}-ADUIJ@@+Sdp$7cNjg$t1~g`(4c!{27`YQg9~e;zHA#_#`fc z@}_uSvstX#gY4IsTTW1K!+Nnq+q5oSGPn75B5VU zI6UI~PbUI^5eZAL=SiPZ4^0JD^bjQwC678&7=*5EbQ|QI{Lo%0{J~ce)O1I~XAW|6(y z`rw!E?B#my(r$K#?(mCm*R%RQ1^FU)>HdEEOQBp99b1C^12#XAxIy&j9RyIb6f6FU zM5!XB(|L(OIJsZshp&4(^vJhDm3OmgNt3>T6)X!{myk#c%BD$(F_CW(nxWZ~4c;Re0+C;Wd` zsyh3>Vpti+(GyY+YXw*Q@7Y;y)+;c294^nKJ|jV55` zgW;35tsh=G?GjSSe+LFJo&QbK_z!yWNw9JqN|9id>hb8+P8STIEeZWEv1w8a99#0f zUf$eFsh@C*D;Kq0n|BohHxnT%gz@2JmSXjlqJ8_);3Mf1RhJ3!#e z^l_J;{?5LHD<;=CErbwe(kTST^i5mz2iJTwfSKYH1w8A^ANu=@7h8`PhA&#|tl%l3 z_}kmgq;+La7epH0}5TzsaDJkm=TK?_nkMaMp0HcouTM02^dAn0>4|iZ|dtdC* zrii(%nTs>F@@)6Vg6TK)IEL*{l)q~A2tZJn|KrS)j5Bw@%kI%e`wLsseG}!q$#sO+ zH!^IFdo{d3&CpjA9Rn0Wu~K~Zfrqi}2b#Q@ z`24*7N&B|Q=3NybV=OHgagCzy51voTHgxtzO!=O5ic0gX+zR+*yC>Z?wVFty4CD;F zDID}nGF0C@%)XVo@$9<4Y76kg4j>+BTiBKmd)(NO#Jb9J|J5NF2`)g{1_i5ep^NmT z6Z{*ajq#0va?c~_^|e07EeBi~F3wL@EJ?-aMHI|xwEZ{_X-@Fo=TG2jqyoTS$t(IHAhc7xo;wX(!Ot^- z(WX>~=I70=58T<-EJqDqUfxeDj9v-+n0_A=s1rkSTi7CU!5AEiPPQgr-5bA}ltizm z+uM9Cx>fX|ILYdv!wR#(2*B+-t)g#nMPdHxmXs^yxg;5a zuDaLM0P((_lMET|y98?6yPX3moR>|o=)d}fMUC&{?QL?yJ+)2YG~L*ZST{E|73gNj zZHxTAKi}Cpx;&)23NHE7Vo30mV;R8>C_RA%4lPMoBmy%J^nIsrRt8t(T9t?9Tqu7v z2m{9Ig5@xkqaUCCZcPN--d)BFuYRMJWl@CYQO2X%ijE_Gx)vb;*IGC?qAnpW%fiKv zq>AJIsG%eq9wJ`iv7@VET&+ zg3NSa90<2x*FT3gH~LI6%?H5#PK5p>&Ch3!XFKVj6y)Fs<5(4?&H*;W1?zn|Hvx8L zmGttU6?$Bnx_a0#?5N||hqmXDkR^Q~m?42e6i5zzMrya`mpPLcn+Y@V1?7wpb4X}# zYfoxsW|OYn9&A{j$V&7ENq%jBkY{9~!? zo6n*TQSYHs7jz<24L!7AbvlxyG4kpdn1c~C1t$(0V}gJB_HRP6N%E=p@FS^Ht^KC> zyGbm>2c%Lrn{8`v8Kh%Pu2e}9+BP}$3v;1 z>st=%Yk89Fwtr%fNa0%9}bmWslI}rM54?bC> z^_SEb99GP)BQnjA^Ir8B+P0GVK%f#!{sdG}f`XVRP%J3CpobU~@%*EXLMV1apkF=- zP0L@OZVKsawQV-ozmoY5@^zD%gM%TUxeN!s)f36JJ)(&)oYMpQ^)GS?0RQL=y>y?& z&C15K4=f-o`R|Q_&=Lod;1gX`;*Y;?fPqg$e#!nsF~zeFZy08p-yj;}L#*61bcrwF&2&X^LeW#%iGK>A;P0l8DNDw5pCj%mC2ewKQ&3sw)cC^1&xolc z@6z<<1v0d#5P5UnKV9pS1B<0Ab9}k$RXXWf|fO+VQQx@3fOVi1XGrgUqE7g z5|r0Rj$E!FOaeBg)zDj*6%8PXugh zt+)7+`=rG(W~uLbO=_z8!pF^5z|8c5fY@4R&%kJ25oYOT*Bg#H*L5B)p!@s9QKz55 zm>@DfM=gI*N-J62gL;XtF`DMiXCss`sDy`mqt$(LcGbPB3v2W zfpa^&jb2r|NSzA9`P$(ksx}vr6}rZ%3U#EMfMsvO$zd!P6fSIyx~YR-!R@f7+{?u0 z^w1zf3*pwk<-t}&*6sDQ2z1_5(Yvu(j=PDnk+F$`_wt0F&d@8yB^$6l5~Y(H zl`isOw7f=w>|^ZgSuK6*tW5jckM z5bey8GSIQ&J;zYKI6gNy{wHsolpeH`+geHdXHSc5xi^w11YbkH9{XY)?0Z~$kZsuF zRxS)p3sYa%CB$;4VcgcVC2(XcWRrO4-ETc6?ZJ+V7SQNB!F>VT*rQKr&z{X5&R8k! z-R3urYYn`Qz4gz)++4eA-5Qe>AHqCSk(EcLJjXvPz06v)L;XDRN|3F(1)(c4T==d&OLn3?LF=mc(ZWeFP0Mi>MO*0>bU|Hm4*lz<)P2*f6*)Z+$om{^4;^M zX#%Ek18Pk*-O1TOUm{TdTX8W(ij-G;#gFEsjupI%bQ~Y} za=l}kUWp^-eYY*E!{(gc-F0~0IXPa@dGznl?`-$ir6s5KpI-jt{8BniAKDs`{E>b9T6qOm$TxVLm0t64k-ekX34l2ASN9jBEpyzIGN$dOiR zB$NnGOh=J8xJdwl1YXUK>Br@B#}N-_&*yC~9%3)ai;sfdrl%H0q8-om{*Pafqen!=g2}H-w;ui zAB$bAS_(YtA(LCTc#+wln+mV62dS#MU5-7Ry&QOUb!ETM>G(Sb*siboH)#7BK3^;( zddEU{2RdJK4~#m3IRm+MaxFANuO;Mk|FE5Pb%h1sjy!0en%g_%8*OYn^$diHh21mj zhU_nJKtc;4wMIz%F(=!Addy_r#auZ}9v^)l9HLeJ^ILXJ*}d6*Movo;sn9o7Yj~x$ z6V@=oT>3|=Wu}ujOBXV_ZXCpdG+oPe-iIhNw8FMtE3HEU3`Rjm`#du4h5?&ANnv>L z@I?-J>D3zn0r*d}x?Oy`vJ6}cM*i+EPeuVP5wojiOYvWSNCo=cxPkJ}+v%T^k`DCB&MM`i3iS?ixKOC$aB!#c~Dc$p#;aTZ8G9 zqsrS)7(R0hIuKqGv1#bc(YCFqUDRAPv7=C(>`7>ggwI%0<`Xo@fThWjsA#lWmn@j_ zWz^b8_iK_Wm)0StpS-6oWHt1=6y=-?C{x#@^Ts}&6P34U%Gz>Rkje;FU#3=xzxBif z@mY#NRwg$?z*}h4_VVxJOwZAVg=1&T6)|aQ@j_RC|D7`pdS1NB!q=GFfebXY|=^f=t#&i ze}Z5}wWKeK(y)9C4O_d1g~>FDah{ONpVW@G-MHR)^b!Tar|nM+$OqQEY2 zFQ6A<)9Mm_zTE>GLO!jnDLtCpT|92Re>vaW+|at0IB2kqzb4ZnrA83pRLvLe3VtVa zB=&w7OWbt7 zR&%m#=SSjPBFMf|K|`wgx2(h)249L zl>qG{*g8L93Z~*Z=3kW75_s9MajG zn1k0t&(XIfdJw>$s0Pc^vTlCk>i$$56){p9yUGYqpkcHTvqF5%}V%YWqIn^c7 z|6>6|Qx9SbIz@BZ>7nc3t#mx%hO2yIGb#mk&j?pHl->i7gC@0nJqSA_%ftO6pJ$tM zKZldW@7=AluLh>d1s{I$D81)TQ|%ySUsN8RrqAcLGgqYaPUcPRuSU>LLxiOONI5f; zzo0o>WXur?xQWl>Ap-h2G0$hq3Jj5RY}ZA6%R7u8ynw%RKnvKRBC+-OkpbEfY?RHf zo`X-I|NE&SN_W(BF0u3N-o#PFGQMAt95M#PDpEH3vgQb#LOqKiW8`T|&=VO18g%uhDQKqPG^cI1 zs0WUW4oZ566M5DYc#0I}vEwgUY^wX)P;|Z$!TyWZRo1Luq}11H{Ni)U+F^hN(pKEA zsH3C8JH);Ts@W1_lNCYt^R(HEhw_4GFgJ5iTiGdsKo>=hJ_6EB1=U0)F&C-Z1Kt?x zxJAONLI6J-VnIYsxEwmh4)^}nfbQQ!1}HA!d3r6udELJR~8#ZhN&Dm0k(M18v!t8tOyCe_jBE)7DvUmae#jJ_ANbiogjxL0j+zW z$C^8wi%*UY91;lhho(x$&e5@TlA5sQ=!NY?h^-jqMnXhka{tYcCPzoV`8={4)<16} znnAi&`bu{d^gKcGYnDl@csG~M&#T8Kogc9bydI7ApIJ!(cAE6N?`Q#n+^73w&(H9{ zEy!+@aS!TSVllD+9c=&zN@fwWe1hbZ>zUl#N9?;wReGlAzfASF<&XE*FAm^39&KXw zq(H^XU%N9P!6Z4vDNXf+8QtqRq|8tW8<8axDU+pDlSn$bJjyn9WX3Vc1>013XjtsUP z22lB}0s+rHxgVkw(O}pOFvgjM%B9#C9!3Tz#o6yJ600ijnY*-g#m06#z`I{@H+H;2_$BPD1c%^J_QD0xns7M>A6bSx z%Wrz1Z;nN1*heoB_p&8h>;I99UL~KLM?14Pjq3PmTH-!Hc8iv1Gn6B${f_&F?hlSz zPc%*Br)|jax5$DWkl1NvJDp`~ETGTt1DG1jT1KgGtl&9y%Oa02IRR{`8756GG5t4F zOMz+4vEyvicJ0sIUdv(>!q&D$0I%@=7LJuN-HU;;Yn5QzH|aL>aL9fI5-$PF^n)e0 zX5>d9y*SAT5!=>!r5sQ701qSg{g(BqIwH+@hNj%Kjf`_-11DGntpR{>t;*1>z^mp)=yKw?tUL`j}6YFSL;@`j*z{-FYTl+$lxjwxR zj)}uB)2Kk;wp15i%=QkJ{Yw^vM8B$jeIR}1%>Ek#tTM{ByT?MTH z3aS%G^6RE}kh!e&X^Q3b4mjf_{otMjP<>ALGGYPO*cJ9jzEof}ssS6@bU!eM}O_^k;nYi-uFG<*3w@TRr_ju2>N7#gJByT$FSV3ZT-E?A{ zq2Q6^&5#2^Ke)R(#Ya=mbH=Dw@O9zFKbJ?zzbNr`p;IB8Jb1p!6&J=7fezoq69EWn zT|E_7!;e`M9Zqi%vI^jxoj0pS+M0YN;G$)}KBZE`(b>o_hMVCXc;QUQq)N|+>BzS$ zd$!pbaql9)4uZ>$L}d_ue4u|!oA4-|kI!g*!_SW|pi8^GojEH@tE*yLKuL3|f9u^l z6X?QSly&4+l#lARi-M0QNnmV{X931U8hzyVfZ8{SnC(XtOWax8>z%B+dt&b*$1}%H zZ=cIK=2j!Rk-de`;++YmOL|qxIBuUmaDhBjh&grR*CkwU)r3ADELBgZqvcsgq55%k zJzT6comp&5#Ic<@XkKn7Ux5)>MfJGo#vUb%2a>8fNy<RDCCFZS z`SQ&;Qnp0R9@FYh}SL+CL)3MY& z+OW>L>ze8|kij5%!R~)mj&R(6E63%>6|>&!QoP`3fwd+(G8Q2FE~E2}9}>e(Ahzr) z@w2KX(zZhcSq))wYUD@i{tBhIlEM@j&9YyE*N)Q!ZkhwbBWht&T_T4(ZPe}gv6b#= zY(X~ap@T4hF|)mePUuc`xsk^Q(=-lBg0E67Vx5iT4LEZZNUFpIso{Q1meuD@8+eTd z9t-0Ky6+ASgVU=R4T4n6ZRv-uqqW8!?0{n;3LtaBv2~RfQPP$3v>5rWtncv3>s+9- zC9`yAcfv4kz&vigX80mBzek~i@~csC=@TU1urB_(a3yoZ+=1c5n0MprHb|Dm@xu!d zP0zsNs%T@`H)p`>?VjuZdQf=fJ&9V}Fk5^YB`O5l;mfaK`IM-NRTx2aAaik1|40*k z>Ok2cZ6bR)B)(4|lp&mRHl$zO?8ZVGL`Pm8p*@#JdtPpq zinY3In!5r9qkJ9ZLJD-RS3<+=CeVERgWEIa^NV2XX~nLa3K_9e`x~s*F|?@FXiPfWs6{7AY5JbU$ykf z&sM8NtRl5qXe=g7&YPHf6biVYB$2H&oX^HTTHwEzVK9a2${dY3);?Ip`aBS(lt{o% zss|ucEoPIX$J2a}HNUZ=inqw!f66d=-E|qZ7ls_QBNs-)CR_B-rHj@~k#3(VtXo;G z%o!n|LOM4(+j&hZ{{1*HsaCh1F<{j&_7ZrX!8cvAm+Ie_b0umdKagG*(4u*?c6n{# z`jnyd8Ld!-%r|!;E#n88MU@|L-~M4y!%riiiuDiV*2X88_I=zKTSOf^?!|r`Bi{PT z%eSj6#T#8GrAGLwo`j;JBP(*xbrvtM@l~$c0saH_tC8ngBkDyYI{nFd_rz#k@R^ks ztlFR7L4-2)t-E#3syZ(oR8&bU1Gt8hAUn_xe|VSQ*-`=8a#SQx^Ib-z82(t|1o%vW0$hQ~wrwNHJvFN0OvJ*T&Yp)S9qBF#eeRgsVqd=&rgtDin6^fWsk-)>R5t2d ztT0-9tn{4PBSKR6yK*iy)j$^KawiM}$nhIO0x&vI@$cCcKE9GPX5~2;x*_lWORJuc zZ-D^qi~iQkzN$V-etM%w8-1L(8U7OKpIn9dutNMyAKp1@%@n1}9EDDh{6twq&vz~| zW7H$mNo=TD+LP#I6e`7v{{jms|0WvIxQJ#aatG#`HH_4p-qi^p9#2`CCUog`+kGo6k#D-nmodt5_#zoT_M(V76IC1L0ieWipbUVL` zDwGxlPV?>sW37^3#fX;wBr;ZZ(*V*AC;sZ)W8|%8)z|;gykE2T?)EjCHNOkwHlSv2 zmYBC>kuTvMOS8sMcDQ!A{R}bD&rl6~X~eGFI#sukV}VYcp@|iY7zVMX{Vz5P$@K2W zQF>@O`%S6V&wXwiYY)?XvJ3z(RRy3Oss0Rm>K|8kJNUwPNH@|*@juh}GetAn;s#VB zqbxj_$NSoUs%{)0M%cQxhDNnV8#dgkmzQRyaW`XJHCloTN2q%r=x-l7xeQ|B6+oHe z#OI^s8F+HBtKAN48c>;7?+l<+fVH8oWErQwX>pA~3xuzNstsKpfF}1D09;dE5UFbj!S?9YXzL~!vG#TT zU`L&-=iMu-FN~edz!j?#EN9lqqFrMcQoo3kgVO*236e=fK~&0`wtf1+8TtAzcg>*jty6Iwu{)X#-u#f=_00VKaq`vKovu0n` zna~-=biGOX-%z*;f(v|ahm9Ax_5UlQDXT+;OUysX=8jmR!_xpB$ivma^t z4KIG^QFy%g#x)DL`!ufx09-WFIvRT$fXkR{jBAn=5dgH*w!7&-A z6$QL{TKnpz4*p#{+Iavv>u|=mi{Ma{6#)9BdrTo9s&awD>m0TYo((-3A8NRlUB7j> zD|G&LfloB7K21^j=Kk%_;uhC9b(^(6S01YYTt@&J^<3zIvwPAO2cY@|`}D4)Sn1YW zUK7JDRJh>x0dqxrP$$@i7%z5lhL0Ss@f1xsyon8nP}{^HLhQ(xrB zkkkG6j5vB)xCt%lq{y_dmqJZfQfXld>uzMuAA9NlBO1P*eiaVe)ya_FPZt8vsKs`m zxk8;LUtHL{{wXq<<A_CAr z=9aw|-=B8u@U*76E8n6KIb(y_De7`>a07>H}2${a{;i5XS7& zp4#i1vm^J;>tK{(j{yLR1`T9%N{b35cn3Eew(3A`W&w)>j67-8efb~{_Lnk2hGd@On&!@Hx9SIr+Y-W2tWrX>#%z4pt5M6ME=|& zuDO+de3@`{NjliyB`*7mLGjE~Z|ogAhmVl%kc7c36aX-=-ljbl2EYE7JDkQ~>1Byy zyUyCzVWpsc(qGx(=%&0KUQCkXz6tu#e@*A62tWtOM)%}Ppv{Yo?5b%Nb6AT@T#P;g zR@qqvJgAcs01!I6!&c$KxO=>1QnN*?U-rC;pLeqt8&|T9JyvQ{yRRD773h#csGA8~ zKma-*h1} zp0{EeihE5L8f}|f02~20i2!sctVN&4Zv88^W?bKL;(PRt7?Z0(O{(}@*OwF6Ef06mo6@0=HEZm7${ZC~9vfxRixZXS3Sw+ZF!AFI(<@&zzK=LM-x zbg55$_04M;*c??{MgV#cm(S+bXS$SK zceuYmgo}>Lzu73FJ*w^6xx4?|-DNIW{G{T?fi{?aU|PDDgxnW>Z2DIISBnfx{Ve8A zpHg=yKb5u?+6z#Ri?_&ilOaMTHa?tv**qt@-7zGX*0=L)Xh$EpMH`!*shCO4$%8Wl zpe@^-egm9+Z#pXt}EY>Xv213~W^*p!t=r2SwFmjbw<25RdB zth;>o`T_C!pHlDr@<{FgM{Sspu_N}8>q+E^1J;aw{!FOb>ZZ$%y0lCsdN5@5XAEOM zU))EcIa^Rb0NR>-Nxc0DXyMd5zgI7;<& zIC58m0(qX(E_q}71;xE&4wT>^0h7`_huRT+e~}jN)~rBB5PKZ}P@>D_UDXmRlLa4QmHxV!DjB8L`w&EE8FAUvO z7TjSW?dzMSw`tGCS6+zIpT8YVY-DyvUKbxL1zb`ykm^NZ^)S(GPh#kk%6G0}^YQZ5 z6+#?Ap%MW8XxiUi?%$5C4jRsGE?!wUGfT3TbA55auPmI9mx0+_erprQ>g_y!tJQpM zo)h(GWF=7|ZiII%9HnALbc4>?Un5{R`x8&>}GcV)!jdS z^Y$O-(YuF-$Dg16v@{=9`q8M@?6vtJ+@=hR%_0K%AUIejD}~ST`?_!%9GR*C;iwLe zdJ#tk`cn}jCj6R~vb33kz|Kc^b*>=lmeZrjA#;=#6NY{6C5Lv*=f&^#F?@Q1Ggwiv1VbObI|u-E(g} z$=(GJwqk6WU^J>-Z5>kMK?g>@$+B|&6{1@WRC_bueN%B4C4O-M^F1suk9J%00000 LNkvXXu0mjfA7+5Q literal 0 HcmV?d00001 diff --git a/bin/deckless-steam b/bin/deckless-steam index 3168967..a89a5b2 100755 --- a/bin/deckless-steam +++ b/bin/deckless-steam @@ -1,10 +1,11 @@ #!/usr/bin/env bash set -euo pipefail -script_path="$(readlink -f "${BASH_SOURCE[0]}")" +script_dir="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)" config_dir="${XDG_CONFIG_HOME:-$HOME/.config}/deckless" settings_env="${DECKLESS_SETTINGS_ENV:-${config_dir}/deckless.env}" legacy_proxy_env="${HOME}/.config/network/proxy-env.sh" +proxy_env="${DECKLESS_PROXY_ENV:-${config_dir}/proxy-env.sh}" steam_bin="${DECKLESS_STEAM_BIN:-/usr/bin/steam}" if [[ -r "$settings_env" ]]; then @@ -22,7 +23,11 @@ target_dir="${target%/*}" state_dir="${XDG_STATE_HOME:-$HOME/.local/state}/deckless/steam" session_state="${state_dir}/session.env" original_wrapper="${state_dir}/steamwebhelper_sniper_wrap.sh.original" -proxy_env="${DECKLESS_PROXY_ENV:-${config_dir}/proxy-env.sh}" + +sync_helper="${script_dir}/deckless-sync-webhelper-wrapper" +heal_helper="${script_dir}/deckless-webhelper-heal" +cleanup_helper="${script_dir}/deckless-webhelper-cleanup" +cleanup_done=0 if [[ ! -d "$target_dir" ]]; then printf 'Steam runtime directory not found: %s\n' "$target_dir" >&2 @@ -34,30 +39,83 @@ if [[ ! -x "$steam_bin" ]]; then exit 1 fi +for helper in "$sync_helper" "$heal_helper" "$cleanup_helper"; do + if [[ ! -x "$helper" ]]; then + printf 'Deckless helper not found: %s\n' "$helper" >&2 + exit 1 + fi +done + mkdir -p "$state_dir" -terminate_stale_monitors() { +steam_activity_running() { + local args + + while IFS= read -r args; do + if [[ "$args" == *"${steam_root}/ubuntu12_32/steam"* ]] || \ + [[ "$args" == *"${steam_root}/ubuntu12_64/steamwebhelper"* ]] || \ + [[ "$args" == *"${target}"* ]] || \ + [[ "$args" == *"${steam_bin}"* ]]; then + return 0 + fi + done < <(ps -ww -eo args=) + + return 1 +} + +terminate_stale_helpers() { local pid local args - while IFS= read -r line; do - pid="${line%% *}" - args="${line#* }" - [[ "$pid" == "$$" ]] && continue - + while read -r pid args; do case "$args" in - "$script_path"|\ - "$script_path "*|\ - "bash $script_path"|\ - "bash $script_path "*|\ - "/usr/bin/bash $script_path"|\ - "/usr/bin/bash $script_path "*) + "$sync_helper"|\ + "$sync_helper "*|\ + "$heal_helper"|\ + "$heal_helper "*|\ + "$cleanup_helper"|\ + "$cleanup_helper "*|\ + "bash $sync_helper"|\ + "bash $sync_helper "*|\ + "bash $heal_helper"|\ + "bash $heal_helper "*|\ + "bash $cleanup_helper"|\ + "bash $cleanup_helper "*|\ + "/usr/bin/bash $sync_helper"|\ + "/usr/bin/bash $sync_helper "*|\ + "/usr/bin/bash $heal_helper"|\ + "/usr/bin/bash $heal_helper "*|\ + "/usr/bin/bash $cleanup_helper"|\ + "/usr/bin/bash $cleanup_helper "*) kill -TERM "$pid" 2>/dev/null || true ;; esac done < <(ps -ww -eo pid=,args=) } +start_detached_helper() { + local helper="$1" + + if command -v setsid >/dev/null 2>&1; then + setsid -f "$helper" >/dev/null 2>&1 /dev/null 2>&1 /dev/null && [[ -f "$original_wrapper" ]]; then + cp -a "$original_wrapper" "$target" + fi + + rm -f "$session_state" "$original_wrapper" + cleanup_done=1 +} + apply_optional_locale() { if [[ -n "${DECKLESS_LANG:-}" ]]; then while IFS='=' read -r name _; do @@ -127,206 +185,11 @@ build_chromium_bypass_list() { printf '%s\n' "${entries[*]}" } -restore_tracked_wrapper() { - if [[ -f "$original_wrapper" ]]; then - cp -a "$original_wrapper" "$target" - fi -} - -restore_official_wrapper() { - restore_tracked_wrapper - rm -f "$session_state" "$original_wrapper" -} - -write_managed_wrapper() { - local tmp_wrapper - local session_state_q - - tmp_wrapper="$(mktemp "${target_dir}/.steamwebhelper_sniper_wrap.sh.XXXXXX")" - printf -v session_state_q '%q' "$session_state" - - cat >"$tmp_wrapper" <exec ./steamwebhelper \${extra_args[*]} \${forwarded_args[*]}" -echo "" -exec ./steamwebhelper "\${extra_args[@]}" "\${forwarded_args[@]}" -EOF - - chmod 0755 "$tmp_wrapper" - mv -f "$tmp_wrapper" "$target" -} - -ensure_managed_wrapper() { - if grep -Fq 'deckless-managed steam webhelper wrapper' "$target" 2>/dev/null; then - return 0 - fi - - cp -a "$target" "$original_wrapper" - write_managed_wrapper -} - -restart_unproxied_webhelper() { - local pid - local args - local stale=0 - local -a top_level_pids=() - - while IFS= read -r line; do - pid="${line%% *}" - args="${line#* }" - - if [[ "$args" == *'steamwebhelper -nocrashdialog'* ]]; then - stale=0 - if [[ -n "${proxy_server:-}" && "$args" != *'--proxy-server='* ]]; then - stale=1 - fi - if [[ "$args" == *'--disable-gpu '* || "$args" == *'--disable-gpu-compositing'* ]]; then - stale=1 - fi - (( stale == 1 )) && top_level_pids+=("$pid") - elif [[ "$args" == *"${steam_root}/ubuntu12_64/steamwebhelper"* && "$args" != *'--type='* ]]; then - stale=0 - if [[ -n "${proxy_server:-}" && "$args" != *'--proxy-server='* ]]; then - stale=1 - fi - if [[ "$args" == *'--disable-gpu '* || "$args" == *'--disable-gpu-compositing'* ]]; then - stale=1 - fi - (( stale == 1 )) && top_level_pids+=("$pid") - fi - done < <(ps -ww -eo pid=,args=) - - if (( ${#top_level_pids[@]} > 0 )); then - kill -TERM "${top_level_pids[@]}" 2>/dev/null || true - fi -} - -steam_activity_running() { - local args - while IFS= read -r args; do - if [[ "$args" == *"${steam_root}/ubuntu12_32/steam"* ]] || \ - [[ "$args" == *"${steam_root}/ubuntu12_64/steamwebhelper"* ]] || \ - [[ "$args" == *"${target}"* ]] || \ - [[ "$args" == *"${steam_bin}"* ]]; then - return 0 - fi - done < <(ps -ww -eo args=) - return 1 -} - -steam_updater_active() { - local args - while IFS= read -r args; do - if [[ "$args" == *"${steam_root}/ubuntu12_32/steam"* && "$args" == *'-child-update-ui'* ]]; then - return 0 - fi - done < <(ps -ww -eo args=) - return 1 -} - -start_wrapper_monitor() { - ( - local seen_steam=0 - local idle_checks=0 - local startup_checks=0 - - while (( idle_checks < 60 )); do - if steam_activity_running; then - seen_steam=1 - idle_checks=0 - startup_checks=0 - if steam_updater_active; then - if grep -Fq 'deckless-managed steam webhelper wrapper' "$target" 2>/dev/null; then - restore_tracked_wrapper - elif [[ ! -f "$original_wrapper" ]]; then - cp -a "$target" "$original_wrapper" - fi - else - ensure_managed_wrapper - restart_unproxied_webhelper - fi - else - if (( seen_steam == 1 )); then - (( idle_checks += 1 )) - else - (( startup_checks += 1 )) - if (( startup_checks >= 60 )); then - break - fi - fi - fi - sleep 1 - done - - restore_official_wrapper - ) >/dev/null 2>&1 & -} - -terminate_stale_monitors apply_optional_locale if [[ -z "${SDL_VIDEODRIVER:-}" ]]; then @@ -364,12 +227,6 @@ if [[ -n "$bypass_candidate" ]]; then proxy_bypass="$(build_chromium_bypass_list "$bypass_candidate")" fi -if grep -Fq 'deckless-managed steam webhelper wrapper' "$target" 2>/dev/null && [[ -f "$original_wrapper" ]]; then - cp -a "$original_wrapper" "$target" -fi - -cp -a "$target" "$original_wrapper" - tmp_state="$(mktemp "${state_dir}/.session.env.XXXXXX")" trap 'rm -f "${tmp_state:-}"' EXIT { @@ -381,11 +238,22 @@ chmod 0600 "$tmp_state" mv -f "$tmp_state" "$session_state" trap - EXIT -start_wrapper_monitor - unset http_proxy https_proxy HTTP_PROXY HTTPS_PROXY unset ALL_PROXY all_proxy unset no_proxy NO_PROXY unset DECKLESS_WEBHELPER_PROXY_SERVER DECKLESS_WEBHELPER_PROXY_BYPASS_LIST -exec "$steam_bin" "$@" +trap 'restore_official_wrapper' EXIT HUP INT TERM + +start_detached_helper "$heal_helper" +start_detached_helper "$cleanup_helper" + +set +e +"$steam_bin" "$@" +steam_status=$? +set -e + +restore_official_wrapper +trap - EXIT HUP INT TERM + +exit "$steam_status" diff --git a/bin/deckless-sync-webhelper-wrapper b/bin/deckless-sync-webhelper-wrapper new file mode 100755 index 0000000..ce08965 --- /dev/null +++ b/bin/deckless-sync-webhelper-wrapper @@ -0,0 +1,104 @@ +#!/usr/bin/env bash +set -euo pipefail + +steam_root="$(readlink -e "$HOME/.steam/steam" || true)" +if [[ -z "$steam_root" ]]; then + steam_root="${XDG_DATA_HOME:-$HOME/.local/share}/Steam" +fi + +target="${steam_root}/ubuntu12_64/steamwebhelper_sniper_wrap.sh" +target_dir="${target%/*}" +state_dir="${XDG_STATE_HOME:-$HOME/.local/state}/deckless/steam" +session_state="${state_dir}/session.env" +original_wrapper="${state_dir}/steamwebhelper_sniper_wrap.sh.original" + +[[ -d "$target_dir" ]] || exit 0 +[[ -f "$target" ]] || exit 0 +[[ -f "$session_state" ]] || exit 0 + +mkdir -p "$state_dir" + +if ! grep -Fq 'deckless-managed steam webhelper wrapper' "$target" 2>/dev/null && [[ ! -f "$original_wrapper" ]]; then + cp -a "$target" "$original_wrapper" +fi + +tmp_wrapper="$(mktemp "${target_dir}/.steamwebhelper_sniper_wrap.sh.XXXXXX")" +trap 'rm -f "$tmp_wrapper"' EXIT + +printf -v session_state_q '%q' "$session_state" + +cat >"$tmp_wrapper" <exec ./steamwebhelper \${extra_args[*]} \${forwarded_args[*]}" +echo "" +exec ./steamwebhelper "\${extra_args[@]}" "\${forwarded_args[@]}" +EOF + +if [[ ! -f "$target" ]] || ! cmp -s "$tmp_wrapper" "$target"; then + chmod 0755 "$tmp_wrapper" + mv -f "$tmp_wrapper" "$target" +fi diff --git a/bin/deckless-webhelper-cleanup b/bin/deckless-webhelper-cleanup new file mode 100755 index 0000000..7a1cdc9 --- /dev/null +++ b/bin/deckless-webhelper-cleanup @@ -0,0 +1,63 @@ +#!/usr/bin/env bash +set -euo pipefail + +steam_root="$(readlink -e "$HOME/.steam/steam" || true)" +if [[ -z "$steam_root" ]]; then + steam_root="${XDG_DATA_HOME:-$HOME/.local/share}/Steam" +fi + +wrapper_target="${steam_root}/ubuntu12_64/steamwebhelper_sniper_wrap.sh" +webhelper_binary="${steam_root}/ubuntu12_64/steamwebhelper" +state_dir="${XDG_STATE_HOME:-$HOME/.local/state}/deckless/steam" +session_state="${state_dir}/session.env" +original_wrapper="${state_dir}/steamwebhelper_sniper_wrap.sh.original" + +[[ -f "$session_state" ]] || exit 0 + +steam_activity_running() { + local args + + while IFS= read -r args; do + if [[ "$args" == *"${steam_root}/ubuntu12_32/steam"* ]] || \ + [[ "$args" == *"${webhelper_binary}"* ]] || \ + [[ "$args" == *"${wrapper_target}"* ]] || \ + [[ "$args" == *'/usr/bin/steam'* ]]; then + return 0 + fi + done < <(ps -ww -eo args=) + + return 1 +} + +restore_wrapper() { + if grep -Fq 'deckless-managed steam webhelper wrapper' "$wrapper_target" 2>/dev/null && [[ -f "$original_wrapper" ]]; then + cp -a "$original_wrapper" "$wrapper_target" + fi + + rm -f "$session_state" "$original_wrapper" +} + +seen_steam=0 +idle_checks=0 +startup_checks=0 + +while (( idle_checks < 30 )); do + if steam_activity_running; then + seen_steam=1 + idle_checks=0 + startup_checks=0 + else + if (( seen_steam == 1 )); then + (( idle_checks += 1 )) + else + (( startup_checks += 1 )) + if (( startup_checks >= 30 )); then + break + fi + fi + fi + + sleep 2 +done + +restore_wrapper diff --git a/bin/deckless-webhelper-heal b/bin/deckless-webhelper-heal new file mode 100755 index 0000000..6c8f235 --- /dev/null +++ b/bin/deckless-webhelper-heal @@ -0,0 +1,85 @@ +#!/usr/bin/env bash +set -euo pipefail + +script_dir="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)" + +steam_root="$(readlink -e "$HOME/.steam/steam" || true)" +if [[ -z "$steam_root" ]]; then + steam_root="${XDG_DATA_HOME:-$HOME/.local/share}/Steam" +fi + +wrapper_target="${steam_root}/ubuntu12_64/steamwebhelper_sniper_wrap.sh" +webhelper_binary="${steam_root}/ubuntu12_64/steamwebhelper" +state_dir="${XDG_STATE_HOME:-$HOME/.local/state}/deckless/steam" +session_state="${state_dir}/session.env" +sync_helper="${script_dir}/deckless-sync-webhelper-wrapper" + +[[ -f "$session_state" ]] || exit 0 +[[ -x "$sync_helper" ]] || exit 0 + +proxy_server='' +if [[ -r "$session_state" ]]; then + # shellcheck disable=SC1090 + . "$session_state" + proxy_server="${DECKLESS_WEBHELPER_PROXY_SERVER:-}" +fi + +webhelper_args_healthy() { + local args="$1" + + if [[ -n "$proxy_server" && "$args" != *'--proxy-server='* ]]; then + return 1 + fi + + if [[ "$args" == *'--disable-gpu '* || "$args" == *'--disable-gpu-compositing'* ]]; then + return 1 + fi + + return 0 +} + +attempt=0 +while (( attempt < 180 )); do + top_level_pids=() + wrap_pids=() + healthy=0 + + while read -r pid args; do + if [[ "$args" == *"${wrapper_target}"* ]]; then + wrap_pids+=("$pid") + fi + + if [[ "$args" == *'steamwebhelper -nocrashdialog'* ]]; then + if webhelper_args_healthy "$args"; then + healthy=1 + break + fi + top_level_pids+=("$pid") + elif [[ "$args" == *"${webhelper_binary}"* && "$args" != *'--type='* ]]; then + if webhelper_args_healthy "$args"; then + healthy=1 + break + fi + top_level_pids+=("$pid") + fi + done < <(ps -ww -eo pid=,args=) + + (( healthy == 1 )) && exit 0 + + if (( ${#wrap_pids[@]} > 0 || ${#top_level_pids[@]} > 0 )); then + "$sync_helper" || exit 0 + + if (( ${#wrap_pids[@]} > 0 )); then + kill -TERM "${wrap_pids[@]}" 2>/dev/null || true + fi + + if (( ${#top_level_pids[@]} > 0 )); then + kill -TERM "${top_level_pids[@]}" 2>/dev/null || true + fi + + exit 0 + fi + + sleep 1 + (( attempt += 1 )) +done diff --git a/docs/architecture.md b/docs/architecture.md index 05f27bf..ae8a675 100644 --- a/docs/architecture.md +++ b/docs/architecture.md @@ -15,9 +15,22 @@ This is the main launcher. - resolves the active Steam runtime path - sources optional Deckless config - loads proxy settings -- writes a session-only replacement for `steamwebhelper_sniper_wrap.sh` +- writes session state for helper processes +- starts a healer that waits for the first Steam webhelper hop and then patches `steamwebhelper_sniper_wrap.sh` - clears proxy environment variables before starting the official Steam client -- restores the original wrapper after Steam exits +- starts a detached cleanup worker that restores the original wrapper after Steam exits + +### `deckless-sync-webhelper-wrapper` + +This helper writes the managed `steamwebhelper_sniper_wrap.sh` replacement for the current session and captures the official upstream wrapper before replacing it. + +### `deckless-webhelper-heal` + +This helper waits for the first top-level `steamwebhelper` launch, checks whether proxy and GPU policy landed, and re-launches it once through the managed wrapper when needed. + +### `deckless-webhelper-cleanup` + +This helper runs detached from the launcher session, waits until Steam activity is gone, restores the official wrapper, and removes the session backup. ### `deckless-bigpicture` @@ -29,7 +42,7 @@ This bridge listens to i3 window events and hands fullscreen from Big Picture to ## Why patch the Steam webhelper wrapper at runtime -Steam itself already uses `steamwebhelper_sniper_wrap.sh` as the last hop before `steamwebhelper`. Replacing that wrapper only while Steam is running gives Deckless a narrow control point for: +Steam itself already uses `steamwebhelper_sniper_wrap.sh` as the last hop before `steamwebhelper`. Replacing that wrapper only after Steam reaches the webhelper launch phase gives Deckless a narrow control point for: - webhelper-only proxy flags - removing forced `--disable-gpu` arguments diff --git a/install.sh b/install.sh index 23cfe27..a32ca8d 100755 --- a/install.sh +++ b/install.sh @@ -124,6 +124,9 @@ backup_once "${autostart_dir}/deckless-i3-bigpicture-bridge.desktop" "autostart/ install -Dm755 "${repo_root}/bin/deckless-steam" "${install_root}/bin/deckless-steam" install -Dm755 "${repo_root}/bin/deckless-bigpicture" "${install_root}/bin/deckless-bigpicture" install -Dm755 "${repo_root}/bin/deckless-i3-bigpicture-bridge" "${install_root}/bin/deckless-i3-bigpicture-bridge" +install -Dm755 "${repo_root}/bin/deckless-sync-webhelper-wrapper" "${install_root}/bin/deckless-sync-webhelper-wrapper" +install -Dm755 "${repo_root}/bin/deckless-webhelper-heal" "${install_root}/bin/deckless-webhelper-heal" +install -Dm755 "${repo_root}/bin/deckless-webhelper-cleanup" "${install_root}/bin/deckless-webhelper-cleanup" install -Dm644 "${repo_root}/config/proxy-env.example.sh" "${config_dir}/proxy-env.example.sh" install -Dm644 "${repo_root}/config/deckless.env.example" "${config_dir}/deckless.env.example"