From ebe9b347f765e0780d4ee4007d9dd6bc7495f2df Mon Sep 17 00:00:00 2001 From: David Quarel Date: Thu, 17 Sep 2026 10:35:42 +0000 Subject: [PATCH 1/3] Panels and axes addressed and configured like matplotlib plot[metric] is the y-axis holding that metric (left or right), and plot.panels[i] a panel; both take matplotlib's own setter names and signatures: set_ylabel, set_ylim (two args or a tuple), set_yscale, axhline on an axis; set_title, set_xlabel, set_xlim, set_smooth, axvline on a panel; set(**kwargs) on both, like Axes.set; and the same on the plot itself for every panel (also as the default for panels created later). A setter called mid-run re-lays the figure out on the next frame. Vertical lines can now be per-panel as well as plot-wide. The dict panel spec is still accepted but the README and tour lead with the setters. Co-Authored-By: Claude Fable 5.1 Claude-Session: https://claude.ai/code/session_01G9zs684RFxHvW6cNWqTPSF --- README.md | 33 ++-- docs/axes_api.gif | Bin 0 -> 201393 bytes examples/demo.py | 11 +- liveplot/liveplot.py | 278 ++++++++++++++++++++++++++++++---- tests/test_axes_api.py | 97 ++++++++++++ tests/test_liveplot.py | 6 +- tests/test_reference_lines.py | 6 +- tests/test_smoothing.py | 4 +- 8 files changed, 372 insertions(+), 63 deletions(-) create mode 100644 docs/axes_api.gif create mode 100644 tests/test_axes_api.py diff --git a/README.md b/README.md index c26ec53..b4df801 100644 --- a/README.md +++ b/README.md @@ -81,34 +81,27 @@ Interrupting the cell is safe. Jupyter sends its interrupt to every process the | `cell_size`, `dpi` | size of each panel in inches, and PNG resolution | | `record` | `True` keeps every rendered frame in `plot.frames`; a path such as `"run.gif"` also writes an animated GIF at `finish()`. `plot.save_gif(path, speedup=1.0)` does it on demand. Works outside a notebook too. | -For labels or fixed ranges, use a dict instead of a string for that panel: +## Titles, labels, limits: matplotlib's names -```python -{"metrics": ["acc"], "ylim": (0, 1), "ylabel": "test accuracy", "xlabel": "epoch"} -``` +Panels and axes are addressed and configured with the setters you already know from matplotlib, before or during the loop: -Allowed keys: `title`, `metrics`, `secondary`, `xlabel`, `ylabel`, `ylabel2`, `xlim`, `ylim`, `ylim2`, `axhlines`, `axhlines2`, `smooth`, `yscale`, `yscale2`. Where a key has a matplotlib counterpart it uses matplotlib's name (`ax.set(title=..., xlabel=..., xlim=..., yscale=...)`); the `2` suffix means the right-hand axis. +```python +plot = LivePlot(loader, "loss | acc", "lr") -## Reference lines +plot["acc"].set_ylim(0, 1) # plot[metric] is the y-axis holding that metric (left or right) +plot["acc"].set_ylabel("test accuracy") +plot["loss"].axhline(0.1, label="target", color="red") # extra kwargs go to the matplotlib artist -The names follow matplotlib. A dashed horizontal line with a legend entry, for the level a curve should reach or beat: +plot.panels[0].set_title("training") # a panel: set_title, set_xlabel, set_xlim, set_smooth, axvline +plot.panels[0].set_xlim(0, 10_000) +plot.panels[0].axvline(label="lr drop") # at the current x -```python -LivePlot(range(N), {"metrics": ["loss"], "axhlines": {"uniform": math.log(d_vocab), "unigram": 7.35}}) -plot.axhline(500, "solved", metric="return") # at run time; goes on the axis of that metric's panel -plot.axvline(label="lr drop") # a dotted vertical line on every panel at the current x -plot.axhline(0.9, "target", metric="acc", color="red", linestyle="-") # extra kwargs go to the matplotlib artist +plot.set(xlabel="examples", smooth=0.9) # on the plot itself: every panel, like Axes.set(**kwargs) ``` -In a panel dict, `axhlines` takes `{label: y}`, a list of values, or a list of `axhline` kwargs such as `dict(y=0.9, label="target", color="red")`; `axhlines2` is the same for the right-hand axis. +`plot[metric]` finds the right-hand axis too, so there is no separate spelling for it; `plot.panels[i].left` / `.right` name the two axes explicitly. Everything on an axis takes matplotlib's name and signature: `set_ylabel`, `set_ylim` (two arguments or a tuple), `set_yscale("log")`, `axhline`, `set(**kwargs)`, and the panel's own setters are reachable from it as they would be on an `Axes`. A setter called mid-run just triggers a re-layout on the next frame. -## Smoothing and log axes - -Per-step losses are noisy. `smooth=0.9` on a panel draws each of its curves through wandb's default smoothing, the time-weighted exponential moving average, with the same 0 to 1 weight as wandb's smoothing slider and the raw values faded behind. `LivePlot(..., smooth=0.9)` makes that the default for every panel, and `"smooth": 0` on a panel opts out. `yscale="log"` (and `yscale2` for the right axis) gives a log axis. - -```python -LivePlot(range(N), {"metrics": ["loss"], "smooth": 0.9, "yscale": "log"}, "acc") -``` +The dict form, `{"metrics": ["acc"], "ylim": (0, 1), ...}`, is still accepted in the layout list but the setters are the intended way. `plot.figure()` returns a matplotlib Figure of the plot as it stands, built independently of the live renderer, for `fig.savefig(...)`, a title, or any other tweak. diff --git a/docs/axes_api.gif b/docs/axes_api.gif new file mode 100644 index 0000000000000000000000000000000000000000..914844cb332215f7a837a25441deea529664db69 GIT binary patch literal 201393 zcmaIdRaDf`+b{6n1Tgf_jRVr%p`t@K64H%yi?o1)5<_=`bc1w*4oH`D3R2Ro5(abp zpLebIoORARXW#6Ly>Ir#Ui;bK^?a07m87Jt_aPRbZ~(Zwy90qhJ3BiIi;II_j)sPY zsHv$rIXRV;l?@FI9UL4oGBV1`%OfKrB_$>O{r%^@owv2MG5ao9tw)$DU8^M<7GdLCe4W;}O z&2e4rI6v6xmecj;Q_|7$a8yk{cBaPAKguMzqo`{FJ6`xAI_-5zZa~q;=y&B2C9OSE zUsu~Ruw5wNe;X`VLM_E-dh)W`iXs9+5YWFRmRl%r|KH5_pKbp+CIG_%AQ+=ceL?SA z7zK~naDCyYNcerVT$P5Rff!m*=P$zz#X|`Q`DjMf#*&c~F1;$Vk;c-o458C-Q_jo-#HMP1g%JDT=B7s$sjYj!pt%vR`CTTFDe9OV)aK~)e4ZX!Lcep5;F>!f%ic5 zsPO(I&M8;Y*hpp+RNsHo8-w3=PnN8rV(aCkqSYp7Fm0G60x03ieT@-DY6Aq?4mq)) zDWk+F+>QN>WbtX5;_$~J+@;EJa6$fSFuN510TUIJ0)P-4l>k;iu>-%!ByCWD<49=+ zE-K1O7Kg;!+zp=#fdcTMfPK2D?=3q3xw?6t7&ckPnIA&3Q&#Xoi`z+E3l{}MK<1*u#2&Q2O-;nQolv4iz@0gGwK4Z}>D;ofze%HndkkD!$H_tOG zoFaGa|6GnBSIrtjios62vMP&2-{;6XGH~8lofpMH4M&AV6QIt-IGR8pKxTi4Qv4=tSIlT?|?Hgepv6y_Q zO^xq}N}CgMLt4rGatEs8lAEPv`lq8fNB-_|{ngP#XH&3f$U1mSbqSSA`epxo>sJpC z{G?af^I>3%pjPv@wnLFw>RQ4CNm9J!gZcTxv*l(krA1vFtr2-f~Ofp8Y-VoUwd$ zG+E1cv?S-@f$kp*d@O~aG*T7!f)iPrih2$90th@&VmN_QZ%8QhuM`L#8y9`PH=UAC zR*H{!2_6nCQ+Psv23jNz+Y;lSArMrR-XVT~ejHCJCx4}ys!5`ceQL4ba)oBy)^tu| zSee8Dmy)UOR45~06`wt&(^T@Tq{!)+;u>vHk+Vqo}ykuqWL5^GUni%dZxw!FQ)w* zz4&eIToU2fO0MR|bSEz;w~QO$)NQQOZi?`j89Xjb3%&~GrE}#M%<1%}_%M+)@@C*_pe~~R8Q{u-G$Cxikkulj5KbD>wiZcDch+s=c%`1`6S_yK*7(>v9S zW=@ow<_aQ%Lj@$!a}ZAgptCGg05;G454iN2Z(AJ;Da;R}>L0N7w+Iap!8dl8F;9r< zTQ20bFU9SOR<$#Pm_HKTZIoRkxYNe4{hAb9C7LLZt}$#O8IW z#L%Sgt5IHviR=RbUwLl`%@-bgzHO`!btl(=dXei9qYXhtwW}QVC(JF8Seiu1zk= z02G7l{I*WnrdKL~*mx+vACibGW)%V{{B|zaf*N=(tz-BkCOdsNFt)%iusu>lD%@R^m&!op z>wGAkC;B`CebI_`B@+V!Aj-txBs4{kKY55z*fS|s@gnZ3Mt-aVI7cP&(Pns|6ugQP z^wK|CGAWu(2N<#A#)q>@sxXmYgiB{R+BletS;d$tK)Dsc`Mxm)?bI=p5oUWa6`7`g z{M4CeT=~3gLI;4!vbQWkapN@3k~(omi!KmZ;FJdZ zA<7H{JiUH8QeY}5QHG$8O2DCiqELgy_re&!^CeuB0zZqgr2$Nf2ap6LC37T3`Nd06 zfXFtYu9nbXIG7wBfZ!&li=q_d1eskY3DPC8VvU7x4vKC8bgqaayt8FnxYN^L>uHRneJ5?9dU(B@wR{AqfUZEKNVK3i3E|hXK=`7C|GBJ zQ3<4#nUQIV=1_5~Fj0a9UE|O+Ks!2_&Yb2OD8K;}c$;OukimYLVX_l(pEc$qTPooB zqQ^0tr8iR^MUJQvd_2;i@rQ)gf_j znQW7evOVC1SU~=V1ASI1-NJ2?(I2tj57Ma)9PSPT$FqXO4w4D~JqOQEJu zs3uwI!%ene#jx~((kb5;`wK31%& zid&s)D{yO19A1``B^+0Yb^Ibbi88#*Qh!k@;BRmEHxN!vUG4BHS$=&Vm z7oyAWy@3ek&|detPRj%scepcG-7wk}{@MdKJ(lE%~zq$f0GgJ@Bn z0!KAM3{5-b09`VQOTPuLv}J#wU%E2U=wj*mc}URRjvO~lDArR&{1K?Z>p+P zZ(Wl%PE)d3_6OG)0D}mN;bljxI#)oB9|aQ36y2I~M3vUX>G7aFi`P3u1x_xJN9`M0 z|MPWRjPKLce4nmP^Fp;^|K|FKQMN}9L8fnm2pWD#)rw_BR>jmhO{=N;wPw0>KU9hu zsc4n!pm)AyAngd3%f^;i`Uxo(x@|22#HA^1BSA--Los#r`0OR~Rt4jZ5nQ(2xUsn( zYnn=8M*de%Rsp1O;1W$b_CZ>BkYprKAuE?f;}eMv&;VkqPI&quf0S2VP1F%bG;sCwa5Swx)Dz{!thVlLObi z8sY*y;-KciLuN|%4uU~F9*>4gekb`Gf_^=$%XSqF7D2D1xVQuvtKvl!xsLglCloJX z(6K{A)*O&8L&-NIR0o4^g4!EXCC!Y5UVz0T8xJ-Xt^yq*d-JAC!5G>798i{tuBgPEP9-@uerj*_!p9MQhv>f z+W!7T;yL|%UKCeoh2~^LkRSeFd_gfzD|904<-}ZgPw~&@XI@I?h~JzJCr|Lj?N5(} z1&KLS|1J?|c6tWC_!+ePB3tV<8{3RR+FL_mqZmLTW`SsWuxf2Ob8sFG6d!iav18+w z8{@Kj33#jZR41qn$fkr3nBL0uMME1g&=~Z&MzV#?!8?+3~$1XIP z{ImdZZ4i$qm<#h>+YLU#u1xQ}G1t9dG^u0fw*RC8DDE>`knF6f4FeZ|r2t6k>1W%= z)A%eL_}ja4GF!~jy&UTln9YvenG`3*hYKm%CX8FY=mO?t@YEHE(-YDiwD_J{ONI@w z`wPS?oZwrXTmH;TSTW6EjeA2Ctv6*N(+3@I0eUC=O7{Y zh#JYseij>^O4G%sGZ?Z7tse`*azehIy|&ry;4nnJL^+tB&S`Y#-^GmPM9g@(JgWdE z*$VM{K|BcH=N%ws{PkAg2=d7(7guFSs-dt+u({`wrn-*;TP=L1nip|ZLJXSib*uFb zdA)WdF#=-5wF$qSopFp-8(p8{JMaEOwEc^Otof9c@TwsIhZkE__dVvP%MHur3^S?y z5gYDa9`|1Q%3=unN7JXOVs~_Y0ppOWPA9^_B)p&`*XU`$1qKu+8Ic<|vSD z{+9wvvOdOKN;z}z!|e&do4wjDXN$ zyn@q7+XG@V)&k&L7{`mXzqfgR-b-YD0}DM<6#M0Y$j^HQfB+N(2Ml8Kw9?)TeFMPR zgxV1(xo9w_K|f5k07^hB69T2v-BC$q*L@ag0w4$+ zsecJ22J)7G1ZL|A^oBxkh&Z$ZF_<@rU@%O3IP_C2DFXlp01z(-%;@q?F~{JIBrIQLI(45wTs+USB`+xd|lLFC7cdcKw?#J2xEeRh$_4BpNU#f zAO*7gzRx%eMZyNSsPeb%T*~n*^Axb0g7@QkzqUTu3`2yok%R9#!$h^DU%58cLZ}sh z4-6kmU^PT+Q&w8CcFFElr_D7BI9mxBt~OSMlRX9+i}+Sklk_cLr#0!dEERJta9dNVNLyvt z8H^Zz?&L1d3$&T!A?q}$XSHD8s4@2V*rRRKQYPXEKuW$)DAjNXk(>E_{du;WZQ$Yt z(otYVKgimyrrr&(OpX`hriZHdR zecq{8_$Wb<8bEFDuC6tji>OInoie$(@04*onEycIu;7{TxOCW}TXkz(Zcq^K>MXs8 zKf|O&bh6^)i9Dv;Tc61z$|yY6&e$A4O33(Xh&xnTRcDKS*{;MMtN4E1QwV;EA$sU{ znMA*S>-TN5B$ypKr3Zk%EMB2&D)B1{uD`Vziuk9KeBeVh_dHfD=B?d*{CB}m48gS^ zg$-gmk{Jw<{&`kD{VH8ctHb3|^Ky3eToOqvp1^*ki#e}Sl!+Zr;7h-61%;G6vDY7$ zvQDwW#Xd)3`ROJ@|HTqrVp4K@+MdQ#+Zs43NI7bW$hYitNFqBadFH6Ww}UJ(I0{R0 z%n^fOTx2LPYUVKn{vP#>0tQ1)$#X>PhO>33Qx;3fOdSyL+1}FjXSWZu{5fYM@qY)Q zr2=IB*0BxGveL{ua!tW7aUNmMse*@*ydmt7879w}Rh5RaGkJw(UZTOu;p7=F)Dt4T zM<`OfLFgTRQ>eaq7@K9)oj z-d2a!V}cs{;a5A4S)@NdE~)|Di$a0P5h`~~-f5THvB2K!f zxR3eW{M1Y5#>?{ z@zbz(J?Ut@;-a)hfiO$&!nk-If7C|@716F_()VW{kDgd^z9oy|+9{!mLfToFCUvSz z3!IBSA6w5F+;8=4<282EQBz}Bl@jlHV}6Fdj>#5GJtW5@ID@40s}dMdZ_l4p0uR#vsEL5+&Yv`>VXxJT)eHxx~3&d>8#zHms=8jF=jn|-|xah{AcV4h-o zt4o=K%3`{dBiwSSZ$3_9~-3 zJMxt}!h1C~|Ks-}j;-eLjI|isiH@4cZBTzIkh*;RyybN~v5TGMt5=g(BM{1F3gYMc z9t=Mvt{eID+$d0vR50hxU_AGXAI;I%cgqg10^NZ>+US!QgSl5V zE8}ixs3Rvpm)UIB{V}XXCGBs{O^n{yIbhU16S4QMj$+_MH0rni-+1XRJu>#Xcy6eQ zcC($w2M3g)3KU8@j9U;{N!I)Mh$h8%X*T34PiAq1;{%pv-0a=(e%y4greN!&V0~`@ zXH1AK+g=@!rE5jo`vpUjM{nC(Iw>3O6dOH~HqGx{o|5@Jf2@>BPTl%m!bt z7eU-jk6%JTKnWvcqbC?fGCY#$HjQdztp>gmLX#4fg&OWtRv*~(vBmPT<-U)RZKD0r zQykM}Ys`Yspl4*GW$I@B`!7_zkrha#Bhlc?V#vpWwaeCxfE^q8QbeZ&8}EZ|spRPP zA}+~N)hD4S0ntbFf_#iDUwU`GXA-~|et`NDJ3fM>>gkI3t=>L~WT{h(rIT%Dkt32% zkd^+`q@XmXkg_ju2ClOo?aR3B&+6@$2FoXm(7in(Rn$=Iz*kK1R9H@C5lSUl*(@o_ z8c-LL(45O-c_E1}L~i_Nz;6?|>x7@AKA31cATgs5)mWYxNMRc^=wUo4P?%RTHW(G9 z)LwvaZoV&>1bF>Xva1=e+*I_;?(z=H@C=H1F`m4WLbevF?6<6x?;N#_Di0!}4XBBC zsu{{mCTpBhL=mO?{GeKCkO&W=2`!;|^P?V1IL--HQ9&Ok2Y*T4m6eS9Lmg#H7+5n* zq)ieF9kJU~;dgq6r!itrHX=|o>@{BW;nm2jwTgk0YQ1W8j_r`u+`yY3v~0XG`DVkh zt|}QSETy7qno+7PLWOT?#HgIrauw9_o{g?njh6H$g0w3hiJ`;PP0i5 z#ow-~X&R5PU#LvDjQMuL)9JafT~dS;vFqflxaVU|U2)o}YT$PAw_T$h4DFM z`n}bNI;v^RV0U1l-ch!00=1rO?$l38Ltn@TVjD8{2PS`LxQj`41wL%t#>WUn-z7DV zQ}Xl4b@=mYN`W*z0`X1zN>?aT_4$ObpS@%&tm1g|fV7J`+El?MXb+)=#CmMX>W+v5 zkJ#Sv1fj6N*D5rQ6n8Jzz{H^xx9;T4k)&hMBzvfqszwxL;Lzpqu;(TpODA7f=lJL! zzTUaFcOKDg1p0 zZB1#x2OQ1MxN+QYS_#^Td-xMvnfn8;@9RkAF6cbK-1Y&QB~lILg~!{g1EWIZs}4!bD5pw zD_@@ZZr^`7&GWvm6ABmD?0jagpv!CgQHLtAJeDw`y9lYtXxySFO~Ci18ohMWd6S$% z2wc2*DMqj~vDq=yK`U`wSj z8FgP9aMg_BZM+}F8mgvX_-46o{Y?u+L{7@28 z|ErXq&P-zU3BFhShFL1QY3$2UXepjhPGXCRUyO&>%+?9=t>`0KkSmYzdwovMU}G)|D4qGm#nZbR$)YlBNkVzs`)| zqqx7qU$z|A(Wwn!m7G$?Haat^>$9iOPsrxy-FS0}JEr6O*U&d z`B>HRQh(jYZoTp3YlaO;n~3l^6ElUV)rtB>j1>$d-;K$9kIS~+!nBdj^|iNW7WiOA z?7pTTN8?%h_2`o!Imu?sumB#4pkV1sf~EjB>$<{;mGj@PK56uzch)tgmZ?S?H{

Dlre_~LfN`udfS5Zg`7GLll;$a>o}8`8ESM`S^i>l7;UlPT<>+; z-Nk*jw=DhK^YM;j|6;8VjFg?GROjJNP?ewWfbXfj)uZRA!EVs4X7?BT&7JjYh5emJ z&vV!uvE)DPn-d+Rt|r!_*~1pJoa57v#vPq-pQ6I|(d+eo?n^oxPKoOO@=(FH%g*aV zKI^z@zjUsY5VJn>XQ^5Tf0z=%R8*M}pFL|uAoJGQN+Wscj-guiCAgME2Tux*_(=x# zBK)0+Wpkj3JZ*0EF;N8N(+=XAEIh~qh5eH7I(o$tv3%B`0A z1Pic~ubghI#&3@)x#jGdv|x@IaZi;d-OAS8{w-~{y3Lj?EpeP4vYpgvx%1Szucf<{ zq`7=ZJ3SjbIWcg(cx;|_?4Im?`dr*&4t91GG7%MVmN|TS^X_bb-DCcP2Uc_E&-%g7 z!G*tCCD+vFMI=$Q56%td|CI<#V2ATsC9+D#d>RG-Us>Nj#51kJ13Y=Yafi0h*N+7* zV1sic<(qdB7Z+D(hc!NXn-|(mrqKTn3mNqJH&uKzeoHL$VA=RTXcI12S5%ZAQQu|uzCXVH{siv_lIDjjr?+sO*EJ)+ zanI|cink(-my+KPWrtW5JTH~?&<^2Sg`Irv*Oji&>aRuTP_i&!XB~x6PeEw7B8`?@-;Ja_PQ_xNac=IhBBXD{jN_Btlt9JN7ia+F8l^VIYu z4YAkfE3ZgD&c0kdQsSV`etT1X?fZVO_pWzuu3LoEapX{^qE(g|DWM*O5gs>Klmkhm z17VaUVYDG(OvXj*;!WJ%P5kvu0^V(+!>RUD!sCKxjay`yfAw*&`UHDqQ01fyhubt0 z_>s`<8X|yZ{C0KeHZL%M0534sKRIbXAmuC|^Q&3bUh2EoL{rv**^$lf3CwOvQ$wcWNX-gYSeNlGGpy8G)C!Tqn4dYeT$KmhQ+ldlG4ZV6->Ih|yEK6<0(S%TLE(w$gGia9jJuI*n3x_?ltLg` zjp20a?j1lg2ZMmf z0WMep62K#1A`%)#U_t>H5!j#hMUgz3oZHLHY6Am;5OMKL-JnWTQ^}sv^K~Q_%Yq0V z(_1;hclvOJs(>3kB$p!f@m=yF*HB&({NjCIQpgcTt-uRw03D;#IpC>R+ z{a#Q7X$F{v8RdUIKO86cjn=xv2G0(H-1A2vP|!3&3&D!N99L&1_o3#GUa`5R!=@Ru zpZ2uAx~k$9Xpfex03S2nqZN8j1H8VYqTF!C{`En;!RKk;FbyiarhV)F?@RnDFB}&c zUSghU?UY1S54cdOI;4Ye<6syK4x3aPSem;0RFoy}G_{DoR); z73ma7%}e*4bF?ZB+yX-%Fcb?h6|8tp1o&B(EH@lFg6l>H7GJx04JFs=Z&j^U;(S|i zF(Z~DKw9D~p%-&0SjRFO16U2J4Df4IO6%=)j<`IntzVs(ofV>ypemc;BkR@|h5{X7 zRb2vIp4KLbM#s7iu4NyD)AlOHc8_YzQr4vkZO*27QZYb=^b7`MSUw+1$!+3X9isbd zzn^?8%_uFAF1taN;rD*Spj}V+qJH_zZx3uh)J0mOB`*bEY1it2DZE0|&!oIme9zUx z46`DQYIme(tId&r&erV5+SVmD>tW|8TnG!GYLv}&*Wk&}hwv?SQBfQj_FF=vYL={@ zA5+(h$y4fdI?I2%U*Y-v4|RnAXI!R^!fM`{!Yc|U!x~(i4JxqVGT+r^6g!Ei295&a z__YcIDFP(xxp(wrM$)BhhgMVR>OdJvQTBH677tRmESAKMYO(X@JzKaB{1x!c=707A zx>*lT*RNa-oGJBh63;owK4x8Do=gbE=_)JuR2VD27BBbIf9+en^suU@PAKxkpr1_9 zc6MSf{qscyW7oHK<*9)9wrZ}S&o$VmXJ>2v(1BjUBoHnp*QEtrngf6nUEe<}==M%| zEK7{wf>}rHm{H5FXiRY>b?CK1%TtJcIluLDroh92Wi&JGJn>JOnN3gYdsM6KOBp(0 z4WD70nXr$@PO?^a9~PwV`^KV_G^5?@&AICBX4Xluo+g!?RriIBUrJ+@A}^DZ>oVrP z89x3vt!LLG_G7ep{~QfjI7T>mTG^bD(i?Xw@75-zXSg)vV{=U~g0l-IA3US@IO# zd$oLtyOb$q9N}JL1@P+mdE~I*%(FjKWAKUO*jC2WjyFTie!Zv0CEO(zfdPY=Iwj~R zVUDH8nHtf#{7K&nhriA!Njt5?Waq4^8dsG+sL4`{#4Re62-v6YW)r@zjn6QSxxQBQIZqXVZp@kO*Y{F$z!^$ADmGO0D>B^Ous>L}qGPgm!+L?&z z#}|jN{D6ug9ljJbaTly{i%9CcbfdK!`>-k1g7DJ^e1>s3aE`Aji%G{n{VYd^E$69? z%q=v_Jd+r8Ug+n2yp3;&(WlqD&&!o7;At+-kUsV<+jzW8Kp?Xu*U=knazB1SqLiOA zeV;xZZk!gU*E8j4O|HxEEjhAz$O-?ua+h0Vin|KSU0?t%Jwt^E-ua zZNffOJ%ee$OgOj?XrBN5c4mFm^|xAGL5&3)5OpG#79 zT+^(je1y7~?We-Bu!BX16S4g)A}`E^=#)2XVh41+UL5~{%}m9%1#NsYhNW@M6uP0= z&&H+_g18UQOfbSpz$=NvQyTS9(Ei$fFKco@HsoOf^jLsEYda4H)m1c3ne+>*NT1Rton1iCODs6nZHM7kekr|HP5Lp6fyboHXQCBGoFiY+Ncup9uPI$C6Dvppx3N^d5yyy>@01KAG=>Q%f) z>GER{r^$_f-U*SWbUw8>ew~27^piR8vpnGsQMtGSiYaZG`$&+4P0tY%N9~ew&z0xx zucc*ie;oAK3Hf#KY7^T3-Ce^u!sU!JOV$x z0RJ6=psax4J%X^cfbau?Xt0225<$FBK)jA1*)1SBMUY+M7BcEWGG;6b zIY%M601JggA;n`BN~Jfl1!cow}h)q^A!`Z8d7;12cX6Fld>bO78W~`%XlxL+?W?MNz*sK29cIuHYR>}MUq2&g3~t0-aV6Rp0C2}dYKH@Yh>9eR%47lV6p6}|$K0t( zm8n|XX$F;P7ToFfmFe!>8NQVnA>5e}m6`F}S?QHo@3^zeDzo2n=d@PleBjOig@Md)?ElmPTv~#Ep^Sn;@=X3zcCy)*(%t%I&7=2^}7+dn4X(zhr5B4 zfA$bNQFOc3|4$vx4t1&cr#fYInkBWod-X4HtW7JajD0^)`s(RmkQBB%^gmwk{~G`7 zVD@`9!Ja=(H;nbL6BfEspLcgZRa;_zKKy+h1$ticF#XZQhlQ-I z*Za&Luvp5UcpE6UG&|!LSHXVFuLGpn5TS6T%=|D)1INv9TKkI42u9!i%}7K9*A|*B z-Ek|5tE^%xny+<#D@JILYdcnK!ErlIYS*YZ_`%iwb^>ygdM6PpoQMSBve~jFD@feV zzSUA%UV*@b;7BM;$B8{%*VmXV;d=nLy&u@DQaj5mzH&F)^$mJA%f6L+FV|b{#$L{k z2Wp?^BR8^_Z~84Du>dLq#}tBqs{Nu^dnHHN1o~!&;_Mgp2c?8spxnZyrNAc%i<6#N`y#S1h{n%wh+5>Fwi$bczcu>RBvZ{4uL#bH%X z%deS668v9CFtl>?*lnsYwN@DdokBv1p&N6x?FJWa?OMy`As?XPBvcVDH&{+ zG{WCle7>$@Ux+Rc36R2RFtz$H%pG%L!ypm>gWn>tJY`SrsOs-?wgcx|8FbfilU(P; zR%U$do$p{)0KYob&DKv@kWs8BSQtg152FH7&%jf z{gYUP5XB~w73HS@62$zkmt>ABlaG}h*IR**p?H{yh6e%R9NxyA$V^2N%<#TaP+@Je z;RR160+HUVEJ-4RDqeO;$zIzGRNC_DjRWz@l_i`_Z$@7IoK8?+{6_!MX!K1pGOa}6 z9R~;r5I-YJcj8VH@LN_hq$kTzJ18Ydds*FMhk#%hbqQg>h%JX==4f^)KzXj>a94pt z?^q@t2i9~H2seXn>`=FH7gHM{b9NXBHmE(RD{}{O)L0hRb+fb>%@L5qXTXD_Wh}*l z9pSr+<}@%R288d4%9nT}%b685m5*eHGN3CIIMt@3-4W19NW!CPPY{vV+>@OZW}*?C zPhnH_(L{guHJF{J(@iLgk9og@iAbxP7!-nwo;mreM8lJ*r^<;7ZHV=%^fJ9)mV>EK z{Ch^v;tr2Pp$)Wv9bP|y3I?j+=B$pZ{PBA?MP=X0Dh@}1e*M*ta=L9NZG2$3CS9Lh zd49hZ;WUr`VP0AfX9d5s%HWYc2rAzV;E@Cx>Wp}CfQ2xEI%P(K0<8p5!N&moLpVfX zqcKC1+*bJ2a^$cc0ByIkzA(`pDx7zQjJP;^%!^>&Jp&hqA6Y*q7l2}Q#}O?*sb#%h znZCrqv@V4rLGX$cTnvdX2(e%Z_WZIW&Q>z0VDB1byi)%D3Nf!aZ|TAvdb;A%S)YBP z{v|xcJuU&Uqfh;F#>FDEJ|hs0HgB7Gwk*Yua3I6yW^=kRKi^Vn(UGZ@ZB&P23^q#) zet7tsvr{bMLqU^F=(jOcUHJ0tfup78tCKk>BGM92T=5v_S*9hxW0hT`@9F+*%y717 zVSrHBlgd?Eiz-K>TOfC~o z@79OxorhfDwON~H69GlyY0XPf;Nj88ifr(6si%hvPSxdBz+vx6Yq(euybhpw1f^)KzipZ418_ITdqBkh|1{##vd7DT6h@k(KacQUdqR5s}| zfJlX@J~x5p?+5DT;xX6Uo;dm6*m_H7SJBZk}U=7vX()aMS&!hsE7GWro8bbF= z(bouU=_X~<;`y#^;^}P7(r*W*Mcyf@b%tm;65ICr?|9pPv%{^JBaG#LBv@FirTUUg zHV?h@8cjc4>pPL6eSBipAmuov2|P!HzQ>wnv2?EVu9 z&#gmBCfL?64@ZvJvYmwdpj-&K9EU`S?&t7ldzc+fJ>|UqNret&g_swPH_BmTbJYGy zmI??Ood%0c@MlAX#X!4eXjek(4cwnJy4wy_U_N(HM=L$|uU7J$k^pe37WQ?>cvuja z^feeMZyOc*R4&wNNr+t_7>1(8hx)XLYEm$Ou6@JAnZk~JUovD6PLssU8RAZHob`~@yBfXI& zQ7jB#v#w~ql1K=fb%2TiuTpgIN~FF4wm2%LZXf~+FvV5@*Z{M~nEOXF6qxqxe!YV7 zcZ^=fMg?`n=8Q$kL|H`KMCv%kMkwpXQusvPIQP#Jn|6VjWpji zNK7Rt5@TnDSfV^5RWxx(iR*7bw4vbb6~yXcjKNaud{u1wp~*XT82Sz9;Y!lZSo~Lt zr}_%7c^H9-m4r`Y$#WdZ%M{5!RT67QQX-5aR8|5zV^U%mlfGUg<6Ems{|sZ2jcKHa zC(A)-a6}s!rmb{Ec4u3`@l+BNlyg;NW;hdO~C{}@3Zs1K*i`T8Hhdw z97KumAb0Cx_1&*DON)XqzN8{BMn zFW-NiaP!p!YWJA3Rrtu#3y4SFaL0>*4|x)AW$=KUgn1k3l00HiE(D(8Zk`=$gVS}GsSDVcQu|CA`Fmn{o0E)&j9RdtRdzOggv%BPZzK~-lvj>C^wAL9~B z1@>584OSYQRqhglp4xEueh@X6t0KX86y0={@MKrgl~h!YR6ITwRl_%l`=w0AQB2bG z#)qSt7S8wE)9kBB4!F#WKC`Azv8JYm2baN|S&3$7uUP+}#?m3#WJyDmv&JdcqRTkh z>``fAS+!LKP@Yw4x{|=WT}uZyS$yV~qG&REXFS72n`r}NdekQdB!869ayYId9eDOY z!r;y%;!mtIWD(_E6J==v{z64<;13HVR;GeAl7*%9pbTgIrIaMYAd2o!<6u6y**ABN z9)gWHAXPBT57+FOvv;IxfFp;41w=&ChNOYWCVP4e{E&e9Jt~>^O&xt838US!xP28C z3brM&{s|2 zolq)Dg>y)DPdPQ1<;5i&hT$_tiZ_*JpTK~2c!nA3ZEfc>il_PN@-L-eyuUN5xgEFE zV7HDct=zPPp@1idPj9)ZwpVPN+}N5eGL53GJD$?cj5km(^`jZ~`T?*NVUIxdHliULf3PD-{!{))3u3iz_edZ9ITz!U#!y!PR%OJdpB;FGfIXe5SDpE zsTT49};^4NB{xwZPp-hh<5ci4|SJ-z@WZ`c?*vH~4V zwYpGP)_^d^9n|PI=)3`gmJOJs)%1RNk#5eB#lzon{QR5H5Vk;J|42I3K>uHEm~PIy z!6;;}p&J}Ir1UG@&_`~^7T~i6i8UpK2MTG2AyuDo9E^yrK6-qLm^?M`3|~v1d0}-T zht89z_D@LO&h5{Kj9`@HDwvVKNZ!>NB9@!ivOgBUF zU3dza_IWDeM>={(lOG`1Opt9F0FevC*0=lNNzk#~TRgQHX)aqF3tP&d0oXw?_Sr}&w;GKmqDq!x~e44AEI3v?uv(H{jQv}ul6dA&x z)~}%F`XD4%vXXbzvR?StsS^e@q&u0opRvm^*IdgnKOT9{f1L0^?OcM{o=8= zrGFwjG-Hs>%v?Q|Vpg5_S}56FRUv>Hm3dbzg$tJ%?}W)jC9a9lMF| z^I)Mdz8E)&9PG?~(;@4YYVA>cN4e`-r`!t5{lpI41tB%{>s*C#K$*TveKc0-#^(ko&(^qIaXDvqPSLs$umXdw4u038>pc(YR}FxHer-4{QDED*`+IHs?Z)C>VCVC^#LV&d@A!bF zD%enL*Qr1=^3PbiQ1ZZ9$|6Vd6OpBHi_*6oZHjc(TyCF z7yit7?uOAVR0SJeA4vodBP6Fx6@BhsjbpRKVQuF#(Ou)W>GF?Uy7^!Uday{*{Gf0) zWg2$dmCWm0cAf^P>iQ8d`2Ii@Me)F!slf-5yQ6--m0L${?~h;cHBZnTr4k9VSRRNe z_O}zEKnmniYsX84MZu?SDN^8?Wrw{njgAG2>)aixe0EW4!Q z@3X)@V=tL^+H=9*$5IDX_klPiJGM!bO#J(sJN4$g%vs0#m6xa`Vf)=MS4ys(fv=R zcMCz{o?Sv^V1z-s(?2yV&+tkn^Wp!6O-r=wOG5#_5>c=e~0Cz?Z@tnc7j4G?Hunj;q7Hd`^@UncERNqL@N4;}h0p&R% zntnvfN#oISB5p|3X8Vm>^Y3?<#ZLNL2@D{G`AQqs&yi)+h?&wTUJRS8|IkhU+2+SG z(aE26{t3nhrh89~RTBRh%-)o0uC+^~E-K9{*ql(l)!cgd($H%R&{5n*hGP@bDP(K! z$VC&)y?yCKs5 zvRpF}r~!aGZCO$Rgs{6puKtm3g=WFyC{y^Mei0asg{A^z7h+|r4OsH26za5OCHaa!$0pl}>10}#Zmk(S(rRjR#0v-MvLA3EoHWd58*=q%tm6tZ}$!c-D zDGWiTJq0o$IJ7;N`e9|%Gy)7W=rEj8+<RGb?*lVx2mm-ZY5*9Qy^d)RS4yLa zy=d+-i387`SU{1~D50^pC=NDp6qf;=Yjw za<7V6YaMlq+20DMeAw@(xj(J89We)DuP?j!n8p-N$Tam@SV&W3xovW!7%}74jph7j zyqLz7dO{iR)$>-ZCzuDkp)lH}GzJ0;E|Y$-JhmFiI00q*t9A&OKx0<9*3nBxgTPLJ z`zb9|>Tp!}BvKlwrMNiOs1n#1iUoe2JiUV7qbCL?nL&Qi_uXq>j+e$q%5!!LFHG2w ziYy`dhFCiAAxuE^pe?zv&ze2q7tIoF3tPvk((s=m<{n{rq_a3wDw!oNIcZw@t5_7y zb=P2pgK6h$cn*MGX3Ekr2N&z<7$&G$HO-e_Zmq5hxrESJ# z-R6~iajEiL{NYCV9<$26FC;basH~q~GtHP5FPMEw^Nx6+GF80nnk7>$G?l&ro(r*B zJ+HxHcz^SSI9KN?f;JP;4x&McylsLrt$TiwNeP8)cOE=uUh&@~D`oIFdH?64y^eM` zqG6D0Gvd9nV?ff&sdL-u$o|lQi*Z6YDpaDH1sErYl@oGI!O6r5x8WoJiEB5)mS&=z zgiIAaj8;`XjGG{80;rc$I>+RyzHr%DKv@A&+~qG#lfz# zG|p2MGR}q%BxXO#y>*?*2Ut|Z=T(Iq=l0ER6{_T$jwDHY+?@MzONnGTCnF7iW`Oq` z3O+~()c|cdQwz4i4>;xHOn>GPWa!Fio2FzC9i^s_Ao(;U=j|+8G^hzZU9UM=#|UKE@`4XP*>4Hc&F;9(bDWkwm*dNFuUN=3_Rxio7;!%Rp> zoJ2~>a*_pQ)l{0*unP=Hor0kPn$uC!b-sU{)xMW6pj?%(ecK%+KjsXFxuv}sO;7yt z)my6w+);|DH#_o@PFsGg=#?}lobenU_o2peA&jKj*=9s36f>*Tx|C03r_(7qF@0WK z8Rcq5)2R<8+2cSY)a#k$E@x8YV<_a5$Ep#rpUkW$AT z%D{pM+O2wRJvQYSYaILKEb64d?0(@4`x(kHL|~j?gY8+sg#?h%%{SA&>KA`eqeQS! ztTrruT%gIYjD-Vu)adByiozf|Epa;W8t_&VWAA^WK2Sjy5Rx5}>FtWhf{{bhrs>fj zv`rW)dw3ZR09e5AoS&vQfy#{jK=gKW_DC$n2M>9B^{tYxHDKZyJrmD-?PMB2-M|k+ zs>100mBq;Bqn^{no3OdBSPa%&P&C5e-C-F-!RSL~iAN`v+%jX91mocEI<+s}AbJx9 zBeaO8+*{8&J)sJ&1>FU(QltaN(JgyW5)wpX4IC~e31jtKX5woD`{8d2;W|xEcWEqz z`3=O_n*>yQB%C7M&UFYJ7j`MMGc+t}7Emn+fQo_RcHcc7QiXpK+LHa#(_6ASSy zB8dgNR=xz5WMjybQ;E};N(V^61~t&1y7vr19I_W3Vx{@RtW_qc{Bqd~cZ>%woR;=< z@SB@^`FtIj-=;G|vHXn~!3_T%v{>d(P24Nk63vN=xdeUOj24|X(Dr&yp5gDWocjq- z(}Lg^al@`|8L^a7^zGhI89e{BA?xx-O*W}zUC8U#`bCYVswzxB^Tiaz0i-qP)0}#o z0g?SM_)XrI_Y!_l*KgeFM=I^5{FapcJ)k_@&PPH(KMXh_t1bBcM74L7e>a;oIe?)y zOvGLT9ESDPmNSS{jcbVS*M?j0PLBz}>TtOD;I8Mph=Rpko7?R$?(%koxBqU&3%^Wu zIz=qBWr*+(&4KqB3J}HMMefF4Wp!K8Ji6c=hd{p=ZcEX}4WT$Jw3t8`9clGDi(naI z3BRqpjLWxklLunE%nw*PZ+sW{Qh|pW-!^~UCdoXWOS4+WXE^<^98&t@ZO3v(>pOlE z?0!8nKfjT6%kaG`ox45$)Fb}I!r>x}$tQ6pZ`Y8-PW+Bxc*`GVba#F6jH^<#JvWVrRSN>bzwp3BEK z69jk1M;PC4+lCDE>M5mo$a!jMnn?+_foFL`C%womP>s9`Rpe}%((klQW@1zDaB3X+ zlp~kY*FJ?dN%@80J~?Kt>Xt+>J~KC)nv2{G)3X6rp}cnUG=gxDPQrYzF8XsE@mi0wwkz#ygkizHk8`(F{LUxWD88-ib{ zIn%1>u>E))CMCs4T5E|%9X8m_c?iF#a2IP!Hl^X~yU1M!W(|W!(;0jN-~RH39?d{tqz zG1n8Q+1N05Mw~`oMpbN@cx;9jUT#Wi=2tw3U+m9VfM-ZGBjsZiN=5yVa=JNjXwbt{ z_Y5#T-1`rEWZ63^$iVMV@nT!bUKIdW<$;UG{Yj{V+Pd+f?D6`IQe5{?gFr#0=bHL;);Kx5$mISNL zKjBEis}_1NfS{0q4tbRszZVZ440Y#>H>&~DgH+FW z5SmUT@`54))mlv9Bw9DV7h3DuT z>1Re53x!qdY&_5j|2<8HUGl0II+RoL3^J!zLYBsm%hmPKMrV#gb*|V$m(yE_`AaV% zK2|YyjgK9vl^rNycQ#0Y=?JN759cGA&|+3E~#>65bC1f&{*| zDGvttL&NkM1P0>7i4ltP7nFMODdgWu#^m z7q6aCpW621Oj}mzd*NShEhsesT6l4OTvJdTZ78$2vjKghN(s#{=oIH7CN*I38Z#%Q z)mPNYe3Rwm%wug3H-;!K{5GtsX!v2LzkE{UP9hH)xYThd|Ho#jd3@kSlwtY{ZKBem zKikRIKbNAmYfxiLnRxoL-wQnd8g5UbpiBVgBtRl)AJ8W% z&k~v#R}=fbd}leorqoT**hjG&6UK@M)|QtVTtvCXMG+QSCT5Gx8%GxyCo!y;**so_ zuD)C|EOL39-cAw5YO*HqK}Oaj%VLnO0HxBp8W*-|nz7m~l##Hx8eBeUR|kGbWg2v3 zl4#9zSHiHavS#7D9Jf+Z#ri~pYNbe#W|KgpmXPp0Pg#=;TeIe3%DM56DyBb|Yx+Ct zpYK+4ALX|bCPiW`lcgIKrWyK3tRp^3cN1oHkm}$uQGcrr4ZmFf99k0^r(X4JW5l9X zn{XNB*QY9JzQtt*HDhiOG()(leWhDND*Y*nqwQk#dg9IQ zGmB*v^I3z652O~;`WwR3h8XRE)tP+8lf2E4pK;4q`38&01lF@VQSob=oYmo${=w!D ztPPVM^T|CnIXg>H4~vSw{WM3Zk2beD-M3~FEidcWH|=9Wai+S9obRVwfpLfDZ~fC8%-Q>f=qt8nKGcx01iJycz1jwu~D=@iWSC<9D>q zp||}Zp@ejWwJ3h>`A=P(p^&CtE|35qwLO-x0ngYTceZ|%o;C1&gS-R9yOs?VXG|Hi zVcXo{Lfa(%*{;%_FkiH=MneN!kcI3&#W$L=u7Iq z#BXb}JSru}d(PF`g5l&Y3Bv*&y%%CG#pfvKAc@~m)z}%1b*hNAV+`SY|eM*ojr z%V64U-CD}AqWaTX*fot2(6`xDv* zG1v?Ei&DF$GoQx0UNYURb`Y5`OnBnc)a`u79@}(Po*&74++pX|mSIh1AA=Ud7eu|P z5cB#4V~k5tU_&`PMX^y6J9m8jtun|pZ7(C#@{YUPF$};xQz;%>jv9Mb0_=M%p%SSn z;+eCdbbN@?^5fTWefuXsfU}4c4Iahe zP!t7k_Xmq_Nt8QGwvV9TMYF!b<55xie$gjodnaE(6p-I}djd_1cN()~4s%3HmC!Ui zWBvF4QZNf%j^CjYrEcG5D_l7J5AAVtjf&fyw(Ve`GcAli?l?UY)xWBsyRiSE=JxI8vB5Qt*qzcwRkrJ& z%$3{yA6rd7e*b$phj;d~?i$8Wr=P>efIQuywdF@<}F-hc{^b@;_t_NAnIYrhv{PW^Lz&YjUxtQ)!l<_jnwTI#O z5}no?YRq{D!>jnvoN1L;J;txP9bd73La-)Zbo;$(fL<_-Uhphm5c;0;{-3vlpI_a0 zcqSq}GVcn-l?#|-@Fjhd51bpWP4K0CtFD_bE76z8AB=J_D6xY}`DM>cQ?C^_)TZ1| z87+@bhpc1HKcz7l>JC*3%dGOFC=~~YE7uQVoUCmA1|b4spnr;&H=?6mby zjEaBwXOIUb9R}1S-*t)qj_?1K=nz;BXX^UomG2wyAmYy4D)2(PzRM_p(WK;EBL`Y5 zpoje?P`0`T9@NSHr-r?tSUIpT=Febqe2*4s({iA4=bw4CpiJ^Vlb`)lvI0h|0%{#@ zy&Qgz;s!@z{!D589gPXN)HZ&JNtj-i{!?|{k+hvZyt#4wl2 zn4d-=L?P#_jTaogf3Etks6#N_S?3Z)KRfvSZa;_oQx2ZRMR9>~`6$G#83rS9Newx( z&lrbM2zK2%$8)9+2~=XQz8#)3kEJjvr|~#lunb0V7`3<@U9e7O3pvcyQRqDiyOhOV`(-mikyBz z`;)n5h82h6F6-4;VsH3d?>uCS3ycgcgYQJXedHCAFjO;KM&_B^%~u1FE3BlIz4}!{*}5p`!f25KcM^1Oz8h~#4PuYxby$- zi1+@>5q~2mC%<>Z_k8#s5&w5he2<9lDe---4ffO zgRGJN-YU6w#P^7}^5YIBob;Xv-)rK3}F z_&@cM>9TuAJUiNZkA;=|vMkd&nA}P|3j4AG&GIU$qH2bwUyH0oOKiS%{ofeze;OqJ z7e~xA489kY|BnWVaI8*+5=u;LKmUJgkkEE}+Rc~$FAWm4Gbgo1^Z(f(A***v`L56@ zNk5nf{k3i0e%~M&G4uUTgM|9oJCkD0m0k!g0grk4kAVUS?2V1;F8t@CILumX#yK9_ z_YD&A5uTnlr#2UO|CCDS3)xW-)!xDa?W?1EM{Jf}-`n|e=AFsIAm>28lkkxcZma1H zzsrLeGd8XFl77$EUN!EftH|_R|9D;>fuYxW&%A%SMlV<4Xc2UKeb(8NtkwT`=E~~( z$!Gqe{*d1pGKRErEjyLkp^Xw=mH`-%!(#PI84gA_s=dfUxl_ujErlUX^0+`8PYxGv`a`caN5f-wy)mHH1|2$%d(E< z+|RbnblT5xtoV;3?pS4wpvH?eNY`76-BbX+;vwY%PMr>lR6efK7e}@j!2tpW?NAVu zv4-OHLhic2D2s`gA7@Gu!oPPi%kp+VVzY8x=Y}I*1e0?0GJN=pr z*8ZMI`>$tt4r2YEUKD6_J#`xpVH)7`t6NPtXOALvvHNfdYL!y>WS$y$n-KRN4I$ule*)k@kq5^Pk||Y4 zaFyQYR~y$boah>S7Hx(Qb6@r@5?r6=x1T3EGJuyyv7oYDVqC~J@Pu$1^w4h&Lc@SS zXcvPK8@Wn+F!{gQ?lw$=C4Z{eA7v0CnFA2WJ50ko2>{)WVS5yc$jFvvvbT3PU_j%t zAcv?*HJC-4o&~$1Iy_|s#lQ?m9FF3VH%_)Vc0aY!1#YMTnqmmT-I^-CJe6YdT+!vH zW+5~bgio`bv^|Hy2Ubg^kIw-t6f2=C8%s#jh31A&}U6}2<~ zSDS@Bq&$@@;X7(9KO*(E@8Mkcu_{O($fCP=^xo(x`H~SxcphxSt_PAiKdJi6sHo3aXKZo4=X%}F)t^9JSIw_6?5T5ED z;Xl>^P$aBUw1!axDxq=5`3Fw#z!-jG!FirQru$cVRaya5+l6Ff4zh}#S+6g?%lJ!% z0>a3VDEn4?93Tv^OgXj;j({V0A<*imkKW{l9f~YT~QKl{z5(rAf&DTmWm)8tN2jn&Cx>ZLRpE#f=v(@9|&|V zu93#)0(~>lX?p#k#577v1eBuQ`bDJKq?!)Gi{ zZI{}Wo)I$ZVb9GDt%+39 z+Nt_)E>afXKX&vKPc+!^#!I0NRf|dLzj%Js6NSkEj36&$>14Eg7?V&#MPI1rD0TLs zlC3A!YX0ly_|M@fejq^WRZ)IHzZuYuK0W| zCq5JXHfp6g74Vi=HwwlhNrJZtbdV&#Kt#h`4~gDVkEnp~Y`1H<*qmM_59NmZTJCB4 zdlrp5Ve@#WV>odxOQAL;Om=@o3T)jh%h9pTrQ!N~&4Zu*2PcT)areEtc6Si_W;OG@ zb5e1?A(b;tKx~N^6J{0tG`&^>7DtKHa^W89=*iflG`av|C3-e7#2Y3Ai<6n_*FJhvG)Ny6VVRwgbolB`JZIy>i=Mz`vIPit@@t0_#TEcTWcg z4_|=LvuHz%gx{ddS$JIU<%*xvCF}a}#e9nRD)90F2R8mEwJ%*<`=SGQB!%I*pC9ap zgx%0rid((?F*5rkiT(@IKTEMeop)3Dp?Gpgugd;EJ5P4m9Q%l}?I5=$!JFM_cu3D` zM;UCoZ6uW9)awBb?(5_6nn5!A^0AIzi(zbmb9xr*j@RP-&dE3Gd-Wuq{S2q<#l6ei z*Xi$PszF9(8L|Qx;VGlAOYAf0LlJ%e+r1Wm)PbRSOKnL=8t)y_KigXME`a*O^D2WN z))FQcctR+IS|IG(Lwb1G!?N{*EBXTL@IPD}MYlY!-=jl=vBUs;a7&!-w@=)~o+W?W~Fa}5Q+-txd zBDawSO!#tavcp`J!*##k@Q^$rs77BjuHR6_Gc7^J-LyPSCLfY5WxmO zkfs2GR_paS1+4`b?Am#MG-Bd@&8ZS$bR8-;3Svfs4Ob!_d5DA0C9q_pkt*R3*~nan zXd>%yc#|t`D!^0bu!)GAz6f9!@v-r9bx(_u5;H;xleiy%h$*6G+S7H@OJQA?AeqlMv?69+HV;_?zd>11I4Fiy~NE#K% zS@A@AX4tYyB88&V3RGy$5%@(GLeS&^O-Y2Tgll~8n|7o!R!O-3Vsu$SIO4=S0$>9e z_|(U^))9VX2tZRFXZr>{1XARGCWBOAPzeP)`513ek%utQFxbOw-{89=_Yj4$({AOIfpO?}oyPm+V=cTAfh*9>)UYKfN!$hzGGIB7xaboIY7V1 z(qzvC_>Yw6+4b*>D_{Yai9--8UbjIoJvvqBlusqnPQ z>`eKZBSLS}m3*==cFt50&TYOXb(u*4LY_TX*%8qKuP;2PDb+(V5lq`4o|qgfJV9F@ zpBOURI8S@&GRHm&g%JIyvT8C*J+o#Kb)nc-%plzx@jQ=Pk;L5JMQ**q@*)Z%>Zsr=%XyYSj}A{ zF8sAxu(oL5#ai;k-su-n+xY1B;XZW(}{ic;lp~sd} zu}VM?z%B+rV^45Ea`!KFyEw$lKx&}!r@>!C;RA2aRIAwU-pG2Cg(!f3R#o#chUoZI z_2$BL?Q00bB;n;x^;keOEw43VYmxYwf&sdG6xHJa2*<9Fwd~;Q{YU6=7+#w)7N86q z!(u4vGn^?)Wy>6?>N#cYARczu&0!>v8t4GufT{2fo08=($5(L;6S?%SJ<7(b8`*6f zAgK;mJ5PSZygZX^@)Z|fzpDyT$RrS~{-Wl%D_bJuTnM~Ccy=`4NzuTX0I+o|E@R`` zeLAY9hA_JVJ1qHeP2;X}^)01h|Id0#0t6H0CXV-4SZyn;n8attP?fg01sn!0T}|gx zZ(f&eXvs|w>@9(rwbBeUfZD7Hv}2B1T{FeRNqRgV96I6e)G(T~@>54?RmwbC3)SXE zfKvcG>wuN<27;LmYzcEM1uC=k7r!Dwb!xDZ>T*h{j`E$xPq`h;=gsoAKs7r+&=f9} z7h|*hBG&e~@X_09Xj5o!o3uySfm)Y>jfyX|+sIlgmW~%Sy8CyWoOm|APag#GLX zm(|>o#^o36cBWKk$`3jdJe_+&%^KQj;5lnOV(r58) zUp>mEoolZ+-bI#|IsYov9fd7tynBtIREC6tA%N}-b)S^2Y>7=#W^7-~t6WRxcQ1Yk zeWcbB(1w5oDiIUCb7sxC)Oqg5@2N6N*Vel(dwq%{RRjPCNpU}Tqc@DYRp^B#ILJyz zEGKWTyM_6=jV%B}g2c43f3Nqz%p2_En@OeZNBu>=R1XA?4B%|P6K5ElkA2VjtQm4% z6p?#>T%m}!uAQ1ko8z7g3sef9X=D>bP8$WqkB)Cbp8`t?*2JP>Xex4<;{RoB%bWqL}C?&SdFc(Id<!tti?}l?dnbgeX|Z>&?cL>QVu5^pmU=-ynO3q^DW>`-vmT~fWwU{d#*>dy+hNJB&-?f;HHFnjb4f~heu=mtFv$@+7dyW$}b;_omijl zI0J5;8O>);KMd)~4|zZcq(du=H|m7&-x-;H61Srz1^`8Jus*pPiUqY)SLefy0E+!v zFQ*uW`)Xof^q50gf5d#|fSf#Wcy7#m>$d=ed0*%8ELEP~i7&WQzwwtOiiL(Z!&h&R znW2hvw&;;mwQ{79Yov)qG|K`2p$#{4jR}e#k==Z+@Hdt9Dl>nw{n!f#9$xsPPW7#V zg=*i*c1)`5a*o0=Qf6wIe|H`yrOIGpJ|rihE{<87fI=xFvST{8gO%o~Z2c(Lza55C7%xH9XY9CQl06`iiH%21hZwbee^%^Y8w;`vI0;AbFhV12z?6{Q|QqOL0K|7D6RxKfS(eGfgu zo~1td-9{BS>TAfb`KRICrn^1otJ3VXS^HD1WWhObw2ABHK9#kpg->55_W^8VZ5m%W z9P|2M>ftP+KQoZavK+x82D|&VvwR#=YMoIG; zO>zEEVAr?w8d$oDVA<>X*n#-O-z$t;*<}XhJBHSpmPeVVMw@N1X43WJJn<`BqSljO zy6w(DI^#{OZl%>@GquyPQaxU-)<1nC$Icsi(flvFPO)WMg4a#99;00ApLPU9D6gwG zxsiP0drSMTZIHVOEZdZl4~%-RX*D}+yrRY9x41+oVe{F{)Xd#k(nS;P2A;eJVH!7F z2jY9k8Vy3hitInkgD%9ABw551Z>GQTKIz+_{(9GQ)KPNUcwU3?_`H)?!5 z+><+Ae$1_UR{#g3f70TA!_)cx4;NG`CkF{@)$x0uO(D3!`?g9R#0}dbrXR>x+|OSp z&+m}~x*O~t3B9*W(avUI4zk)^Wq(OOemH&M{c9My1`lbrAW@z$*(!^G-mP-z#SRPjM#)P`%+h$oBx{TF_PJHI5ON~vtT*aVjZr0tOP}J=^gpp4uiaJYu9=4#$hN;hg!M$uyV){@3ml zBqaKy(tEFY7RA&53LZ2+4m2crn-iOjak#z%BMg}2=yxV6Kv^r1>BuygzAdq-?|BVH2@ zbt7F{r1a(ATnP3Sot*f2fZ2)+;a8afOt0Ox`ou<;IC`Ab09-6%Qshi{WMppeeS^e8 zQhrBEr*nASR7!raVGmJA801KbPf<~%Tx8j2x$PAeLl?Wyw+O*WB5Og z_>UH68i^iH__q})-j;TJ64)rs>a%(Q!jal=0PnGJvkG%^&|wdi=8LM4Bsq=PPzcW$ zAO;e?*=Atr{5mJbUKDQqk-B?bdvy83@M&K&h3!}u7guqyy2Qa(4M6J0@a2$jj&0*m z1UNil1 zgQ4LMGAHWwjI1)a9vc(>p5>3^sIoS+@HIG|UxD%vSLp~oOXMSts1urpupGu2ITZcX zTdHD-%AATy`il%dFW&1gi%oYqn|x7@Ehu#TkEvLV6nON>%vXx`*JdG?YeSq}UWV9b zw~U|DTCHPIE~38@@(^N?x{G2q61xW3%!IU(+x(H#6%Oy0=7`{1X>FA1gqc&R{Baq=%R$2csd zBVNuo>zSdknA8eWvGObg8iY+VbE#F|P4xZbVe8hNJmkG710$5=zJc&LyW^_Eu(sm& zVr_qWPFLmS#5Ylr6P$NVy?I|%LcuUcAPn3iO5-u2>MVUeG9_vLDvb<^4#Q@GT7x1f zRIEX>G8kUFs1Mxy?u)dv8|-;6MHh#w1gBoDFTT9SpBbsLL-{5!sW6ma(O5(Mc48X` z{UW24Rc^Vm8^IuKMB2a0?I+X$EO@Lp)V@DV%2t`XY(6FbV8}A?iaPCgz*PAK|G>NB zqUo|^ygjm_yS;7f$J{{|#y=n6!|pXt@uP>HW7?4lWxqsbg#7N`?EEpTtwZp^)oFbm+ zKg0?iWDZMzX?B%5=bGL6m_ZcIL>C18!xjT~_U2*95xZC1CXjgK)(yH&m}H6eo!JcUoGc9_$V8C$ojbUOmQ-J zR(D9I||H9d<|Ppm)G%4UK=gZ)q0ylu6Tc zuv~;0Au8yd`}=EN(?8rFI=*#iao~>~Q7skoMuEs?bfXj8yqvwpWZC7iqHr#pe(9tS zxYrEWsE%jSPy$$f_eC`&?;2<`mwZbP41xrz?9Y$I>9J-4NEOx9Esi0=HT|g_^<{1g z*~SNo^x!fq=R>uu(zU3iUspN}=eH+y`6kq8>*z*=K_LhXtBA2q&BVz4C9{AiR57S> zT13m#T{FCZe^7#nO36CPk+QT7O)gj(q?p+gm;zm7kFp5;Lm%%Rla?-J2z_3d1XWb5 zt-Fd=*@Hp>+na0~AM1SBi0B)z-!}~0tLI!@S;fdG6#R36Nkx}xj` zO5>$I6V2wJO=rSp)){hGRW!?)>rFaFhtEZI3Xmg3@-)B`@o{*DDr1T-F7^aciO1|` z{g2u4-!SN;0?WXw32zo@X2Cs2u?mCj6hwlGw{F%O0>QTmZR(>%EHQjok3WNSdv|(x zyE38MA3a`+yv0-Y>t5;B336IA4~!j-;n{jl0B2Z_vOcYeT*vT@#))vGN!N4SfQ9DF zY3lDu^M{~uv;MaHUCQ|tD=}_@WUcs74k?c@dmS4iDb=s5bF+g_nN@Fn%Fe4wxc4uSQk$WW?N`6#~Ahbfr1I ze!Z$}Tff}rMZ0N2zs$!mo*Zk)0LtSFw4G8?0WFjQ*T0-(MRiXTKcx$Pi=EIFY431u z)@05r=8#w;4lQLWaI>iYZ+zW_Q((v`{ zUlg?fS>s$*?RDs?d8m68j7I9sbxnGDROqWP3bI`hfeVK?MNq1~)N5#Ix`WobYh2LP z-m8n3?u26f zc$4eL?*rTBU$Y$2W2z2lJ!6?`KT8~kB0ya6tV?fT?=$eaG-Ya9R{oTEzEd7+peh55 zF34P?E)q`D#uql0&2P-}{o8}x%M5c+0j4UWK(ERvEx#9i*LlZU6 zIeB~C?IMkMjq*v*Q>raQ1*Eyx@+BB{?~Hvi^dF1a7w-P3{EcD3ea*)2xYYg@rxK>X zy7dqM^ZNed{Qha}XQ~MUfZzrj3L|J+p(4(-{PHLzaPr^a?Nb|JB8;N(3L<A!GGq%2MQ$$zU2}I_dJ4H)24XtAR%77OnGok*|qFO4X>QrNm|TnvG$!kO#Fn>H};wN30~pe@>}Rhdjw z*+2GBl4nX?L7ccXJp)2L87s?CP$P+OP$wJE$x{!G^~{oar#nPP#dFi&rngVPUnFiL zIK=BPDCpd1H4w3vPA_)?z&l2ia|{{pGqF^`xv!dHaYSsA`!T^WcTwqE@8v8tsI5#R zUleim>JsAEH&hf3Z^9KxHHM`p8kD(5j`I`(zqh?RBY)u>wH8UqEXRopr+8)lF(}6f2e~)0v;~?)x@_uF`i*W965MX;A0G~?W?*d}S6j6o-}4?%pbxh`0h~pt z52%b~Tks^WJR5Yb9@2{#-k=-ZFL+-8LI>*RR5gNKH9V?RPSb1q_v0Q&a3*EPQxqWO zYVsMUqhIve5BMPc;Hf@{vdBvYz;OWxnEx44xZxkM*;Rz%10fzAnR0hD*Ru;V947K7 z`LH52|3K;we0YNYj&p3N_q5fI112$c#B7mMhYG4y(M{S84BY(*8)T4eFz#&4@+$VVie_?> ze$pi%wAEIlCOz^&W!hMP$m>ZF0vLoaV3Ht4BhOW1iR9&@Rn0Q-7s>HXtd!V)YT@^H zNdR~u`od8-Wxd_K;KLhtSB5(+l;B#U}&R8q)Mn;1`2IL68O!u zSvmk}A&W(nY#I;w>@iB)cm~rJy4ZCMcQ2oKS^^+q`N~)5%?s(CSK9J#$SpLNa@+KD zBXy2UM&2IaW2_WI@^G$SKI?m`Dh{ z!3K`uf*U-3Gp=~B{y+i{BTekmEgWj0of1PH(exR_HqQBNNu#!bw)Kwso8L$@l_thrN`2Br-m8M+wpXd4uMul?#ytbG| z3Awr{{Vm5uey5i$IkD9))CSpA20HXlr(k3!FWN(vj}wP5L)il71Q- zk=e{*+F>IjOSh28V%o=VdTZa=pvaig88>{;JKnu|>ASuVBrtn52wYskcX4u?q=09l$9W!l#7my;Q z9GNEHshRH;%frlOIon3}F$qQ=T2%bajS{;>&t6_MZ~5bF=rW04NEaU*P%a)Y^g3xO z0w)E8UoQ;N{~}DZXN}uJ}7?uVBYe zLk#cj;2((LIZg&K_s;d77-&2Bgh1@O%HD!?VVn|Wb4(hD>hcrS@my7TbAgn zakxZ0JcdPNrG!N$C10=rFFKAjIYIlYxzZYZOIEh`O%j$0@XFmek{!DS1vy^4Crk1# zi4}_GxK4#Pl|$>KQ}^{Ap9@n7pNLt_9qd-`8<+9w5Tz%UHz{z{7nU-G zb@0x8BYf*84Vy+a;rumwU(N|0{0ib0hVQ#JSHZ16T!x&74_(X^A1#a{w3YYu4;kc? z09f3HA|hpPo}YOnIf_`T(Dr( z#$(dg{o|QEJ3D*_p>l{%({Yl>agdB{N?%{9%$~p)>2G<5iw;Pphy!`gNw%=v6FJG; z(3nRxK!i2UG%^7ja9UWhSJcxV+;hx6aBA0|9CGN821bxNmX{rh7!x{Pwp(W&nicXk z*05H!*q#D1agO<&_}&*a)lfyHAGfufw1zrW=YF3N(=!cW5SK$R1=+(}!oQ|`XKXpm z-h__D0K3I37tF8Ww^F8DXganH<8W2~PWdo*M|MTgN z_};_rJ{bEvw*t+Vsfj0j0MgVsEK!-hT49IHYP|5aiIv zd@J(aa=qk?o!9xy9CG_+Vf4jj4E@`b2N`bPQu*!zfXcf$*&jac@2*4Ng=%vTgXoy+ z&wm|S^XlU~yvg1&cNV;WJd~{bNYcmby}(#z!z5yjmHWBpfIq{J@andUrT@u(Q3`}J zC2Hq>A_HJ(b9Ixw+xS4dL#Pd8%vT4^T1#BwvE(mFRxtS^q5H=|OEU~X ztf+%;`AI_g`4xjOj?Im@?N@h)un!7>*;0Mi&db*>N7rv}uHRwbxKiA>vE8_f-n>`7 z@i4scw7dE6^d`!?BGD{PxAucUtyg5kjo<4oxhFVYY&Xv@Z$61eAwJz8*}Pq`{{|_0 z2N`<5)B1}FJ-QCNxmlXDj_2!)l5l zPO{f+TG(xR+HFSZZD#9j*2r!4@@>wSmN#k7Ii1!W34UHEzC_utP%BRtJ;PzQybH3b zh`Eg`6P1ofQN%r^NqT;iKSH-H{sF4~q4p@J231}9>j39rdN`h|UJKIvwWZdOIZqVd zXQT<|0ow8UHVMMb;r_3A`(F#uzn&j-{o1#Vjy@VGGpTXpjVOwt&s4)tUv+))bFcr` z{LaTX(JyjVUC_`sCZ5si=DuhsJWA&`E5lOd^1Yk*Ll-N4N!-j5+e1NVI0uNIDDfeW z_{VfD3#z#Hq4(>9mRvv)>S0GKU>rS0BKlZd_Rw7VaPD}wTYKlQ76836*wHGQ(uzE` z^V!;=t6+Ql_Vwcl3Uc=2V|E4mk?6)@>*Em->g&zp(M*z&+^1bOwyU^L=I!^ z)ym-NxGIst=oK^LppVs=g3hZ=j>`=$->-R0)0Ll1$9xyG-Hh=OTswD~tK9Alyg@~B zt9jSG$$ADOvc8A%?2RU}>DD;kzU{9UZFR4an&;chPs7GA_$MwjHSaGQcUWfp?E7qk z-Fzy3JDcK^M6q$xDou;gPO(YP+rQpkcF2yWppp*L_ObQA&)Bt^?cQ%HR}O}4RRhFs zBEnj^Hb2sI8UJ2dZVcO!skuFV5yD#g;`8;*Ka0gLS}V=Z)g%uLUmFk*|JhbNzO~&{ z78h=#`cwoIV+ctkP+9V2faNiS;SG_!2|4f)v(%gmNni7B>!To6x}+PijNE*6#OSz3 zm6j7D4D#BuX8ol?6Z0H*Y%yMu+J`w&m9w2WNmJsMIr*iUI7^DYu@6h?E5~*gRGOLZ zElc{FNO9H-n@k_pOoxhg)-0EfTh?s1adEaB&ov*mT%Xf+w$A}~w`_U;*&xXeq4s4j zh`>E8EQpbCq$rG2JGCuJGWO*t$*?spFUj$}<0vz5S1XDx4D~%tx5ojjRumQ7RoD<` z`dV2@^!sw9e?jU|htK%@p|9y9Jj^sIOcklD8+%lpQ-`dTayQ9a?o-Cj8h>Xt?!H(_ zY+3eIpSOH;>CE&K|LAv-G|Cvo+sU1w;u7`eQ!+3E*)LZ6N!rfn0n`Y6TwJ}Q8C2io?n6RCA0e|SuLKxlX07JUsx$y z>Ak=t|Ads_l<>O0;4~mHTkxy&4F&YS$T$6e($Q>a@?DG}^}o{5|2O$wIQaSh)}ztt z8?C$14e9^(-v4dC#l*zW>FB3kP3T-ST7ADQokpwgmnnl$Z7b+>bo;^)+IyptMbPzV zH2Kc#+dvH`|A%}>v7i>}Du$NtGL^0??Byc6P|cqIHV4oq{J+UJsw)t!z8A*2UV6ty zRijsel=FLL>7DbXymKs*TfGau#8-CCg~`q*8UAnT`~OV7E#)!D1^>_KXg14e)y9&k zEV1{e8~+da#>7P)&lIX8ahi=cmCu)=$u|!t2}r-(sL^qAyt#6@)}r2=MQq;URR+)3 zL_M08>h)IFZ{s=Y6uYlla4reE{>?Zl_AmmM=``Bv{*#WjqxGw+GH)V$cXqBO?=k+ z((~}|@74G1uV22PPyj6U9R!%%eg_G8i=E|zBXYbG1pUQq^gq+l*I@Jiq@yiAJ&m!9SV?l$Izy;fAfFcM?;$h*rTq!~T$D)cqe}ZGdRV|VQK%0Q|qn>U$oEbS6 z(RmsSltteV8ao7bk=plq?iinQnQkb2KNH#OBd7tbkie%&u+!~oZV$8H=Q;VFXGp&T zrV83sON%%ZneurQrL+AC2MQ4>kZWJ+s^fdH*auB;-@9u+D5W~3;jgT7BuRg zZQaa|6DbGI3#)U_EY2F9NX{zRJ*U8cfb$Mzcd!9{e{mD|n&uB)XkXb1_-((M2SNCd zTfbTt5g=kP{k|+A1c3q0LjVSe7%(U^CnVy5?`@O-WB^&nuOq6MW_-Ym4jm?XM+e0K z2F8+v1F3tVYq57@+ zIoYAMB~HeIL-Pj1rFo5cH+A{YTcRxW#GsTu)p0ASZ#B^{dK@*^oZ z8G$tbk|hrY#L}jJh@S{9|MhD-5Eh z$Qh3fMgWPm0qQ@35g03E0kF$WOv#8^Ev>Z3M!k`*tP%F0xAp2d>{L6ZOt)ELFjI*ep!GczRxIJ3 zLh4JvQ~7fwFnT7=>Y);T$7$3PtB=4?1?ZDymepR&N9w0@8HWjI<~4ZIr=&nkVcuUl zI$qNAq;sp9OF-?YgPTD7E--Bq%*6(SX6TF^tVb*fef{f4u2uDc{J3$*mk1H|6j+4` z4^6_V7uANp`j9tJ#;&7~Ku9W^=0j@Ssm5+!|+p8&$@L2UFy#5#_r zGI09%&ZNWs%#er4@E|)ekT}_*ozBHvu1f+MlDky@XvTxE>)%ezWzp0ZJC-G>1B3_( zm$|XzFs`dpX1pRWUL%X-tL)vlJ{6TBARm=-fbDTcx8XwBFC%oN;z|Dr2V=^@BZMvc zeoMsmd*&aqp(BLFUC@z|hHybrZv^@jxkVleo>A7vl;$ z{9{4yr#M2B#I2(PUE|zXo?zp!_^yo2NH~s||jB|n;XD0XNtkA_rAS7jOv8btdcD+^&uXR4F<`6*g_vB@m zLg@o7UD3Mxu>i>qn2K^;>(uX1sWy|@(eu0Uvk52jqs;kq%xe|LstVA;#gdeNI{Q?} z^IVU%fzjbV@}8UDwXpq`m&~19WdpZ9*7OFw8#lN;PS?SsO z&}Fjuc8bK$YQ&(`z#T<_-qCj6wfu-pw~@as}qnav;W0P0QA+T=HUBq%P7vp zrA1Qq+CP7>6Xw{f(yna#7ZZpPM@tZLrQ^6X^`;c|#Po%3_pbhPPhtHn=Q6f~8K}v2 za5v$ELqk^epyEH*sf#Q536t-pw0DD}gs}E{tu$U$psa|7*Sf2*{`Gg?Z4Mg4a2Ns% zaKhQfj>~HCB`J@7uJ($7bsImf=tSShe_vPkTYgG?V;0-}9T~fAvc1gjkF}TIE@OT3 zeqKcick-*{ZQgBon0x2d25415{3;K6m~+)zFCJv{=4@R5O09lVaJqJkiY%J7QTli~ z8~d+V{S({7*G>Q0FQ2FVe*N80-a$P+M#n>& z@5R~2poFf+LJ=N;B|tuTHJVv_E#*(yVIQ`atsq925te#Yn8@fk*`!2b6osLIF7I?H z@x?Nt73kd7irgJBCi?p#z(b#}gt%y472K;U-ApWcgls8A438jw+$b8ASS%>2zaFGN z9)xn0@f*wozZeqtdmseT5os(^H42|z3&{j1LV;u^5N$f7kP4JIxJ^Nfnm9n!-fzn= z=x{iIE;*>Tj}4?92uTh}vl0GPpbn-a?!O6nsuILK7yN_GTz1fsi9!^!h1mEw^k5F? zwgSzaM|%84R@|uSYpaf;et*P?@v)zWAX6qPU|1wQF*I3P9kxg&&K(*k;knI99~V z&}sY=FDMKkx#i;h1NapTVAD^yX$$A`QXXxNlV1KXVXp@qQ^k0t3bTmEMF!)nQb6*9 zj8g)!QcR3&k{D3TNoEH|ke~Vzs!6QKxQc?fQPD&uwy0-e_WK5sD}`PeH;H7Ilp(N? zMz9fMlVNa3N|-Q5q-TnOPn^@A1YOdPx}`2MUXDfb(iGSt(MHhz{bcPE;;Kd41;vkE z?q(lU)831lJ&2kB;TAp)=Ge0~;>C#QHuJu4PlL1%Pi9rgvDH);QZaTD-NuMlSkggm z85!kf%R?EQi)P(G^U8w^Ot+B0BG0ZRtsccxC$H3jVaB+2=Y~U%Sc41({xoM~Rz^k| zV)Zrl2PTQKtd1cUxpMPo_E`;(tji%Q7#t8U6f=rL;%{%+ph(BbYBJw$x$FbgOUYTp zNli_0WI$2nP$jsdZbHTAnKiv)_uHdz`K>>Wu`6F&U#fn7J!lQgW4pO!|3aej1@!sf z7)h*`^zhin^H;fphoO|(7<_!W*lWa?U?31+<-uV`k{L)Wk?(0MLw%P4MF4ycZE10n zIgoLCs_8@>(7|DU=9xSJggr+G^+)0KlxsdC10`W&Xl4tWxEd7uXOPljArJ6fpvZgv z4ilt-AofoXTRet-9>%46k!u6hN?EcAxuDLeE4d*+T>@~!g2CnB^U9I>?`U|CNQsK0 zLgOEhxiNZv!6PcPByz=Rk1EDJ@)eg6rmxp)Rw(}kQ;CmI zd(;k$%noFibtHK8KrT<#PFD=WlAoFNw06;Ew$bno;(j4dzkQ*XPL1mnjcn_2@PCcm zmCa;abwT6dNDAL>hI}^>D0Z(M4n6M^VA@k`y*F(3*cc*Kl#Qg4^_Q&mH4e$V{B<_W zUR26n*h7pD?+fdREkX3=vgIGXe+xB8k~3IuamH>w^Yu)gh$B!YwK-LNGvOUhLj#Wh z_+fTD?Q6*{YFqdg{cEw#y&|1wy<-ly9c7d#zt&tNDE?(TsxT zzV{_p2srZTGP!CSO#aZu<}G#;{QC9<4g%m{(h{U^PPi+c?BM#~-ZgpDHjd&_WobpU z{_B!Kf3OJahng5+6L(>{y-qGKnV^1l3G$|*tlh1oI;XCo6ZB^On`7hA^U8*}NxA9D zPtmF|dnDt_^514Wu~sp|Kstqw!);j+n7zcZwVZ1oApVND%%7$wdPDnKbD2L$kiEs% zvBvHF)LtBP$EL+5MvUoizCrz3R>)(AwLd+fooK^rzX|Yd2*5|Ki#G$fn1IrlG?23e z%UXL^W)_zkQ~o5c@ea3g=BJ)qtAgdLEkI%^7OHGv{mRrs!S!GGGP~lHXx?GBznVmc zi;G@YeGsb}=sNDzP^mmMNX2Yz#!rY++o+-lt@6mGWIj_(@laJfYBWQcG@S@*zJ=5n zaG@t=2Q^v7lJEJFOtsSe$80MBczJ+t@2w*Rti<~Up1v9)9f=EA8D z<%M+ul$YX_n&Tb*aW(r-bX83V!rM0=&58;}rs>N}vEMc?GVI=XA*P zb{-|zYnL4C^In{o#;oxr$2BeR&bvc7$>@M0K&0_6>(6DLtNSCX^}D<(B2b_nQW81y zv_13J>B{|YRe~ZV#q?r4z5=FA%LdJL3N>hb!1`wgfI}4EQ-Su=yRgoYfw0?!N)vZc ze?4iD4=oN{oc%9E?>7Fh*_TB*2Q+CzB^8SPf_rP+6atAeB`LrgcY zGS}XYh$Y(zhO-TKls)T^-PluYJ>L|Na1s3VC(pWTK&YCtA?$5KMc zJ<4gZJm%M1)luDV$_vU?Y^nERHoKW?;72F#)}6l{Uv5jDt%L~e^7eG7(|&_r2)#cL z7^|Qi)GU*F+@my_#eK3$LEpd`%P4g2^4F=k?66PkZIz_%>K&(~{@d!^679pn%}RZ9 zI^*$IZ}lYUS}ic5Ur#$q5Z0>m8XK~XVHH6in2yp>T;Kfkz5v*tT`_J4^t@B4nWAZQ zA63%7uY%&`%?Y~=%q1TU*#f<3PySsWxlqoPAbP*~Tnh9WhmVPKgadbFQ@`6+HLLE8NMtD+gZuThvnluXSm2sYRbjvE)krJM8=xVGhjPQ4E z<-n^`GCY_yw@;t$@fMlvj~`zp zStl$MPcB94&e8-8&z?-99&2m4s;7Cs6ic5dp$=N(v5t=3FBO;_511{(x@8_q4#m7U zN%F}#Ke;OX_;q}cIiBlJz1`(8aTQ6(pCtdCR+&>}^#|J%0R6`sqUR8T27)d+MVsH0;+XwtjSe4Ov{Ae=UN`DRp9vO#jLC z_Vm8zQ?CSAhDZ3&)pYkX^=&-S#QT65fv;cK@U36bUhseZ8>b5J3HS?AZqOYsKi_QW zh`j5n7*Z;|l&-pUGrKv(zm5DJs_^Rj9@aI>#^QPLh^+ptQ_Nk;P+LRv*XCB1)T*(d zjIqn4`>C(@GN)sCU1Q@v$U;ze-CwSs+THe}KIaK10onNWkGUvsoqd%=7R_96IXZ3tCSa|wK54+64C8q^S7q6#7KjNYWo~P4DA7n(6elDLZ?Z&k zQZjq+QR|=TRp?in5Bcgj=tP;YkbrmioD^%pNhCt-2skDV8zlO_)6t&iYQpd)e){_{%NAqsfTZGPZA0}f4kR;#imqBBF1(eUVM z^6$gN=F^Yl(z8`wHFm%v5$^)w(6IWkFJVt#_lyAu=>;gC)IUD#{(HKoJl%r|jiP^s zP0hE10NiGkApuV&f3%Da7nT9SxU-(g6Nu8D2oW(=yzM0V8a0^*5{TakycV;rSES(A zJu5hJPqJ6q_ZEy*qIs_aV9fjw9V<*ujFU9Ajl&odC}lu#om- zFUW2DCu&qsFRw^L!#=QegH%XIHKT~QKn*2mf#AeqpGM|ZSkTXFM&aq}zHsCA)T3p9 zkb?5yus?c)f22GLS|#EU-KzgdN5_+}Ty_O5B_hDh{)!^2H~3W6e zX$+~cL(bxdH6WBPPaG`7(`Z6oUb)zT$EJ-Ai1}f*sJ$V!tOf-$2mUq-xS4WBKt=;b zx5Mu-DH#LVB#a7zu^*Qejh}T08-8Rf@gBq31_2m?g^ZpxGjd^xTPN7i2yBMmNg+2A z3~hZRkbFv`^dRl7-mUOoF5-4MUZENSQH)C|cKKn`YG2bev-5;;g#H>y6nqZNJW518 z<3w=a>BUMoRZC799R~4g8xO(UwmQyKo(Xqqf9CRy`j$5zDtYmvU!ns5V>a47jT=kt zeD{UNyi=}(><;||`Z~N;f(+s<-VHnrlhTsrcQgUP7)P>g28s4`ZCkiqk7p;9*)|W@ z*(y44L$Z0h|5%F>sULzQR3w51%|@iXI!Z!~gqJ}8B!az@^EA_g24L5a{f zDp>qS8P2sVRr`@j;myVG5s}AY?YG&Hh&WnZOrXRL5YHao$6g@6mWdq7~czg$S4)i3n`Aa9#-_bC4w7%SX)0K4OQ6J#a1o5cl(na5}BCP+rbt#rOBkxP9xkLIq{<4{b$yuETvkB zmgaGSvOT1OymW_QH;A*CAs}4$`zcF9=HeR}Ju=x)U#RIDiyBlbjq_SA88t3-i&WB( zb3u>wOtFxSL&ABYQRnF*fe!>3$z!$1Eoc~|N7Q73H}UfcJ;Gxs)w}5-7GND^f;_%% zDWKW{1*><3DOj}i|Jjd{$RHlq=mpg_uei$(yt-ysQoWg@te5F54$>y-c!y7ckvSj% z4EE{*3cUl)W&tiMT5*Y8;r^FNY8Zo}J!4ZxRUlESuW|>SJegH%koBb+&lfyk`_hqmJ}3nCh_b=Gn){a=&&W>>{_rUs zzFKnCk`Kcen0IYL?z+#pO$4MW%*H)9$x?!_z)_7jPVU+4K<&Ze0FShz18=(M#)tgDNJC=Nuy z<&E~S((woA@!lyJJP)kIGnewC)CXt@q>~KhDxeRo-G#ZIHMAv!!KYsxLn0?IzW88OEH4UUm{4$7puRmjTPemKzNF8W$Q^$xE=G zkn=1{cUrLF9KuZCZTNgV$KY=96@j~%92O7fMeQgE-z^`TqFIUM(a~R~RvEXR`Upb{ zBa4CcMcEGkY%*s6Cz~YEyi7u~mEM6~bT6=>dV%cbd8BE%SEuWK1FtY*7P=Kh!{pz{eQ7Xny?{^ps-Z#!gRF}sLSy&V&>RExDQeWZ{pnG9ej{lyQ(YgS?XdrSWPoe@c@UxN~ zpFt@~D#(?7gp-kevO=ng>)Aas7*AdijDwzTprvA?CSgMvwRc8VQ0Zpd>9i8DGcBqp zsQ7bElGfuf4#n*xV_E>f5YkLI;!-vqfX}13F{mt_8PrBo`oOmNo(_zDEPBkgi4>L#zl=p}tO6vZUoEl~QD-R&<%nfMF<{{Tf0W_N}hwPSy96pd)eu3d4!`%-lijn?@D#IN&(Ip_S|*XuHosk2;VVfghGXd zb)mAJiZjWmMnSacBml)282QFWR^4$vE5Ekr+7 zq!FDtx!ONDK^y&zu?8@%AvLMcHYk$YAswJFN#IXW<0znXH4zc4QO;fq_69)UfM2+2 zYh6=+<}~Zmr%+qmHNRD#{{E-APNwS%l}KDckqL0RlLBv>bZz z|HS;SB0(TPA{V<9<}4SU`tkj|kU)v6Y{SdW1u$iz=DA+}H$6_{m+Y$x6IU=IX^o7l zGBr&`0DUL=M>l3=8UBG9^H7-xr*jLFnf~F^vsrvi_k|C$2|Z>^C}_~t0eOwNWHTlG zW{TTYP$<(%&9>NpVUgQ%$bf}2YCmzwF(sK94}JMdDMA}?dAT&(&J|2r?V)K{;=KHR z6LufYfSun5fg_B9mnX&BGS-*s7^{mJtNnAx{12wh#>oOh;m%P-g&)Qd_Tvj)bMv{q; z`{P-I#&EZoRRW*Y97Tp;g0JC#SD#aob6Jf4jqzba5$-U&r z1+~f-*QyVUyCBg$0F&tRwR)EI2I2Ka#q}or^=6y(7SHw8koC5d_4ado1CFQdDvhD% z^fXzJ?sL2z;ep6H6G_Dg8b5qn;*HK`vfc+1+AEVN_{ORQ`H(()=Q({nrpd^VX$+)9 z#(HDObK@%k{_OesV6iFAy>Vw-y|1KM^y0>{usmJo#%ObLzkTXrj+x}SX=L373cn+n z?{;%dk#yIFw6-|hGU(M5{l>ugz@hY30o?pZvuHGtI?>15+)wV?<9jw+Rm+;1?EzwiYPZo9}dZ zr&Bv*so`f+5Iojhz{g$Qz8x4A879_lRMswD?oL0?8_JU15p8^^c^U2XRvEn|>Emvq znC0Cc2zkvq9j_&OE*@Jd5yMsyi}_w0U)NoAG7qm9r-&to?Os#;?vp2PP}49ga;$IV zb$dTU@VG;_h2C23ys`@6wE8B!Ep@$PkZq0jQ%~JDvXL0vC%Yg=~lnSpk|L%@@Pn6c- zH%UjcGf(R&vjfV|gYRb6=h9M!v6e~fT{ntZ78iu-kGa~@@n$ks8cXJ{J{%@#A5ylM zfkG2BORSyD(O*89eTs)h7n>Z1haEeIZhN!efsWN_NVA?qNRK7gC-irV?Sluyc4~FFAG~y=0%9dXg%BLYjNxb$RSR z%%9TZ5P7nfD}uxJVK=IdG|wPWSIP3}+c&8%cGFlh5rF@hNreLHFrEWLXx^ovz1rMx zTXbu3#c*rO+=7~4)|>3QMt?MbW@+`fwU;?9eq;G_ykkJ2b6B*Hi%rz~jLT8rbQk4xx43+mh+1wq@bqPBg7+ zTR1A8*h3|WpmiO(qng#XiH3Clt?N+52Bm|mw^_<)S9e!wi>|2(qzkyUy45Y$p_!dl zsrH-PvG|dAbYJ!VY~~mTvH$^U; z%@vE4MvWw%#@gk|wH$r1WR=ZTtBv;a6=oAH=kg7pUEAcSpP=Okk1rjY6RowcLy3Mp zqRrg-WVII_m-%E{{kM^LCZ=Yt_J)K1GIQAi{95DL@=;GT(V5g)YiUEUrq0ik;a&_H3&3(X%SXz+NbVMUQ%n-)JZQ8)hyAx0G1eo1yyPJ|lL{|cw)#&d)!Lpq z*4x^e5PbN*%v^D@x^4Shis^?48x0yEdRq)*5pttY8j@m5BmEgLh0=jEVQp_h150@4?ZLV{@apOVfn#R3i6P$03tThThTKrzM z!*agEF=>tX;<2e+cQ`RN@BUSUVm$xH?(+1E{zn%l%c*V`-cgYr4zr%~)+iqy(k z2#5N8Hgh8xnMnwSwMaMTgpQSpYah0(sZJR$4Bn5;iT^t^E()VWU||oaX=P879=9{3ucE!2-BoKj^BF*2;UAEE11DR zjIt*U00)9c;Xu@B8j_LxCB2dqBS})50+Yzg2z?bxtX#37QvQTUBY(@dqVyql^MojK z4@>es$S@ygeYByF6>RqJkVxdq7%L4Xs)N77;!CqJc14Ah=VgPvJN1!-GgeQ27!C3~ zy3zYrF#?}hC_JfP`N+|mN9c7t8g$MKq#tD_qK`*v`0CJ${bYuCXk$JNPs9chvp~T8 z7%%Vga3!EDggPAK9Eb2^aYQkv!-=ZS)?8BiSrNM|hni02TvAz8KX2uXnpTfMYHoJ1 zfYX?U>8U_w*JKe-HOHiu0Yh>(_W?&^`}n&Ko$QtD649)TF}v}^>~*j$SsKo?#+`fi z<|H%!fDcMTGchUUh_+X9v3!d2ULdJGxI|RnN6Y81G5ZfKi^PMfc6g*app%#$S6^(b z()*;){B8^lj}aJT^s<MQW9hkyI>!Vkfd9h8y_5I!IBMMTvg= zPj;DA4N#K+(3K!^ZS9T?LXKJeb~TJ>n?_?(yuVIGipV-vGXOYJAhNVur*| zPAwvA;(VL@t$IXcq20strx;Bn0OK&MZI^lkxEw@?Nu3_QCx-xI;paQZL4zpxyfD8K z#Ost~ZGx=4IyY<(V7{4WnY}UZU73u0a>BOIZ+IXhJk!rd9=R@@=ZoD3$6%g8;0jq| zT}HuiRiVI#$j~p(jQSjM@HTqo2BiVw_Y&{DNvEtv=(3B9g=dR*_d=!DnZh^$t>7*B63kK2H zbLZ)|05>el<~JM97N?`K84VeH{HCia2>Y!G9CpMhR}(OtSN2FDB5%@=_0ccu0?DOD z=RD0~Ll-8N^(L?kAU^P9;b7aKU&+7p%5a~DH-OiUYE)G+{idNBp3$p1iE zu6_I!@B4JTA`pu~`+Nm}iRf?F7i>ZBw&iS-tZpf@pagtS;zJ6Wj(b;9EkL~ z;uLYI%8&nj=W>i7&bxai%&M{{tH92H(qc!)W?-3S@uNh+zf#kx=LMeolnT?gfcgM0 zICtC$ovHWcMFf-&o=_959Q?W4yZ!Qe8u*bS^CUa!Llg)5^SB$#jxbnwt=WS2$ae)* zSqJ!;&qwh<_D}R;hIhXTUxyrR-@D_*s$=L3UnQHsL6XYhs4qM=N1Vx7e+sEQWj$>8 zLW^$n$+Nvp^0+XNdUVQxs&$VyUr~=&pS}-+eDy7WQ=-t%qEK*|2Phq}*osJ-7b0~9 zwhRP-cLARcovm~b7b5~9WU5rbA2aelZZp{p+i}c^xIm#^PW+yRhL{5Mw&MK~I>W?* zDt7REe`+~jEMyQxLC~TdP<%8%Y7`(dDxf?9Fk2R&MfedS8DM&tp*L>y>{J`Ve6l4U zHN68tU_?MMjtKK_(Lb_tWK_W`MO{IGxmF5Ygg-VAU5FUJ1*Da!DD z;J$a4T0mfT>1N5LyF*%9xGOi$FF(lu z2{!d#xh8h7KCGvT}1j!?zSkQ|qP>8|-L@fxuS+v2IY<0p| zg6e9$+@&)NCZQtWgV4xI#H0~MXE5a9GrDg9x|1W7hJY|L3sxrJD8dK|Hqz+^_PRI= zAYf&M&kurj(tZl9v7WzKmTd*MhIw{|V?on=Uy~!VXGHA}paBs=VU}TS5vDRclEcB# zy3iOy5Rpo%Jf=n%$`*hC$vNW@sW$5%j2=muz#}1VU!6>lUB*o3BA$K;n0JMf7})x0 zB~l1;kqZYUc=9I^8ZhVw?G6R%YzAI~sXBxp(9J-0UBU-_MpI{XnkS?ZUeoKFMhM6N ztz}kJ=pva=oeoc(t?1VKeNfoqQc7ha^z_yvlqX0P!%9*&^kmV$4C~-SpR!1JwnM2hzQYI4Fx(yt#04nPTs@N$?KvO4qQYj5meSf%}*`zWe zpt`fBIcRCC7i@$n(hQJ~3Q_@`y&^C(U?SLvGU2TflPS@r_kcwpIUrKt!kqVzYv>@| z4>P08E;aZ^7D5=h%OLrTKVFt*jF^k%%v!XR#LLxr^3a3{*uk7!fw*Qsk_4Ali`Y7s z9MPK(?#}6hE`IrgC0#BcqV z3osd!gC8M7u}b{jrn|826LDZP<2O5Fg}im?@wk<2{Ne0Juz35 z(5X(*;6*qg0dSZ1vkI1pEh)FwJ<$QQh^Qn;-|+K=mJ}pGTDcu2mL=pbO{f|~RTr7f zOdw#Fr7?>h0pTj*?)j|K0{ZoXLlvYMkyS>MO6BrI^!cErRK7h_J1vO142DDI+lNv9 z*SS=BR5#1pfkNROjT`91t~^pNAn%wu*1mW*v*Jr4Bl)6*@gWS3tf;}F$?+~p@T%11 z&LIO36ViB-NybC!oN4AtDm`G%$3dO<)btTTyPr!Z3<;^!E!z8BPzz$H@#J%OKRAmN?4OM~xvl#q95RWTWC%)auZy?kBkC0pAU4esdK zvYZlx_2e)VrJtwarZh;dh^np%5M7B9{8|0b2kJv`i0-~-h{nMbU5gIAGW^0KSwTCU z4_E*A+PkjeSUdthf`wd4!`+K~g>S_JSojnkIQ6`(Nz~IgBZ6|eh|{M=7hFxB54W5?X*{7VZX$QVXTfW3(okIcE;8CPMRi5Y*Snh>$1(I2c)tVka6NEgt0~ z8uP9-t}-e!3@EDC8r=a4IQsHQq*YAHJ8>S!E$Zb#%0VpM)<}{~gf87^&`1t!)JZ7M z5hb){@*)$3a7(+3dUV*NckuUmjYV`cD|aBAOX2q=bz`s%Az)rQqt_xIeHgF>!`Uyn zoyN`js-YRIQKRG3H1v+3y`uyD>Ef#iQ#AzUdeq^yFAjZiJ-aFpeJFQG{8}@7g+5MS zFH!{TXS9%K*jF~+_R8`Cqd$2|WBzAE&%1#?ARZuNqhDpj2%w$8MC09y9tj3wkkxH~ ziQWMGw2$<`C|h)Zk=wpT*oF|%+cxsPJ<@)#(i6upz}$ZDRK&LPcbMlXg%2Bqcxq@X znl(TS;}lKv1L?xo`mV_%TvK z;!~ItCFa3VavC*mgJ101GVGHZQC^ch-c0!?oy|2AUKh>JCmAM~j9t*%@PHpw=hEVu zKK^PL-*$X9WBkYH_))7FY{{yBwT{zy7@?AlOFn*=nb-6p-@o;n(QvW;+c2%tiH9Bt z0ffVa7TNZB5-oAk0{9($%M}Cuo!hyTC`@QaxO<=NYj$BCHP$2zL2{TSh|Ula`Ks)( zih4mTAFX}L8d@~8>`a|sBc?P2!6AI*(7)G|N3}K`zuL7(T8NQ5tqU!x_m&FMc^Mfo zlI1XCBj-;}X|wz!ET-=@`wtU;fntoSny^k-5=9)uYz1m?A8~H)70<>0wAG{Im0C%f zp}scE5%?YPqD;|m26X@JI@p*Ovrf;EKxHCVtvbtUBG=q;xGej-`clOkNs*L*Zoqc2?Bd;MwABRaqtdn;zv&yhw9qg!pLHX-Gq&5F0CK`k^SdSu)&bPGY z@(3lM0pL1)88FS@EmbWKb<{Q-vPl+~ z9m%MFNxpLe-`;)%KBz3=0{mHTKmMg<8$|%6$5Z7e0D3kkLRdA-W}Zavc3<+A7(ln! zv(0zcKBl3#S=fx{=+(oKdphSJ;-Jqc745-}y9G%HweW4&Wc%o2oGQ6((rpLbbp8wV z0GB6;1EGrfFpPa_I3=-CDBsUA6We7)A9s&wK5|IaRL6S)=V|9p^z4k4^&(sH?^!J3 z2z+bWQkNG-8Ld;8n7%8vpk6pwT(%@JAFT7fT?`4d}S zXg){lpOw|?hT5*fLvIZ+tABhKCo3L4IcUyDU&6j*=8RnW*~0mbtyPwKYM?|3c35>k zFO{NBO(8$m3FR%HbDBPpFWEFk~uadu{`({nL}}|wyYN0 zPnwhLLO+v44sekZxGxi-&=bcRFBdI33C=6gbT0s2NKwmn4HZKpXGbZ#i{euV>QQoDe-3V zmTIdPd;E{cX*YL{=wt*Z%nV<~VzggrA_D|m* zg|;5Qz4n{cINz)G$Njp&7(1wm`3EKQdTM@!Mk*N0X(p+U)`u2CMXPCR2H%$d?`950j}r1iLEa5gpcIM6EZY@A zsYxk5S%5pA!y!;%? zHmc=lD*KzkoIj^K1=4h|v(vWEnhC0Ql4$mPZaQEVi3mg@Ea*vhqRDY%FxN=X5RZt> zbdIF%_E&75DA_@T*mf{3<=jsy15LL@Qfd{+p-(1%-ABL61pOROYE}LA=OkR;u%Lt&f z`hvBnM6!i~hoj9U3w=dj*N;ZIT2={`E&DD@{3ayvWqVilvDA@08)xC~DeNyr1*oe^ zsCdc>J?$j%vOJ0m>1-@~aoQG&XpE&rF0%6uor#@bnTX@YY>shF2Jm`z6&6vYEUzlR zr8lyW|C@;77#LloU|jH-Nv-_nV98QZ>I9k{s?cPSLQQ|Fpy7HgN31%dD*qAWB!csD zX-h+ybK(ngDb1P2lyLPi7Ch~3ccZq}*~;&^jBNrO1(1|Bzpla9%pB9@LUwXxgr<;G zh(Q3Fz|vEWN?jD85rKdKqgHX%f+75xt?Y+Y^kGF+%7DO1W(MJ}(ZWs>c0(uU7sS12 zD4|tYRYh~p&0OUstiYyVO~Ej=s-jupUYq93B;ct!z2bv&QIt*)8pmz7LSE6V8j@Q6 zzs*D~4gxC2ezFJ-zyJ z;D~yAbV8AqsMSx$e>rRhVg`| zmoomH)K15}vu)C_5*bT7nfSREr!Cgt(2=@2&1Pp{6weA249VZ_>*eIE>z#->&T6t75;GSVe2--u5RWyeuUY0m`X#l-q! zq(q{I=!IfB(9lyP0NfW^8j|iDS&g?+`yj1SPd^ist>ftQRz|J4M%rTZU(-c^6}qK} zg8G45(O?Yu{f=PC(htt{`8Bi&Wkff%JiPQj20&pVw7BE8lh~WPwHCtENi{D^d;s^f z^?_i2RNwubh}-^|mhZbClA+Qi17#V2PAW** zi$YvZM~@L}vQV10^t3J)CQdM(be0T$4u|IvRrv9=hl?b$vs@+i@83LNuT%zV?006s zkL~3`-S3jIvdnl$;F2_~`DA{Yu5+d54u(o!(uk+^RS>h+G6M^5e z6~b|?igfaka>Onh_b%F>|4x*l?k;HvUf*{8rr=zw5qaZ47$d*mJK@r|CkS4par3rv zqUFq&bOWVxP*D8{L&LX#V3+2Sw;~BBH7$r^7r&g3I5mIrkX^#z7W>tNrL01;L6Qv3 zyh}ZdhtgUh_mk*wH=p*nV;^X@-L2d|9y`|$qL^FPFAj3LQtMW^jvze#sP3$d7P0K@ z8K`>E*94cn<=8jX!`=0x>Sc-_5woG^|D%Y)!qT>Gh~| zBhDSbdd}T*EAF}exF!Pmhs*U4;tMgZMLcOs5FBZ?kk%Kj$dQy`;ak9$yKY#AG zb!-dQv<}M9<*PP7T|5?k_*Jy|538k>`Bg~t6$z&om=rq*QWa>(w5WA zb;P$NtN|(Sx#9q$*Udu1(~YICsVTM`SgmffsV=)T^c_&E?#5LKXJeGv=TO-4Cv!)H zB}$COGz%-HJbw0thzf_YYTqYPs0ZR)&Cn4nNunWQk8?gYwLLRfN?XZSW!S8pM>=0x zC51SeU2{gRO!r}9YUeHL7aSDM$_osem*9=sCPBwou&fh`ue0~h<=$(^mymaZbZi$N z!~W#jrO))G54WI3I>>e(r7mo> zFzenorV085e)0|)-~SZ;LTA+GiE%d5+q?RW_(|F7_AoYYN-wp9I}PR>i*&OvITz!t z*!TT?Z@+i?q=A#q8>bd;zduyCl3z`A`r37vFyJm--QCU(GV4+oKJ-hXZT^6Y{Cocw ze;-S_k2%F9vN!qL8*YgsjqcCF8Cv-8q?sn`hSD98?!Osb$J-I^QQ&wi%q|&h*u5xl zyzZGa#Trj;V10QdDzRYMb8RVcE6O~|+w<2J@NT<0R-rhd{^f~t_D}4FH@_kHh#pd3 zd;+&_LhY{KyiFp?g;9S2f8f$Tk@>IepFanS6I@clov2zy2&H+6z-4hv6uo@Wy>i@< zTiw*?k}^-a1~NyseYBNGA>;aoq&_UOZ!NAJ#3)rft2h_{rk2*P0kArp-;yhU9x3dG z8)gD15=n(5JlyGn9nnKkUK|$4!e)_5549?81QjdD*V-|yw)wB!@>w#OLwS>DqhwbP z0oV$8Ea!kqtvHCVtPZw>rFkT-0au@q96dK>C|A{A5RTbtMGWoWUy;EW7a77z0H#yN zVsM9dN9oDofERf|7OZU~61mY(Azd-Zzr|4i`cgzT^b5p7)7}}9@VsdTDXpEsm_jKQ zT=Rh-%dmg24oE1Zg-|GZg@3^@JX5{l%^H}(YTjFkIR(H44SSrFr5xBoEIB3#4CCju%#cFJw!gP@EvI?({B-9_~zlRg(x0OoJJgmWREqC_Z<; zBGdq?8r7=X4QGla{JR^9IIk&qq2Sv7H4gkDOboVkBDAa_m*-0oHBJ}3`kC@FwXRLh zKSXKukSe~hMpLYU@`|~(h_SeWwqX?<<0%(cE6(pVBJF}>zdBlAUhVMEyM97fSI%TU zJKEM6FDM-mGs;O>#n}5oCAvbw`o$QVVO*;;ehEd3*Oju9Wwl=WSaluNW+jvF(b&i; z?#oU9OGQ^FNOf8k(~U@fqtF~+xMEwa2&$=a$68p-$p5wD!VdaA(6 zne0?Os|B30;?}0H?d(QuYqL&hP3|oLeqTHviZMR((UBiO67tDf{V(sO8az4^oqkMI zU$n^dm2_y)E#9*b5Io0;~ZtiyknB-Z!5wtQbFt6o~s6VeIrV7?JlM?qYiweafWJV+B@m%6ORrDwyM+% zN_e#$N2OD&2y{A9hMr%wk(n|fzi$>}B`>5y{X`=kYEQlHfb;c%Kg4@fBDRj#q=Ya~ zME;t$QHms;fS|%QPke?jcMA)&tf{D4eWG1B3eVR^MC*Bh6tPu{YMl30SP&dV?ApKt3jy$Rn1y2{P(?0s!i15N; z;XLu!^jXXVW(J@Vg~cCK+7S%Zp)4qM)>$Wjq=8%MDs|^z^S95!wGOyxsWVPtc*t$R zMqKaakghG|i<#qM0iEt>qO$sgldQSuiojyjKRJf7gBl2%3csd{9HtEymXD&H?J&RmBEN?D|8 zm|47FcQ!k0Uy;DY67Td%=G365$8fzfe_!bnYzod@r(f$=+k#o}wVHk?__dtIa{OVG z9qN3Mm`Vgs9*%<{%gtPd?ao@a?l*PGGX$hyJdp@XD#^<$K7gZqt;|~ ztzn;)!!lAq{_L54;`-%T`U;E1qkeL5UUl&!bqyrx9%;NBi&^g?jNXlGvBmCZ-niUD z3Mp>G0YOaMaN7WmwZal^NBqO)@bw#< z=oIA9g*B0HSug9nBTb5Ho9(z7W1NhPaf;~#;mA-$t<)oB!YbuWt)?uH>|8tmo3%t+*|WRW%c3?oOx!wOe1%|uHX(t8l$odzh*IPm>x zL*X_NuyCON$9#&xh7nb2l3#BVH7TWx{K<20r+gMrjUR_rXd5jbiB)#!KXT~r1?V8d ziCeG@#yzm8n+P!-<*>GmCcu|~(ZCS+k-Bz7_gfm*yIG$~8+~TIr>6>6=+Y8m)8~(R zyv9^-S_^e;UC|5jCKIalX?551i`QEvW5q4eG~@bKRVMS4u0?Fu=6gD#&VBlS6d%_M z+dHpl6`BrI$9=asvB%>n_fv+xYnz?|CXN;#HGCR=vmj46GyUh3$T;>yDeIlEGeC&f zx_jnb^ZtpH$PpET4otOMglMZGl^j?%Ug``mZ3B*6L&BlC_C5~#ZFVfhr=vAHbw$f(j z;HSP(!maX2)uO8|dFoX4V+|1$(lMX9&q!&gN_^J=#4_pC@*_yLHjySf);)tT+u8h5 z1%5^Sb$)Zgh0=VuKwTW!tZ8Xq14@=orM#=aW6us;s{VB@;h5SABt3P+ngV#x;z;?d z56r)zML(y4p7YMsb^Ii8Q9ifo_)yV%eAN%eIYi=UeZ$yXSpEHBn4W3b%9g z?l-~F@PvP7Z=C+jE7wH4I(f>*1Dot17E%u)uE1y*{;xGhW{`K4*QbChYoJzCj@x9c~Yn?m= z-o+@h8x1$1}Pjt?{?-6L!p1PvwpukKq@nWfhV;ttbjZxyw%Ry{;UW`t}Z_x2qxMmca7d38?y{D&?@GgNV zf4l--0(#EPoF8xe@|{aVP|YAo^$p(qXu84hNyys9-D#KJ`|F(`Phv zT+Sq4{r_Q79gZ#;R8r_Hbt55xjFUMc9+#&_znP};rNd$D_H)I@iLE8;iYP_i>9)vl)U|KCUvz{e&AmS%`L}zr+01;ny7B2G z%*g8F?zq(M@%!i5U%~Uu-f(=*_YXpsyQAs6AAUXvUmebrYJGYCC~|Y!DacDz{U~~O zzCD!uJ+75y?eciB!|xnf>~nK@F!n1(Lj3XJKCmnN+tW+rd}P?h8&q^pnjlP;*3FM7 z%M0^LxLiU7zK_@8NudPxty^}uY4jw9*^0yP$nPflv{B5x`&%}vANAy3v5X4sSTfCc z?zr5PTbU^eq+NfCf2j+l*O6=%+%=M?QY_L|+PtU0@kFw_x&H*MmoOUkg#}ajsLqGM=&(VH z->9;(RJRhpuB&k2o#M2F4qFS8s`5-LajNK4+kVAv^@rulMz)f^k`#`w6+J%e^S}aTU){z+k-zpIGkV=6a%6YQiK*Ot=d0X5%`JT0b=U1u)t|Hb)_7{Q zn+{K?t(_w#xaT{@ui4wJI=o|VPTcTPy;O4h{JEythSWTri!51PC)=^9o0c8^sI~3b zZAcibH|3qQx0VWW+8@deICh+Fpm~YxwyWZ4?@f996}wdncrS7CkrmJFyscxSYwp7b z@t03l#Qv{4wfocXBQrJAp|t& zyk$K&F15i_4>VvIL@zX{HiS_Oj-^%BOITkU%Ha!tVTtG?ov95I=!E0Cmi0Yvg9?{; zfJ1^2{cu=agvCi@Qcg%EDp}oYLf^$>(4y=m+p%Bi=yK_e;DD&f7q^$p=|n9;dCF3w zuO2Z!lWc`_Ul(hrzO9-kU-6V?+n%&JN~S}G3G`@%zKHcqf#W|Ra_MznCxBkiU%CV- z$Pi(CsDh;p5{)RxD7qx|GgHGWby}4SFBScxqo_syWHa?@Bp%{3U}nyBYgJ&S@)Bqk zvRX2aq4c<-oQ(p=3^( z4*3mZ)mD=+46&^#pWBA3rzYn7DW0Q$!RRalpV(+`%m3^CpQHbUg@xzte`sjvx%+<( z{htQ_o{RtI(7&v#EF&Z1za`!0^gld2{CNi8|GIxhpQis-b)P-m=K+AImc{?>{wx2h z`_JxO`xiv`Sfu;h{r`(%c%A`xhILB@R_@pOAF^LPRQ;#>_p6xVE4#973m*qfl2k5KZ#`g5z3_=KTNRxc?pc|Nr8+{~P-MFOJ(6MXB8U zf1&^X;P(q~? zVf5#crH|P3>6QMT%+SUBZ2DSFm*2z%;gT}jHxnV}1FV-B2NCOE18OcGnKqRUQ(r+` z)^K*EKA>=u1p1-CNwQtOj_7SUY$zh~!U%Nl%m^t_4_3m-;z-~h)^W;cRc8sAj3QVE z523!-ff*D|l*qe+$kryXX|TZHBAq|x5k`?S@j}Mugf7A|x`YiA@NQD~h%JM%gc`|4 zsw}i+YntMTYHr zGJXzieo|B~Dlx6FONxuiD35o4Th3D64HGG>>WLFEP5p$PZt3DBpHCSw0%L_#%ZmJP zC~Y2mbx_-UuYcM?bb1On-4M(DVt=>sf=~wGR+UVKm zN35t%39kFc#^K}kWW^c1d+kS3bF@F$<2Qwkt#dl}Rvh}0&`+H|&G@rf2H<1u_B2q_ zq#qBQVz%v%lvX@!Hl(Uye`vzTM|Jh$nJwkWB4efKnPgsMyKLE}s=k_05j?w^Re!~P zJ*Tbbcs;MbGuP9F^WM>I!7QBJU7j>u@%NH#Y4wc^Hpk(wrguZ^x6ALTwJ&pB4@?Ma zd~cu5Za0t^9Cw=`#P9F6BA9CKwqpc;-fdyeJ0|Snf!O93z45|?k?|fs{~Y9pbKD;m zrN0;1O%7n^T}{vXd4Ezn#PRpEu}@9+to5Mg@6XO#D(@(;hQC?ih_sIHegNguEE=Us zKIHdgbg9^-uL;G&;vL6O)5RQJv)5}H-+Zb1t@x+MzBTN(k5at{t;U`<79aiZy(hkC zVGving#5d25fy**INJCdqSbOlGist;M-4bDl*|RIYyY#~1npdQqcnqGTPJUz&Znnf z6ym{AS7=m{v;tvS=OGA{0xZ4ZUZQqL=u*<=nQSWotm`~XD8#%}#8V8Y6dA_OyruC3 zLzl|YMxsz}0?xrO>NCKv2u0s*umm6|h%Ygs7(}ZX5>d=Bdd^67l`kn>CYQ>Vi0HVAgd)vQ^(ibrboR*$#z}(KFOcYBG=cowNAC^TEHx%GV4RmuuJ+oWX~d-!3W_cQ zIHa~E`M84I*Hmbd2*3>3Geeukn(#NqRw`s(FqxlW;>2aN36rG?8t+3=$T1mYshE|M z%{GPMQ<5E@cyo<#>C+@Wz^Hlm zyWKYuB;Vu5d9`W(l&H}onIxJk3+OD$f@XvhKGrLHvQ`EGu~=Rw&G8DIln0>+WvRyt zU<$vGArcru6uys>1$~DC(cQgh1H1X8d38#;-jVeXCTKHZ;4HdqCzo4CF$fUfF)L_> zfcgtI9hU=1-Me=r9NRvmv9Bq@FzN$wB%>^5w*h)zD`pJ>2~#A>q_I-G@k>Pb6Y2sP z@y~?QmJrD57zza~yxTb*uW0LpMho3vOo2uFc=D7>cwO5p3Ah9TAmRjDgImF(K#5_H zcv;Zv3z6py7=$%8eD?aMqXu!PO|+y|3zI50RS^hnCU^o8o!*QV`lLQ51&Ta#codd@ zQ~*35gR{{HeBkr#F={sZnX=kg?jD6~qgmvHd}=myA1m67NNLCJO=U8sHsBL9LsFBx zu{g++xHI7^(wj4X?N4k32tgBwS9StBnH*|E5B#ZT(T8$xKU-8z7U$5|KnJq?nEH_$ z>Z|yyGS~EXK}i=}kG$tta=Lqn0=Z;W2&5q<^L;$K9B3F8K5W)!$Qx#7^kgEB5vpCgcF%8XGQiEZ#niIhALkF*>cHr+basyjNGq zI}O^l|G~pp3&dgE*{A9K!!G~(BJ!{Af!;ppH(3EmAQk|LmakZh9BBN4D6xBQ?LAwG zdhPU?-hNf&aIT!)2mo>dpwi@{@o-61h*H|Wj`p4_``1`4JaJ<3d>Pk;-dy|2q_=+W z-lk`;sm_Mo9>5hDqbxCux<9^y5Nsa|U9a{33KB9yp#cGeZfd?!{$`;)?^()eYQOG~Ghy`f$1u{wDQMU9ub^;@7w!t-464F1 zFip3)Cfw0J6wl~jcwe|7c+E8?eFC-WJwJ-!6bO}q2JrIlby?si2k+Nw$K^@h)5=}0 z74aAG(!cH(A|?`t$RnN%DS&LBS8ilCirp0wTv+b&H%e#{`{E+QM9sUfdyQd1;DgLARW_!& zBwBW;?_))6Fj;>IIv+sH&OU&45SO?GgM;?zJeWH0ZZQ8&Ubst%5dwOlAeo90dG=xJ z4I_oh3doH~>P1do`jYn3y-os3St9K}cOl+<$lNZu6{_Q_eJ=-R2?ipd7^B}IF~M;< zjFtwJC>MYc1XQ#(TGU1p+O!$m^W=02)Y}SJNS8tpf}q(7VI1nA_fpy2T5N~gjtM$4 z)#?%=2oM=C`~)^K8eecWfuLFfyPg6AnD#wc&XGE`9y$=8Pz0$~86)92#TXB5o)FYP z-xHVHrcf|4cnLq#78d@j0qdi+YeO!XfQ{D?w!I*hO%PKWQK&R!HrUFqj0k7fQfDf( zd>FqHjF=8$qL9?3kqs_Au)MgoA=Hg@AqhRYh^FU`$|Hu-5x!w|kEw-*p+d#8=^%7()j)r2)OBgG9%L`p_YP7ZDPq zyugdlsMWWzI>^|Y41zz0;jqLI_JepcHv&o|kOnhp5DF?w(kH0}4qJ&!9Y$ks4aZZLiC-w?Kp&1~i z%@Bzrm{NIEEDzgvj6@$9zeUf~+@6%TY01L!P`W*8X?Cv+5aM6WCXH1#c8kf4XGV)liYpO=(c1$v%2H78t;uZtc97?Lxx# zQJ)GCY}fb{Xuk}lElonK93Hq@N0tsmpNoEGPzw z;d$86F^P}a(PYu`8U<0@o70yc<g={l2c-vy3BW99t z@_%7PkFZQ^X>DPba9l%fRDoBJD}`9MVuSLW)nurKaH<&#%;G-T$~%Ny$rqQP@cNLu z^odl*nZdl$jmM=whjErCBwhSe8^UidtP$v9;{~!KEu-cxZ`us>Q^rm{LLs`-%#T+IO^GBT7Ajz>O(0S>CL#Cj_w*L)PGyIa^K_TcK8eKt94hDfG*Ye?7-ELNR0_Y!>cDvRYuIJ|yK`8){-(`dAwVt%N)) z744R#+F-EH2}Ft<8CR6bz|9k6~Y0$z9HGr!F>pseN zvvzu3y@o+L`=UEXeLA5D2{bgFR@h2(J;|lf?eabHjG77Pfxx;G{j#S^<0m>zoFr>* z$)eGSD(y+i z8WfBefDxRe$r>?lW#C$)J+IcGAgfTH_bT10Y%;VTyrm=s*WI>XEU$x zewe-v$h)dz-7#iWJZ8xN>1G?BTt_2>wR zG;GY7Mq`+whgyI49YC;aBMK6uecEYNX~?U;-<5*spPbAiBimiZI*62KF3VsGtj|?J zOOj}Y!JrGX&+KhMiRsv^0Wj@Bv`2$t?zixqlR*{2Jw%dx#%FBq%y62SVwA(A7FTLc zbsxl%58_77SxWULglOE`FdiVZRt*@%npSX7So#1$+^ycO1<1G~JMfvnJUQXVCmT|7hu2rScB!-;RTC z8dYM%zP`k|YV8M#I}rO#^24lRE%`Uwe)$G3Ievimv^dN1k#gc& zJnAU465EWpG`!qP_LOC8ldT++TdqU^bN~>)9Dw?BM);?ySklU{0)8Fl!uPXrS}u^m z!)rJfh_<#-d7V;N9auC1xLKRg__~X*N66KEdEL4FN&~pg3L>lRPRi+|Iv<1|mIFxu z_*08QlCu$*TTm)x>==zRas2a03(+S(f=&w4lOjb~&+&!{C}RQ&!PFwux63MSbyOd+ zX0oOJQ;dM@%S#CZDAzcu`7sWA2dOzI3nQHOeEHA8>igVP3u$c`H~i6@qXyw)OTO0c z%ERw-WaY{rkWtF4gAf07*Xw%H55ji?DhYRxNBY|6XR!j zj8)JtPlUR~-piArEsB{eCcsuf6c~@XLRK<^%RDt0i&El$a9m1(#te-e`A`B{b)mYT zo&UmdWivJRl+xHu()#Z-_s64O@KROLehyQ_CSa@Gl%hpPBVf^|e z+LtM(B+#uROD%|qBrK6m{X=*vj}6sNFyq!eGi-KT6CnKSUZow4;d&VJuFl4Qm|nMx z#yKeDRa+IOuliv(|^4q`6 zB;ZYX5!ZJSt2|&dwWhQCe6kAwWAo0!jj6z!oJUy$6R-(+Y6B^HX}!-uGt{!&yiTXeE_RbNUeoF$_}|E2BL zk0l}rChAsms?K^^w4=?w5qDa-D)QPDPH~sEirR*=xO*P;f~#aBf>;y)e4#H^=o{6m zpVnm+QES3v8msSV)we<(UKFSF$^RA`t_+mOa2=JY%z(4S->oJi2sCM=29)$Z&d!#& z(A5jXBbE|$j21iiWJ6?a5qf)KA63FL-?Q--eDXbhS1a|wdO=e!y`no`{~c>3MnTqq zfbbhRIw&hQ2U zci62AB^a*@$>)rMTx7uJ61kQCY`o<1COQ^n_RSEurVIs#eu}0tTnyb{7p#D508dfH z1)^Ybfz7#hHnqPe;gGg1;0~2@v(&Ke@ed zFv$7xlWnI-GNC&dQ!IhTJiPUW%%N`NpNK=qlmK}_8h#gG|9jH!!>Y#G!EE+iqivEx zD4*mZ2vafx?BEW!sEPvQynpeT{PAHpRN>u3$7K$=J9B55$|u`k9N0ZFI9v?F3b>O4S4@TsPwpfL$gTYU#<6dH&!*eEVJ_v z`Bv&etgBy9mLx+d%=~yV6`64l1VY5)ktG3OpuSvt8l+a-DhQGSkmeu>e8Q493#O#V zLzOM#dtm;+CNDh$(y@i%_gd+FO&Wgc7m(gkClfW9wI1 zu*%Yw_?HoepO4Z~kLSzemr3ENb46)Uyt$`^2*TP`!(sY`T2s3yFa#pfCdI&9o*rJw zcN!2PGrU1hD;VWzEpINnD#vI|_q!hu8}I_3s#0Ap#52?n!cBcgku-eH9P1l%l|Lh! zKMZ?&ps@h7V*DcgvR#&omfXsuhki8=qOVIf;HjCbIKI5XAx}C%lP| zl0#2VY*A{)bNNEyjqJ9P&{6=iDDf@Z9Y`jMY)hAVypFYvO2I3a z1j|cG<2eza)~+xrGS5(3lryy~7SlnE20*h{_ttu;= z&TQDOxKxa}k!_M>Y-&)#y%Dy>s-U}>JhhBp&zQLPj&hfJCAF?eQ1tBWN7tFN;TvX> z_Ng;m&lN(8G`cJ-TbtS6W&JR{H*KLbGJM#?8zOs1ou$`UpZ*{2?t-bUuwB$}f;+(- zg1fsmxKp%fDOOsfxJw~ua4GIk+`YKF6)5hmh2peW4&UB$_RQHo;rxTlWU{i}wVvy_ zPfY%irOHnyEAvQ?zqf~aa&G92wMhjP>3(GL+#4kKk+d>R9r=b75X#*^ib?(AQ=)S- zsr8koF_*AQxVxpw!DwELtN-Qjd!pDy6)8KNs1`|&|H-$v^-HDa1JgWPq zxAaM;wfRhH+qmq1`)Ed;-a7oqAly~&a+g4>WDt12!BfiNQNdee`cz2FUPPma?$V81pYm*dZjSynY{ zzDU7ysl)`TybtHE&D6`XjyOu|)iG@dJ1_pk*qa{cm-C_Q$!fAEs|WRYls|vf%`yhu zFwn?3?ncLXj6&At%zeQ3p~4KP3uMdxzH?K~vVM#c(bQVzkWdm6eIzmY&w%`H99<)x zp0wZRXMGB0tzJ;y(%*;n(BjvU$2tLtS?U|ojmA3fMq3ngamKsBnnuGfS^eAGCSgo; z**{&VE#!??H@|>|1)I*^9WraLOWg-lcD})@=B6Y0+cR#4A?HL8Rzo8#tqC`%W$M!v z+Bk}x$<-pKHJdb+;lOv4!R2z?QA?CFJ6(kn&qK+sR{8xN?qf{AX?zd9JIWSbKN;wD z!jwhFa6G+K#_DP8b0i=G`Iblm7aHOAW>pxco?((M^q8PDWTqeg8n*{Q%riD}7v+JF zznS(ejYqvGZy(-^xHEcOF670gIO(!WD-!9a8yT8V`i7$aSf5Z~Tm{blC_p7FwQaIOdq zxZ|FQrwkjE69D1HA5r~Cy`wd>sc$ltvU&cxgT zV5JcT;8Wtl+OWyn>3Vq*GI4lhq4X-^ND~=h+eATmcyBM?fK{j}oLZ?*6INEZaMz;K zP6KgY$JD{!KrGatB>?tPplqT<|J4tz)wp93h^cFDXFnw^Z~ERW#zsbbu#-5EiL@vE zYuSLzDpUAAqe1KY8^TjTwx_arV>JBWdX!VV%PSyv5`Pk+EWB_83wB8WQBDp&f(WQ# z*`Bgx!CEhj(e1zYv+2rCxc0NvrW}tnbN!axFp#~S?#E!oj29bNe(2w3C(^ZT&R8a( z%j#FO#}to-VO;Q68RO@ViL1|1Fpjb-|BeXmX<|HWGNc_OQIqp-m0Ueaq!};QUz5{O zlOsuQK)i~O8UqcD%b76L^H|hEYsD)n_$uiY=zqyiu(Q0mMBmbcmf#OrcTigH5n?F! zBJCyK>wGxvyB$yKp8~z&NZIm>+N&G1j=aEI=G7#%(NRkVRe(%~j zW~S&H@=Y#@AZ)9*(wu;pPzj-L_!KOrmoWtPOB*ANgy$QNoJ7c%fn@ofhHibEqSj)= z)Nl%n6}tdQq|-7>n)QK5qsd!x@Jl95D*_8U<&6lr-z-0Fjfd&+qDjy&Afjy2do z60T-&nwbIF+lvB97UcPnfNt*DNra*~f0N<=Pd zK?!L6GzJ3pk7bIb@h2H>_ci$y)kZUSouJoi13B{pk4d@P|}5@Y~`w-;_Oxadf!LGomU29u$B+*rb5^wcn+ zOlaEVtw7FujtK0)Y)zx==Pat{jw1NYTgrmM59Nd{3|s-!vjsH`ZC{ia`%b$Pc`wz(1suvSmU? z45MRCY;*#|#GMh?R1rH3beQ<*IQZIFvw3tebP?o?kpLFsd}W$1x!aKL5K!*(vhZJH z5Jt>fIctpr9_Bx$@!N~5;ARkmHKbd>|#4Li%&MK#SQ;9u2t~29GfsOF=A?)53&Tb3Ard7Ew* zCNp^kOlgpIo?u=Jx#N&m57P_!)sIs48SR~(hQ2&{FCH|>R@*s}&VK$K^W_31f`0Ae zyU?Xp(~m@t1WN)w@tc7(#tTVa7QXihRTk4t(!&BGA1&-M4vyTE*%nRSGG`^D`AlAxS+O8GB zS$Rj{mZ`iQ_+`={MqSTUB8o^8#BRqlf>S$qNnm*+E79-Xd{ntW0BE<8%ZeA%8&V_ ziV=MgHz1(_kb0z926@G2p4i{Ky17ZM+n;gDUwSk{MI?#((N1qRS-CSN(9L`8?j~Vj z4ll97WLkUO_T##h+9Eu?o%@k+oqKtGB=3C#Y3p}DtntMA1S(U=^_s$s$`AEKotwn) zbRw&WDSFXjMhSp9;D5fybUgM*nFCT>|o)3_R2xBV$|jGJAVZsAWI;n z;Jr$oC7I5jFJqaa@#8&4&K#Q`Sj`e&zZ~ZpyPXd;j354n%0ww^B!rq!D{pZX1}5wR zG0dRzJ3T-q1#mBA@o7Bb3#asVvt{+f7e!VpN42jIhq zjwLnDs@i_CY=`69ixW^=ocgSHKaB}?y%kwNd-NqNs|!r<6=Krhl(kpJ*VwH9LB5-S zM2FZnIpvTCcS7byPdkePEUJe0EaNHhVJ?;X3A#grnbmG)PzEbfbK?2G!dPUYXbpj+ zV3C(+bGDn^l?tl^w7tynOc?#9+#SBAhdPc_+y~?&aZ_lX+CE)n7kF&4h24Do@^!q& zYDcLIkJLKUi&gpdL%5toU1xMxW5dEy&j$}_7W7iyh{)pLEoNTpBjjyaw-)#|0B?&q zA`P%DCs|aL6mD;ha2>S}*e|X#mUInJ4d&a6Jh+~v>S*8DHekZgg<)$Rdfr)Ck7i?O zKnZ(r;nIw?eUf{s_KG09#AEWp7T*rwv6T=?y;U`~W}lAp17%dquC>k4ZA{jf2$9I% zj7v^eK+3?Fv}Qt1jPMGL#yTD9oM>qAVw_M!vQ)gyys{55di*z=?eE76O~*u&hd(La z?Yp8y$s9+^EW9;6&N@TS&N8M1L?8UJ?zFSr=uAg&+YPl}Jo9@K3dsC!(?ez=l^llF zl|d-!Jdq2DTKJZse%DtoHP+$0CdGsk-BdKWa_EnfVLi0!pKg7aG$g*zMAEWfryI; z!CvwHO=YFl>nY@S1eCxbO6b#>f)X;H;h%TrZKmWW2V2kJS^^&W>IJ!-*sZ_mADUhq zJeL*oS7k`8EqK)(^Q*^^G0fQ8kKhZdjH;Xs63PYN78GB{F83S;Fcf{|E{3Wp^#}9` zMW7@wpspb__kw;>z8^E-47os2!{Z|7i+o4Y+eZz&mnNs%7Z3xvz5Q<|i=3RGhTY+{ zxCJvH<=@alQNHFEPaAH-=WfUc2J>Q0lOy?Y>H6F|?v*dMbC`EMGXSiul0G;0=Cmz+dpGTS z-1dC~pf4rf&)bn{jTTYu^MSj{mOD>I9kM8__!LOA;eRp^1W;axm=d|mx_GiKl{^%IT_#6EddqbMopAP3u%4pYf+7^6HVjK^~O-tw?ik3ssw%phM$R*HG zZdk6Dy3vg+_wTJyZC0_L1@{Rtsm%rOTs#1jZD|3v!m)}1%y&;5%zgUOwnSzl3~sm{&oK8>qU**4$G1CSY*HQ*Q2ggmE#w&j)0ux6F1YtX+#(rok|x z*-D#hCXF<1*Xk^A0k|KBmKXzjX4^s~M)k=9Z~`HUmRk947zw|FgnrfT zw{Uu$YJ0LhtMN!~*Yn?^JJw-DYzCB7|M*YlO8ND1svZP?cUQ9)hH$hA*>$yAUY~b* z{IFc?3MW84HL5xb9f2NxG<_0vE1n|3jC&pQf9=sLE9O1Bw?qCUlvr{*<}m#0Ygue? z{PQCD^!MuUSB)cF>gDO-{`$|K*Fpa$XOaX|eLY$kS!6!9EwAJ3dvJ)7sE9!zk&zc| z7@2JgZ8()r8m%lH>EC1+rUopSwkj=%81iN={JO(> zT&RwGvRXv>vHUnM)Z@gaP~+V;G(((I@g${QPvxlG)&In{!ds)UOt0ojt|F&djI2T( zIriZ|rmIhsx~83&BBgqnk)6F^QtXkVaYjX)vuWPQm$P}7QmA7KQfK;s;RyA2Ptdaj|=16 zz0X3TyzdD=$T`IW^gAw_Vw>k`JD#sjofXgzqj=zBsP{zN4(E|iE;jT(S)7dDW~_Zy zx!f>u8oOzG;_soquDFDqWf)vfoO;;YsNniv+@K<+*sjj$>t!d@Y|aaT9ZVdvt)?3I zsGu2|0kz*?o<(0)SHhvuN3#8W&+JQXyY|8}pJWeieuYn+IWM|@^D`#$`IB_32jegF zsABCGY0tM7zAc ze1%JT&s5s!8_y}r#B3dA^FQCse7gVoV{ZiW!{4jXU~7?;szWKs^F>Da%r!>VFv+#j z22rAWE#k7K0vZOxmw!0vn=B8{)l_psY?4TRaP8~eXqF4S{Wp5rwl0g^-vNK$!2Z^J z2)D>_u}_tnuB(CS7)_~?4tBFqeheZqnLuwdig-WjkDKZZiB6}hop8L^r z>#iA!zp^Ehh)PCw9ume&xGl$aAyv!z+t(I-6E}c}oPh`?F2A>hSCS~##DQntzheBN z=GIND;S~AriUJ#&Di5{iMR@OKn%UCdi3Vnsel3q9rFgLj8ihmEuQ9EJNEInDkiw)0 zl*-OihtJRO0_n1_<^u=#i0Q)P@dWk;;~TosxU{um+(zixwTHCoG@_$ilDv9;W$SW& zqE!l-VE(=c;p6%pn4vpGPqx>iB!-y;g%_BC<&`p|m?BeT>8JGuf=j<2C2DmRZZXN1 zLSoco)7%R!$rEf8Bc~^0rhc!nh@$tJR zx{z%eLEZPvsZ^c2v&LY_$;5Lo^INZ}2C*k!3#5c{mLhGpqzQX!Pb@K+&noj@k|e;G z{OR-ZU-Z7d_dn5Hxf^)$Pppi-VSrcP6^wzZ8O(K@bG)`N@LJEq+%aY1yDx0Pof}Pb z9`b})5JmD{Vs|GwJHkcn3{#hM|dZ40RC>P(iAG77X`q#ureIcW) z)5__#k>Tq*k6hKNnh#aw%U)OUr52cF7+NYn6EOakX@$@Pu=*~KACRPP(Q<^mdDPA1 z8)=;OV`-EkClDRGtGmB-(&2_%D2mI346yNDy8U8qE{Wy))*s4!;$_Fy?VmVwBv~zM zZ-Tco^rIy4x=tk!Yv!3)sCWIETmG}F87huyth$En?oz~Vnjc>QmqdN?ql~e)27ZF{g;gu6RcMs%Eg>75TbV|8@YxS==r>&tSbJWWr z_~mWkS)=;!yY{5LmB`SVACYAlj{VeC=i%YJydq`(Zm2k>?#Q5p?uG95blo^R7;qj*1X{ZKHleroE|uAAdF`A3q}V1=O)YF^j}+`2el$dUH7I=Zh^_i20e9r7itlIT zUhuKk4iU3FC+g_j22tB8y2e{;SJRbxlBY1NH*(7;Rm&^hsq6d!zfT^YuSypmj}@)l zx=X&+H86AVTO>V7C%+t)-)|yva{Eqx=(_&cPAq)Y7Lxit=c zF~#-|&anK?pJwzqXLE^qJ3bnSl4_p(_E~*HKWPjqZI*eFD>s0%#G;hvAMu@~~NH^4Xtc{t}_+`By77cdAV zAB01TN1TsG4X4Ft%E#xTB@oIdkfJ42$S2e=|9C@4WJ>F3KuhdEYu-Uc@|D)IgN8KL z+_jd9EGOR-MoV6uuPCw*y{(06K+A28KRS`WsI)Run@??_fQqGrycC>MKu`Os4iR})7 z1LZmxXLi7#PC1jEnoO1x)dmKj&8OqSU&nUNGtXZmJku27_>lT44q)ytqIKGHQjyEw3Hi-L089jOULi!oYpE;=8MJQP1zC@GoQbpdC;Ri zG0;|ChmZW5`{|RWZC&)8sTmbFAt_R;fSq+rt5Lm~h)PO(`&=$HeRQ|}Juc#mWiU}8 zlT5~pjfwBSU4rBlEe?X2JbF1|TI8+})I_`i);(@o3jZ0)$qOt+k3wm3wAut3-t%34 z(WRJ}gaQ${;<`P8lt}4mN*8&{wLn~|Axjl60QPf2jaLeqQ?^EqxzC9UdEo~ww zrS{d&e54QBr2E=A7CI>A2$7JN5lgKHOVD5%Opap8&G6ozk*v?Ee)OBC0sWTKB;cd^ zo2j2v51GdGg)(=HX11?8eGU|#7|p4R55UD1DoRG2);e5ymI}pI8cZMG6@N5kvbHX^ zc2HpY6HYvq6IZU?2#kSQ=1Q+{=93OB7Q^ z@7k+{D;ivTMRC$mUH{exUK=?7jpAN=IQ;4SuQZP4{}UQ_ck#byoacYhI9xrZ|3%|a z2?F(#s{Fi@w=rwz;aOc;ez(^jN56mgpyTJUx!Uvwq_Ng2b4xbau=$hd4IIv%UPA4% zhCTPH;%G%SJ(2MKqvEznw(U1WVY#6og%+^ihF<9wgcO0L;1$FTufkZq?ooSpbRJST zU2VUk3*L}K`|gik2ipx1TVbJ(6+}U$iKA?0`4Fj8F0dQC%y?|&I@EeZSF*mCyD5ix<+Qjv8SJF`Kga8T&F!gv8DHsk#jX$7Lb>=EqAq>xBj@Y zDQ!LA!mMqu=31i4nfmxI-{%i@6pu>_HHB^6v(yDop``Uc&N_tm5>7o&UpcNu7*g%8 zMp;TKuf{lj{Jt9J`9{iF&AVuSJqgYh*$5Z8|9$-vi>mZ|iU{$`%?tz=+ty{3?yON) zPT_xO+^4GB1ryJ++r?KJceiB1UFatLi9}+4;w|RT-8-vS8n@=Q_~m}x>#)jm5j7jW z4ld9?1`>P%=Ne6k?pEaSf2?f>}G_0J>aqyNK+UE{Ns8qL_Zs3eks zH_~tlSQ5Y>?_v&@_1;qX1)rh&l1nOy~L#7sc4JQmP-9E*I-EWl^Z9E{?Zhx7qo z`awE0hz>~^DS}TLwOLM4l|Lm1Ux0&jgE^Fg!TgE%P=?alDwLWxUlwk}G9Wyvq7Px4 z!8_CKXWW<$mj+rWF1?f4Bf^W6_4`FcBr}j5KkD*<52aukSZ2A z)aEIlSaDW9J03Nf62p}Gqkg|6SB$VI3_^K-&&1WH#Zi~g1D3BJQk+B;)tybBqSjVi zl0dcaXxoby7#-MhN;J`fK+KJ8POZx5vmR_r|p z=&_IyS4DSBBw#2(f`~h2nUWrjVr}QT*{(E!!#7HNohV~A5fMIZ9iuVD?!|`Bu(&3% zU;cE{2!u{O$upH^98Jv=|0<``9V-z8ezoH1955@4_38|79l^Vue4G>0)<_EW8hRnU zcv2iZpRkY634ATAlu)6}bQPL_u$8w_Wl7UWRBVs{pE_lJH)eck^6{7g94SIGX&jMS z&8Yg2@5InjX@;>ew!NMrQmBpJoggLBWhL!$2xj=J6?^>8YSsj*sK0BlWZE{ZO}cd z6>b~D3^WK-7)SyDoRUvX-kTwkB|&&niqNf>gX9X}i2&rB=So$iN20zQKv9;no$VpU zGH_yxr!ITce$j=azc~<*dE|>yV&*SBoRk7eFi=aiqKysfzV3C$r$s5nxBYTPqi{VS zsv7t`T2Km9LJj~#du^YxaOj~7Iu2O0et=#rc0cP)_c17M*`1K|ybiqru)vwaJ<(4u=OAlFQZPAOknWK+LKheU}9Z%&pD44W|O3DfFcd`G5K`w!5D-dI4H310) z_QSL+1M;c3^nvqjl2tkmTPK z9QsgT)ERbgZe=VCB)S5D0uiQDJ8g=2A~`1x2~)l1 zBEPx@X!&okaisO)#AAo>51DJ1tjv{9-CnyW5P3=A$GY02;Bs2LpQ`LIS0I&VsTVVLrNCj{F?R4isNX)K*!lDua-8 zL78L(3TwPhKu44dhwh}u&Yi5N1H#wdSFhS_X+B5Fyynm%F+; zsLK)&5db^bOumMoGA#jdTPpUf;ew7vnk6GtPG+d6`YL^@bU|2V00cTEB@~W4AX*4m zVm>y|yut~A>}^N8-s>hgMq~1L`T?28XB*;MPl+(JXP~^I?Zmc!60WY&b@xNZ`_|Fkgk<@lo2Xzu@<;AR!+SJzwQ=V zV+m_%1`vLZ0?+`AN~f=Qh!gyP!@_w%#vm!g1(RM)5C^qiKi~M?KTbIeu=M5n`rsz~ zZF6q-Du_0X8jcKHMn(w2a=KK+1(%D8)@~fLdh9xPOIl=6_b>U!2a>Qp8G4i`5kr35 z$!c{eNu_3EU@;(Bax1~nz>u$KTVV)>k#(XrZ&w|z70#Q@yBa%=f!}<`UhosT3?oaF zZtF=NA^HBaz5aUft{sZRpz0ljCimTFZvMzfl|5?Eg%Xk z2qE9M-vY$`SK^e(Qi1{M#O!lq9{e#h*sCa5X4paUNM4Z_NaF;iy#TJ$dRUe@Ak1cAbd z^N@hjp49II{?RdKH$?S5_#15~bAA9_l|3590uOE_qB6nDaGZbgI?ng@uu%k#b;`VY1Pj zbUC&OekEGI<3Y|FJw=+h%%6C%Pw`jDPf;(3-4L0#hb@IvP*8@VQ%HFU8a^fK&TB~Y z+06hyFccDj&uJ4~ESrRDhG52 zi2i{WPGkuqOG6Y%d#jfwHy9p)9;3p_WyfldTEsiBqv$K6fSCSG5nq#%KvhvGmg+Jg zOEIHpIYijaJN6$u>y$!tpJ>+Q z>+olGatxT%lJ!_Va?tsMvS*8MHlsGXtflm060;`}y<$uH+GuL3A_6NYXGc_v`C|@S z(HGObuTKK3l%pW70vMWeZflSVO7J&LMEpoy#6i?NX{(Gpd>j10{O`*NGq70thCE1# z5GK?RNd`Pb=aOSc_{YPYcR`!nh?>%tIg-JV1A=h8oFLYdakfm(bYe=T%vx*#Hon5c z+X8~OfKDPH)s;dJX^}>Gn3_=$!a!l?KSo-p7i*8cpzZg8Q4nVfnD9RLEI+B;i%*tK zeF2RC&+PR_0Tj9~bQUXdHwtl4DItXzdXAMO-2y?=g`bot=@McZ?hDN$^(^6SppO|! zBdi6v_XUZw#e#Rm+`zAh=D;u|PzD<)iw%_f0LXs;d^ajDdH|4a<;{@c&zEFGwNVL2 zGU0rh=fH4AF&a9SY(9kk2C@`BX44JkPQMz(y%y&Dr5*Jblg1`{+fuEN&=w<@Q z$Sc$YE70+6>Jl^+MdNH>1FGn-$|(fI!_HAjk}Kgh6-u05}s%|3hArc2)hVI(=+` zY)c+|W7c*9$caEYhlgTEu70Vsg<70Uo1PW?pSIvXDj>xUD2}R)RrKe^`|LcK1J}ec{?4gFHwCb785x)nq)(2nQFd7}sR(EVvhbUch!UmEM zuMx#8q635tM1sctGOdi%b5hhc3^| zZ~@J@;ASi1%5V2_jF;t?rH!-#IoSF1oTQc<7vH3Dl4C=Bu|=mXCS2wU%*PW93Ow!GdSq7XZg3|)3*a94yzG) z+lqYKh#_sPrEQhsAR?z4@shf^$a>npRY}I}<_RHVL0{(;{JyQWcGUeqCu?J`bBcY9 z3kG$d^mZU`cW6EUQ9hTlY=3L5XgBL^cRp>$*L0)I(}%!C5OXo}hN6_%oDCX0JCny7 zo!Kddy>*XPTMG_t1&z8Y8}TnnyE2Blu(sR5r5@ZR$t428Ns<0{;szWuE@)-lRcv`x zSKWnre*Q!{kHi(IYsMUx2|T4;(vcMeWE2O>oy+dtliMNNVO1nqmYn9DSZlrOA_-$l zLHM=WF(bM&M}1LAeL1`Mkx5;gzw1%)`hE5TLjU!MtpzJ$33DfOKScF!Wk_9URmgqR zWd;>6lgBt@4oo8w^{C!h@k$epta&UKcnZAf*%DskY~vjrW(Mb~UMqUq@O zXY+!@YCLTO0G1A`pUJe8=Xedh=`p0<%{X@5cGJC~I|~Se^B=6EH77%U(g7EzO z1~!|n_IlYfLHNE)Ge_J6=U3u9%Ak`L>i7jx01ZKWxir>T%jK7^iqy-crUDPsw~_%w z4)_RXLwQkz6aXMGq-H=2NCp53r!M?wsq2-*iL=3XrOp25yz?x7NZrc&f166A(sPPJ|7dg9ClmC2@@;V-bKxHHWt&)2Yn^WI*pd8{YEuN36_~j4N%Td z$l*_Vpr0`0txy}&*$@?c{7}I>!^}zeer?l#Y5%N4XOsBAVk3y9=PT@flwT+Lowow| z^^SlzAvtxT6SbVhZwgoVImmS!n50+i)5U*YkPTtXq-NL+%83d1y{WdbwX*_}yES3S zL+GMfW9fhlo+%S=DE0ivOpzi~))>v0>P}exi6gCBX|KTv0g5{zc)TAIPtQ)6mGCuH zT_aqU=N;>PJV1R`$1^|0y)a=i(;X1*wT;eB3ob;%;V8MAlAoy|;CgjE^Mkt-1*til#jC^u^41WikP`wQWS+SwS_X|i2+!aFw<&qK<}vw6DwYdqyhr82r{ zp!RzZdiMpkBMA2c=)F?=()hv3(j?JaOY(Y3Bmig9{=es~j9U?`6l zh3SoQc{4k%y|Iy{ZjH50UqX_$9f5>Y72;w`y|58Y<>1TdSqA*!V#D#1Ii+x=O zik&u)+dZ~y)?H*g{t*LmWdq4C3U~FthSB&bXZ~>#SABRlNz?Lx_?j>238Ys$fqHL~ zLjR@K{9A$7JR8$g1$J(!Z(o}Qd~X4cQ_S?sHjP#K=@!22s_WJ$&H+srH6m)k$HglD z1ypXAJQD>F0%*6P7&uJSlyYgB+cII;|3l+AO$Yu%<6^0Z-d&PvGYqpaQU!6KyD%tW zu+eD7gP{n>#0(lrFdpsyYT&#ek?S4>C&}ng3zG4^)`^K_C@ZJ8w`Pmq(r8K^xv~AK ze8(FIX`w}wOO*|s@^cE3#ccSp-W5urf8Jm3N}=IpoJ6Zcs%LSd_Q1y!iiSUz!}D4H z(qbrvss;;-&_=lf?^Sw$=nxlCslk*TS>F78(;1?v)c%@CA=uPH5RmkpGhC^WMM*O) z+xXsLgMo%wa^>A0#exKP6fTZyC{hq5#$6co`-hw8{&k-VNS!QN*{cweZ0Yosxx^f2 z&H_u7*q;zO>wuvJ&wdZLF)t{h`Gw(ai7_N``52^MBP%iXEwrVP30-Pyq)}-?#>KWD z?BZn5QhoD~aWq*`Du+XdgKLT;t_SZE%G0BbSY>r4F~v^4|uQs}@;wbA3qMqJJ&gOPeQ z{@j6@Qk)*F2xUOI6JIIXNx6k&Itv(9#ecu|t&a1pTsa@=a%D~PD*QoCKr0H3%2qwO z18J^^&AK!QMM1v&8k~+1^;YZcoA>zIniOqrQc#8?H(fnR&Up^$$=QlXVNN1E+BDNK zSH1V1*+*}4Ze*2oscK&PgE(GWg3BDn*iCXDTII?ZjP~obYg4y;H4MLe^S^7U4>^l5 zJSq0;Q3U^xCy{%i?n#hqIFPV4vQ;MdtYRsuB>X|MeXy}w5Oq*n4QFKThZ$#p_{e)_ z?hKu9!2ZX|4Qf=OmL2|oUmCbP&y3UB(&=iejG`1bs&;qdqnkOswi&K~E`lKmR_Qha zEt8i{NFw7p%1Y+exm5gQe1gH}O@%=3sL|S{uh!&!8ImVg(gpA$g3>Vi%%PQ$WlDFC zzA|5xjL;ytsW$tgoI5l{r=LRKOla(Q#2pay;B96{HHKGo_-}WAag%+Zq#LT;F;Jbe)M46&|4PN&c!aB8}c^dbXSd^sWP9|yKCM) z+__iX6Drx`7!Ui`2xKQy-EAl)njm27EDCt;K0f=)2Yl;}dkaNV`Tch-z57V%rc|H$ zvEQ=XrhlghwY#lJdDh^O@sS}F6~_Us+xDk3SpX>Mgz zpoiF7S!I*3&NA{-YiNbF(NnW84DVcA`uoWJQr%%8ph*Zsyka%QL$(o-Q`uvAa;Be# z+~#0w%vyv9STPMMjzshfKm@dam~-{=%0BhM1(j&Ef!}2x;$3(VW~R?fYJMxSm&y{@jB=76|bmy#ivI zF(LMvzyy94{3w)!B)jSYjc}bkyhj<*2<*c5?LpTFMiL`|ywf$N$c7;g{0qbil&2+|?xBu3PDz=rF^zVM z#b7znYFO8yGx@bv>Vcx1agI@#0>zer@DPVW@(^DKgyozRay^K{m|{C3#*LPLB`muc zwzDnNm6liJegz?*u1Cty^<+4HCCJu?LX2o@XImOwMRf{ZZ_s)Y%N&wZ?e}%`cXyg; zmfdxI+((dtd_W*46ai3Aj}K2RG@N5z7mhMJmy|RFwR%Xlc{hk}woS(qWOx^a6BHv`;*GpgUqO zBZijF>1qh*AU}v~1KncPWW(W?DoMw9L-h9*YBsx1k`?DUY3=bC5C9U5(j+2=s!53- z7%BLDwSubL8{~vMWR|1f#Qp7@XD8PTX#=00_DuJ@|TS>Xh+sbloA_rdXbU0*$RQ5@IB$tHl zbKN^|8WBjkfI!_`yT~rAEz320w(^^xU3KJmeos`+zX=`rhbUT{Xn15q5|}+ijw~4s z4P>_wR!WXoNqkaHTWM;DDTw$3h1rGT>k@nh7vm11lmJfp56Ok% zb=qsG$P+ZrNo}-LfdJDncB3n+N8l<>+>hR8fW4h~<6h{W>KS>irfBD7)bH1YCBH?| zmO`A|)^FO!Z#Z7O03}{hyYBF3%xWyKCt{JhQg6SuQ7Fyc7OKr(MCxh~$iOV%;iR-{ zyOY~|wJ7pUQea$)0->6?&hBFvVL9-eBaCU3;Z4|x6M^+*LF_Q1K&tmACkNLIW`-PAM3(p(W}R5;o9n8&3a-~ZbTW%sHkpr&PMQd?c` z8=%_rH@JM6&iZ72>+qNDfGrbw9_1!A~T9YEjs%X zc$FR(KTD+PHNv8r9Et|_{h8@lW=75?)AhPb0tF84*ROF&aC|}q2e3(giaT{C;M@3t zb#>Agqhm}5Tz6a&)vD?W=Mi^@vn31CECnJj?2_%|ym>yw`;9VP^Kv&1e@3VEzj+T& z)CddUjSSED*$}lC9})kZ9$)kIJqXUoWj7{Sw}daDT{|W^K@u*c1w9XPGt$Gq0x2B< z&>Q0=_7*kTLD~U5v0jitFa*33Pw*L-riqEj-fM&pu`Or=QjpnaNE0MUlBa+BrNsp0 zi6`a(;=|IZ<`T)>M7a=!j#V)urTd6>TL|pAMvP*?No$(BW8?RX*PB6yG^c#AHz(`bus3BA3Zf()$OM`)QTQM_ky_HGw$^{gMoc z+!G~)d$PG@T zg}hpol#IUz#2ZO@%^~k3aI^{Wt;FO}ce=WEBvSL4jRY`&5_N(yay_3j)(WJ|>;SOzh{$P4=LL}a2$2g$fAr<%AD z*<)e7bQGM@pdPmNJw#VY&6N^y4;qf86df{Pp-U2(mG~DRkf6pKBgeDyn9p8`fTJqp zp*yOTq152rm@(IF7A5z0Ch6X+iqa_-Aw(%#E+=zf)RbSv{V_?oP?l~CUB?!9y9`Y? z8H+wv9*w8)plGeYB2J-9%rlnPi9{zQ9H72J%)IH_2#W=0#2S6Y!KX62fhbKW}R zG^zm!op{TPRFf0Ouf4~=?XlKiO+=P9>S-}O=F^L@sdYS#|D{vvB9m4!9_ufJ4d@bm zG-AR5so)$<5E|f)L{F5-j&+)Mv>=U3mC?nwK-ol~IT7qQpC#;AC&_y!v^cUB+sD=# z8Q^UcbxPt{5-WbSRua4QxPb z(ps=Wqe{j{g7zJCG~yr+ktPeQ0p$}IX0)Q@b)wO+p$r(Gp=gn_8yJo z)5c#MRk6F5L&0wKR~SINX+Xa=480bBnbw3JsvFItON8HwecXkpuB_7eD`uR^r%)F) zq9xZ7hV>V4_)Sg13Ju*1*t!Fh@McIb2HhFLNCf3p`0()BNsoDzq>wosGDRXSIgF9# z9VX_*X9y?0<0}l3h|(`e`VoUp;zj||&q%qE9ZI-g;^zt2)cs#|5QfcrG@J2MB62MD z<)l6qJsjoy_z*2<1rsgel0RlHpX$7#9A9q%&m00aCV<^bzM>veFDzdl&dQpQn%MrB z!6K}uhbjHeTOKW~z3O6A*{vzA&Z2Wq2hF};5bbaAkkR}@+7fMjUm|D#(Ou`Oo`RKN zoMS>yU}yQAv!1;hUjlyDTlsPf$jYFFfXp-54>sCQtPsTl9fTxphDKSY8^dC%2%K6# z3f0`jkrC!JZS}3u)ob!T1AuL|jLl+@Xh&1+CamRF56bJt{aYR~)3p1jTa`^#qMk1t z(u?iNSwgfT#^1z6Uzc+R3-JN8OB((W5gyiy8KL4BN;XNY12lhG8=lX8!qZY$YgqJZ zx-{Spby~u(C2zV>jYXnU49ZfmDsjl}wSG*gp?WhbgSMuJw(bvrukXL#loweqT8)Gm zs4z@qg@OuK=8B$$K!w`0TJLE>6|i>$2?O5~zo%+N7W6NVruKyx&Wl!3lw}fBUk-|1 z&l~S#gYOClcl=A>gf=$E7N9 zvucX+##xhakSd~z`a8GHR7T>oJfk2dhC`+3z{bSXtbPY&bSnI&3aW@K%=RADtzP5p zKD+J4$e8hw)o}HS9e=D1q;RUdSo?r1O&pijlybfHd+f3V@{Ji;iwyde!|_N) zDX9=u^Dvkh;=>w0hv{Sz#fobgn`V#v{ubJW;)g=Imvw14eG2STOv|n2?v|}(xNJ+9 zrPSSbOyV7lRy`ulW?BtZ^n=e4j~NR1X7Pk{Se?AP7qYuB7H-@$z)t|XnCYHE*Qz5X zvocDBlE>cNbs!oD_;y_xeF}t+wJp)S6|YxpwbIqDc4+PI=^jfOW8=qP4b zeH&{u6*ye<(O3g!y0ITp3UC|)3_g#M&-Pl(nhx|>m1il@~7-`^U_Ue zTl*Cj3aJ(+lgSamq-i66(Ijx7g>}je=~!{eF1vSNG;hn{N3$8F|CpWc_u?b~_Zd!T zc~0@UTk8=Q%xE1POaphs%oEuCDD|$k&kN}Stoh)9Tw+|d13p>nA01Zu@+!tu$X)9q zNO+-CORsajM{ZpQO}ho`XEI(6^93E>XhPA~t`&o%lex2*VH>;=IdNX+*o>;bP^@g$ zoc|A7XW0{1z;^2qTnBe|cXxMpX^T4)D^{Qk?(XjH?hNh}mm&p+fF}G{ zKuZd??8G_I$~jt2`4<}by74n!T@>oX`n4RUk!k)}uyfjpquQ_X;(@bJNm@;|Z(WR~ zxy4%3mKXhG&KK3rXU6Ne^-i|O-?NM_fC~EJ{=>tZR#l88D!fLt|2oEzigLaTrdCo> z4XZt4e8*;Uaq(dYHMne7)L7KkuDn{taK)+ZyzKR^cwP8k5Tu58gIpsF(FtH`QH;GS zisx@ezF(}kqW;^*97n|;k-&R&45GWL@?q$ncU>1G$F_6BU^zu(|8bFfHM>{A#%XoQ zN&dsFQPUdhk1jfH_5~mM`|Zfe5;?cq%DH3BpEiADR4r$=aX&Y~%)d44{{*X<;gFbz zzd>!DnvuNJ61+lQY}TfC0SS@QbY}e8d5^Nz4d*0D8aY7SaFzibl*c&cg@|Hdzm7`2 zKd-!AKM;>qfbfZl;CD%4pGqCLH>pHwKhp*f`sW9j$~hp`Pc1p>CNCxot_Bv zA@Pj2i#A_Rz!At4E+vwqg{ezG1gKyM>U)F;k6JzpjTl%p{ z`t5IX`#%4Nhfm0lAw-W*rpHjB$1tsj@NT|u#(s177Vz+>$LOrbn5xIvuE)@-wkRdP zzl)CvTs(27e#!91SZx24pMGInPa*H4Bc;rN&aVZWqiibO93i?~p@|_K3~i_T{IC9n z4^REoyH=(tO%*xt@BWl8{^eTFGdcN^%l>8Wo=u?v6+*c27kk_`A~sb4l|=!KNzayl zo^vk(n!W}!bA4>fdPZ4l(_Udxy3weT3TV~()0QRMyK&c2^sz_jPygwk-cNDlq|Zqo zI&Coj2#tIk`uTC}>z^R|mkHmO$*7m9te5Gkmzl1Y*~!2pQmJJV96{b4i}MdzO4x#5 z?)@14zKz1oV51)#&tCqjk2ajYA@rMei*tdgaYg7i+~Y5vL($^i>HUUL&>mCE$Wvg6 z49;hz;JE0&-*f(+BpH1%BH!jpInt`~_z<)@9&Ep{jD0Z%N&S23`_HlV-$3!dq{Y9h zN-6M7Ttgw5wMo^VrxbTd1yvp&2kY9TWi$)MKWS&cVX*Qk01CDNlA*uFHB>qjnTV9W z`nq@&3!P4ro*Ac9A(EJa&}GWw8w{1YF8WTnxqJeZTukz8-@Rlu3dtHP{7JV=C5Md- zt3P|?6dWrY_3FU6V_q&-&0?&WPCZ{L5OLPDWm!9$4`Xd}%h<}e2y4QRU+@Qch%cKOJo6Tu3V-OFx` z9g9lCCfjil{^}FAU*2-C&#_SvUSu;@sEr;goZ$?}Ji-wZ?Z2 z*Y$3Pg}$(jv0d`}+k@9~E%MvNrw?aa6-HNAf5pBn77bKMy6wH3U+C~8MQA?ve>{|9 zs_&dz$uDL68IWqu~c@y(i9ccHu zMkaeB=`vU;(TDod#_m=`(Y~?hv3Z5@$D{GhHYJF6T?7>cHxQUfh>9Y95)hbbcOlx_ z$SD)D(ChpYz}Hh?h&es*(#^~wH`cVPp@c_Ih{OJ_OfQ$7z`2DTdqqmTU^lNJPjcxI+#Ov@U9Lw{D= z@)iVscsS0^tWPau%(;)fGb3&M#CtqnxyNEey!!E)kY2c$^?|`Raip=2v#Se;QeIq( zl*_x3p>)rdD_zLmvLVl>;xk|?haOP$@|Nwr+i#O9(L`yYEbbxR)401?)x13B&{Nrg zKR+4{J_uaTno0(qj8u~NH`*j|VUMxTo_2SYf(SnHdjI&6NQ|Nwluf1_C_Tzd{1oy^h0k@~S zHR^vXHz$-DE2i?8iq;jUxBlnADrwskZ)lUJV>muhq>(D5cstL~aW?iyjpgBlpIYkf z+wf$bBt$B@+{qm&_cUMQ)Cg}+9(Ld-*NXH^kM2KK^&uRogN&In-W*$oh?E<)Od6nz z&GB%wG7m9Frd|ZtSzX9d9N0u;EzQmH!z?O z%Dg%<#Lqe;{M0h3e7_T|M)^2UU*7hf|6or_hCtiTj?WNwSs~NZp88i=fgM95P7alo z#mlKFn}EVWiXc|osKSem;x7YP7>RBxzFic=m07jvN%Q%GLRPX!mAO?dp~(mXO?nH9 zoO>^%Ks7xB^~JG&re`r{BBFX8!Ajs97jK3=gGQqvEw2=9wP$~kCZF_NC!uyZ!_%PB zAf2?DP>{I*mG`$(;bxXKUsFyB%NM*1TtDTj5`J2RXJcOR1ghl@c6I zdUapcT01)$gE(BQ*|xWqJ3BiEINZGIws(JZb`AdJa1UeKIl%4eo{-@5Osm^D=I!cP z2;%fEW7|E~?dn}0;Ph#$+x_9$)wlPT({Ge*4(mq&0+P>}=!rnhvNJ2QPK|r>d?tjo^B_D^VjtUXNkIi3a1& z>H-w5^iiQ?V4eao1<|ase^*1wb2KGDGlZ;vv=3JqqmVd;^>9VmL}mGGmBCh*cXH~*E({6H{COWm&E?tC zNZQdm?B5jDA8=9ni8yXK<$NRmR&q6)iw|1(U34^5!Bu zOw&G+--@Myi!di%slsmkrA$UjGYXZKhw3p^L-EXpPCnu&gXiVS6Q=}er%@$r5ofxA z!~;zZ=UJ06Q_pQiIf;Zx*GkXnp4$*1dkz=<2YG7FZ;(clhJp~?@k+GmQ|TyC-Y0y^%yg1GN0jl?_R+tZu>niGZzM5Im;Wkm-v5G~;0yIj#r^PG$?Lvt5E?wD zI10Qa>w35nf^o!s4Z$Pt_`@kYg4cK*!PkF)^+|Y)j`Jo)um6y6NO*#;@g~8m{~IM- zcuJ1*S4vv{5u=pIj9%lfjJEz`&QBt9)||IFEBz;eLm~@ajkg82{il*}k;O31yAr&C zGZ}1@|FKZf{Rg$72Veu5!P3Bp@`dtu4HmD=`|ti3o@}01kcG-4Z!QR5$2ZYFyS2EX za3PWyD*%f(D!YGm-6I@Q<{=+dH#T3W`2S!x>+7rk4Cg#}_gmnZCXu`}IvIv-Cg;e9y;92<)_Q1!02Xp4=)L`g9O zI%;1;V&fs`W-x!K``l#lUkjB<1Rt`X#BAq(EL2LW1hFllC}@=3cKWJ7XTvIOY@Z61 zW=AA6iX*{$(yo?olgV^yZ?ij3zD{TJIqwCwv+NEriYp@2>YqgnX_av@*8hHwJQfS* zJyGxL{IT7QZrIo=*!A-(ENG!((c3O6o=DxL7zP!ZIGPnn-&CU+MZ&HY0z@pB%P*Et zXo2AjJdpldRO%&Peve>~FV-Ft$`50Oc4RCKHGRw4w-SiIw^=scxFZlc>_fpn6xWc+ z_L1>JA&ShFmW4RTxk|(oC&P%Szb1ww4a@j^SBx2C(cxdn~kas!t+Un?!L^h9y8mZcXOnbp6DN{ZBFDOa>X|J~3PF zA9ig=-qGWWKy?Z9rJ*Pd8PNwwM?l5O9ESBYz<0{i z%CEvUi=h5`gvj8`q}1uc2vS8td=E__*1R@FZBpFHb>Uq%jp*zC^}T$kSv8QdrP%Qy zOD8;+{rwEahD)0(a#P^#f>@X%UKEj$PNRhermK~rR!VV!wA^Q6o2egrqHBe`W$fNw zu96(T)YVZ}&FAEP=N+zzXSw>Ai@Xc?{bk`fkR+0{(pU!BzhVKF{8+$5YZdlTu0SV**892KnhWjWR@AZxTi z{K*UCW-;P{=WvbhwPMNs){y$?$J_5s_G1=)nrZpM{hDqI&z_B=iF=+T&M=@C1qNH& zO&=Zn`Fzt}3-=t=`F~NHtoQ$(&Z?UJJzsYH{P*X2k_-NVl6gfRgN>^XMXFi;35NqP zEINK=6(gBMhcwYZwb7VhNTSzJ2t5RdNDJz-(X^>TBSit>4Pymdhf&AJ{k>YoFYiaP za56PS`5z0_B5k;88pcXGG&><#II<62MzEN7daRz63!@YQkD6k?CgxE^peZ>}g$=Xf zBl0=%TJ^q8g0cQP0nq}C3GAoFM*)|SsBJO2KG9=S7_kn9J6iDNsR=<ygExNUOziD;DUl|fhrPOLlQ<{X|!QEpFpA`9%W1%5X zyJ-M7Ug?You1;pNI-{0ks2ZLh41rOa;lf1(ie|o_yE#`W*fl-x7I2%lzhftZLPCz6 zT&&*6u0_9M3^f;B$*~=KD}1V=<;L2^9x-Y|H;Dvi`SYfYXJ9&7;NDlU#a&e(OSIaQ z^b|P&8Gd7rpkc4+qB4wK?jXkS z7*fGKGL-AY<|CU{CL1?Bk%${BvH7b|(Svt2!E+UX=&V{nCn~wL@VMM0g+XMrl`!6W zpY`E+>yzp=O`h~^T{>PgpMXC~fmSm^A|B zU4^MOjPbWCUqe!7K8UsI>Ghs z1sv1%a&a3;_X7GAe`Bqe1Xgqf+*s*_Ib?W4)Q|`#-%^kaqp?eC82)Yo_pa87bC_j* z#ce4ds3Z2wyV$Bf!fszWXrB@|K21_V15#N4B7W?x|l=Erx`A zJ|oE&L&wZ5CM6>4kI>ZDz;&}C6`^kk)RT9Stsx_yNboTXxk32tfYEMS%Q?Xv%O8#{ z;{-r2IU5qIEc2e!hWuD0;%y-14mBKE@Re0Ul4c-~iW=uk^oX}-C&&vC1RLw6DcWqS z$uilr%L_IHsR?hQ)=x9iU&k#_#^cv4mVD^CFGa7>E6ar$CT8;4h10$7ixoRcek5EQ^!cq+WPCRFUEL04{zUvv9rlb(! zAc~1~3@0BpNc&{HU4-=5;}tF;l=xP+0+C(%nBbaelv4e6ic#%hrC^sfN@#jb1|>cD z6o%Z<*|Fi}4i4ZdN4Oz(Yyyhz_rW_<$HxFjrp@P?qc;(+Z1*{?7S4Lw7~tb4YHe1S z8(FgXFUjPtV-nrp>QmYinY%eu!*l0$XA^L zSg^s5dq&rEqnD@f6NSyE!qcDvf@T2HbMQ0PmkLikuCBZ3{5Zys56jgUGhl?+?DB^A%yF-0;GI|Mocn* z&j=A8{q;jbK+r%9Bk-#cp6W65fJtKHIa7s+9LsZIHwAW^&4|8-racsF?Ou%Mr z{bOw46y(!cEOJUrF>!RIarA4enCUu>X+P40nZb;h^`Z(ycMT#=wguAr9qDN;8f)2= z007AVBntqYHgxY>xFjve|aOv!T7VA!>X*jRLG@KTmN7;ByU=S@NG#5FL(I7YmDd52v zGF270iY!~A7)jy_#5RVEw0qJSA`(-B*!s5XNun)#DG}>F7>sX^0U406-1eKOSX5GnjT4cNJ3x3=t+=?eeypfc{7wdLS+kB? zsO!*Slz`XDgXsi8F4YNwX&EBL$uCR*I~^cPtDWv6gS{gTS_IDXF!h&KneKGj;&WXO z#}trnaOi7{YXKyHd1E}vh=D-3{#q7OasoJx{as9WA;3lxFz;eEaS9034DKQVi%F-g zJ@EKO;s`E6_^$I8Q48i{-V2rh$08`Ce#>puux8&i&jS!h(k-%xq<`M#r zR{u{l>2%kHawgn~CWv3Mz*8oKKeO=vDHv%~=U=7Z%uhp>M2ZF7wFPfzGUX_}(LbOepC(JQ;6|({Iy?NSljP{0qUuG%pAs(Jbndk`x2!pe`r4& zRl-8INy3*(<6-4Ovn(%l0`Yt*z@sx&RboC|lLn&blg~iNN2D=)%$CIZgc`~Ph3MGY7I8TqatN?!FOpvCqBBMtwovX=P6Wgm= z3oiMcom-kgaKQxDc*q0XL2YxZy;V~qysDa0(=a?p)MaehW6Xy|^1DvKsUjo-OpyX> z>2Wg^u1jS|vac_{(j$kU)E-FwBsE=9CqR(=XOxk_!rK%o5JjVBI}$JLZK~1PsLf{2Dn(SQey2hf*rWfqCoO-nb*~3kOBeLsgaU5~c+I1_jmWTrXo|02X(uL> zf`m)P+H!S4&KeEkhDbS1)GFrT?t;MtjIDUdpion11~Y0?QzKSq!n0glAwdXL^J|Y9 zVj2h0;)m2;$a}Fum_q%<6xF4+YvX+Cr$wdG%(@0EQ`p^GhEqy~ij#YNsI&OJDMDIl z#ky^Ex|yMQpcXQ)hbAI_UQ!$+koEdqXxO?0x>sN z!49(NiNGS)?SnVLo|97jxmL|;gst$8xMX8&pTl&z`($E!`)UOs>Z=fMHW0c{zqDC@ zy<^K&Sc%|xKXVEFjLo_w@pxQjXOPz_lW>G zLgJ~aNQS4u{QKZeJMgA6>^U5!AD7wLK1Qz%6xo<0zM(oOCC50WCM)L;#wA6&oAl6^ z&GI1VZ;|nt9Hz4#PS0y1QHQ9~2%+6gsf=}mv*2ckx9IX@6nvCiIGbjdc{^L}J)_hP z=;*2roS4{}!SNj36SJr~FqP;gyxt6ZytI%WRxy#uc^)TAs^l4rry}E-BrT?pQlINc zR~Gb;#dl^+O&eY}fXpmW9~c3HE{*7$_0b;0F-wj3TF7m;Alq~E8Z-d}kfw9+=R%7GI$LpP^Lh z-kPW7);>z6w>yj~b7bP}4Ai9F^vV8?w77@zkQk$7#=k@aV&xnh@}*t5A5DRNWOd>u zEB2QlvHb;I&m0>UWzhtg`#_S1_|KQdY!m(O=Sz5w4jdLrn&`r)iu8$z6D$vbZ}u(m zt;S^VwDHYe-FgabIhO0=qKDtqE>#MY-Cp-ZhQlO|B&1UZX&pEW*S#RXuevZX7i#G?J(#tCIHq%IfvxBKVg!6oAAn_Bi*!D0zFR{X=-(z!7;6?OGab z7`~Gg%RdS+POITLaT289eel7&YTrJ4x%bBrS2{?S*6|l1X;0oub|A{ETRql5@)BqDJ!&a?ELUIrE z$D8f>Wk^@vNYi`(%b35^O1 z62fqfbYi1@Vmgs8u+ni}fvQxt3r@qjxF|a=j0MgxZHVhk@E3n`ocq?qURKZfrtz&! zv*eq_V2cjTT~8jzcjmy&hTWZl%YIGV2c{9?V(?qx6*dDz@nq1YIShStSq(j~lA@Q2 zPaEgOK)IF^Cd3#eneFs6IFVf?|~{Cacu*^r@KE^^);4+ zZ}6pVzKxAayV*R?Ej}jx6tg|&22LV*)T3!$!`t#W3PT7(K;I0mzDGjEg86>J7bNrA zzx&kPv@YCe^1b1z`ss^{r?qidS`~Q062^%Ali37HxCmyKzT(iC5NS^K?&RBTP-zdp zVT-tJ8N3&NFAN#4p?Uv9HVK$J@x@N>Ua4tRwkX6311$Kt%%sJQ{uJ!@hWq_bX@U0^ ze+O@Ahj@e5ADkcVG1&vHK1T$-Judcoa7?NR9IT3bYiZ)bLEwI+Lj}GVeC$kl2>5)f zwehrA>AHF~UNw38JMQV%%A+dsWt0CWCQCfepP<^{-*k@mUaQTcZl?v48(kHDM#!E^ z-%AxP2pYLPdlrUH3WGjzek&AsVrd4W`#;(L)Nw3-a=G~PbvJlf?IMy;fFI@tXizRqPZKjfCN8>55HLDLH^s?v#HpLdu;cx%3Pz{EY=$)wN z3b^i>qvDPtU=XrfSfnh6swK1N&bjl@A!=4?*ct+Omd^ES4P0ZxnU^lsvIevC6haRScZ% zt~Cmy>yh+!fyimKbJKrP%qG5bSg!c))_B-;8izw?_(G695(!5qSJU`9QDEk42TlI4 zU2eYk>$rJT;JqDGcH;fXe1TNej92MQA>m!3v`$6n*H{JreRoT6z!mzpd8JRrix2)0 zRLaa4nv0KyE$7p;R61d=H;+Gm;YBs|t4Mb>XahE9HGQQBaR*2MDX;G`s3wORVhxP- zvIr32kR-b9i@c=bc~*-CL=2DEYk2}Ad=F7jP^e`Sh=f$7v)sknqjAdf$fFo-L++*m z-RCl)6kW1AWHkKnmWOlhQVgYo;P(X&BW>N7r}$bh?i5q;TRpXsQeD9NDE80tc=c3V z?WhQ7g2f@>|F~<55wMs6CDcL(_?FaIf&lzQj9TuJSbDhF%Zy4&v3O%Fi-9tqu8IkH z4O30OIS`R}Y$%CgoPr9Hm)X`X*blpMuH^}m zSBGP+euEi6l@|dtSS~>iVNhjeewufDo6-i1h-f+UKx#K?WILhR7IJrjXGIe(EwINxmh z#$Ix2zIpt2PH1bL_D01g0YMiXMQqXw({MaOB99dl-dq^!UE#6-g^w!K?7h|}75*)xC&aUAIRz>sQF281RKV&m<4}(*@8>GS4dX0c})?UH4GFE~RY!?k`@@6Bo z!Y<--4jX0xVjwy(k`x+gq-~g$3E-VVC_Kgn;Hlm+hk(}EyY?iHBq0p|@rK~@87$J_ zdD8?*BGc!3Q~NW03juOjgnk`RVFmC9U-xm`z>W@rHSlRnYl#Zo%WYx*crS#TSrgUUQa)K$@7M|J8Mu_tJ9kuLe@r2zW z0A6kYAE9EZlejHe8%Pe3r%^~8|D6s0qF6V*ZVCad3c&*JxI+tXMp2J+oxBy_)AhA4 zZO9%j%bmiH@L!Kd?uR%iigI2-~+KR5D!27ecM<%eIFY zf4B}q*xLKqXvG2)PZK0sM6X&ffw*1WTJqVfZbP)FFD>Pr98$b_5M!<43Bgq5p|g+}{28 z_zp(&MD(s+9Kg%>>B&`ZA#7f#P;yiG~AhK1pN zY+)j9&aUJJfL}GabL|>yACX76MBR$P_>B6LDi%!-lI5T))Kv&}*fION@L7pquhJo_ z^x@>5IfawulqSB=V|~5aSVGN&f$voaKCbkcmWBF>Fz^)%kdkYjK-Q>Z6f2NJ z_SGz<4pyEEFH0FSoD5yB-)AoqJ5F*gI7j(NL{G_{ghKXAJe#rEM_(8E58)8nD(gF1 zk zwBL2on$C6YxzI<7M^4vzvVxy4;s+E$iqX&0To)nBB45ka28>;f70uYNp7!Nj&KlVb zmF4zcd}n;YA2QWEF1n|`?v6KRZ$gnbNKD?C;Nqvw$L}MuImmQ96b=YPRPR z;q*q>oeELLcpmy^yfYXwcRw@6=O-|u_LjFtCZs;Ruj=>N!LUshCgR;$7A4Nj9_C7)6NObFiXJC zxCi5+^Kc%as0SmA7*(uigg1)?tn6HD?IG(V!11zNpm;YaSqm1s9Au{*8-JK?wROy6 zFnklM*rV+)L|(L>1Immc?t&rVEncMEOxT@S(IWrlMmFb96NdD-zImOTxI8UFvjY9_ zSM8CoXn9+baW7BELk^W@V0004$yy8!N58@ti$W}Q2kNy<+%}8+OS@g50{>kK25|?L zjpRDci!R6$i}tg$NsQ0F|G_80ZzKV8YFxtH{_4Z(f%YauMa zV`#I|M}a?OMHt$+-|7@|0^~1nr(TN3n)}B8DR=ZJPZ7hQALjVmzFLXAB0b(zGkP=kFFX_+iyFk+QdeD1V*(0X)t0XcR;IXY>` z^!ufT%4LE5FENtxz|d9IlJn`fZUCmc+N)TsV0rRJ1ts_?WRI=}lN(wTSbMB9G{nw= z3juzp=?u+Qt(BKes}DJXjJLleV4@U%utZPZhYkZ~o6D!8%nQ(%OV*{;R%*sj+m(0E z`3#?AuvpbI`dQdXsnlv&dg)Q<1Ej>Kb7uUKGe%IjRk8kAB`&s$!m(1+v)boA6SrjkTQ_2#VbMvtbmgzU8b2;sOj)|{-5 z`AN(t;5ZSbAIIXTe&>>XGKbP17=K|yP%~3%$CtMsF5lRn(E-#NbCF*hMo&*xd1{Zn ztw(K|6Fm&!Eq#u0KCges8MQ3ade-B76QfzgLUy4q5YbKBs**K-j`qoBG*x^!lPn3{ zKs(ocaVSiCGEKWE8&~>;_^W<9hHG?XXvQEt^^!%78gB88e^uiWIerk<&R8@vZ@-G} zjE;>8?FTd@kM=W?8q$Fg96t*3ARWqsrO$fU;yL*PykZ?ULU0aRl-%4-TX}khH@Y|M zDEJsKt_%!72O8xRba<-e0tOh=0iv|)>7cG0suPLbF5q&{*wq0B)T7yTvtm#xF}_Cw z1rh|j?rVjw1*ybYmwZdeGC$l`Cgu>0XBWP0+x?G{rxr>vmTuH%+yym zfPkBjDNtcn^QxMGPN6QU*-L^!h1`BP`WyOzIo9m&)!LOh1~|%#Jx&HFeMK?RT*f6K zvRf%^{%T$Lg{)yQ?-18(+h@G~s4sIHYF5NBr(?Y7oBnQ0x@WUNS!3u-fmPnmt=hoV zlLuiGXiuA)3E*J&6EGOy#$l!3WbfHHrQT4>(8JL|g-@7o_MBlO8KkuEuf>`GbJ@r# zY!{a1MzPshuoYN@C9u^yPB&_=+r#? z1lJZ~s3hT{Yz;wfIp!8qSeZI_I#hdA2JcIHf^n$(vSiCrRgYsUZyy6wi=Z=z$eQLw#r0{KdBz86v-x*HC0oFC@ax3Ew_2^sHgB z-u0{-zS!@;fywl{zrB@y6Z?nn5H&sR`^FJwYyUX$FYzy!h4HgBRAJ4ZFE|pT?pB`X z-+m@Xi!eCw1io{5=F*evfUJG#!xZ{8U(qyw(160YZNg-?&8C;O)1ooL^(*zc0LAuc z_isV^m}_h8cvo{sXL*@mpX)9w&jFE~CVVgfouhKpo0RcqeDslH{>TeeT%6TsjfCel z)VE>yoeV@n20I7yazB@ag2`s6DXn=a_c>Pd3)0c0I>(~B`J(nUb9jI$*+*fpP3$NB z%kgi84h2Q9L%L2yX*=_uv?9|8K%B%lfE`u{rg5>#Yjp+n1_xd6&B|^aNhRWrh9)Lj zV-U#!ncr$r*@5&pgHF5uL6*$EZSam4&0r-+x)5p7BibXB*mqtrLD zQ8fF`**|p-)9We$G;+!$WbbjdmT`;zNyG4ale$GvS22qbGT%*iQ0wRjO-{Y-a9-}8 zv~w9^sHO-cTbNSR`49F+lvDy zo;uyIE3Sm{YhT5DuZH&gi`kXLQ$lL>!JD19!SQcP!a5`R7Tjdh-o35RbK-L~y1w5Q za^3-Wf8i#%fQl|vA;Le3wco3vHvB$)a6ssaCLWBM;DwT?mZYeGagQ{5^pBv)keUW* zWzuaKNqqs>M0Q-7h{I!mCc%eZ4J2VkMH@F9&TD)dV&oFBJ$Ix* zM2M)|)F0{>|7d{jPir^*HXU~C{h8D=*A`<)9J+Bkidl%u8NRc-PX(!xwPsM5QEN67R9Yv~H|De$kndqKbRhu6y|-6AxWE46W<{%H*0# zw2wv)q6_D(`I+!kW*U-iLJH%@IC|SZs; zrfEU0qJ4Gk%--~@^GHK{^M{8#+69~C z4&~mxevbZl;9n+fKRN#n<9*g4yCS*btebNoC<@R>2G7!M>>z?;S7`L*Y_UM_X&^0yd#$!JKD$f$8wh;Drv&gkBA2-%M z_G?oR2pMMz4>h(X(KC@ctLmjt5L3jcX}<_?5>xiD--W9!)$&(ZZ|id_Eo0D|iW|h(^f4u3ut|C>Ie6{=Y0#JJ~JtGwG~G ztuE)k7}QgdBn*q)c^Q?$@WlNdr7gjTm=xmr)6Ft+1bF0}%me2sV3af&q0C}!-ccnS za$)1Yeh{Y3W-BAc{HIjf$Y^UR(f?YgJWrP!#MbLIp?pln``gVWu{dq*Gn2Moay0bKc2->Mb2{(Pr6mZd= znag1Z(FMl-1l~|&{Fn4$!~))XD6(DZhKv%CLjWr(nIi*f4PPfAi*@F*Ar2ZBEP$=C zCp5y^9qBx~8j-b`8x)L-ltYu;%gTnENqObuC_|br`a`Sq7b8>9>;eN>A*;?&F`6?& z9Y@cx;pF!e#NDXkaIE#>Pz(%?C;PgS)b0Ar)R_P%N=ZNfyY;5qYQsR%+Cyrh0Yc@d z={?~K_ZS)OMO`n*#C@lkZmJnn6zp^6F-9{R#Rcm^6NkWuY176z)KPuwdFObLg?ZWu zL|BLyLJvB1M&vTty%Ok^0(oVmohN^p5Y;fOe^wOx%RjTTK1V$%UaF0lB=!!0w>3-V zZ`C3Mui)3lHDXq~tLdaZbi=mqub?b4WY5Ai8#NNj#a@W?p^zs7i+XC|4Np8Sx6A{0oBF>9@>tD7#atoX)c z(OmHI>$TxXH(;S9DWx=LN7;cdZjdjnJ-{@sScvujqjE+yF zyNzVgSg=hRJHR`IVE@F5*N>KNyK>r9r`7!r988IL+l|{!%*Ej1e8fs%U4mV&L{CqO zeOUYf0{*8!E$XD)PzxCPD;$j&;7s$rK0~crI@LUNrxeNF1d(DaiD5aP@dIZw5Ia2t zTmw?E6Qrj5OyOuT$jbORRDc+NkOjO@E3Et`>B0G9F;PVpX*De-T z72DNO0EgQLBdfyql?*XhFE2B1!w9ddk#4P$-$1*y%uUZ5%xs)ga3|PASnlyMYQAKOW==8GiLGt|Z&6jH*C z`kPxWqN_zAnCwDK!3J+XoMukR;s~Z_EkncqS>Zk`xU?QKoMZEt(Et*qLl7D@?Sw5r zAKb=jMRH&UO<7-0er!-jsmZj>>+%_#FMnQUtB%PUjJ!`h21Ep0fxEbEUbSsLl`lOmR&Mz=($8Z z-j&$wz~=gfe|LM*c^@k1!^%L?^66K%+bSm=nX5iIlYH{;3C2(>F;_R)39`9Sh2`vl z23s>|l&HaHGi#zuNWAI!3E9Y(+G5yzJ{Xqf2v6yJp$lqSW_oO8$FjW2pA<$ASbjXj z@={`lcPd5*-bLQFm#sxStETt4SFp_6xv!u4|aHf~PKeMp2mvwpn{Q`yS?ST$X#+N|0ZkdUzqm6JS`xeh`^R zsHi@0^HFAT2i~I|eIeU|c@DcA(Ab)73(LnmVvy)EeEq0a!`KD?_hjpkwy52Gi+AO+ z5(>iyw2}@ByOI4%&9!wj)lpGK71Sn$Sj1?+0&VJP7Jh!0Cm%q3cTpmj+D!kfeB_g} zIlAk=XGS+Y`W~aTlBX6F={Pn;^B|&j-SHFMNJao|CsOb_o|*D4X9pP^5OghD4c#F> z-6o7FGTwKsUK#(C#F!Tuv+z}ZS}as+CfmY=v7Rw>yt~ityt;;yBe9z4JHGbHQaGph z_-w(AAFJ2`_FLT8Yq*B1x+v#%5@}HvcEKE;*d=i37bgZJZ)$c`29dSa%S@B!cB?)n z&0ZI8m3mxVk8|drsKT$d>f<3c)4dWkw$XHwO%k0&K$Pjvfa*9AE_?A+p1+t>zDw8r zd0VucnfoU6Y$}MF0)25EwSYjw`yE^$scm{579WEe9il03L4bj%Wo~hZxcl=s_vM~) zxmmHtQFr4w8Bu%mLkYj6nePJ$FrxVyW% zySuv+JZOR^$P=3GclFGg5A!GXzSrLOb(|6u0C;`u|58wK2atnNeg>dw{kJRos8jsB zcj#$)b-Q1?O0g5W2r2>|F}@QgbCM!Q<(TkdJWwG!;7tP=KSB^=l(9=7OQ7V2sRAl- z^ZEY#t?8oRCWdexQCZf_=+fpn>9>c0Xx{_uH3OU~(+6oYNhLFCq)iYm+SsN{hr>bR zXyIl-hEoD*r7N}{QPFJW2J^uW*@dJNB=b}8?LtvQI_fEWb|gs9DiswXDyy8##3qdj zsDsNa`8s@CnRM1sZ}vo&IBkXa^oNm<3X{TNuR3*$=}7(G3=`b72et@`kfKJ%lps$i z_TC{=-%|B)0gV@g&T4>btB6#%kW;#_;cjJC7py|3U1gz0Rj9*#fbnljWK^HuKuP)r9=TNQ z=YYDXnWb9kyCrvBn0L&Gu}(0kL?@b7+BTO$4qR*sFp>+R1%;Vf&t?JGPeUieadgm= zImg#hMw2jQ(Fz8-ACyH0VJ^%@;Df*jN(%W=2rv@lcYf_#};AFdQB9Rl zc46W~G^tA7fEsz{P>g089$-LHV3^(cDEyR^rjY?pDX1+BqSDV8bjTMn+;nO}XKAC` zPgX^I8yQcyNH-~utq{l2#6PXkoxuiJ5SEOXVevg7b^_8`aDhseeC@`TQ+1j|s zNIpw7hQP<^sQbtu70*;jAmrW?MLh(f{sPL71{Wc~5N2mVaCXnlkgE+n6qH8jQuN;y z;VlQ8lv+1Z@iTAG?{ zu_g9dTh@kWe*3zvNS^S6F#GBz7TFSr>ab&4V9$QSRItF(I!4-ltt_C;%58V4z&@he zfRRGHc~y~%Iss-pK$TcKEjQ3iSHLqzPRSm;;+?9okO;pbm62r~(R4yab(a2^Xz3z;N`BinvB<^;Y4%HeOv!9OPt!IrC2^0RzDX(z*Z(q!_)$y#_wL8fC8^{L>X*E_mkah=+mqNuA`hu?Y#9!&C63{L zDo^2Tw*eg6cxQqqd9o?^)s=|IG92pwYVNgq=R$TjtN9Bta}o5Ns=LZ6QVxYSiYtSL zI^18fi48jDHh8?cu9NGp8oyvzEUL#iivxASjG1KRroRK}wx1hTvwp$Cm;A)rK8aL;kMT8lREJR{;1geOnp~>X06_rv2LSGvT;=Tmg zfhq4PP_J43KC8+)1=0N>iqpEIvmikj)}tk9GQ}D!n74VfUSW@`&BkaW#%+uqPKe)NRVDL`SHJgQVb2PU^*7xH9z33tR zXh0Mk_OBz(xnw_S2zUhMv05{Xb~qU&3J|Ayn+oDCf-=gvI-w*je$5r;Y|Ih}D z%3@isxLYvZV_zDIS&Yf-H?u$Af4+A&KXb3dYzgF?`asHg4`+`%{K$z7fHbs(Y9nDfy-h*Il_ z&q2x4O}*8$(9_7_G1a40nZ>JS$HPLzt2ozl`#Jt^WDr8iJB1X6l+_n692+@xNq$on z84VGHFUe1uh+ekY{ATrG+V+IP0#EksE!NY#{yu!NBTsEUKqpNcxvRFm3RS!t2vA2x z;xXC-Z_>X0Nin9%jicRUUD}pkK#4NXV_Zt=a%}P%VY-#a+q>QSyMRwbyHC7;Z+g3L zzJOnOJ8zea5ys5*$%ucq0A}@cld(de>Hz$X_cxUJZ#>c9t9F%&i|#eq?>Igtvr@s| zzj)_J(Pztte$JuzEEu0DC3y+y=I7Pv<@2}q3ICpNKXTdZ2`smqhmOleMtAU9&Es-U zI*hQS;7QB1dRtBihJ|vKjQn}+9SIZpTdHKN^7l6W`+M?#!GFWBIz@6Bjd#k02>RPhhuDxsME%X1kHG#MZTn_fJV!mo(;!1r-NYW7n*2*Q%xWsQj!m~5P zobz?5z}_>etwwRVjZ)w!F1OZ|O@OsgPvwT#_0b=#oo^O8!3Zma$)-QkT@qVXGAiXL zZ~Bpbv%KFH|4dAy@YX%M^htP4g{AM{dFA*@2 z)~Rdv@!7XKoqJDLyVIS&^nWMO0E%u@E1?mAbXLH@M+T5+5{euc{lcSFgLxtng z0S=v!Gngh;)DlITKha>dL9LL6c`b}ESG%Ihp_Wg`fJzEOeO;~~NDG^MG>K|3Mj5mz zRb7zS1%XhTN!n(%#4AHs9$E+p$*t>?dpj!auStoqTZt(rF1w->snI45G$E2E`dDUXuZMdVjosng;c8KQi1V3i0d9+UTYp7T{g|jEgo-LjT(gHvr&#E|N&e+}iVIs0IGW zCf!?aIoy6%Vaa0O7`S+}OvdsHFZr!4gAuI}6$0a{1p3-U_#!s`Q_DN;Z7y{zN^6tb z$D?seX*hTLujaha=^FX`mv`jZ_S6$)CP-O&%caBqrK&XQ1XWm2yba9G>~zy`zT#py zV{*~H1gjuDs!0_m#a*TZZ$bt}0#F4l2|t(GLqfFl=DVMM^sNTJV7R(scrdjBS|>c- z_w(yOCM-%s^CpULnBNTQ#Ce!FOWiHTHgG0K+R7V4j6W!)quL6o{c9=&u2V;;zWEn6 zbqKZ`fA9co)Ww96ZJ$*hRbtO><2-@IY=S0EaqA(gb)pgDH7AYk{tj5RX?NqcwWqp2 zqE^k{Lue$WxTO+Xt3y!Z|J0Yq9DB{YpiRJYk7Wk(tAtHIvfV(K=3VmS1xg7*jMRNz9yq?l;BwIGByH zCUc_~CWh3e)>eu5mi8moy>#}QBU3FX^H9jfDDFmMp^|RFmnfy;fu~E(<>Mf`E($Q%e z&PEzWCZt-^*2L^FX;_tnXeCO>NMjm~Jvb6;$3+bz9>%9NAb5fF^0`MDS%JgK-fvy+ z#RV@Yo_{a*nYTAF8R)dl7`5e78`fv4V`8*qR$ zeW6TM3l|S3yHZGxoOu%T&~aw1znD`boO2Bi?j}<9r$PDgCvM*G2RE}Yfd!@Mds{_@ zC)L)s+j>D?!emBkWhWztudcByynbl(*3wVE=MyS zO+Ca%>zfH7^+>CY0{VbT%+3fD?hNR6H=9S zZc=%>!G(2k*CLThh;uou*!VZM^~hPzdB~>}lkqOX^x3Q5KH$CH_tv(S=D_Qe5#uep zmw^)5ycCb+?A?GL{zET$oV^3xboc+1AiwHhF(#Ne$v4`ag8urXO8xsm^hZ&FW3EG} zc6^(aWl-8YTztX*+k=oYACj7Ch}-E79Hqs(2AF&{q{9zcL z`8&cJj+^;|4(4$X4IFC2QP=QaWH{<@4mdiA=cW0utoZ`&p!;_dXW;jGp!|ZQ(hZ!6 zv#JWm6dBA5P_QbLCe1-1oZ+75O=a!!&6g6nz6X`|&x|S_O4s z6FBmsW&Se9hFlpRA&BvB=JYKp zu?zZn1N!w1`Yk8MqYK7!1IB+h7_eNJ@UEChjhJY+m{?p`c&=DPjaX#2SX5ltbgtM; zjo56r*j!vVe6Bb`jX0lfam2ZBrCo958*!Cyan-r-v|aJ^8}W>9@yxjJtz7ZHHsU+p z;=6JYc)Ak!HWCEh5(IM*eoXBn8wmp&=~w0mQ(cJ!ZUOJC2}Ffl#2gU009E4JTVlLM zpq>Jtv5_P-k=TEfWYm@Pw;IW16zL)sPG~Wpt)v>&Ql;&Pk={`aDsinql1b1M zR@#lxevy(Lu*J`)xN$z==NK9!XCM_sZN9{Sf$*3D7pi9m3A%g5KcW^K*gQ^P98DV2 zu{kKBrJFEk=Vvp?gQMH#R)85h-f1F}9ugKEqIh>7`hs2u9&6&TTC`~xY2iGiH+Nzm z7+F)Y*Oj9*pDCjxmf~z_6#In?+zNw3S6vwx<>2Ev0wB=v?(?7>zOI=c0jyVaepwO1 z(|K1ss$q-V*{Z!Y@*H0C$U?XyM5pHSF#?ApfVKiFdDas*xFSWn7#Sg|7kk3Vqs3L{4XvE@Oy|8%`PBNs%+fB|%D5sKrPyWXKYiJ`O^2 zh9wV0mTP^$lDscVLt>B^=I*uehro%5QOm%surOK(d4?EZhtkZHk1VE6kzr&JtnntJu&$xb!3YH&?*r^9#vO#J%&)O!m$kA0UtLG zxbW7uUuZ@Rt#4g4I+vre`K`vQP`R~bI05jTU#3+A1^O2$H&M2VB$W! zxDP&#fq~(F1UYYS@AUNa4>(RwPwzvJ`>^Bwoh;D%wemr_HPS|$%I5wbJFau(XVvuK zzfk=DvEx3}xPK)&S%bSDc3j!$_IsPCkT2<^RHQ7UaN0?&7czQr^>)$>#F;d~hf-Sym(cVzFE@voZ6X^+c{xu|lpw zYn679OugOiR4a=d4rQSqnPOYbW;3|C$oK<}(`eOJItHq%IpK97jOr}f6a1EK@chaB zAhJ*?J^*~}GM?$+GVA~dVR|WbHl0L5(VQwYl5e21$dBkdsQR>D!;-5Bzxlj0U9LA+ z4Z(K{f536kxz;LExgPvhMdt%W%&{vqs z3ry-_hQNh+W4of0TdsqdJY^3;NWISRAmrhU=F%^Cf3{6tsesf{e^Wua;S-hNYSA=n zw#8~JdleS3nOH5vju?*&#cm{Mj0<)$Sqp|nl3CtrVIne2R_dBMM0Dm}u0a`I-h3mv zDh7wVJ7%U&73&Bd&!tqE{*SgN*)C!!7C9bkUw`KMoL2tK3wS#JnID9}d{zL#w>v9@ z()+C;$dFGmrbNjwpO>U)2!vRsT34Ny<#g#%X{CEHUsRN&ZLKNCW>r-c^|oGIR5y&h zGhf!Utl3@GcAQpS*7ZDHT-FaDuv|5a;9uG&6CzFGmQ?e1V>QpoM6cyw{gP!?Kv36;R`q;b0T zx4lW6P^*yaRejN>KHFf^`@Zl=Bk~-PVtAers(Yh_1?$p}%vg*Q39qlJ`vu2z3H2wu zVm%y0gO#Nh6vA~ySMn#Rz1kxc*uqnW31iLiQ-q=zO7i&kR@ z3iYt^YhF<9^|ErRq0{R;LSUc&?|#J3aA*Qorjlq(T5BQFzu(IYcM`S5ja0UHzV*r{ zs7k>iuzz581`(XQto1Ut#c}|Gr2f1sXAOMDEd;y6P-bWy@(JAD^O6l5g=hj3N{So^ zDMYx3(3*SJe*$**t{(=S6Cs-=D^CW5MeKA!k7T>49L118gj<4mQ9X$Go*OERE#b)g z-!=%IeIJ155d=@jxq)eAlf!)MVovZtCB7sO^r^58>Wif*t;2|e5(EP@h0T%pM-Ynd z0ft{GE+XY}!@(nTKt#Bu!l()gVp>AB1#w(}%>+SE|9WNCeYO!63l(1T9|h z$s*j^#{(CO!2y`uenc0B%I+)FSRoT*Z}E{TEoQ5h70e4UNen;i@X1@D;wV${QCY*v zG#oCl_)T61*asb0ByT>7Lw+HB5XPBz|H7RjlX%RSsLbZt5GlodZz*?0RpO%`C zGqlXuV^7Cxd6xh^4=2b`zFeyXRXJKclNiD`pXDu5My-;rfXv%IORbfUL1zs z@tzl|GFN(vYs+__S5*_XL7Re&;?CF_t^gKa&jH2=FuqcnWpkWHP4sGvsEJ6;6X51jte~-Jnokemofh24p6E`X0idY4$ zlo`!1M2c;TqAlYLErZp-K)ii$koI;*_KgPoUr%(e#%a55`c7JFEBU7K&13iU>`@}9 zcTc}nhWpm$60%vaz4N^p#as}g>9;>mQOcSQA#%7DO~!M<%M_TvUBiJPRT z3D6sqMfCM1*kNbO_M7wg>g+bNX~AOrd!NsBfM)jo-6pr_jX*`WxrxoG&H>e*FO#40 z?u8?IezM8)C+EuI3+udX2}Bxa1BiD!@V z>fSbMP_jQ^@jaLEx-Uy7PJcqR#O?%D`OLl>s)mUB-UfN+NttzoQ1tAuiWE2;qQo;) z>Hc@5H~zLOBIaERH7X0Qz05U=_sFOn1N7Ank<1?ARv3mq&L0?LKI7YjLjx{b1txZw zKI8RS4E&Bm5A=q8F@fpe+A$#lzi*RBa%8)utNbMUdFQTwDkS~mXVZN5+R1!MLUq@@ zH~0H9d|lV2i0icumWwv$x6VbKKyzFxcLH-WfDAnms;!7=6A?I^w}6`X8(g3#Ltvb) z?_IjnZ3M26tR9cH7uX_bi$NtJL>=Z>&rn_b?}IagkFKNykB_+RWh2fdA`<}!t6|(- zN7w)J&(Pnx-$~ZJzY~P2>QJqCe)Ns~bPq!E!##{j%^xKRKWHsRYMFCbtpChHe-sB3 zzZ(s&A zdpQAvqz>RJ1%iqv^jwpfL+`C6;W&*psD!)&@gJoo)}!jx1qoc7S2UsE!YBjUpdLaz zNgU2U2V{-S-y0U)E&fQ1+j@+ix@pr`r?}bvEu;R@K_GJw@%=CPCjyhK({LJq$Z|*6 zUpH8l6;qa}dxjGgA^bfa!hM!}}dUk_{$-1vacoHksI$m*@}uk!}1wVv0bBT+&D!>p(Kgfh1vN zV7H)*q(YuuOOW;FR#Q%GGzH-1_s#9}j5J2RCm2+j}*yV=qe zi90zaoe?acOy~k3HBToxHzv3dgV|3>)JQwiO?8!sx3+~FfKC%l2H^9-cK zGHiQDw%5mFWul9kG{8?tWx-6(e&&wU@poE*eUidf*QY!Kc_-avPFd^O$y3xLrR?EJ z55gx?1ZVEG(B#T94GPhbO?oWTg1I)yhmpRPLSRFDUE;t@=`n50KPklO58^}ys!GgL19JBl&9T*~=fhL}d9ToFb$$%lO zoIsmKra**ihq=H6$2qBp18YrcP$ce~OUwo7UJXrq4&>Y-E!Fb<(Uy!GT;L>~uSH)> zcpGfF5n4}|Rq_m#$clrGcvc6SeT0`Zb-B@|g0XJD=`s8AUf|^;Wlht^w2PNWDqtz< zk~pmZCL=N9GKx`O3KzW7L>bG2|AvzM32?kE#f;K(@*}GA#<5?8ka1R^bHRYO{9L*M zV{L4V-(Ni4E`oK_-OYXQ{e+e8rHbgYDlmWgxvjg96@+N7Sokd!L~`e>jF%=w1UI*r z%0=O)PGzX_7G_O-r?B(%l=)=8RqkL`m2Bt2D;)UwEWpqJ{|j=K6XbhWmmkG#^oGDE zB|S`2orK9Lyy;BSHhg~yIp4vHfVB0BF@*1ocCf1>rppSrBrX6_Ou%{+HUkWRp@4Uf z53+Es7&>JWUX|%3QDxUrp?w3ZeN(q9T(jlp4GUjK;N{j5N%F$XMxq8wn*d9lVD1VB zph$qFr8L{Fa9?Zl>Pg8WQ?pnys52R?hAV`{B59}*_T6UILr}!@i_D>Z#i86ciN*cm z`_2Whmc}8n$GR*fRv%I1+6N%J7;z9clW+NmfrvfKU`G`i%7w{B&zk_mX)@C|*iR<7 z)|jc*g#W7INL?NLd~FB{V3AB=0E=bX$nlxpY0v``B4}-&a3#EA`O`{9{9h*`HP})* zOzH$;TvGrZW(P?_=>t6WJToR-0W8H00CJaa)z#)M&_Pkq{6GNl{8`(E)e5ANcLKs$ zZe=SQ$XB+u=Ohvb8a8UH!5T+n2a|L(``LJ%!V!UC#CQRUUH&>RU1PBLze8xZCaAJR zF!d@^d;dBKG!Qh(0frMfH=(UcNcTc!;x^P!Q@ZkP?kL+a@ zhfSG|kS*@|O$V5oF2ybF#a)mVErG?ofn&MpJe+oXvX8DsF1+*Yr=YSg)dt|HSlbI!oX=>^b3^qCLRseb@gkC4D#mqDv?yGn02;4VTmn>x!O7=rKGlR z4+mNdhZPN~KN$X<7$JxC-`c9k{c1xsrbsX_7;!ctZ;M@d+bzIdd8P#~SXE;*nWWGG z*l!=v&=@>{AA6LPxa**F%N}`v44X@i6M5!+=~O0D`$DWRD!?P1t!^9mo;03P3@H9O zAvu`DGoZBW9Vm>MPoF+noYj583mAH0@ZEugYfsR0r-6Jc$OxtVg(|o?)z}7d=_bbc zsK-O8+XD&uByhUME8;79Fz24lS@#r!kE;38|gPIbB!0wEEJ|p`XWhsva}uGrCwmioJU$^Jup<>)s9< zh~uvg^5Wd&s5n-wIk{t4(oVdiWVv#ZUl$2#r}_mGu|;Q?c4si&n<7rK2|ay2@BSU6 z4dl%ssphF&!Wdpcrz#+@h7E^zDsiA`5oO#Ai9|M|y-LjY#qP=OwgD@0C zRB*o9b`zt5(8%<9y1dH(J=Sk+5~Cg|mH|^mHfj$t>HxUatk|&9q6E+&gyU&~Pc%(A z(4qh1MUIpVf1QD|%ZD9C@fX%o3ym=^5K{@%_g;Y)cUclyR-i8&PTt=QouU1YjU;D?;%TlmT#|IR1Y`e2K8JFZB zllbbGLnd;OF1kZXg8hAxb#?Rokkj#ciO8evL-xJ{Bqvw^?Xr;PrtZ)@S8!?XsDTsH z(KoBL$I9b+25Js5WqcU``7!=QK@&FYWkk1V=;==FX?#2NC)>`?4DHD8A!iuIKf93eVBqF%uSvwfE3~&Q zmpQA=JNsC=*lXvWGR!Tu{?j<~^5sCU0ajOSM2$NI zHVl(rTeK24{KNjNsQhQ5XwPYnW>IeaLTND1yG5X8Wb$%n?kq6s=hr+XfA(KElW{Cr z=Q`}kraN+vqzx!$*AMA~ckHdZ&J6vh{yK*F5MGxCNIk*-gD--?ejZ z%2j@I+Wp>9j(P6$K3lQP_p|vK*MFXOYk^v+@?O^@rNY41e|Ef+8&^l15T~JZkQ1~O z4)ZI6=+}x$fP*D}hga9FF6wU`q`M*ZJ9Mpw$fb+S`+EzYX*J7Chv(nlJRcTPC*WZ5 z^<}T)nU8hu4h8cso(~^sG_FoOaL&Z?kC+c8pN?4VzO+00-fDf>t?`8I zZ@pu$-X)kj`u6?)2`Deuw;Q91#mYRWDg}OZqO5k}@Ved&E;_^bq^gmphE~s(DSp@H z)K5677-~?D^ZeplUk~TZQBZ#Z;C)$^BWw=*O?-}Pq^g(h*UO&$hmXil;7hy=d!7Xo z@uz$b%8800|3Iz=eX<2JeCM5}{@z8mx3>5AA7!K>D8Vl0RkvYO1eBCtSe5=Pe6b0X z)vH9B=Fofzw!xO~XWOaY-#mHpTx!?}c4RH5gGn450-$iyIo>W5Ou zxTpp-60pPYak%Uqri;PSC@2J|SveURC;wkKPOCD3Y7R8uyI+ncGwvl=a zN|;lp7L5JB;ka58vZ>%u@md^lsNjSdL=p$AdodD)6DpHTu%V;BSSX2_qOrU;nyveL zuh+Id4)Y@Ux9N~Ki?t{#Rwz6wvz93%ss5ei6dIe>M#G8}C<0G`)e3ph`2>p3nPt?C z6^hcyu9QY=ygBq9p4;g7BV361kJFw%21l+>VM!ET!tz|*uHmy=77??pp77As;54m- z3(T#)d3e|i4hf`Zk;Wc>Kl9J^HTD{A$6s)5*JImw)K?v~hy zi8rCms*>-qMM03CRg8szUsad~AFIlJ7-6&#H&6?zZ}o&=IDb?j{Gp{D6+*<7Ft4^Y z-Bt<%ikyorT%q35z6^?;vV15O_rAM!&p)L}+PeTcd|70L{Q>}{*nsU=w49s{D;TG$ zxm^X#e4+@2b6-77oJ68k&lSyal^#W9pe_WXYNHC7gP{owvHTIHwTaxL#5w30cIau; zdz_8G!who<1M?jt?y8#(51nw^PN;RFUWLm=gPjpxM(~Jnx)upI7l2)(3+1I83}M3x zNfSX^iIrOfO0N-0nd*nd$nsl^Ju~kINwQXEp2sX3lqPMRg>;a{v zn`&-#?BDe_peLxF*jJChHD0%DpxD|fKsNoae)szC4$f)6K60bk4J8Uv#PsKSd8tMB zB9gnszM_&lqPHYCkC$Bz0JQD;*1xB2unnc3`E}qWrjT@gN^}jD8ygz!735631 zeSXHX1a_7v4uRFyS#g{UwG;ix#kS0lVR?w?oGTUyg1_qqgeF|?H5_TWO#v#D*rHya za^Lelp|*#q!6#w*eEQdL31ulkyVaH;Pl znJj(;Bb%@ma23tQV6`8@ljcB>1U`AG(Z=Mi)P#2enieHvoCGLGWgt`LIl}cfu~E8# zTxwHhEY}l}IkqA75G~&bQ-Xf3QC2(Vzd*G}U0UM>Fei)Gpk)LF7?Ys70d||ME&_dV zp!6elAS)ybq~L@_G>wqX#8s!J<;Eg=lq(Z5n2x-y9x`BF>xr!iQl>kniP~rzr+VbF z4N9B zEv8|WBXq5L+`|o=Z1!f8Rye-+In1am8S+M@j^Q$};cCvlEe~l%!jw4{x7M@@eR*3vE{Gw&>)>P({6fzc-c}}_i)kaE|Cpho< zYELLRWzN%t5`j!FnCg=T{8w`1RG87JvVb98zf#Mhv`|K!C#1yYFv}=jUt5_I+68BH zw5Tc`Mq?AAst$;v!XxfE6NOH86zB3v-iBboziLAP9z{*!ZYjSU8(p5 zeJ=yq24D~42kN^+@$XB>lykrRTV9TW=Yt%Ce~otm!t5c(4>yrso_Gm45e3oaq4%6| zF?7w_k~9CzNFUYBj$BW(J~d#~;9c7yGfr8eo!a386rRP}vm5W(0m>Q{Q<#Vs`5vm|gjM~rv#EU7{YXZ{a74eD z8D7d;I(dG~X4L&=;(<^TDqjfl9iV3KD94C9!ZuzzR37UP)BH~xbw`Ajr2s6)?$57~ zpA)b7OsDI>u5gEqv*iA9-}N&6?osrOH##!d%o7YtteSW#v93DoiS(FBDdPLJSlGSf zmu&af%hc_Q6>;ab#F~4dGplja`DgvGgawT27m?S9vj3zSnyui~n2Dz<`ySgPRIZ6r zzUWY3|LNOKIU~sO3P3bG5d9h0?1(S?1LezO|Bpw2Zwu-%Lq5SI2gB`~;TyaMWs*oU z%yjUMyBUaMbI$o6oz7=@JQ>y7%5HLwTHQG0QnYvLxP5(gmJXAw(k0>TVw=a&`pZG0 z(6)Q(e9n&Fvn;h+Oeh1IS&De3;konA!_E{8G+%CHd%wT_GGyc{>vV+Z9)+y(K2UC< z6bP>>|2ta7dpSx6{ncjm={)Rb{v(jK3)c)R#&9D#uXq&5WmwF76mS7r5mMX zs}uifu+E~z(xSU_K>{R2>OEK(@fQYBW9WVGNZcnH>WQ2Pml93U&=7gq!ajn;ekG1; z6f;oWA9hJxp#W7t8sUGIr1c#-;$p-njHD;R>!d{Af}{MkJt#RMIYT5Q`U0!?zW)Db* z1T&sp6o;QBfA~YJk``ztbU-4Y>K*nKi9K7kQ=~N-D&DvS61`9KhK#>VN=FxuDz-?I z5yGx<5`vU)J&B;mrXU+%iWp(}-yp)@ellJ!KX;je^}V*2ST` zoGok#E8NU66xGco+Brx&!#SLQMk&JZRsM}-tb|ZNep*3*sqV}Gy3!dWoPvUMu6X1_ z?RPx$Nok6bRyhFJ6A35L*}nt}u`ivB!^%=fV1@v8mpDWXPZD;{dLm0)~MhQ*&~doRgm1C;6M ztEo>ZpIS_z8w-3&YOdcISgKb0sv*my!EnpM_EtUjiB)O03b5xkW*eifc-az(g@L>b zja>*%aEbMbVyNhlp|nI|-tGdvvoOvXP$bae$+h9KRV1s6oy*t$thlvUQ48AZZ@23?^&2H3N z#R|E31UNPQt)%KBKLFxr?Ts~}eP*_d7wz2?FkO#vn7 z50|Jo7Y?<=;D)3&nk~sKR#? z|9)gmc6R;UyqTGfj&0;^-ITh)ev;jGbdHRS<+~l4opyugq0C{nbY!j`*Y>(5Q>mb_ zN-AD@EIhhr?W{-*AD_DV+Ym|L2$w4SM(S*BTB!{A*Od&ktxUQO`Zx8h8SLVyXl5x! zuGDprm|zU>=4^_7;iJScY{7quTV5>dxLllhBkT}kG*plxzM#Q9Cn$9$$bPq}u~wR{ z@#8$DBQIqDO~RP*Fg(yAi-yrOaO;*=;!o0U&@J9h`zw*%JbFTtf!R7+>zPeoQlz?x z)TXDqXb4L*&@8j6IA$7?5Fj~PYJ_^XmD@bp+^8O5v_sihduf2#cBX#4*wT}gK)#s< zQVV*gfPr~SGF$R%-Nyf7p)PcvA5lYDtXJaE~{8`_6y*29LXw zsqtT6_o{Z=uid@_>7?-<61ybvCVPffq{urT<-~@dUn9Y9WYf*9+G7`OZ_RS%ime1j zykl1)F2+#iYY8AeHhdp63ECL9gTFD;Ok|OawE)}rigk@L)hum7xdCvC=%^1-R+9;R6C;7gMzU*Vw-roncaR}uR5?Ec2R>TgHMb-*E} zlOm0m7)~7kmtP!DN12bE-(zGs&S;IFy{5xOIL;+@Vh4$n{kX-gDOfU(N9FMFevD}K zODVUauveZL_JFVF0s1yRiHXj8Fe+(B`x>a^8h6UhQ}k8Dl8@djO50L~y|0wY^fdWM zF5JpIrVdtgoB@^P!aeHbE3A5AN2gkHHr9z5{Ru_cbo}e!yOmX&k#VS8g<{IF78Ot2 z)uHDn@)h5NS3X(@Hr}``;~|ZR>uDVYy@gh_C85aasnX94_Y)zf!;daA5=zOteV@Xy z59Z=>@JdF}e5}QHnOHLVQ%R*0SCTe?C$V3!>)-rN17fTzM zBZrt)5&zlNY4<)9oIY6DR2dI?hp&|O))I)ydFJYV)@G2SDUTPNo4aNyl9~KpblnA0 zT0+ ziW#Z`r42OAGMLXsSPJTt4TW&oDpkkv@wXhU`W>G;XW$(3M9$b!enJO2;@;`k`F~u* zWrY0PRuTB3#4<+zZO5TH5LLF!aS)BBO>A8LO)n9J$|zjN^L%f&&XH%CgZEqAJoJ?u z^0=kgFcx|OI#lTxQ}k?))%crKM;yztc`Ne*2q<$CG5dU{IK)eDS~68k z$?2oBJ<$g%m1$|Df=NIOW#uFuCB&7oE#@=lXM&TPO@y;BGPmndlyADk9Z|(vJ7^I4 zj})2=J4^QpOyAvRLv;5-qqu*!h?aoh%0cYTdeF}In{)TV*Uf|*Ae4mkOs*KdDjbIS z9FgDm(&CtudJliyrnUyJt$Y)wBkzo~9%Rx{q*jw@mpyXy54m`bqbD9RIt?0+2Dyr& zKHy&)WKtSp5N!%RN;}yeOMk1$cKv+LB4w-2lAQjfbCm+dYy4TJ<_J&a_tLTEj9cHM zicZnx6cm~&nQx772w7&n51xe@0p_P1|1(c(-a5cv+awmxIElk$Sl(UGH9Z9qSNMc236Mv1i^|47pop=wo{c5$J$I6Ypy?g5*J+kc0xr_-&gr zFT$5=8F&g!&LHNqt>2R4J}&j0KKVGWUJD8N?;W6gnoAPYI5O6G8EJs*SIEWZh-YL1 zmc}R02XsJ&Kf?WO^aBBDRQ_|jeHkP9OA+r&vCK<}&P%EFOPTjedBjVFvmbi$OI7Ps!JUpmwa!An-XZvnc`O|@@9llOx69u!g%1{SYS71nYj>Pzx4O>HF|S6F1I zO5_jvVIO!3Rfn5SJoE5j+`6xR=WKt6S^tg%`HfinmwW#mw|<#O_b)B~J093fAM(?Lcl5-gZ@yP5GD6A(ahzli05@mwj&L8N3wV>Da)$_e1-@(;lh|!T&T0&~> z35jYGr~yLAit&K%;ZEb#qeP5d;Gf+M%@OS)|nzg{Iud!E< zm}@-95ENve9#X{zsgwxS^C=>~g!{PLXd?XT+R{i}Bb!s#kgVQc&qLFeUfdW2|nEuvmGMHWoQ*tt?NFfQy zyluoL;dnYn!29lko|9S`EanJoopdSv9x9u>lQXG#s!^`MtS-#QZ8w6UCHi#emjJC> z4?XCH&X`cM9!`u|MzW^8yIG62N?20eB(K-abH8#}y%f6r)dm@YMx*QFpd0R?G@&@5 z!xq_^Kn+3t%*J9B>iQGOVn)^8U=B{ooVnM%d7>$6(#T4QjYBsQRPDf*vEFvv31{70 z>X=}EIo((JLQTN$Hhtj7Os8VB#o%1*0uT2od+o+^q$+j)QW^i*;>>4|h^BtdZFsX^ zshPKOm2K!ZnOIGUbN8E8@G`lb(t1#f4=k(>CPH2&nKn3=+-5fziAFOQme>Zz#9T>F zN-cQFG)3ES2C-u=f>cB{$>iy5$@H64@v91dX;;xMBx}I7rBV6TiCOOa20fIBE-&{d)Vy9}J8AFz4q40d`l9Yz@ z#!?FMWqO)*hO&%m8SLXz0%EMvD2=JxzNMWOx1R56RkR_2R&l^o6?Iln8T^kj>&~#B zMbU*XNp>_ATti=4G5+i|GDJVnmm{zX&NaIuO;&xz$r_z6oNqf>ml`aSXYPpP`I69f zB%e}aV4L`ItkeJNrLJ7A_Hn<o6kre9cH?|M|$c{pT16Gp>cemN$nQVFb5;oYJ(ON=D z^c&j4ogali`m!G(5+UT#s-l#7Z;vT9p(me$A#GZu?q+dVL^EF9Sc)6<$gyfARckNJ z9n*XG?f$5ZbAI105@(_N+~To=)_Qv`C3YFr!&)!3;(AA`;OF)a?;t>@G(O+YS>{=vwNyOh>snJ` zDDdJUGe3*IPw5bT-T6ui>toN$d-uNVS>;x)8j?@k|3m0)CO_h3k@KZ~@lo>x{Q={~ znC6-2)hdi_EQ(%x78wz^NtyOlkUG!%c`ZsSn9H4Lm2G#JnOeW!uQ9<0<79!K_rq}eqQ+J#GIBA0{T2pZX*t|swL zRmJGv&Bmi#5qpQV+3N)AZJ zF=sBHFS$WNWsY!__2Ni2@)<2A6fw4wi@mkN^c#ggE$)57E+s9N?8Kv70nqI zGZ$LQczWrT-K!RJ?^?=5Ug_WSqDzICtrgP34C={MOQjsGmC6AOn#ByumFlfk+Pw_g z%~i{_ZmrcuuME1w3@eREtu@|k#?J=~tA(SkbzZ%UM)y^#UFWU! z&x*+@d=r>*&#ev0VI?2s%qV#{R?_x3m@H`1nKEbaC&Kml zS?sUYd$KM}26)XrxCYL*`gK*5`U?xVpo$h`9SSZ%x+x}#s#<237Fq}v%jQDA zdN{{ll|Ry|Wuy{W{r5QJESuWT$f>wbxtW4EISe2ix|9vf_5PIvywNx< zgSgt2_dMA+<2lS~+g)st^s(Yh@uKQ}hv$i%WnL-!uRJ3x+WRv2!!#TOYrIHas^<7l z`y?ml9?OL!OlLotmig|Yi1smqd}}Ngchj7yGabaY9`y@t_yWx4uaeT4Ol)jR$A%kg zx>?MCyr_)RR)IRvOan|B+X#~%v@E8G{f_y~OGiEWIP>nebOe8Peh+-(EP!S{9rVi_ z1OWa6OsM_=CQ$FsDYOwFta!HcU6)*as|;vZeChrNn0yPsBX-WUNv=w%E&ErObS*3+ z`-?J!r2Pv_QbCsgn=W~GCI14Ge|5>fwB+5G{8yLg=;-{bOQ`)?-;U>aLc5*IXEoAB z-vZIzfl0@IXo+Opz`HJir0_sin%`Z?e}IYBTMP}P)l)2{@3qGA@Ak+$FexA1FwL8M z2PU)##Ig+qgCPi544)?&3Wp=mDdlry8~+DjGMP-L@n2vvl_S?&_AQ&w{e0`cz(l^K z;$L7g)l#`wuKF)9S+3S?{s)*;uhyFkNB;{+;%PYjan~W&X485Zplkr^4s&BX!V~{8g&1$9I0W|LbqkiN7YE=c}cH zKi;?ne_!**r9*D|5_o@w@02@JedrU`_;q#A%~jVo_4M*PMkZhM(;MTwVZ?Ce~D7q9lc*DAP2}Ma080$3yv$JQ1d@f+|nuIFm-)QktMB zU!t#rCcrOV_oT>zW%9ImsB@jVfPG(&zBEo?iY5+@oOh=%2@dhBBG*p-yfSz!GOtuL z%a$%FivluL?&*A$c^*=6Oi1nDWp-AX7qY{9l*fcN$xzxTA6?jJ2F%EB$kv~7sE@&w zyDXjALbRFXn*Y$f{Fb}BIlq0`6)j>-xfhl`+Tjk85NRypl&-_{PvcF0UW?DJ-E=rey*V@Z zoIG=*d7RkE*EL6h>sg-b{MH$h=dC5E)KrAVa}l%1(rwsoo#J@GT}IlY-M?Dm;Ij^w z=`)O2r@YxVxv159Gp`fSwSEFKtj^>%uJrE?To*RRQV zD=2=ghP02>FpSDM07lUl6$LH~`14Xs-Z^kof5eCv+Bw)c_=Pzb<}xX;ZZP{xUnBoD ziWUBSjt+nv8A7l{2G4^Ig*p`>n&{9VbZSnz`Q$DZzQ@cXLTBXaRwlX(fDaA<4T79del6`&|a4&i7ISRvIE{9P+ecE-3cgb{y_&#RJ?%g-|#!=!wugq9>ZuP38N z2SKVpAyBQZ@Jbe@8bgsSPNvo#UZE2}SF=%su`yVtieNZ1s1VfoYc`KV!@p0-VvV~E z-cdvdkd-y*9kxa!#-3=9c0v;lSycFjep=&9+xSDH4O#Ki$X!;7bG>=nxnlBw~lUCC?aQ(QC8APXp$jOaM0tMUSI@QOw7#nnJgh3BLHHHjQA(ZQnL@->$ zT7j8l2LyN{Jh0&ed@N-@MXdMRtdx}3nwe{{>9fSsRLLmPD&A(%`$EF0TS@kq?#L)K zi>6Y!QPi`|f+~cS?FQgkg-{ei=(CB?cR^nAPS%M7xzKwO(rTz)#kpQ!DX?X}`? zW>~UYeU_b#mItU+q6SvSQ64A7<;K(tYJ+`E`BlEougA@6W@B6cG(OM=B-@@>Z2a1@ zm-6Vs6miQ`g@XLk|T70zqqnvpL&bvtUt8mAW$) z3;Nho1(}IZR+n>{=<}mFFD3 ze=$de$(%1$n(bs24@Qp!0ZBz=;pm`(Q8UP3IPb+in>Pc!?@!vnmB0@O4LfVQCh&8H zQ8|P7Kl-Y^P~vuo7OAm8Er?cZ1#(VdF}mb_@E0Y+ffNiN5T*j0tp7GzUOMSvPZ0rQ z|4;=6zZXrZnFUKXy-3a~V58%Vzh}sluU)Kp(lvm=89i#tWlAzy1;HO{p!R&#Z2X+b zpse4xiUdElsvJGsH~58ai;i{8_wVqXYr{ipO|*-OLb=#Tz>C7JLYY1$jgb^!?bl(T zLs^SH4H3QFMD~k0PJ8y8!=X`udPN738P!{63{sb)l%`=RfNtB_z=Cnq$!Bvgp(Yp> zOw4T9a&<#2xt00Rxn-S}&1YnD=U24MN;x{L=Ccto)nnYCjA1na7Bk10QxM+dkq7`i zLzLV_CK=Ww;gSLW{Sw&P9L;B--6vnFpku!mB1K#;mo(y8VY#j7Y)7Y1x)=*hg&&D1 zT7aHpJ@JO?Q&ePrmUe-6`zS*0t_=vR;Y(WU}<`4I04qdTaZ;Lf15C_QOuJQc`Gg76)ox5P+C?OTNBfWMpwyX zUA(Z;1kCOkCmw7GKLElD~W=kCSoawWG(Pg z6_afAgof%MGB3y7pd&`?Fkn{;5tWYMKZx0)jK9Yw0v*Z2@!}w9$sKZn_-&ll=^Qu* z!$L=c+D$bs+ZEzC0C=kLb)oU{V(u)KhJ!vlRIO@pR8j7lSgwyi-ctdRGuOX9q%F5V zTse)ui!PjV@z(AMH~3O35M9*(pJ-+u?9vQZi7+6Vo`OVK2Tm0Ok zn|zxgV!A4P8BFvWEYsg8njnZhVir$$i~<%+83S_dB41Q{uL{+7U(kPo&yFDaTxJGpK-X(E@pqn z&d@!@3X}7V*Urxe<;BSE#^8yW4l@c zj`VUQObdj9`QK+OpLDTY^mLFSSk0f}aa(x^B`BjNjm0qv_^FB%Lh^Dl4X?biSjpp9 zxRV)V3ySHm#%aImt);pgCrhd&iAsw}zkq}`s2as$>MgKteI*?w1vCWI{W?nYZA-ad z3?&8==o%td?n}>gN{e}8xK)+xHZWZ#p;6PJ-^7dbI+HVPuvN1H1vbR#VEOtV!83@^ zmXCRiX4OCd;@nLO4&cr}%Z55{gFj zg*F)|eyytEp}!}@rAVYOV+o01$Vv~Z@Ji21Q~)WV+~sN3b(y#I+HQh6ggU;z3n?(F z_E+$bvhe_4s#XN@mOY|05$ngQWbjl0AD@7JC&0l97y5ys^%pF>pUSFgl?($ljMJ32 z@+8s_Y7f@kP*b`_bUS^7F9ghtu^O(mKtk0|$SvHA6w^_L@|6IZY=ie^cBgJ*hkHw~ zO)Inp&d+nFD?%g9>S{TK#Id5r&}CP`!Ddb(9$iK(;}~?9>@wT#xQ~C($&ty#)4exo znvojo?TOmm7TUujae}5A1OH$+GLrObwChA0(&)J?{jNkMkE2Jgi$@XyeThxCFV+#O z4=IKAtCq|B6K$GJ7h4U01{q@S)o9JtM^XtRW#Twg+Q7v`lU9rMA22H##NamYCv_X~ zsdk15vK4m6e!eXvBI+S^?Z75adZQy6j0Wc7V=PQSJHpidNsS$5bTtGt=T{4k+I9Cq z)L^NsEAY^R^~*e@kue2+4i1Ggb%q`scd4NME9SP=+C44^Sgcm|%<(sY_{M4H zX%9#~{f8hn zKFAqb%o|<}D2*_Nj1lm$FfT?>iEhqAfoULge&R+qKQX1%2E+GaqZc1JN(y6|*ar;9 z4m4pJBTfi6Lh&n1mwk>VB1r`xfPkoYlVkj);|^uk7zJPDW)*O-r+KHp>!357c+gsV zN2L@L>A(WtYqxFChzbLA;B<#++#vmG%I7HwKv2MEFm$5Z%!&UaUO1eY=6huxI46yf z&`|a{P1=ssNzn_2MCal>egwr!>UNYsb_`1th=UIlQ3nu{0Wku;qeIL9w|cM~qENLC z1k?cy6^aVK*yo%QgDwf0)#ew|BCtP-0>}%--F3VP(1FsjfX5v4U)CMy3!Vhw(1v)> z33b-PQI_;r6oV_9XN@50V7ZP!1`;HLduMThUP8%v}m|!u;o2 z1uMwNOW3%ffrBl|$Sp*|Gh-J#?BFG=!A?M@R*dkBX*c=;0@<9vgy!np49d#a?KO+n zHIKxgBby~pl=Y=9jLg~?m|L(2gH8qVhUo45j&Em`5{7l|MtU52W`LxRKKjSV3Wi;| zDFWV9X8g8X=8JL6)2z)d5}ly!m^s4%qiGCrLIdK_u;tJpMo0mW?q(f3dkc|vqlA7bcd3Sd?#e(lZx?8n#*}}MXY9O){FAUw--2yi34@|6d`b6M<0rI^LX29pH zIm8S3iFUjB66>_q*n$NGO&+-dU321yMR$Ut^y-K|76atBOLx991}$zZgwgP32d#~s zO$lGTb@^B&$@qrFMX-;OvG$zSh0VvWSG9G4Ab&UBvg_;h(!MZb7Tw=uG2W63>V7i0 zoeMlbNnHPlvqg@fgH`hoa&-OJ=N==J3W~>{xw^20z8O&yVLSRxc?-UF(&Q(CHdGMf zH!c!#CXXGIDtEjJM?O5yLzk~HrQUmts7=GIyy;@N8$#P={)G7q4^8(jSSo%)b!Qz( ztgbL(I!}d02m@N*9?}=rtiSHWlAq3Xv+Fvev*+vA9qAXsJ`@@sg#P-wsTBi}LMQ3CtV zuODN^^Q(rkFVyOvC6`LW`6e#q0vtZPq(f5mGeoZ93m>#0Yz;dsg7G;HpI?W1rWIo< z46rY@zII@i|4meT3<+h&UnV1oBX;3$%i z+kNSH65&7?0`p%5?~$G zety|mWKn=(t!{k$Io|YPs*g<7>FLa?Fhld-ef40 zK^P<+-AJ);HaajglBCHgG@3{O6ik>!Nr4O!M@2y>64XrW$O8&-1sr9%qVqscALCv( zqVN0l%|wr&yaY0~`(Rj@hy{ltJ3pr@6~dq(b5abZF#Q$1_1lF_hgC|JI_OCEY2jpDnKWSHB7h8h6_ zXNj;oW?i(fo)7{wny#blY?%1mZNUeTj7Zr-Y36SYh`MvTZM)(}sX9`4hf!nH|e`bN=9cdlOaf({JiFhPr#OIGVdlWcJWy9s5NokEhUB;&T~5%&HD2 zI(Hd9&LU6O>3cFvI`m1Cn2@_=h9KiIU#j%$y8#1qAb{6`B2Cl%VD&IC7NPz?c2en$ zxgnH1wCDoF*Tt`xMwBM{=1}pC#rY;qH1ao@`-xFyFm|W5&QC->GBI-WQ=I6Vwvnrw z`7Z8sw98EKS-Po6MYaIoSEArmisAJ;<*J@x=*y}e2%MqEoZOe~qE`2$`ERkrtm(i4 zO5=%566%lk-fed0LNwdCDlG!?Bu8B^HF*1==YsNbMzakXx{WGvRHQ_|N0N(eiZ~f4 z@^Nkn+3l?ZoDGu@PTq{oWlZUg*yV;+kw#HgIG82kC*3>JrQI_hvKy?a-H5I~{4mh@ z-7)hmn0b)z4+>^rEMlP4l1NOf=$EMB2?%}@AP=?@hLs7t!ax>`nIH;+#@^E@D2L9V zV~eN+qe~M$6?;p)UsM)+hSP?t_P#|7IVLB3Mlq`dZ^0>AQto}IZ6_mtnX}SAj282E zNhUJ;8D$cygx(*LMJa;rej&eoMBygJs!Zqg@h}0-Mni_{S7U@Vm$|&UHR&hJBW726 zbMg6x$jIwPvN<7?KH^pw9}hDA?rm3|6q}uCf$3{8P&&cMfEnNBy$T$r4kR zsl{d%vKcrSKGYVj44fpBnEM?b{8TXx087{_D==OS8O!?;7k6Bsc=YRCs+Yqt=a&Wf zGFXUuRu7{J;>!}tG%Q^pdBFggM5cTT%px^m7wEaDT``OQJ}Z#iI(dg5D+Dx_`qA}7 zC?uJ%d4@ye34kH$N;&s5;%?kc9BpcnPzlWun)wo1!Hu}`eNhsdCa=+&n>jj9H?Jul zt~8QOkWl0nU{5yXFe9y{pXgr{TI5Y|#?4NM7gxu{&u)1pBX+KyLqpAYS_7~_v#Fh5 z!cG%xr58y&SCBTWFOtKN6Smz*OcUpJS21AFtqE)IFV%oH5uh~#u4q&TexSSBJ5(Ey z%WVpltokivU@$MPy<_>vXt0cKhT9c9pft*Pko;4+8YvNV*N)oD(a1#jPP>?aCk~=p z%J}{hBtp*c;2OrR?xXm*hOqb0@D@s9EjYB+5&cUpfkaIXMRKNE^n%WiIm-&eegpSg zT4lBrq9d>PM$W!=V_z<|O9XW)@+pokX%$e*C_!i2$i1P^{z__xVd^xgC9~~SUOJj) zWup@c4o|lN=`(2dJn61;3ge2wKyLdEbH?msJ4S9!hR9UkM1R1J*(5H^aARnd_e`sP z$H|Qy%Aj?C?Z{b2RFbG?k5?n}<*N0s!L~Yv{m_-8v(!!zfK>i)XkNHsTf8RuMcpe_ zN9=v-u^^;6fq6KPE0Gcw+x(b1qm*^!2F9)c9KOHSW!}oJD<9jA;}OMbzq)^p5n>vZbJ`r!|Z;4|3UMo&C6rau1u1!%<|dut0}{ zlC5K{*Grt+bkh%>(Gyg$`u;gF*PsQ4uQ<0wHz5Ah55K~Cu1>97<;YF)rl(qV`mQ(V zI650n$!4R2jLV?*;mQcflH91NGV9sKTb$%$$b`f4*DkIi&tP6vdRB4U{^x^UUuomOsx)i zw88FT*5KKcR?w4lWECr>^^L4ms=U{+nu~Bu=;aPxr7z2A#wz*??_r;MQFljj^cAOD z70J4l@0QGNXUkF(KGNoEBa{|o9lWnz`Sf7ls#zIk1PjM7zKvk8qaDa;f7bWlJ4*{9 z8@uW5hh24;yoEC=5w`aK5ZBfE%ve}1A$%^op}7_m@8rncs-e!FKTJ~hi(RkR&y>}v zMV0LOYe+YvCA`_lmU>uG^5sva-`(z5GwI{u0nv1GUeC`=~b^8Oa78{?wqVmaGbiJ^x20#X8v&hk9{avk#_N1lO!k65q5Gih=& zbDvA$5ab2LpI9L&1J32)tj^=3%Dh*MOdEuAf7GDlsB@DIpc! zX50;7AS2UlTMeW?aGtQP1;J|X6>6!nT^<=ny$DCpo(i&k8BB+CL%l$yaUpj<-xI^Z zMAuGZ;w99BZve_?{Sf53ImX$#cAjC(+^AwU+ zsUVW?KJckZtba{l0O@N)Vi9&tHPK)4`)vO0X_3o?5*28%0{1MG%$mr?=;AK`*iKQD zEef9^4%y*>ad&1yl)*Ckx*m3(Ei#c?!bpHm#U_}KL9zjo@lug7&Br~G8#cum2R)QV z)<2cdZDw8zZ{A_ql=h%EOhHVa+a*DdA(@o{m7OsRu9nEAADNg#dYVJ3Rs~qtF@JJE ziOLl3f9n6Bz>W6M`!{3c_s?#Yn#|C-*v^a^D#|LS!sDhUgNf)QPLq z^F|VA7}eOcf&T7&S+x|5zS!~bK-Ue9c%`sAfSsD9mZUg_5(A z0ajs0sPfs$(Xfa$;$&pnP1iYJj9G?!l2edW_ZT~y$h(vyCBc}a!zxU2K=4qP!Uuto z8u}G)1=34mWGtF9gm{0rW0*Hb8~C?AyB9dwAsp~U=J_KCyvQ|B5~2X4um4n)P_o9t z^uc=3#Q6}LL^RggB2f;* zKVmWMs@e8zPdV*djJTHk1yC-MS=@Vp3Rp<8g(kMa_;5_v(yuYIH9wOsBpG!x&RjEf z1}dr5oIo4^t-~ZR$d3DWb8?|zOd)-^x8;Kj3(deOeybr;&hiKEAaldjV7=hurK1CK zCHn~&mCSmI^ffwG)Dz|vCB{5P&X|y{{Ye<>k<-4h8WBJY;?z*%O+x#YzH2CmEt`3!#?)+5?T3>DYQp6l%8+zu>i@J@6pe5 z-tu)rTv-e*4GMqJZ#SuK9_U)J7smKzr5@PvQt=R(6Iag%8C-b3Z3^MZB9NgDTY}{% zN(Do}dAB3%)P^c-hB30(`8ObNtPdDskUh0Fl#7X?3>^Mm(5wpG8<}yYayK(-O&C4N z5t}5Muws^hG(rN;te&^9ApVGh8n9TcAx>P1I3-_~q>2JNiiG+MR_ZJgH=Jl(SPEYw zBedjTf0T>d(180RUIYf<$)X_q9DS<+5#FdPyOPjo38^XZ;0yH@4IbLew8T7pQg zamtx@p#5`&XvF%lF|Di1cwddbLQ^N@tkg~x|2vj zO4wozb(FGD+YuyQ7tpb95^g7#^2H@+Jy$@mqGi##=_FB-+ugsi^kn|j%Azo8QB_Te z10tTm;R<319$c+QGMS$GG2%ErFbi#3DA>~*9Iurno9YBH%CyDr zSvvj5HMR?T{S>VlGV1lG6x_dNfa%Aj=Fm|oPw5`!R%5C9$+)kjy`S4SnR%%7^vwZ7 z(gS3Vy}R4!9^W2CdV>fUEdB$-(vo(E zZeDeBJ*Fdr_B(?WuG;2T{dr6^I?ttODDIVAH}BYNB)tZ>8|s^!nI-&O7an5ejAt~_EI@=vhr7Zd=m2ZRsk zV5BS%Dj9&r?rTR>b|^mhS=TJq#w-)6!^%Q{=eXu!{@Vsy{+E&(TE zRV%ZPSYg}*RJ^ZJsBEJA5OEwkSdRycG64E;1NG`_3f|n=yIg&ZF`IE@WdoQquV>3z z#OHE<#OWnD4(1baszXMWtGA6r+OS+N`I?*w^*%7Z>>G(%aO7e(&&i{FSYu(z!m0>Y zSiAX6^k>ynmj=BbxC4h1%4+Mw-u8ZK8DjPOe14Ipbfoqy)I=uEq^;#qB7&iwpj$iw ziq(d@*EU365Scl%8@3vRVFGpBu(7WXkXPczRb94zBeQC<#=WTcP(f^G6&X^J2!=b9 z(?_VY%|))`0FD?V4zujPGAqooP3d=9cG;kS^plI06iqX#Z7K#Tad)Wqe>5@Xs}X>- zBST{I)5Fi4!c$Y9vy1|xXm@Nq>bT(koCWrP2oX?mbO9Fn-~$PEYK8n#8e7UXItUUi zhR-ZPr`1#m)M?LoEjTr^Oe%bgBV*e*b$>UT2lKnClpNMnWMxW+L~}c-ZN$Qf&RzYd zH*@0Wui^NoRkMUw^Ms*j4uffG@$L$da2zAJ$r0jw!y~3)dUO}=8Kb9+5fU6Kg{%cq z2#_frhfiteh%UCfzpM`Fi=4dh6b|e%GLT6n9oN+zbuqd8sR+&7I*Ps+MUYQ1ykOd8 zliclHmcbyU!eM}EP6>kXu+YH=Uc~x)8La!`wH36%Hdk#DX0}DALFVxcy-+ECh+fUv zix2p3FvqTVrpw0EF4QR^){c6{En{L{ZASQNz(ACf?h-BT_i>J|(Z<@Y=1d=4`Vu!spb(01 z)b{U@WsrD+G!+Kd@dgh2!N^T&a~9|5VzBN$SofI$P9gT4EzeY$m&qtD+l*usL~hW zGlt&&5Vrh_zf!u}t~d!liS<3&?(Sa|5l~SdaK`0y=kxd}iY%;WSXr`!vnbHd1{qK# z6u5+5p)5JhJ&dotrXDxd%7r?Feme$Q7$81r6SzyA=X&LPM)<3?!KNK8lt93$0J~mq zYG<_;1TSNMx1e-|E`J1!r{7^WKD~b*9M23SEePwTI)9f4Pe7lAVaDOZ7dy5${bnf- zeOhtB<35X=2|;%Zzj^8jOblkNw%aF2!Am*yVl$ca;!1ixoBqAM;XRlYpFDp|1AK9t z7I~jb7nW>Hwex$7JZ$KAity4rt4OZYBlwFB@YBnD7bwxz)TOi8f3oH4@%+vv)lGm8 zl8iaAyP(3|V@d&)Pz#FsfETr^L1Rrm>E92-Cz13VCjoGCW)hLFvZiMqe{+{NOg_H= zd;gG5`E!1h;$r<1d1aWRZyh~r-tGMNFdWIw96XEX(EulVA^$oXdJHite;Rw`SYP#u z>71WyADDe`S{e7=)7gkE&)Ag-91isjf%soKzE!BcflS{PSqn~BOX_LIdd87|(8_Te zw(4FOul#o zCbQi`#YBOu?XS=05A<6<-$SW6{J=_Q9mp?JKvX=4yWBN?XE7K zITdD2o1+~CeC({|s&ty$Ho8o<*P5&s>m2{^Ty1rE-(Ow+;l0@%iojxZ`s-s@!*N-L zW4QeM^Lu%*eK;B+|F4UUcK7S6SHY*7bui0^4Iysz+w;|C=j%7&zfY5u)Ah~}k+;7u z{fx99x`p%>d#QHiVQ_7>72&E%-mAbxhh&ncTC^#luxMI)!FYDEv!XfkbpzRTJ=W_rgVE@PEtUp=CI zY4d!~J8AO+UY= zg@NbvD#xz+M-_179R!tCWiR9srMV1t)!OstcC}<1`gz&e^vh{w^|jFlHTCBV_|^k7 z-41p$IN6NV!~{glHOm_>#`U@TU5+)2cJ|Dz`ux>QEkEG=?2T{8MSW{svjMc*vb|?iKVSRa=4s;%LIk$hMh!@%S@ogp{pBOCoH0qaSXf-M%cfkci2ugDsM77& zI$#^qMY-i^pqMc?tn5)eZYjiV!Ca` zR3hAWe@h>ge>qV`g!@44gL3_hy08~i>A2;(&fmDR(CR)m{i*^xlQA?i+Q0qn%5ZX;c&UvB z2hpk2ea;Q5B<;D@7kzjnVnFThGD=m%Xr-&4qbu9$8MhXI$&rX60UC zQ)vWuG+Bx&!`wLBDv--rJkzScziYSAV9Wj*X{2Wp4I(D|d@)aYU&k`kVM^c4}4C zD1P->HMexg;UQsTDvrbgrf7H%1s$Y(TJD!^$k_tr1MaEZy>LP>GyAb01vUS)(c$xSE_JhkG>m9H|r;^zU+7?oPZd}K zZGy8y3xtaaW+a=Evk>-U5ML+1oBAqchaHxQk;|&6q<)Q$_CLiJmDQEVN9e{ z+398Lk=nsoM3>C>-KVuVzu}?yst#_}*$pcaF@Rp&K>ky(M?+4+g@!oMp|tLld(^_q z4rPd)M8JM@vF^{)RbBr6+%c^9<-a9oWxnc)!5*c!sHaj#r>Zq>TF&zXKY{~)cQ$HA zmegSzLQdZ*n;r{OYa@v8-mc(#!Z?yb%zEvqgZz537+QkGTMFJxU{?kM8`H;oOh0=w z=)jdqWluk3o8!D_Rs<&1_-?PaZM^Wd*QI90DAZi@*seFOf1#J2rUqNbIBg^d}Olje7)4Srjgq1x`-~ztR0E`xw(7Z)-ml_=h!>Jw^|h4 zRa?uP_cygSv$vs@&c4DmDqSQh&f8=^z~0R-duy+Wx92i|#eenZ&QYIE-z|5MOCe)( zZl_%DA1#&wvnKrvf5kL7EBvMA* z$e~NZCngJO^RO{4C-x{`OEX2a&MECajIcAyxoEJww;LuUShm<*SyYLf3*H zxTTbnSxw%)YmuqROsJG$IUsmuu}lOVRSjO8oJZ?xsR(zC!DZJ{}X4lp)o-Rje{)BC8f2IJojz#8cr^5Oj4xAgGc{~HR2n^51mEZkkLf5wKzkdA2 zb?MgY9SGhO?1T>D(*lfL2iR9{)x4j#yM;}nHd8=$LbP6-%9lKYzulqIFPIjq2DI%^ zdni8o&YVxI7g`x423vHt7(3Z|&kMNU^ZQyj_pUQm>YTtp9)ImC-S5mMtYC0=75yPv zC#20`U)uiRLxSe%tgw9`|FtAQj=8Bed7F}!RdD0?&{<1!ZW)WS;8t?eua0uz6OaCG z+uOR|z4yJ>fe^u6Xx67etiGG@PeS`x^-rUmeYf#JLWh*B&yyNVeRpa7LdTr-&)?kp z?(-l*rxL6$^T~Y=WuJu4HR@lMoBJN?f`l*3^RGbv7G`Mw0YH3Ej8GBKcTn#DsO%j8 z-F&Mk8{K+0K!5%dnVAW|POB~>bjY#HYx&mz$$KT$c}q;CD7;IccLr1uV_(}l@%Hux z000jEDa`y_I{c?F^A3Ri8<}}GK=1U&+S>ZPGxIKi{x<{USoZCm{;2=Q0KL~{Iu?)L z0nqM&`QW;=gU>KHc<_Y+1w&v8JWa0?*>i=&5 zDAVm=Tq^+yWvi1*3zeNI z`#%6^l?rz22%OMnv(`~uC#xnUflSaDg8WIyq~m5Cp4{8WG_mtG8`q&lws0@({A8_} z$U`}?``0ycKq#bcKcm3ywx(A>^TQi;7&45Jjcg-O;?JMXb%`ZbbwJ<R#1S_{R{^kL6v4xWFRo7jqZp>=CU8d zyfN3JVq$ERqSsX{OC$lm?GyMIWwlvCCR8c__1_gyg zRR9(A|FLx!Y*B#SqJ}4kfgy&Wd+4sAOS(Zi1*97R>Czc;DCzF*?hfe^5F|xF5fD^R zN(>HreD5sF13+qxa&2N>O&hl30y6G3n)%?ajfomyy44X+O@IZy#y@)oHC#J?IY@!m9DZp+H-^V(1XEPx@IxqK zvxtbG(!IJ$(BYJO(hk9oOwQUgNS?~Gw2%!aa^uq0gux(;X7ZyrG{PbPYziBcLK)47 zx55I)9iVnW&px-ZNZ1|ayqaq;qKC@{Q69xZ2wpnOQk_vm5{zYWR?5rBBwcN@sAzZ2 zT#o8|ccg`4jp5;6+)FP-s=ob78z*&JTlF53Kz5OjT=MidsCg!+H;t2|H+o1;P~lAO z#Xh?|L&88LX)TiR?Czwd`X2`#V_1s8_z+QxlD}9YgWIlgl&4^O0`->j}iV#|3YG){5eR;}8*wQqYR(^x&$clkh2ba)+y99)|GBn##g| znRoaVgE!G9-l6ezxt$2*D@a0}HBmoQ@{%~^^9GXW3lQqUwhC0OJgd-)w*9Vd_@Zy6XpUZ6V3 zhQ25E&tN*@dlD?gW0LVm(%usJf(*_ttyO?SpKVyR1PKiJ>e)p3L8*aQ7Zjj|sUms* zt3!PfGeQ&uMr8b+?O~_k_i^RgSamDGP>O9mOt4u?BEP9u^V^NY{P|dp==4?HixW(V zq)THoF9CKiJx4BTRj`s9j599A0@5uFD6fRY1#^R*pf>?!!$F&y!>VtbLpq$wn z3yLp@F`&|L=~8kNHkZW%i{N->HOWWX~bT8(2j3`5Kp zvHMjrEL7>6eymL;YF4;3!q?x7S*gSksrHIcAgBWy)^j`g4zW{6ALHvX2bO#gceGO4{mB00hn|W)ELq@Hb z+T3NF-x2f>QTDiKUUk#0rSkV0?Wn_}`~nB0>1WpFlJ`7HqDQPAyP}{TqTOz(UtK0{Dn5X2dMIt(pBScqw3#XS8JIU$UI_M7^|1=ngnuhe z;mmpe>RpD_T9Z*(zexFJiGo)#E3+cKMn5v7ng1VRx3JAe3T;z_Gs6cU>HFKGWA~N$Tb2v5N`bvO?gDri(F}jhJ@g<_BCmd$5Dj@`6R}HPfkj0M{I+HE z=}&528DXAKtSO(h;O}2=YY7#wHCuqBej{awFaYpIDyl8Nz`%5#>m&7 z^-P53Esk;SIKM_9Z57|-6}~G3I2{xdA2@g`QH@}qTn;Ea0TMaPU~ThE@5+ofTWRUI z!zX@VSG|?px?JDw6}|3RD_ABlk`8o}EyLqpLf=iCBf4JY=T`n+ohq%~h23`>Sopqm z-Zhx&4LQvIgoTVq)NKM2R$R~H*-6ebEg`|ij3^J@kr?FTH4)|p94(}W+5h`;{= zN9zBaT2p)lQM&*@de8heXhM5gueq_MTE>WvAN$hGt?UMfcNV|ie)Rovl!y*h)fC!u znEw9DlL_kxqVohS@`v0F=pP#8j5^!#?HAu~0x>!u1R(9d-={u?kq8HFaAO0fe5^-t z4G>_Cy`ayJh)8v<%&?OvF<3z?zh=5=m{jvyIQ&nUimjw|RXb!)<_hE@$o2;IJqH7x zJo>iBcy+b@talYl(eJYW;pW)OmLJkO^uy1tw^Ub;zS)mUswAxKb3#CN+ z%}eB%WRj8_*@*hT>Imy2lvb4UCshxX8*vq3*Iib|Bv>?iTpW)@ zE1ay#J4K$b$-p;a#IMl&8z55`FMLH2hv!b;h3E+;V*%3<5GK2|`_@>8>&L#)a>JAA zHTo~(r`_l`A_PY)#e3W=eoFgM`8^)<)ap*1%u6O$BDnJ^u#K*Qk9B~p!dl*GZ z60{Y_k^&TSW}Cfb$2xu*d=cs7r>y!>8m{4DMLS?euTvZQ_xcoevy4x(6k#`P)C7$9=Z2}8w7 zV&Spb9_vtys0#p+RaIy`x>A0r3VlZ-u>=`AI8(WS4+GGkpq}(pieMNG7tASJ)-W5k zr_RAf9XhXK(>vi$sxRUfL|x&8L^-AN*n+~+f!FphRJRbdWCr#{y0M;|_!LZ~HnZ_H zx)c+R&!pcjoS7OEUO}NtCMb3X`Dj2 zUPkd%(YgGixu8*Cv^k7AS4jFOy)^Dw$j{u@&ojJpK=Uq!_^zJKcpNl>fK$$VKHGe# zQ1W)UZ;1xXL=uKk6BvsF9@d!FRly-y4k7o)1^hmshZ7wP_OQ>cIpi(*unr(S07Sbd zPJs(z+Vk+w6|Fngrm#UK2b+ArD?0Q?SB>d@s)e&5KMvDsww#)8npkSE+LBE9DXf%#&CBTPwi7i5fML zDJrY7)2t>gO~{|tOROo5+lr9CS1FLbBkPH^WfhiYe;beHu7;WACo{s`gp-Oq%B(t3$}#K< z(8DclaBJfgslIV+=DOcP#E@6h*M~zLTcR{uRO)os4BPPCfrUL~YxX|0DQu##`3suv zjp?Pbfs(%Qw%0&E`Ak-+{&oduv({VyF0^Am{*m%2O#DmD8+)Ig_9mB`Tr#Z;;{=LAi zOa0P6jm{ZtF`g4}nQbG=Run!R|MzECpIEFSLOKtZA zR^7OpbY6efwNFFJ&tUR%MMlA1s-qO+mJ-lOk)ftYegCWcNVzu|6>W2!+-n0wK1~7; z@lI0^+|QHlUS3l9;~?9faNG?A@;UV~)cI%)aU#|KZca6ht3A`yZ2PyE{S$3PcPhlS zH1dG8u;b+#?QlZ$Ag2X3=VlAWylbYr`wwkA@sHug=<573q;A;=R)OZv`W9n7J#KgL zzWQ)EEy`XJ?W9wpIDS!76))UG zE3Ytm_w!Q@pQiFdfwZt`d+o?*8H-hNkHXd0i87=-Q-e0zS-h*g=q}yB&nlx?Rakl! z*}XI2e`cVmawFSL%Sz9UZNOsZ?#;CM4KmsfDSTttoOMU+Xb;Q72+-m=j zw$-yuTL*3HNOG%k(Fa^N-#$K%x1X^nGx;sTarLZBTD5GWVHA}=cnws3a~2W-_e(If zKG0YsG+q=4TfE6xTvBuV>yG&z)>U0L`9u3nM8!fv+?!M0a6*q(EiC89&$Ya;mwwJm zf@IaPzPjPaI`3*mYF#ooU#lIw2C*1e>Paqxt(LcfmUqKEhuQ0`X$0+sS6CO+h&-A& z?>#5fJ67-mfjc;Q?0C9Dd~ey4@$ulXkFzSSObc@&Hvp`v)5}P^DdKp;X1)VVXMH6 zZ&;VlVpuydFDpxh)apaJLzR)3YtDKgYs2E|`b^^ZMm}4l|IAMkkKO$YjI46};4Aj> z^02PqmH9$01S7}Wtg!IS9IFb7B~jwmS5J%!md-XaHe3fMKxF4-)e-AegG#Q{AaPy` z3RJn;pRG;Y&1)4T68>f+ecP~OeTZ<&16G*_(v}Ugx(`vf zhbmib>A!2-{*wRxmx;)H=ky9?1-MQ$#6YiV1!To6pg^~rPuJxhPJKsjw@bEl_VsC` z%TtE&7o%NvC&t0i8}AQ2W#Y=-;eem5B4XS&E2@a#YkZ|!qz51&I!&T1pFU8SJwzH5Q%Xv)07Orm_JQXG+c}D2At^*W{dX*Upl?GYqmV}rQ%`v%!u!DMXD!+`4xcnbwf7PTD zOb<;M4g_X4OziSuG@hm|{R-4fc12!qc{!6OEprpwZx%k^{@zRQL^km;1>Rd@+YqfW z+VszbAWF?D7ig`T`)#t0doD*Af&9l$$KH8*x*7AbcIOUQbHUhQ$hd#Z=~+2u+9yaG zpevQfeSu%WH)PRJmP%xK{wsP-X_!a8qHgvV1SM1bqsm5WSBi}x!WA7q;9}$u;h$>6%od-Wn*N(5dCVlEnDbr}xPFqI zPnkuxE*`Xt&Tt7$H<^{_Yt@VUcG6UM+5{thZhaEMEQgo1o6d2o_;pXADwM%$f2T)J zRA0!tjILyB!15gL0wEmt>0Y65l|869ZkL?-LdRuQJI{DDYYp`M?c#keuv=Zby9jow zZk3e8$gtweIIv`pv>!%1&Y=|VGu&_#`lc?l||N^-%mcs7lk33 z9pl$I{a2RX+X)AjE^tO(645!mbm_6O3El*fk$@QGK?y`6EGy`%&O%%yK4KzGLn6$ ze0;tdM`O*bIrIsXkg(UcED{u3)dfPHgI9szFIW;f9-GPn)=c;39^G=S#ngZ1p&6yW zS`>7%^aSqeo(>S=5`MasGV^TJG`I$DuDSJ>EMM9(oA zheGgS0f=U`LMI9-N<*G!bh1*Ro@~&g_j3%Jz^MM=OtwOO3?+?;QSTP%8Ftk}G)g7k zgio7<43CB^xJ(Hf!@|MbVMAgc-5LJ(ANJY0%R(mAbEixavkSY)B>HC7JCVBiT4N!z zoDkq-0vVQpMDt_3~ecwmmG8v$1A;_;DRG)}3la>tqI2A^}^Qviqni~!5_u^`U1ld4D#qN@10eyt zscC=2tb>oNgts#TR!h`EZV2@)Z8HmD+y!ZwUm_^2M{KZZJ3_mWFBoGa4iI0B<9H>9 z(}PTyY!iFec^oi}`7$Nl#-WohteHc&iyjs2)Cv=|65f^sF!|H`v^de7-nxSXdk*^(E&%W`KOXK*HC;tugmYZp#6$u%9HpKnoK#wZ}%? z0LDc1I0Db&z0|W_wkip>Hi9tQXM<>(rKkB@{^W}ImHj9s;`K#>Qf9Rff3GRVrx~9^ z>-R{W&sqJ*pM@TfhPaFcKGYq_;DhlZP(i5eR#My0fd9ICh721FZ|}r^TkE;6!y>6j z*G8=aLh@+~fv6eyHSe(okb*`IbG2O@%h1=SulP*ns66mJdj;lCe&F2f0&fsi*6R`% z!T`>HpSb%x8A5M9Fh09W=WpMWzugyKv>*LN_dAf#00zZrgGUmf)xgXNn72)VayViw zyshoDhfzl(N7PeXBwKWj+>zw>jl2Rpe0zID>LVa_(M88P+M)x_9z}{StccYF!><+_ zQqY)sv!e18fV9KFhsHe+gbL+ia?U+}jvsxbu}P5GGhR!5BoVue+RCZvreUwpeM`O8 zMxZoC^w}F}bP_*AU_AbrOV0;dU`IpCIjr57EPQ5I{;rF%32z@3IqW`K+wfx|$~8J{ zOX%S9R=}hL#q($Z8N8u!7xmhGF3TOBkL%o*Dg{_>0OOf>LJUVFg+#qbga_lrY>$}g z%CSym2N|sfh*^?}Ff(aB)u+aQ?kuB9V!|yiN>DkIoQgj=@`o+wd;d(Vv5U+vJ_ka4 zDx#kBPNuUJ2XwB%GAB#-NSEN**_eRo^oAhFvsh*)MHocqo;AII*51kXo%68ov#$|b zN^6dF=5+WT2y>)_8FZjrH_UCqVe%?Jf9yC`hsW!^;#-Zoj5^^m#Md`2V&}-utDP65 zp|{=C^xjZN!Vv|_*El!=;)KWu1i_I^@o(+9Ldi9gHw}0m^Ra{4m}MT?`UR7^rC5Di z$9?$ig?&bO=M9G`*PL%kUpcwbAV!KqlpiJQIBM!UQvY0;UaFUBa|`$Vq(>)ZGO66b z8mKi&1gRGuA!4t;H=?2K`*+3rTUc7R5 zbNyYsJ_L<7DEKz#!P7Xu^waNW0Y22hric8G4QAjB5j(a5Dvj$(bSbda_L{Ib!EYMc z)Y0`{@P!2&nD%e8%;0qP=@Xh9>W&v48YA-s3gVnaRKvbI`%>6Y%&vDJ2ffVy^2q*m zb13tzqrg?y%T97YVbSHR#xNdAla>*AM#KV_m^IMgdMvE@M#M3-tT%$(_XD-{l-?8|wAs!diL;7r|rC~UIh zDt5W@X8AO>@JES4@cjfi?ZHbOA<A*o{2QlM4d2E9L=eKRT z+-CCxPV6GoABs7TP-0@se%JCi#rQxaYii6Wh3Gdg| zJ&tzqJ?Vjv;)%b06nm?es^T#PQ-v5gsweHORmO4RX5i(3W)w~gx8y`8H@$Lp{n&31 zMdHIXj>pU+#zk2k30SQOXRF;LpokAHtYCUUQjNv0PYI+~-jj^!PyQU=t_4t{Xj*_K z#hE>Y4zaeC7dNw&FS4@SqcV|EYtP)6K~E?TKO+R&nnD*1Wtw}WgiAGB##TzTd8|qp z|KVrQsd`50zW)}c_2bX;viiPtjU^l4ZPPXmE|ss(QJ)X zzYli%;3+J3t?J=q#ohf>|o>fk9{jW;^8V^w>po~I3ti;$Ph*%02(%p zQcf7k+(QYRpeQy`B0j__(hwrRq)i8a=oY2ZfGUul(06F#h$lVMoQw@-ZHh>DWn!s~ zU?eq5#R#IG0fF#z36msku0C3V0NAkK(PisNVGUS|~$! z6NtGJ27Nq8EKZa3Iwa8#p9f)a`#kC)wMrZDnA;k)V|0=|8D97&wMvT71jW#V^l8zk zTS$cVGn12@`^0VO-SqpfJ6d)3Dx{pBU({0TbGduuSp=RL2ezRG<-A@lrhS* z80DX;^&)fa4(U}QvApf0S zW%)08!3rP-w1DLw(yI&qB``{#eL3+vqag4&`7d0`xw^dEWA7@$-&FgI0T z^&ffBgVOwe*u~-b`uh5R*aameWlc>@c6RmyxOl)9fk8noE-nx9;z41=#>W2d^eX#* zr&k}Mt76grRbPF;7Z3H-|FDbN*@K7l>c0%JfA2c-AJVH8CjXmVR8H(XunUER!3TEn zfG=$RJH7h25=>6{f2UXdM~9p2=Za*v&gEhL#RfetrX^pa^WNrFZjb&roTnp>=kNcsZ*o}Z zO3BM7*mHTh(e8fJJJ^5oo$;mVy^y)3O*D))>z{1#3uQwzyJVu?S$JW$qi6$q9r-a0M8(va`q`oB#0yY}An+N>=Gr!zoYib1f?2c&2+20q2RhocnodAi zF^>A7^q45yh<;;vxE&ot9F0T$K6^J7JeXtc&!T4&fxBv4I;x`hPQv72m@aAOxTnH( zm=QWk5#dFvS9_S%78m=(i`>H|!id2Gl?P!_k5<6dn~XIJ9*&lDB6lpK*m-H}w`yl$ zO|7l~p*Jc)=g`M%ROPN6Y8a^Z;Hf!3Gp2*ol-Sv^SL2Ybx_*=w)#S9yaea&eLIRfA zKse+cSY^fOL~apgPOt8bK-f%HnjB@R26~Dm6ZGne*i<8*;9)Pz`t*Z`K%rYLU{5_z z_L3@3qo&DY_phBHf1Tjr#`AYnb_V(Y+G@$X6gJd#ur#d4SUJYIh%95hsqBT~Cchd} zZ9YYRp3ZTa8OBOI*E_t97T!PYAC=o(W_4+%W%`Rd%b0bayFg{j6TG#RqmTT)LxQ(T;!N|x@@S9VoZoTF%Es_s`ABv55| z>fzU>hry3Cby0Wf=5KmLjhQ-&-k~%v{=MC3zYk>FVk#jQ z-!$*!r^sW<6^u}CfhIBa4z8*3o-yPY$@XD4p55N;LA!!(KMC_&Yw1Qdq~PGT%}ZJ_ zg}rD~2#jZQ8?a}~KK&x@bQywYHmdDS^rJV@w{;7At zpYaFb% zsd6hBTdmRTq?L8lPMig^;1?U$NCvmr)6T6mNBEOGk1k=M+5@{3tgdf3DuDt3}9Ef!>O0=73V%}eLD{|UcAH<73-G8@c_=)E3~ zLU_?bRv;ppDR0ewR;*R9Ynslkd~IP9b1}fP>RMmP+q$fhSm3hOe*Stn@mP}!9rrj^ zbG3}-s%CE)0FjE&{mXP!tCv(~R4qjdhlpSTKaEJd>@ltjxvIAztT*F$IDM9P)!?F2 zZ^1Z5_P4;j(L1T$@+jV*At19UXrbQvCcdZp$5k_mu)$`6gJk%TOAAJ)!Hzg$e&R7! zJ=cD!eYyYojKy^u@0pvU(A?%?$aP!(-v$>otu>$2YnHUNWLMq#!nL;R&JZ-O2RVFr z>wed%0O9@B!VH2u$1{~vdEXQ?<^KK~j%s%USCf3&oaIs9-r#vsGl91tm{z8%yJ=J)ThV>DH!*gY zBZ=Sga{K9CS)hPO4G36g^EA50W=MDgP54|MMZ1K;;Zh&fgv`?rL2+uZP9T{5@-?_` z-3TvrU2I^R9T`}~7O<-kL45}M&3`+_9O4sTF_7Iw5jDmCh$qDh`3dpcaU5wPm_%v! zk$YaEOGW{i`sD2a6=TmxdD;)11WQtW+F()PXWoh)yeN+3$vK$NSw=gleZ1M;{oIow zXx{#x40M!DEhApLB8`XB?hoY!v0UMd)E^RjjPDSfHlt9p{_b0#`o!~Z2_>YVmBp6k z2#}e#(%nFzhA`Grz>5wq<-ai9n~5c|Wgs*Nk)kYc*J-MFrK$5ZW$#t`JLK}Hmzw`^ z;6LfJD3=n0v)8p}^mm_G-8U`>!e*-#Yvo`ED4KS}X*=ZySI$aQ^vd1vXf^ zP5&Iq#!6X(?rd#zpQ_ug(a;TA4o%w|_TJO9oqD{*RBz1D^=m40{B9_67nFKxTq!!( zoAxd5x^-AJI($lFuRO{h3XlcI?RMF{`S!J(ps1Z&4l~C%b~`mU`Qxg|sgbwD|0QvF zOQu&?$L}^ja!dJ(210%UAvw}_k!q}z7$8*M8a(o1@Duo30(dCtu5)M`2P>sVX?Ia# z-7BcFuWi5AFw}f+(~p+JDK4GM0Hf=G}+b6|v2 zB>2-P++z}AGg6Wq6e$Kxu1-pO45NggsX5Wu>S!hi31g5UJv>y-+q1aZM8?_h6M5vP zO89Bj(^^H4NG9wM7x38>o9Eo<)EPz$BfEA+^>!*=bI@OLpbU}l2kU`Y_g7?x(fdTH zP6EA*V9(PK0qHQSZcjNqY~YQBfP}F2t(o#+lz<@MZ(e2Ey|jFd=ymbx3i zkwepO>i$O26`WQAq>{1Rb62#}5dC5}l3oq=~p7=EQ!#(6bK--7c=mGAxJ(OMT_88v?>ln|O7jFh<|b_9l;fFE zwt!Ae1PyL+p0F3uxUWs`q4|dilHA(zB zh;J#~@<&P-S%#Zh9=|zu@n%ffJ(rG)WZ~+sNMqFVCw5L^-UW>lh3l>PvE?~?C;1;; zi|i^fduAyX2So<(+^LPiAeG|%T%cC4K~!9EI$ja*Cc)sKc!;eyvC|aGEodDFyir?X zedScW9!DKdFM@D_-C6Yaru}0Jl2R$Yk_7PHmeRx<4VnUh)kRxO0Ol=Z)MfyXCRG_P zsVAsRC_9S?m>d)v_QAYZus1n3vs}Q9^u##@AqCsQ<6Ci!k#4mRzM(NMOSGFZkvBHM z@o{$zs?eB;Xooy9-m1X&2?5yxd0PC|Ny^HDW2&N~k?ZA{U^^AOiq_Hi6@}teNHq0c zxZ9mk^$pcTKvgYMb?d#PD?P?zXH-Pt?p4rTd2s-&CAG>YumU{`dViE1J!|kHs5ol0 zCW)mq6zETUk?5vs^U==C|BEpw~wDSGiR4VdX_%L z7q1wJH{`Cv++u>dwj}0g>OdFaa#W3V`}HrxgAyr|X{PMYag(`1Dz41I2O5py(IN4H zK&`;M1y2H<{YOD>ySbzsE+It>?sN`?HsA@ zyVl_lH4*pPva6P>TCnGI^OLp~itUatb8K4(rBXsMh@!Z;va@(5g0#Pb#}D|JBt@>@ zCEkV1IiU;L(;dbW+3(+GYy+gQN#zC9c|#vn-!vPi07E#*3~6;tLwmMMJ0%_*2S+cr z50L&Q3M2&3cPGsaR`(~Ub`W3(7V5BFx2Cr zDynm@HF(fZIT@O4B|XIVdN5wRr?3X>rA4xwF!Y0m1O+Y1b*cKv!Bj!YN?YP0P?Y1-q8d^-DZ8x*hVF#@PQ>r)z{`92&U;4p0moTQKV&*&0~{6Nq! z^*Oi|I@Y?}#@y!e?=wko!kGPG^#{XYth3rI=|1j%?z6VP*IuHq zP6dw%gvYpOVvy$CWELm8<*ia52=w{6pZP`jZ+6%{`xL4GZpJ&hgA3+J9Ai7@zPW#E z{EZ1-yGFX;liVp;6hS?mMMn`CHXIi)lg=c-yqC%ju%i{!kXL}mowfS2$ z9kF!M?XD?MZ`=&;{HPQa;hYb1Lv)DCYoGb?c7jyw3npfg*?FM&YC|+ZJV+E7++M%% z1Ubq6djZQQr1p{!AtY-jOJbo4Np7Zj-hI;>wp_{*gT{^+iWdpzCMo{*1twIx?9LMy@ko!Y@x)P=xL%UcqrbBoT`MX=Ygud5 zbE&J|LiSiKp5%>hkw2#wv&=X=hecD`9KHteiwE-`RT0n)c{VN>%NA%@t}7{k$pIdZ z_iIn<*QE;IRa1iher}5R`miC2&D#Ll`yFLgxM46BP{_8tS~D8Vw<&4+^eaUQU&%`_ z3@n!b`rEMSnfQi<4(#E%l|oQNx>v;s+qT7QGz_vG*20CZj9kMvTj(}B-}}aAzetn@ z%KhFJQvort8N)q?rCPQo!%2azO+xbUA%gig3r`&3c9wTA2E>zydr+NbG_WtoXs!_x zGzc0Bf4}-`Lzfq3@oVr)BR!Q3|7S%KLL`5Cn(j-W6oa>9Fml%@Y3o;kf2-`f3msUd z%-A4hs4<`bm!FoNkC|RDUh}z&td^D~7$jBmKljr@B@AW6XJ?&?}ovC`xt#`ipZzAerzlL;k zFpwR=57gN~iyvh$ZNQLS6Iv$5CyR$*A?8pe`QXkS(yz6x_jE^aAdRCvaH8>8;i3{H zX7^-*mgOf0?(!pO>PIm0m}xin@NZP?-#r)&ec}F`%-(^7|0mR;ZT{5~Qe4nNf-xlm zR`6&xKy@kl@#i(ogAJ1{g3&LfTdmd$8*-SSlow%yrA~Ht!t-gmp@uAC45T<2u!0xM zllW#aFGAeIUk}T^!58WQ!&+weNt^EiI~-vFF9P}wULjJZrP@h?+xZ<0Kn&+1=jGb2 zm!{h`2FG(zso;?ex zIWY{2xqO?T;x~Whst~^hM2%Mx$YW(V&N5aD2CN&)?u&r9A7I>Gt)LH~`3Z3zckLsu z&NI3bUSPWwuKHH(UOYozI(2>>YU=kd+{>*G%I1p^gkFlLTA00|WL2bDqh`{)+QYnd?~XQzNB?y9*i7E*l77`%?_nf!D+PXfnh{of_g43B z=2MvBt02$j<5L=M-o4>{T{0)zyX*9u;^w;|@;|~)e**MX_T(e52^o}g{_pf^3>ByK zcuwj;G&d!`nOUmBL;{*l^#90Kd~LmRzPWD!{ zY=+(Vd`46$w$a$pE>{ey11omcjqb8piA;jevB%>0o=z5+3oE?Nmwma|({U0_#i^%^ zQ)tn7IQdE^U_d@?;{J54)APfm=Mpn!XV5gkAj z1GP_w-&6k%m>VHAXaX2dD4gyrI1gAj_KsX0F+QSjNsHc?WjpOx>!rH?H-Go*UTwBN z>YtlJ%kKb?;Ar$LkM3yXUVRyI)o4!vw~cOGP>E1{HKn->{^JCP#}8g5)?;sPJ(aM20mFw8(8Dec=YP=j{KCh(AkL+OwK|9NF95{JNWb$FD8O0 z25!3?p$cJY>JNDx*OgoZhl)B)>FAj~m%Q|TqQ|E@my|f* zyFr5{@pyXx(c~k@9=qJouQphr&RO_&5g;ojr-FKm`44E`vTl4AY>P~G5@kV7&Qf8m zT(O#aB+7eM@a1O#wFc5va|Fx}LLRN(y_i_*id{!hLrC@K3h}})q5U0otjDNx+xJOn zuih>KB6Bjgr6=4j$qediq*mn9k?l%?wk4I#He<57nrBO7Uc)Ta{Unm&EEz+<$v^YuKVPOp&??Rj#ra z_uY2a1No;1;r)AGx!KwH8n}78X@b9OO(M*`*U}CJbF;8}99$S9;eP$sU2|bSezmQs z%;|g#3;!$N7WDGNiYLSte^vP2iZ$$X6ZHi`-a>(yejeEN1jyEt9)0B%QLB;t2OuhV z|HsOknaR62)7m~Q(>&fSzg!z@!Cry5>)e@o9#2um4)_)`7Y(5;mG5JtZ89o-B93JT z^AeWYutcz;NDr0-Ta?+w^mP{!^02F%lx}MT;|lvVL8Me;JnS(ThFU;j*4l&*_L-1? z;;6g<6xlhag3R5Ly=YXzmd0a^k6 z>A}yLF^iLPWKB3bzRuMl93KPG8yTdHDt+Quhm#SywD_O=PUHL?MSADY8qGv9gFnVh z!Bv~);UdJEv+JVO4ii#*Is+gE&CGG>d zjGz{puBu2`vvTz{sM|ihsbL;OF*`z>SZ}@Lf~&HO#TX8DSX(YJ9bPLuQJP9eGd{W= z&ev~}hs%gyj#(RVi!j0T=3AGF8{!+C$=LWt;K$!uB#4{XEjn0uKewrIlXJF;n{)1` z>1~YNw`URsX6v=C%Gcm0Q9XX@!A81s*3HXa_%iU1oTsc&dOO*@Hck)aC#D-5tV1SV zO{&iy8Gm+rDL(t*&s!PsYs3ch)0NMoEi9j?Ac>jk7&Q$klMwx05jS%Jz^SoxEY3sr z>7h?^d`Sgwx<)`ep*-nV1vGFyfF$vxd@`3_B}29iSeq2Hz$yzOw2{Z6ItRF%XummL z;d&F)FY8E5e42 zG{@6lS#%VyT14$@!Zb1+9u6eoj0dKe6IW~*a{?>gia3Aym&d|H($yx*!lAiPBmd$R zaNc6Qm?_)FmgA!~xd@`Mkaq*I-UJ#P#94dinvW3u*d=~%C_^^XXsQxP7tOW3iu$%xVblnWj83M=gDwb9UZ+GvIdH9g4HoSGMTD8CI zXQL3+41b3S+eewIndVrsjME*qhhA>tHJ^+Tz~L)`*Y$lyQ_>%1{qx1XPRB!qhL|&66PQ%d<+7MlM+xu_vRZbfZf7!hHcSD|Zy|8Z@ z8hvAlF>{1LJ7>(_Z_ieSe0hGeDenA{wzHTapH-e7Ox?G}ww8xy4a)rB+w3ud%B3Vz zdLkTO_~9-cNWnJ}Pm|tM$;!I0zhzXm?R0)ekj!uj?Y&R(mdvtOCA;(Xk=Q4*gu-Tq`juDkS| z?iEnH`krZi;dORv%g}>o9&sOvv7S=DGXM%uLtD*&FXD%@ZyV5B4?eDg0$3$w!RT5W z*D=#+EJSmW&oi|m_&5(WuaC}BKvKJnBznu?@G6v`WV`n}0U?zBR(I0Ry#-!C7qj)dk&?`AKsWvQ?cMuDLsq&x^_WWULyhKV%Mnb8{0D=jzTry0a z8aM;aJ)oSkJr!-%Yw1x`IsN+HD1Ufrq&;jEN*tU7QULzKPe^t_Kiq~Qh#ZeSOT|>E z$5l+Dl~r|RIA4{Js;y49ooC&)ps2i4DFFo($Aezz29&u<3_xf;UVSQp@t1IM?=9EU zJO0X`iEj7aM|B#VW|{>BOq6K013NUMSr+lQ1{1GDaS1f42Uf8)hB#eNqsDzkaYt>3wMVK! zeI<=Q4{NcOYVkC;RR1HTV0qq)vbZSxxnCi&+XM?0SR>ckqhpE5`7Pt$5~U!LEX^f! ztwCsbd;w^gTfrSNFVpCMrcG`%RUXC%@>j{IkfTXs``r-#CAU`iV1%LuD6w3c1swVx zblnA4T+te!>8irL3U_yh;O-XO-5o-Jpg}?*p>TJ1cb5d$0Kq*t1Wl0OAvN^9J-vF( zbf5ol&R%El{XQSWxY84$Z9sRj#A^caeC)hM5^ZU$xRMgJC`yv8jd_6c@BrpEK_#rE zb)KrRE%quoM)hP?j8PY@_JZ$?p%>LqqDs-`r9*^?RjN`^`SfL8G6rmm}1+RUaN zPZMq`DC9-^;`6&8(pjE%q5Cg4zX)I-cDCO2-WR zi^{@*Wr8w&JH8dK9~f9^F}s@-QS)NVmq`jD=t_wPgaj2Hh_%VMK+FtO$e6qRNHd z97eU93h!1`u4v%>w&)713<)981gk2Z}P9AVU*@45~Qy&irGP{pXm%g8ZmT%!?JXE=K=g=P)Yoe z91c{hOu|46G5-Zgr*N6F9_CTIsP4Q30E0ytOsf!;1y(&6<^|#YFtx8`{>`@1btBX1 zrU=4K6nG}tN+Yrnu!+05^j>rUxm-KM2xgmILG(kp$BZPWn_K7LD%=E$qXiAbW zF+taBLkExg71jQe#^q~YDRTQ-PsI5ApB`5p@(>6tMvuf%w2wiATCoS_KNu_yMTaXw+KckdF zRsOGF7;bR~bQwkhEQb;}$F?F{iQabFF#F6}%zu?XJS^?RE7Igh3Wwy8^B-r9UBRHF znc2ahRMd&DL|atgJplG<=V=MWyD$Qp{0vn#APzW7p9P2wh8lm+R&C$F1jwpIQMznJ z!FgpZ^`diS5L0!_rUC-B>~M8G*Ht8Aenv;Ed2WcReJumKcPLfaL18U%M%fvhIGCtF z2mpG#G)~KAlnZ9f$;UN`wSh>bHgDK#RXd)?sP&36esza59lr zazLA0ABuGr8|Xt@l?$_^JdR4Mb51n!KqV_HNZ8vOk^^REW`9Xx)}Y(kje&wp`f|TG zW0IVv##vLoa}+C*Dihu-q!xx9v9!hJsLU5yY!?0d8{L?gl;ek<5tTIF+y!(@)@srf zOz7CBkP`XWJ9#@~bXxZ(ENhd9o54f(4{BfiCojrb!R-Xu>vjw4LV8s$!&h>@F zb78z;c^!B%ptvjXetOmA)@N3%T0`bUwl!-1GU+#j|7Tp72%_!8y4T?^+8c`_}1K!@rPLeZI9tD#?iej+}ovAzwkkx zW?Fe!Wj?r=PMD<1hBJ;?!w0z|?$Yd!+xM6e1VU8CUMDeP@Np*WnQss88{~Q0Vh5 z*qz0bt;AKv-{j%B=^6^*YWXDlb)VVC&z2@c`Zb&ksxZYMD607{mwcF<*lEEz*M7h_ zwGTAD^Ub~yHr`G3O}Sbw(u*Il?N(HL!mw|rLqeK)jFI;QJ#BGQh5ezArW3SK|9Hd6 zSYGh(PI%zij=f|31^KOA+4Q&j=_Eeeysc2(*81=!5wf z82FbVE)df>`wWpur7H!2h*Eta3xWTopiI5#(_bs9UwIYLCtC9GPG8UZzJQhO{_W`wooR}Gq7Pp%oJGI<>+hpA^7Wpag_uFp?ym}U$AORqA^f|W8} zcey`UDMV=HXxBNXQ6qyj8ayvfZ`oEGt-r7`2(_sgwID6%{}8$3*zEKS>h^YOssF+1 zXR>v;mT|P51+{}?$9F+528KQmy>UB#;5isiX0kZ!pXEKA$`<_aKj_utrp))0aW!z;atMdYEnGZ2IxY4rEdBV)pZ^FA-t@B0y3SxssF zyokyD9fl6t4IG#Gd~AFM9R*=fZ#K)wfsI@YOzhb)2r-MSVC)YetB-RUvg4 z1BoFx6k8mo7xLtdPosn+;79#g7lLXPfr3s<3j<^e&4=>8tDFl*Xj?TlZtH3V##OB8 z@9XfHFBZL%$YYpI5dY^lm#BwmG@B%{j!GYI&+oq5?{EWlXQD z@ULfeh^nq;wbqs%MXu>Goe^P+KA#+RXp(A<$g1m_?7{D)d^}-lp}rO^)*W1O$?0z% zWL?k|Ni*E3bNtBWC|9o{rd5lor>d3vI`CV*;tGMl;$c-N->f4v*hmSu#I|-AzJpx;4C3CFo5TxT}X~ z62(7uF~KNI6q3O+hFRVY>r2$$o+;a%Xy+n?Jq z3%MCdnf_Rv%QPmKd{KTFw;z-uG1QYnr;o&cs%M(i&wk~}`fR9Bh(Rx6Y^M;oP4>6u@Sn0i|H z*UNLeSTvz;BQRSvI1POh=yF?OwN$6q`eF0dlb5wm3v3!(Gw!%4*j*JKA4b8l4XQzb ztVGm=gAXQh<$Q|%m?`@aXpt!gm)E8rPV0-VZJ)@&q;5ved`e14O?+_W;zQhR|CqqM zw2yl#ndd~WY_w1lh~+UEhlB5Gj8*^mR*-3PSPeU8qO)iZQ}DXMB&Tvn-rh?^BRR!t z=*D~U(h4x|;dprGn#!))kq~dJ z^d+oIRoZRU`d?V}TdJ4pJlkr_Usw%?SeKiU+iLB_+2Ffq9e&!9fT+#F=f8H&>MLi(bGDSP4TR_ zODE#n#Le&sTgbY@)n3@MPixK`0NXtqiRKBUG>_VF`ox@?E}Ta+PmYv~=emrY7q|5= z-I{rp;c8zucX*-q8mNf-Y~1-QHBv6J6!2EO)t?va@usl~BsrF;HhyYBqN^c|9TM+s(9R>`nTz zU{M;GRFU_ff$I>w(8EE)2J*xv8Ebkvm$-*Cp?~CgV$Mt`_ni~!!Mv#@?1wBm|DjiZ z`jIdHPoMKYl?dSVIYuyltwjFgb6!pVk4og}Kb44Wdc&*FnORv%`aZYRU%ho@_`jjZ z>*%bkwuz-omH&n!|63(;zWD#EME+?!LY=Rbh@hb0YbXK;0WiE) zB8RhX6*I3UXLQH^NJMlqMqVqCSDEwG=lpLa0$*-TKE{OQd_7uiDjo`0YPF zXIIP5?}f54lxp3rCkvJTsYKe&!t|`a#hdB2FG2K>=YyxoY$7+mguNdYC+iqlLyUUU znwKbi6a8IF|HOT%v;TOo<;~x^FQW2?c#Vp1ISFvD%oU>VdpXJE7oD>eXh6aHMA4UL zjA?i}mq&Zx&2*JRVgNn_H916gfQT~m!P~(i49r-u^+69TnCC`l{L{i8&sgaP;&aki z(WjXaLfTIRlXtsOt>T^3?yS+o`H`qr8MF~(qkZ3aO=-_S`TIG;NMTpPn9zp5s5ck=Wg(Y4OU8y`hUZT1xTcNzF z$}<%m|G=A0$+;rR%cqJp@~W)+wD9decn3pmeO6RyaT;wWvvXA=JvIAWY%im>SOzygvsT~Pm5hl=iUD0E+^UL z*DSx9i3jyrD+ZsOn7gwTDy;HDSu_aWVB;d_tyyL6nCm^Ta*oZ}Q&@{hD7 z#8PJcyp|>5v*&!<*POG3ifA#nSAx;CX;^cExMWekyUU{jCh^X#SKJ`x=bB{t zqciW10WR-;WxH%E(|34A z68auy7I<4}Dv6eUI4X?f{HR*+osV82FQNYFv^H|dzMyW5^ZDGcbmSyU+#Azx&A#IWW4|P zcpTFQ{zH#b_V-Wbmj=D3KP&IyFAqN(;Q#*KYkVr6awY@_|Lg;iUWTBm7J`Vz`}aM{ zpy1d-L?)#H^k46THfh%ZXi7CZPE6iLSJZzgZK&@~CYZ0uXza9M1Q7ekh%FYYY;H!r z!hY`0Kf0~-Oo_=or^`Srmq08yqI($G0X2$904 zan@nafF`+84xPj#o5=%vVP!}?V`S%yQ47D745jr~e{y+}6w7uUWrEBT)eHF+^mh86 zp2?wVIm2k4(4ocWgDCiv=D&ynysTZ}xiugZ8lHuyd2qX>9A=UnPk)cAEbii2s~c1w zT`9Keg{eXu^3*JRM2|sjAxo3cc$2jhQw|_?7E8u#k#t*#;(UwD4jNHF;_mD(RB=|x z$Y(0GA#sv?&FPtC4oa5;>}9JazTNrZzh;Za--V)S;+vTTNDP7MY~Uj9IiBLr{;axh zs&k<6o{D5*O6Z7*nrA1}0_@(=h9{*0o11L%meYo+Ey7FhM@K;dngi&s^eX0M2oj;D zcJB4MR)GMfybaP@*N?Mfmw!hq@s6!cfaSX7zuc)=!3F3bzBVj0l?K9;lkeunbfKmp zNRo!qR&7t9Cph`H`luug$05P>Wlr_f6Xin$k#UO6^D&er>8elpQKk*Y`mOy4N3GPn zb2(GGxs{?yNS1{lN_;{j)=Cb74>ktN>xW&vNL9Q@tn;kIg$ZYJ2e*#g1}xq9id@}i zCzU-0xuyn{c4|sU=G*|HK*8R@u6IFm%{!L>-&!n2YMg(=s)vKk=%7niV^Y_3lJ@uc zRc%ZZZNl}fgq1W1lv0@3?B=g0*F!ki^|4{bNceorNN#$sUe^>p_D^Jc3PLMywG4H@ z_f8rjKPb9>t{wq>I=>wM?+fx6j=Omwpy?8J{I*JQ$9zA^X4g*>%h)$TgRi&Ey7rJd z&wkW4OTjBDX;$Jq-yS9)KTLA@HM_XGies&e4`-J+e9Ci4;>T!jogGtmWX_-hG->#QM=6~4;Enz#1VUrfy`Nq!9sn28~Xw*4Ss74if|b(SD>PWQlXe#5V7d9238K5j)a9IIuA11>PkPzrr0Z0;wi4aXo1hO3fG68l7(keAFGi(|}X!#*=JLsoK$CoLO-`A}x zx%ZKzU7x56UGf7q@7=!pqtv7S-QEto|GwRQ<-HwHM+LuIY!JW3a|ohi8(C7e2f|Yf z`axB)M~2^gyN?p~fH;t`GiVyP{1Y(blyadsL_jPw6-j)@4iU&~vqE(Y zc?*G--XVN21L`f(0EA3j(PldJ zVnT`XxAs2vTga|lkYHqc!{~NmHAB`N5DlK8nldgKDL0t-P(a!dh(Jw7a{0**8a}}Q zxWgBCT&AQ;7xO}-_4JaLy_4b_2pJvqPbc{N#xG2-Jgin5JS7NpdH_|yM?v4yiCjkP znzTa4`M`wB;_vaPM~j4XAN*)+@pc8=$`yi-ep=ty!1#+_@8E-IFT)TZZiJS=!OzZa zs6_6l27!7k{>M(4%n~`BJlnWZ1(_jA(lC@H+sJfa)v}h~9(Twx#ke0iNE>LR4}!D- z=>ahaJTYKFAgjA`M<-#IA(BKt-Uts7#%G=tB#NS=ND&&>bc1LF?)brB#zx*ad?+w? z7)YFGM+X3bu7LPEKvGK(nS1mLlE*f)o8GL6t5!Utqbx}$;hCQzpRaNLP5j>@yxkT1 zX=Y*qf2t>D2syPs^9iu{I{KBgqy>N&EkC{f24JFv%R1UBOfE{KF?@_UHH;<80^*;tg0Cz9P^bXijayo!Cupt3 z@M1 z_kPSeS~LnV!P^u2&?;fcEXxDs6lo!#i-Ms}QcN$4fdg7Z|A~mMR@Pyw14ysR*GI>R6WNfS2MT)bGbz;Y=>Poq8d6`x~we%nTl?&;~XJTtSs|Kepe`-^3;bm@M zMA3NH)S|1^B6C-vmdTuxQl7g&XzT2y@Pw}}N{SIcT}@B*@-vPNjDUTLdxKuubk~L~ zSRk+zBUUM>YbX2Os{T-*%4DKFxTs_JkG9Nl9P;QV9*CSoi1y4-2W@uhd#lQA|8{8; zHI^QpEmVXE?;J-LPkzg$*04?q;{p%q#*m5F_~*`FLaih^F8>^Wt@iC8Xa`kNdv|60 zy>k-UI>F#X2M15{RA!}2lYf#^H#Seqi!V@pGV>)8S2`8+IVPiQqFq}k%eSb9=dxM+ zG22lE!k+Uisr;%PdZvq~Xl{YM2@aLU>Q4gEcm(m#H6;TLRbaxTMyOM8^#&4}B z$QGR#T>+5bGUghun)(Yi$TqB75Dnp`2C@^N6tLS9y;Owm_jQl3sm58XrKY@p1B}4l z%iW(!qt%yf68U)Ce=|X3l%t17Ub=kd>gNSC)pM~qE3IGzU#(L~G`60(6h7vdLA3^} zKMqw?4I<4CR@HRJWC4Y}`xU*lsW6Gm$Vk;pzl048F|q3j2lf&5lIsm7ZasiBobxMn zhEj=%HU5&=ypC-i82a}tM%!DQbY?<+92f1>t~3R1B#V`Z9h!9^7OVX#Z8B0B=GMj- zGk8`i&_CwoI^>I~5)3!(hBb{vom(253u6km6B`?nXhKYFJ>QyU6ZERMkT*wb4f6E& z1guRcllCKNJGC&o?moEJ~= zZ=Fck>}hkgNSOOnbOss@>{QYM($4~G{lKJ})0EspGW==%Q|Su#2*Tdu;V{a56rY%JvVz(6t85-AJl>BB5@=m0^_&^DGDiIg~K8q090wPY{$GP@S>AG_X#P$SxQvKA_iDuKq)8= zCZ-0_f)nSI7TR(b2SsCAozk?8M==GKig#NXG(n~jKx-@r)hti|ONv|yXeYF0WcIq+ zt!0S=DK(ez3uhYiNnTbEATHz9uRN_W{_l(>YV8$-F5q8wP_!A9CDwAA*tREuf(qm;o@4NHaglu?W%v&BlSV>VRl0b1oDE#b>&e7ujv_ zB<@0S@VXFq9&7e&AU%q~wb~>nE3IE^`aRb4oNgYNq7i76_nI4TA^;bQ_tsI8mREyF zUIYPMfpbm!y&J?o7C44JOo#0TZFWqjyA!(MCFb*+&ir`U!pFn);{X+BY~EUJKjdvk z?ai&Ig78DEQ9ODIin@1E&8LUjfh^$He@pVjot!tzbg$pih>di{aPb`gs-@ChjsGAP zsp#2v)(N0q|914l8b;B!?#mp4G>EKlD1Yu#{P8lS^lIKf`#4rgquL6`;~EeRbR|;X zIZZ{pgMeHJV0%YGB9VC&bZDmzq-O+Eeg%%c18YkF)g|`t8A)9)%-EzRW8qV|N>@N+ zWiXZdG(kU*vN7!F2V~oD3KRky7DOQZWjdU<$7lYDo_2#kb315j6A->a!;vqEN!mFT zi;OMuLETIz=)`nbS+5YF*)79~h09$9B-I45pHQuc1B-l5v#>Vc#HaLyz;fTy0%p>r zC%2ybW6`Bif~&YJ(2{!XJI)1W26eyPuvN3T5 z--FmSFY@ZgIYd5(3!UlBm9twqOM=f>=&p11Ef(o57WsM`ZcFRnuERflFOOG5 zUsGsEi80ppZ2sA^zc#13`l8w=g|k$NAM9?Apz(C8eKp)Ycsf5vCfxA5i0;-9Q?p~3 zvURomqd+*xmdKZgtd{p$yL>v1DHy9tc(J}c^vs$0wDCWU_j$SIdE<h(*^NSrBfxD zi+#?fOI!>2VEkubA5Vv~Fx5MBgl44aqL-d3`14Lc2@22O75Hu(9^jr$^O9oZH`kv> zW>uzFgqr?b_naRi5affE2c1_m*RNc0Ue6WwJ9 zBCseV!ilx^&^rTO27FAI3rM_)E7-$C#s0Fjt^ ze*+6sxhlC)!~O-gTt5b={w_YPAF3~^#hpYiBGA;lkVK&hZ=|iLJ}#vB!`eE_Qc1m6 z_@zi>HIWNWOaD5*HuZsPtN~bsjHHCWcuRml;P2 zP^8AITnhqXnk&sjpdVrC%%F~iqn7Ii3Z(e`c2EwR}4y?nc2iVHq%~r z>Gdjg-+ofTk|YXEix;*x6Z0v8WIMywZ!pg;_{|D};)T_D_V4=MozVG!Y|sE0oMI%H zz9k+T7qy!?jIjc>zPpF9wRq4GqGhWye!&PdXFw-YC%Yw07$x?3$1X1hWt2Iru6xC5 z_MGjQIwq%vc==-u*f5gS3;ecl(%y3yiCeHf)$ZRxT;|q;X|Ql{?Z=%-{%or=ptY!#9(P}w#nb-JEUv-fSF`G%@X=K)YgvP{!Qw;{R@J#Jv&JF&4i98Ul~?-K14Y%<~fA)EeYLL?T4L?_xi|1eV%&>{&o;* ziTb1eGoEkI>4pa>W#v>Dit^UJrj)e9!B}(xO+|fnz0VHK%XlcOxyW>`MVH)` znC=TWE<%u{Y1{r)HzDfZ`S25H)pvj*TPioJ*e*j3d0v3jSk-+}nHmSL4CfNagd>s_ zN}=(AA(*fb5E(bMoSdw5yE`L)8uaaGF1{Rddy}@pW&-{XW?ZED5a@?m?XRqRK=eRM z5Je#XnKBfL6>F(Mzq(f^kqp`}LgC})A(3(20TFdG>Rlw$;iE98mGncj{Yvwdj5DD` zp|~uKZ?s#b8fmyCh7qZSXl03wvRB+$lK+BRd+V@9fE@?a=!#PeIc((_Gk9Ej4Gk{ zAO5e_TRTUOQYqwY1<&VFk_5EVtPffUbzZ2{EREVFri}s{`}24DLkM9H4H@`tj;s#% z3Lm3+DnzS7Q1XRvZ|73A`d+guduEO(;^=I&CPo24{P`$L>f*ckcvU1?^)2B)7Rv8- z^ccd2YjmX&Lmr)q!i_5@{aC_3AhNkt66fl%B9>vX4189g)`k&B+wNw~$&h}eyVHXr z$;xXQ<1p!?VT~HYEm(jSIaP*loFn{w!)yE=9-!!e=1&1?<0wzZ`L3Ku6;^2McBo8v zM1hg1I9IH8f}^W5u{#LKBXO>xZzi?ddFrKES96*>HD(#Z5vU6RsI5-x+q_9M)wc!u zj)M}b!IK%?-YZUYG9ZUrH3V27DvHvMVuWLV?@xYC6z&ic466z_Vj|YPL$xs}|G$#%(f0C46mn?n9C7v>@jX%oF!;VxmElj5$iWs%3634PHzd=Mxq^uKx zl%~m!rnLNwK&;ttInpTC;Kpp4WG5O)Z%|UaVLjbYo*iz}cU$kaFiYbIM5Oxi-o^Z- z)S!h*ElWgtYABKPpVX>LkC`EXopSi96UdE>w;HJl)+NBf^0`Ygw-IUA_l$B{(((n8zJ}BR*q-9MiF-GCh}?NLY>e zWIOe@sSbyv4^5tRXixO=DmqXwT={YlIfJ?sx1e+386=GF$QR;4@HA_{IhizQSF>QZ z?WLE<*CdL5%EZv2HEy!yNZPx@rvXC|alf5h3OY9`a(X`!=~D#vzZm}TEaiADOANc| z(>HEiDB7A+-krWA23|UukHhufz-FB+A_Q1b?EdL5m{+%h}T={En;rXbMfqqGj@5kGI z)#rEynWUDeImtahC@6B4JfX|D$caPPY)9;3PY;l!Y)a6zl6v|ULOhPS-y?~JPk??v zg6D;)yYU9LE=4IF_bVi(MGH#g{$+T*IYU~yb6r~1=l&r@xVz~QztPW zaV9^xGJ#xDJKbVw0u-A%u;4mHCVD5{NT;`lWf1RKCJz>~Z}R2j6v{LuO^}-aH_Xas zd&J}ie!0;aTGWXPy`;Wx>0!5RUgFNeSnWWX%;U?IP4FK|aOB@%9i~nik{*shV1bqJ z=5o_hDdP_vv*vWfh(F>D^J9uf$KdC&ayw3fKSCw?9tPB1hehbcyNcw_o#b;hn=rGZ zveAXL9;M$VHPhmb+=R7XEA_>ke8E&o8u=*Aw%ahho8R3yz-c2V!;X#sO4iDyGIJf0 zcU9;O5j>3^wl2l3W6A!V5>@{|US|nZ^2#=mi*-Dxa{hx_|2Xn`97kj$@3xrAmtB8Q z7$u6|f_gxryV~ET5;7TA~8W*OF{qjfvSFj>BmmXsS z%JT`QKdg;R_>Zkg!6I_U#JrRWVPa%b*ejVMzq`g=hEwDDqK%+K>!KI|p-K#4%Hzb! z?>4hj=<{>&ClZJFB@xpv=g10eNu;2R@v6gpVBGIRg9zu!pEpU$Vo7TGG7;wl;6_k_ z%L33QCR-^Nx)^TJR9zK2_UX+;P3hRj*wQV3Q8IGWvbBjoo^PQgMfBZoDY5}XDWr9Q zWCN)XB=+p|LQE=SAfZxk+FDu1@!J6DZwS#-siCoc7Zd%u z)R{!2BlXzBJ3o~c8;g$B$+*`WJw91-O@^ZwShq%tgMAqiPF8vaO1v3HPnn>`V1^BJ zg*4!!5?Vq#cND)}DcXf~<5YehVjjsS?iJY(U#gvr(H`MEXSi}~)LRE=4)MKbn=K2E zX~z@Bx8x~fL;dV5vZJfExB$TJZ^Q^FhYW-Of?yQWJS~GEbmD9PvxdLA(~mnEEqJt7 zuxhk%ra_ywFYB{T;c7D;sNq?hM3r*^x+IsaMU_SkxPE1DtjbWKqzq1(dTv%IzMf75 z0E*S9Bf1o#an^*@DS_~#3t<;X5}|fQ+&rwQ6)9AYR#~I)K?~-GM&Q_l<_DyF!0p_a zj?A1@##GN2njZ!O$7H5Iukujblw_NBh)*!}V>F0P)3&ZJ{+Z}Nf__&>8V+3VfdE7) zzj4b?Yu8-s?6c%9D&-*fLtD_K$2a4*duPbY$gu!W;gUp|r6#P#`EWlW>y(ygLu~`Q z<(KgeENh}`%!CAO81+!iq48p>F-!WBo+Y|Ir<(ps&SF^$bZZWqH;-r$L6d8}DLGS^ z^$T0%TfzRbkPMeIG6n3}-sDq6a`0Jo)?I7({fB8p~z3lPFzLLS@f;*m$XpjYm+2s=ywR66%zKtbwfbg-PjeNrk*LzV*PO^ct=?6nF8bWb zD@T^hkefZt`Q{zWfV5O58-T4T2(2Sbsy4~?-kg@2S+Pyi$E+T3LB0Bj3bNxILK5QB z?nf>|BWwgxI-_;{Sv4}lYd?$%LlERz7lrebnC_EuL|y`LLb!3L8+Zcv{SmRkOv~lt-lnirbUAp_yZO~`Y?C~_t_&Yqn)w{`D*~U#K1;1%JA4k zgeai2U3$a_*Fn*icvLBOo>-2GKBCt0;Y;t*Vo5IpdYofc^VyHM_0<;>vr3mNDm3WB)J1QYB~LmS&6 zsp34}cIe_Iu=BAF=(Xg@c9FNn;D|t@ek&jmNczqS`dHSJG-!#oXz7c%kF7r6@ILVx?^ppz>?{Rr!fmv?@xv|z!-9r&hM8xJ!!7L<6ddsr4-5Ca@$`s{7!a06Y zC~~(xGq&CBHzNSjs8~6q+OH=V1Lyoa3^q|sUpKLEE zP!-_SA;+mcePjM_M?-v6%tbvfu%vzTuxvU>{rg1rNo!W?%Z&Zk!#my`2LA*13p-=) zBVjc5tYpc6t=;9p6iU*c@WyjhV$Nez#(15ty1aLGwAE$+%4G_H|VwJA2g>)xF2mVk!C+r zoEvR>lFM~bmpntAO4w7Bt`g&h{cqEn^3h@EsVw0~d^zP%X->WNdj92=O%$rLZ?p5{ z@M*0*u5R$p%zQfgVSBcr_8_+9+$M1NBed8F7ePq2tzEOMJX71vN%_$3`pt3u*JBhu z@G1LOZ>vn!#&*=N00eiySD(c}pYvdW-uACCC7(}5gDY8yS)ZjwNzS8xSAjgVMLKN~ zJB-i#dCz7hJ;UM;RTs`mfp$+xn7@67Q;V>q`eRL4w0_F|{pk@ZQlzq;=ViURc zBJnIF%t3IzS=t24k+JsJ00Ujpa_V`8emtcWhO z9N9~v+GS^dD(J(fSp-yJvc0Kz_oSzvm(Wlbh0TZ1B8y+*U8U}%ist}iQw%Hvd!(l8 zFEZ{#*jBh8rSej_zwx^tTix<}AjD%O-f5l&q_SaSc2>Q(dzEI#QdG9~>3{+1< z-jvW(RJ`|O@CUn@zH<$GpFdG&v7fVLsDye< zNo0+T{UWLa(m4q-|9l3ekmbp!Zr@czF5Wxr9KLk7LFo!A|ciK6p!bbMIo~Vk*{aDq~wiCC{VLJ7Y1ahcwjFifg^b z*6z6|cOK1g52o&f*6)thXW=IjSq}u+A-c&rUIi;uDUZN76F)+?$C0OZ#~$wb14l?` zx3Pk~t-sEh)6oKTNj{@mchQvrXQ@(Umx;`pL|wtd)fcm7PqT#&kA+r@|5C2FdBNOJ zt)-?flQrOAf9{xbxos<@Q0UP0L#7fjekJIr>x2ONnN2ju{i`%$2MLWzz&`ZIpy;s! z2j|-@0JBi!0R)|@(7>7gJ?leQEzz2bbHEd>`fCEyLp$+B`LEm+O&MOmoewk7{l#|y zPq=)_qnj#fWh7W-imhkRkOIRz?)+O`0{@}`M~XClw-St$LYnbP7S)atXF~BV0eI9?i>j+a&=v5r=Q-!UXV;o__OkwJ==;_7^Gq&bPkWY%StM-O}5G1c-%ZMBrHe0{aqj@ez7 zslT^4bKIGpy;dSgPW$t1mG~pk-NGBEd6}MN{n$J>a34+OOprA?-!reB1x#N3W$-k<&_pTtd8>l96S^YW#^ze$Y)AN<`qhn_ofA?e8}v zC2>$^mW77U@g*?%v_Mu?{k%kU4Q@ZqUBc5dl95iAY>?|nn#0u#*ojbd$q@W?M^e&1=0Pd`-aFbn)-cToK~mdLfT!gy(PVOweG zq8(6@)VkszGO_B8G=aMMEEE-_%=|+}7`N*X9z?+`oD8#yssv#O6asKzwQ+u1=tdD0 zg8>)*iu*oQRX)@~Xx_dh=_Enip=cE6ELuqPuzqQ2;#lg?LWHDC=2BblLLjn4@d!h? zo!+ipxsZofK9+2-znK-jYe=OOhgxB76azs{nW{RGBzP?+v zC4%DiNMUH4_eUl$roiTDUf?ZM4?k}C)_<;;(%lk-q^0?Pnv6ycYn1k-sO;fH zrb?BPK_NT%Ojmas%~$;e*J}Bwka#b^tgpF_lxzS)kJ{xc+OtoM7NKs@xs=}cSW^A& z7s~;hUAvG22U4<5R+qUM;xv8kN@NbW(fK>W(zq2fm$^dfSg@5er5{F)6b|merqmv7 zDYTo;RZ2z%&Kk%!&x93GoT#u7(72$?MBXMpKOdPoEIC@qhN0_^lm^H&=zM~OmdN+t+2ydztr);OKsa$Xmf<3Yo$$xI`I^ui1;~ty$n;dH<7wVH#eD; z{iqZ*DRB>Xz86i?(p)EcOP*V3kj2N@f*F+x z^;Tg-9WqDHC}#ES>epl07K#(8X(>D^*ZnHyqG&)f{W= z4M`zOF3=50CZN={MDmBPS*(Q1Na8$=C1GFD$p9vD`>?L5-`e6D!5qYJjhoHeH#b9g z^}A@an=@y0-)_2gQb0%!t-f1-4~XWa!w8SGRs&A>|Ba-i%D#{svqkN|%^H^(JklLQ z7~p10R6+;TCvJvPi?V4?I9%gNDL9uz+^zAc-nA4GMKO+lF2;8@=TKO!)evApK;Y9W zks;M)-<^8@O6V$$-9ouk+zox~2@951@Bx6XXgWvTB?d^?1qSH*ZKxnvwI zea)v^h_9^bZGr_i$`~BIq(06q-g8#(66wc`<@FPcU^B;wW@?P(SCI3^u^T+-nQE-7 zKiYJryQwxrv|>aya6L04a+xv8!_=?>LR{Sl7|kF)3h(4=c^EK^>SeT((_?BK%@meY zcQ2STIV_p1YLscrd20;S>VyqU^y2vrYsQ=E`lMnucBAE5=8PSO0-sHGXV5!`gWMGU zIT@UH5p*x>p$4WiY#anHcP)J3^gH3DUJf$&u!QwnZRXp$_!xB_U=l5SknxI<%&yA#}kyF-EoclY2fjk~+M1PJaBEI1^=-7P?*r|-Qp zx88d*^=hi-cfQa6sdM&TYcEofGi_FwiSnB?A$l^Lq?k8(dwBZ_T__pGl8<>cgl*67 zIL1$7gJkwMS4lYDUb&50iHd^<4ku)(aHEs!4|d2lgj7H9r2k4iU|Nft7V>lTYxqOX zZt6E}Vm*^MFiS*Zqdp5+tjW1PJml+2|4K7-7y3O=O4#OLN)5tWaR0|zlu>a$I4QnB zbJj*=Bxiap?5vm^{{)YCbHU-CM?KM{Is0w7bcR~{2YN9(m0rVd=tq3zG7aQmTG7cB zPY<+m4QCJH{ws}13Q0#m3d8WtiKhO?JZ8Vs_xC+({r~uz!`Uy)@q5?D#RXauFDu|O z&&FJ^KzkXxli7s5XP}fpLwv#+46TfGO=7dNw2J-8Ev!CTY&Z|)qC-l zf_bFQ-XBl>g8lam*FpEaOD~s#gNPhAq4<3}Cym~td*6wCqMx}p3KhyI@ouA3@}=KI zKaUyby3vPgEGBITOiFOLC;#@{T@(1Ms`w)dS{Hao_bI_k^Q(Jym*_W6AHOLF>2ury zvTdhEVJBy2k7Cq?9$dOeFy1&_3hUry!=d`t$Z zyeDEPIX-?8+4!cGw>dfelUStJc&Cx*^ZfhEgp%KeH_k*~0(!55VQ+U3IiH8{`){Ho zMECIFkSlLL{K{ZpF6NhWBxcy;a#q`)F5YCKvQwwK>mPkb>{PGw+QAQU=YJ}c-@LBa zpx@Usie0F?xObuY2|m~Orm|eTfb$CJv)1-5LplF^Dk*&GzZRQk`0#Q_N8LVF#D8xp zad!01^szz0@22LbdbRQ2*_vNsmp%i(&m}%Rtqc77MVA;f86)v`zpC%|K6UVmcJ9B6 zu21SeT%3Mi!~Qr5{yX|wbn8Yf1=^7$DQ2kn>9S*b`JEbJy6{Ir$gQH8lLmO$U?+=d zr^2uRrSvDFJQm6kHDXv1;_6SdyL^O9a80BcV&`}CGgHhb6O3GHY;kQPvz(eo)vZ&r zf49YVx;yZ~J94R6EfS3v7OVulF#m{s>sEED1{nqNNO8?zir-^~uSHXHN-=_5L=Lgv7gq+P;MGL+P7N z8db?j>fBP?yY~l^(^USZ)crI}!KL5+m=1rWWm%;qbXPlPKx61JzcValh%02np=-#X zVdRjd0v2PESzaEN-pJBIM0N?Z2>H}#BB3RCM7x9#OZE0W0?jfXKQlI>eJ*jNPQ`+` z5<11|{g~#mi^rlzCz$!a@3e{w->H)3^k!KsvfYsy`|FBCi%JvGg>0w9^Hq9QIZhG}~9~ z2NvB{ih~E$ExY7YQ@wHSi z*qEu-$|3Hf#xO+jfZmeD+L8(hx^mtnXRkzXnzgV`-FomLYww9<&Kds)Y8!Ekl3GA6|W{D6G9qQPL0DN zLCeGlv6rN+*7>n7AH##)IhwdP|1>xsyaBXHXYAWT>h*? zgih?Nw05&Jy7t&ZpsE;BbG=wnnrSV0RhH#nUIV0W@VBebs%<_xs^DO@rE-Xk)2P5M zN!R<%Q@f*@`lcymr%lhHz4Y|pGWVnOxlXOAsh$yyxmkDEx#OMehFrlGdtHY&D~A0P z8XJt9A@`hT+<|$HwT7L%&0f9dPPYH94vVMGWVO!Y(uhX$y>?~M(7&C2qGJk<`Vq*k z*xXKs+J#XgYlqgwm>!$4R%v&pgE3LbXCl=JYqqJ*x-mS)J}Mf_FzPR74wsLmCPq6M zCFk!}*+g0D5%sLPN{Z*?E2ac$+BO{#G1#5s_Fr+Gdgsa!{L6TxsY@3fhg&F@hw_%G zjK2I}Lql;|-K;?Jt_fCi^7p!2v~ZHxyWlyhSPi4z^uHW?E&uj(aUu7y37dTb;`BY( zO25)+V~PEzJlQvq%k?LA=h92rFefp+%WBdWW=gT9G zvptS$cT#rmD&JZ=rP9mBe^<3%i$ck)owZI`UzzTtjfTDV=EuSRbQ!0H%^s$6j)l)q zj5rO#Dki3jubnxA7R%dks2g9INsdaCooio?NEObQa^^T$ESeyzb}!?czF!-@cbY-w zEDtGXh~busEw<_6#L><)$B8Db%>!bX{kn963Z> z@AnS2S&C8HHi9wO>8`+NI9%SHr{61^Gv&Bld4_$jRO>&sSW1Q& z$;EG6-1D(u%_SZ09hT_GrZLc)Tq@;N@Hn~gjdOaQPUng2KBgAax$n2$QLKDy$#!bN zU#c9EJ|ggOE2?B2$-N~_4k3}K0F@cOdon@o3z+oxYu4;;nwIZn{Bn1YQ2zd z{RUP(xkBODrR1Uy$fH;1VL)tU@Zf~lv_d>uk9hJKqg$Dhd6=_W;nFWlRVzyq4{KK| z>i`eiL@V1o5Bpjx`%fN@<5rGq9?oB_oG>0P)Hbd+yxhcX+|;~0jBPxeyu5;Kyb`>8 z@7nmtW#JYK%?lD-H~8XY!H?x(0e~iHMZvSoV!j)Zemx7Nu4LMZ>|K;oE zduzni55r|$GmlVsLF03%^4CK7|Hax}{lD67@UR;^@AhA9HwXj**LVL%Yxlp}Zg6E6 zF7CpuU3k(B9(IE(yZ;e+i|GBleEdIJyZ=_(@`nGJ=JgN(D+CwJZPW>-zKVYA2h1 zrp0FcZ(mn{=35xek6ikA-A2{V!pwV4GhI!lMFB7jDw7Q6@3B?`RNmb}6}zE)}15gS;}xEHMg52k@5NPwWs5Jt=Uq)GSF?`uA*y5{101i*Y(fAaMMFo zO|PNt4#OjkznR@P#|vf3MRR__m-`ecGAr*Sr5eFE*8uYDw&Cyt$>3si}-wAVG zj6Yuu%nk}lMp8e`4-CLyg}AaNfoQlf-vhBog`i=sb`PZCx(gNH(124Unh+A}>fI;` z5zk$9YO3|!82U`xy;!Eo>b*F&PJ{P;9OF#;34E*T#X$l`)%!`JPu+$w;wa1qP+20o zgA@fw&4HJ)!0ADnhCICLrlU7S1l6;y`S^*bBC9;hIEwiw+bYxUD92WnhEi!o<2cN}(A34cr=|)^ZZo_96@AAcf((iE zqIs0a;i6>{65wcUFuhsWx*(rd-}ZflWuZ9#$Y`t)$-GCSd0(@atbRBY6aVv`K*W`T z0GfZDbk80av}?nuqfz_x&i7j8_tA`%%B5Z?dn1Y*OOxb7>2i}2W|e2w0KdQ=_ECFe zHrGzn(?RxODaF9l3Cd8>n#qQg1n`(HG8^X*A}O0j?bb#-X{f|D2yuEhhmCfQ+NQi! z8r3*3V~z&*Z^|h7;KDFA$qie}e%M8FELUHNUb33U~7Y5Q|x-MGD@B zhK7C{iv6>^ih>M1wgCJxdmPh6`<|)FZUtNRkrlH;?Q&w)h5L`}eb8YPn*rC6O~;Ax zuAhH~NtO}Qaa`G@Q5_054oLnsz=vTcd_@}RFYazqy5Wt%7WH|% z(d|V4vK99{4nL$gxD(h+zVpK>bpUDmLeXG9b#{|?=-*caKfCaJlzA=5V)_uTcezwU z0+C;?0E}TVr}Ie6w&H6+8m6T7yXr7^{YWgTQ|AP~O*F6W5iFAHu*6=eSG^cQnpat8 z-H_d+>Mr3g0JP}JfUl@~w5gPOJ3wwG$v24A(kyCYac|K>u*@_@$(Li|SKs22048X7 z$r{5nbT;37k0Hmwhz!P12>FfTS8BQ&VrD{t{J2S8Zu_W$(@WM z!ZjA|ihwjpQ_84cgS%HVnrxF03M*Zg*8|EKbiD_gr1_1)L7snKoqXaFJ7;O3`s8|5|d$bYdjwCa-Rv4%~4pA2YAd_u~OqA{9 zNAGVvnwd>2fkBUGfoTQUv4bf;Wt)MSG}a_rr+SDdLsBjmDIRGL7_CELoc8>&6rGQFl}>)3OkoZSa+M_#UeS5 zy#j3vwP5$1Ix*Wos=)`~^H=?|mP_=Fb4$Ry2WZwKxf!}xU+1Y)gZ+h3a=p40i8 zDQwBUMhno<@(WRuprI4-sD>c z5l9Yy>yVdnaebU68(T{p2uYq58AO)dNncnTheb4;Fjk8rzRV(vK=trFcg%GqZP3LR zX1b!(!8|)mu6@3`46sl(u5HYH=$}{p`NB(7YiuWDN!PGFqAo<>%OKY!T^N4$U9iHA0cOsz8uBIaP&%#P+!@i%O?p&i{pDk)=1 zp{p1U@R<8R5(=4T!%ANV=j)s?CB7@#m9;ak?)iW4Q2BN;&CR@)J9H<_V)WAthU~3f zG2LQW#d~bK!%K(V5#7G@edXeHnQ^tHVk|;FPnRBRTXVm-2l|bEZ)6_?v zSbGw!BIaJ?5QZY618k5c88kaYz*i`+bN=Wi{1=$=fg*2({ju!937*67RYKuHfYx!I zs(FYsab|~6BlKOoO>riC>c#K!5HoR13lL!DcyiniVyc)O#L{x*` z@+czR^Vb)sH4U0q$NF6o_%gxLvc5=Z5EyH+gY*+c;|3Sl30x3cdA1LhG78x*au^VU zpoPLv)g-+mL%`WEdIi+rSfCfi0a8rjfZQZ?5SA(oT;FwbK9HPhWPyOlYbIbc%F#3Y zDclW6g8(e+Fu`4fe+>d@218EU4TwS7d;lONG?Y}xh$h5;$9Wh9XG;8JodiCNk1z098mhjgS#_KlVBBXv?qxlv6>A)i>PcRY(*A{8f8L=Ce!!{~# zD4cc&KqDE9>K4hc1F$Ly2f6`>LQLSME#DYORtR+XL~RaF_EvpTKZye2+U~>3g?y?& zn!W)E)r3PjK;mM+mk7{MM0D9mNZ?7dE<%imdko5=L_9B|fqpE3o3_Jb+@KpUG~0;i zhLFJwaP$z1G!zM>0S+(*(fUTT(t9(a#oJU%Z#-C@YDbM%lS&JLD8S(d5z+L}cq0W6 z(?U2fB~jcW4jCZ8<|^g5n$VO1@NADem?R_K0l+)~D?*8Unu#Kn(ZEG`2u_U}oG7)I zXv!O9Qx-wu1>ij)+-t{=7+2&80UYXsSksb%OJaHCfMRX{rV#u$2B1J8Z6c_FE;yo_ zDNcGg8L`A#&{aBjO{x;GU+%Q@5D~iBsPqB%*-XsGC(6qKurM6 zO?ZcQCR>WQ86${f!J}yss-Ht@D}-yP2=ed)?WNHfPi1UJTbeO*G=zmSfHdIY6{;Hm zcqiV9kw?7)5MS-(R^uSggqtP|%832wqMOCvnzg}~5FG1Tvl1EO3#8gf)ldX+^J_DN z0&IPGT{b?XY!Ek==h$RtWhz=`Foq2o#Pte?$#e*D-efab;)Z=D-Z)9OFa)U(W)O@4 zZL_#rm`O6Cv%D1ZEJqoTStY~qj})|)J=3OqB(HW06@J^P5~`qG#4tR zL3p!+KvGuri2k0!HF}w}bY-eY?~Gn}4H=Znw^qU1JMVLV%&uunG3hIGpzU8$ zd$H9Py9I;@q5nP?W!dFf0Bh>?k(tfHnn}1mx$`Qf0oqv*Pta=rYR14mm%JlE*v;na zG73ENQYYvFDBnw@#MH&q*8U^OcRpb@5E1vBu)eLSUnMI~oz^3W1Rx{iBVl+pW&mWf zfUQ+RYq>^BUwtu77qSh=KqJw`E8>$v!33Thsh@@ES zXIv8zM$HxrB8!)obvD4M!W2EW`9aD6W5)l-Ygn{>mWEXtficmkJ>B^<$o{BNvdb&e zFV4cld+N1C>NftgwAubO8A#0B471BZyZwZ*Avp9>!(mK7vz16U6NLe#rt&7&pV@NQZ*mO6gR#>!(SFe&6GTwfBLc~lj+ifRxORTeQ zpP{r;9}8}~KjOTy!VD(f3QRbY*sNyZ+*aEyd?~)NmG$#S@_HtZwjJ_j(!sXFa}xC3 zQi34>q&fZ37AQLjK%f|W^ffyDO@FQ&6fM(}a?Xa3heyKI!`wXh_#3yzkb-F^70(yo z<`zxiH$;^Hq$mc^yDAl)c%df5kZ=vy?Du1_;UA=_v`vC@G^v@4e-G3*`iPT~W) zQ&C!izqF^cF5xo<#+j83s>#H{uP{fa$#L(r;s3!spDag9$!~uy!=w$R8VoslVMk_T z2sK7#o(*Ci9L`u}F-57TBOQZC0by1^Uj?@IXZ1zjT-TP!Qj%z_+d$NkI_KOkn*pOj zkRiX)Q5u@Gq%k)~SRfumGTSu)wCEe{9SHBGN2`m(M-X&xln;Nz;*RPYrF)U`PFIZ= z#iOyDPqdfe@V+-Wutcg$EdmP%zuG))Mwe|`29WAa`0@ZrD(2G|lsevonDi$`Gs|0%j8dh1WzpY`m5HTBN@P z_TJJiu{57yEzk&2kWa6~wIPU*@7-kA658+Cf{I}-gt1EiP1gy4YGJXaB6Yuu2wK+m zcaxI6fKK;4{bcA|v}Mh|I9k{Il9y)!uYCBP0GBZLo4C0Uy!>$QFU4-wF=M$b8I&Q7 zolaWZD~L@M-!hhCn290-vBp|J{ju;pECc38o-kuX17aSxI|CcI|DH|A6 ze943h_%_E}QsWS)uFbFO_hrd+`=eKodf4^~51R&};w(R5G}TRNpd84yVD;CjJ6HOG z2X=gwYMsyb4p!;>Q&JLN0|40$z6fZRu|bm@ot=k)2Nr6&KAe%t}l-|43N# z&771VUoki8>~9a3`4_VCl{lMvX5gGozBmV2B6Ts~g=Ee#Mcl>f>*T1}7Kl(Z|ICSRo6gBu->BBx+;?015zyBbUcVp* zd!anVN5rB!GV5O&9RY*_s?anmgW?)ol}|2MO4hzwd62FU5zY7fZSNMIIp)s$Yj+y# zUj+6)K#Vvvv#hZW)YD`)u+JHG;N6tiN>ki$tyHS?^*=>7Hz;g8jd4h#QeMFopoD&7 z(U}oa_4skso{9HGh724kIek_ka_A@rzt4FH?)Pu++5IFx?N`?eJIeoVb9~Qcn%r=< z-3Vd?pJqVzR7Zk%om#>m0sI*N=6C)4FZ!%O0O}Bb)6g@xr7UQhMeOQNy^uy$9jYFy zwOgWZt*BAcO{yGq)^|>9_@(q*MdlqV|JcCEOS-35ik2y#1gyYB`1?Wis{{n(T1V z7645XlT^vy6^S1|xJO*?TOtE*Aps^NY?FCw^^LGH&Q8b9QO=Lnr<_sVo4!d$-Pm>7 zGEw@jH<9T76m$PzfZQS)r&t6cT%SVHx~7sj<4A{MM<(Sv~}(I$ce;D zVCx9g0?S92-9I+hOGVeOg#}-{{<08CO6zO;UsqU;hPw-;u=;IF_yZVR;}JqjBVt*Q zHGPFbn|Gw6{_nmnrC6|ufz*KlRF_MKxp`MkF_Zm$e*~$v^#lgC!zx=0KqelW+>C3~ z)%-}KR1RKs%WXeE22l!0E-!G^j=a&W3o~1PsL^VC|0Ni?&W&CX%4q1AjSH{3bvntY zEyoVMBg}BV{4ti-b*}Rz=AMp~uP^e6vC%#3@=%u6p z<L42$7NC+9eOINQomxX z?y9kjvUj6LSa$5fM}-`DlrLqMTW2nyChCfu6G(Of=q@A0KrEKtP!+-7XLAZs2Z3#K zW6oh5Dx^4VZS%4AVJZSx^!3sM1h8NOTL}qb%FM-h?Js2*^n&VZDv(gX6@ z!w8>Fh5vz;j`rVFzM(cfk&gK^6y5f?HlyOENJ{da4&C>rul39CKLtTMMVT`mwahwZ z!4jj;|FqRH7Ac)AC3WnUi~P%2JqGc>$FBE2iNG|v zm!6)Ik0!`*X2X&9FEBJdBgQ(^HWn$n&{rx0aS;8A&O~JOv7< ztk?9DB$AkZBzk)aAVAUcbte8o@|{Pd4Z9r|NS4GtAEjz_ZYZblZ!Sg?SVt`)yzfk;EV z6~>8P+XaCvzYJ%($KTQ|->n+%CZ&D_BWG!1l|-b7f_6(VMHdG5HA?6%_OP{}fUX$` z4DjCM<;wj!QIuHk%aAov!98SP{6zOqqi-+_2cvceiGYfBC<23G!qXs)9)HU2kCAI< zm4NW2hS4`uiVLr88LFAeBXjDYhyC9;1#*^@3HEg?vNtP8c=kr(ecFDU={{AMXQ#TM zRcj*U*AUguLQx7Vl&{Ad^IEU;Hptw+BfDMDP)Sh5W2(ObQAG(mvLizgMhCUpwbt4v zqXr0K!NH&<%7>$9Dfrq88YaH<^Cx%&KU!FUsfjh_g3O{5v2y|VOoqOyaUhjOKQ17& zm>g^k%|mOv4rj(wMD0hF84z{}=Q#tWe1$`StRp6q!TW^YohVPS7>yD;KSv%sKg`9JQw2!9m@PxZ)`g7`8R>_M?fI^{(t)hTI6&WgyjaDK}Seu4ynkss3DyM~KDd)N^OC=MD{))oMn(@A=uIv zFz1LP3>F6~XyG-)cm^9Te_ehM5gx)82^g*+HA}C#HH?e5>H%S=7rW_a&~m<|ErNz+ z2)@RGSbsgHVQ&}9Yi&(ou1~48`O6_PHiw{!NNnmd84t1wAC~s zn^pkk+`TT(=bfiu&=V@UFdq2~fXATA$Av+m@+ zwuLdRfZi@57242(wBhD2$2QtuOAC5_=R|0`N<864W^G!M@Ud7iGP0}QiixmE7u2j} zO_5DTBSbnnVyAEN37?)Gsclh?wxjIj?<0`-t-!xAgXy&^`*q$Lxd29 z)}J^vonQ!@>@_K$Lh{J2gf>_bLeBU4O%O!FFk*u(K!_AXZ{G2sE%P$8a+7t9I?4yY zVm5()KzMaCqq-oYltc{6LPGj(thZ7@YibABGr;E0s4->d{e1o&lIV7%V+M{Ag`6(a<$qL;vAaPw9e(lrXh~ zWCT;DNpiB5SyZ=kRfKpv3yeRDZ|zJV4GQEXDNw0$QK6)Ok%Fx9Wk&Y_O^_%=c*ziyxzoqtKzxD8>gk*yA^T<|ykLe8M2w1N*-mLK~)q#tV6ZaB)3W^qHGMEIQSIgyay zoJMDSP@!;Bmj-k8O!ta(kE|3@F}LqfR*vdMtY^sj*|^VD$mIo#tf*}Ik= zO&qg0f2HKBzb;X{u|v3_v|q@t2us?dgu}}X5X@Y|SuQ{_w?wD7G1TW*mY6X2B1<;nVX2I}7dm+SBr=~54@gRvzfw?jt4S#)4kIt91OtUO z7lxz7y+9epw76BTn)w*L6g}JYg#YR*v|Ph?D$D@l)mYGI3f3B%@0Wd2!h;yCcU>dO zo`TDZ5v7%>g=o3rmilQGo|dy*c%(L5Sc7Eh#*Mh;(B#2kU_+&_e{1Sw%tILQvBxMYuKr+!c$uPY#h?t zs8=b$y6KCs_7G(B6&)GiT>sgp0riBn6f0DlPgw^%jFiL0dDS#iu9;XZd7ZVX?XF#+ z8w7uH;x6_jKzCxPm=wqfk~h2@Z3^XG zQ6s)M`x5HVlu(k%nu54Y9IHQeb?u+Cj$Fcp$y;^M!Tl{_5A{aj0-K02LiGLgqtXptiQ)wTeKBo-gq z9*v=d2@*tORhm^24w+6S)qyHA4`DS!v2SZ|FM7{O1|B~vG_VPK2Qaf@ihl(uU52*B zxbnxwP5SQ@heVXToQfuvd|^sW%y0ydm-S88Bz*lNfy15lcktanzEESt=aosh@f&Ky zkpest@IUtw=s{~r2(t_lolPp~p=+bq5EH#9M@MQZY|gPue^1=f9kMtp=zY-_YN6O1 z(GaOoLVwR$Zlsb6>bdWpB;wOvcKt@p?^2!ubaNoC>%kh#n@R3i=3vo74qjsV< z4f1;`N`qWot271e>ryTAb4ki(LVV#MF3EacaDCI@P_?rkpjdJGj$+K7xj#CD5W+J3 z5Qx4+pYykkt<4XEAP+->r}>0!^ml!|v~1$KB^gmSAn~m@A$MBa0*G93Ktu;0nXnbV zoO3@`F$Q7LMk@HF+11h0QT>!Far%04HmSd_J_=$AXEQ9fMk|s{kuOPOMhGp*Ou{B!CV} zDwI^!T%?DMxKNUycrPn{k$~cve3!;P8kI4W{V$c8L4BRi{mYQDPSjMr)>M+S-cq z^Dy~sG;!o9h%0;ZSZ;|b(xya5@!XJAVY3#>9vy6du?B?;D!t*+_`EsJ-D#CJg8<~% zDPwi7L>y88Q&mew*$nab3v|pErprE%UF?BIQqk^gSPWq6X7&aAu78_AgLFfY z5VCBp?{H>7OS|zeO<#X`s)}-zVH#X%N7hbD|E@iS@3S&dwRC=VHpN9Og4yCn50ZbO zP4^U=b~%|DVjagfU}HJ`WncYT$~b6bLb{|v-(eircZ#5(gt7yXD&Yn47yv2sYcY76 z<6Ep~K`4iIEXGX^)(yZqjdjGSBAdR|ruWN!s&VY=NCh_IKoB(6YW{Pb{x^o6dE7P^ zuZ8{LSs4{Qxs7)+isPHEnS6$Xu+Y|&_zjxOgYCaJ+xmd-MvsijPWmv*_upcS#AMN> z9Dls^t36?&H~8FQmC+aYQmr-;LViM7UB?A$$4zV*nPYgjFQ;zjPghaUcU zjBV}4hhIz^0zRaCH`769loONTdnh$`!zyOq&PP+=pF+sj%{s!1(`94oN}SqRZ2vL2 z;#r|;yh%Rz*9_~yJU@SvdM-XDw8f!*PPhYot8DS^)+omkF!r9%r=2`n(S-XIfK^TY zn_(|nc*ATzmiN-4bfL6POceIHY$a<;ODw^FfsLSWP`Ri&Y`S>HX1Du@%(8EHT1g~b zRDN@U-dsdwpJ#O`KZIGZ56XgtAe3ZySAm0ZYuP9)(2Oq2y*ieB*pBPW^eoIk$b9hU zn<{xk7h-y-miLwd2Zjoy>-ewcFWEyyT?;;)oK5&`C zg7GE=?1IWM$=Uj9x(P|lAvT)Kqd()1Wxk8>vvYVosW9+uzJwh6N2T|wT811Yy9tlP zPGz9z77bC_gauP1@9@H+Ig-DeifsKpShTl|#W~?xJo(`-|2945)78mu%83%|#?Sh8&Z_>|H-EsaqdE`3#%$HYY!`QEyE^Oi zKJSV;&&N$|PCD=DJntPp?^`|pa&+GRbUuJ`F-UYV)Od=(eUT}25v_0$_nfp4lZLD5 z2z|C|d`+I>NCAgB8m3*$q9jj>Q#B@~O%q*ycfFWfb)2_$oGZj%IjRMdIvLLNj|p6E zK=3M7V{XtxVUtcUh_ckgty4_1Q~a|Ngf;g26~}k^tEwL{yH^}gv#Tgy=MR9Z)2Gy( zakOO8GvOiU3Y63n0k*SFw0F18g!M5$(Gow{Ih#tkoHPQ@ov&lLoKMuQZmeDQIFumpf|*T;c0g=NpV<^oxPoprRg6Iy#y}ZbqwXZTkN0i$y_dA zpWEN^u6<_iFe+3xh9W+;E_{`L?tRVf+@Ef*D_vKe-7|eXXy(!Q*RK0-umB|rgYnTR+Up(ajgo|C7RS9+QLOfHp4%}N z9rrIGQ!GzTbRSe7NXfYur?chSqkR>czYlg0v2#GQ$E@{}ji47SuYm+Y*U96`_At`|q)r@XZnjw!z(XUDP|--2u0#HL62H~z&>Lq9cMpEw8~AcQ;O z{+ZNn#4i5HEw3y#FGzI$fz)@^s4rE?u|z+g3O}9W{Pc^r@dv{mg0G)C885_rygR_Z z+kAcp9HTWvz2r}jHR-=phXkls{qBAfxMUsBsP7pg;n(mkFx=*s7Ik1wc0ipV+oQK% zM{uA74%&Y*sZOx*tH;|rfeaSx^-m&#~%j{ zsKz#o&!j8k1WRdpCc+uj|A9_Dhc{(b*H)>#+a@L^;B+b+O@#xh@SqHwONFOo;6WKU zqY979z?(Av3!Mr_Q~xU{124D0e@a)0WrrQ-ji zDFcUUgPOmg!4T^HpPDkZp#Qgw>bw6>j4Iv#-y8CCeNYvmjMWpD_#BZ?Vfj_Wvc z)h8gReFR5vyEq(&cQynOhi7tdxHy8y{shYdQhQRGyFwZw>3hWt!ofpkLBt7~E0!q~ zynxE!IJf3lV~c0!0L!W?bLq0}#Nw(7b^pN7aVvB$HcoMLMUCVNYHKI$n+D@fvdVO2 z$?9a%oj2`T-XiVPBP__r47D%oIb3$ETi0E7ZdgZsY`$`1z3Scy`%T%TJE&AAJ;h=C zt%-BU!CCJPDCnep->Ji?m|Q#K+#q;Bw$wlECgkN?pk?| zy)}6wO>V=cjo?ca0K&<`VAGjMlZ$MvW$jw!38S(hyy-zw%xCRU{K5u5Pa$A6h#}VJ zDmA-v8%VXt>__Sl9&1bkdBgQ@t(?0uD*Uw+v>h-+?$@oP&nmg+pciGzz( z-~rbku+N3|u~V<<3T9+TwmGq^HzB%YmcR#4Tv4w2aric}ElBWas?mNifZAw}m;i~M zOX+QOQGvB3=R(5hClmCY+tjYUo{l#j7<}0(TG1iI%X5k%&u>tuTZgk;!5q|!;DcI( zaNxMJx0tUPTFtOzF*pR33p9xii}ggzt$+q3psQgLSJIHG6=S#<7ol<vN;&{>R?q^E?DyYJzn+K%+x?)Zsp(`YuIq*3LYfj`u1o;XW#V;8su z78t%)T4n+rG)TswmP=6_p5TjI(c5yY?_oR`v@N=wB;&}W;GK*TWy`sKLSSI4PDnO66b-4i zSS}Kw7-K$tlDAA4*B&yOi<@K3UlNP!7$%#ybYLy?g2+ z(h9&s8?6vZWtMgHmnNB2t^3A&rD^?EI%t>BOWodCibF&F=qnBiTfvns9~cPIDM6yW z84SY^2I7YlBliDwB962T9h)W=V?m$Y1JN-&HfDv0GBIntnU%paSRW<>#h~W0K+$#d z2k>hsE!d00SlE{MRgD|cFO=}^Qe~kwZmv=yHKN;v*~1YnlB(#la^HGTI@*^2R{Elb zEK>&M^Br6Fvr(2&7fz!@-TMwqQHVX(Q)9+kODR4ZGiYnrE#_}eSB(v=OiNLbB zu85D#sdliLe3jPa!f0#mRnn)$S>E4jHIgCvXwun9Tw(J;unwL{c$6|E1WJF`>F37xrE><7QWpj9W<_)XD6VEMu_I-t2AS_QF-Im7p|SD8elKR8h8Q{f(OJ0sIg=`pD8{lVMKEEf zjF3dRYPUBKP%5_WQ8a-xebE>MUt}{KZ`_uB*{(Zg+K5agTkb01@oiDomxB^GEiu{H(>3)J!OFbVN{7LFioygowu&GD9tgjNGo1f z%EVBVD*v9#uo)3g&TWgg1Rc4m8w@seMaer2VX%n@#vG3&ni0m{uKPU;Ij|I zfSLxKd;GHJ7NU7nZw;#FHtqju8pN4+1{}+hpoQjjT->wEW;2;4UB5HGMa6Zp^egiD zG%5(H8e^X3gg^EL35wa^W5L-K=Tpg;AC&>JR%bAN3Y#*V_hZ752CdOaPElm@tJ+>rgB1yvIT`IL=p(aAiG6bM#fNSYV#pDF2NY1^z@@k z5B_{o}+`9B7@Ol2(m%B)pRb;pwtmWTrU16pHCu00d8x+j7eP1=-5wg zknTJefb0zQ5Iq1IYFFJw?se^c$;{* zPJXeTbe)}8NCGu#P27(0rssDOP%xK`ao_X?Ky5)v-O0f;3PEU=1qv}M3Ne?q3`n12 z%8(too8w$t0T8f;ISml9V7jS`_cqFg);bWCK9H9#C0{C$**2yV787rQmr!XSb1%e5 zKBz--V;ZOjq}u_I3<3z6Q#n^d5i8xb1Oz8jIml@v_(&;5H+;|+6Fr`wsysmOjV%5G zU{x1H2?kOM0Bt|xX-7J>L~Dv6Qf}ZTprt(uLX?F;4Diwn00?OoB$EVy$1@=U zd@VMBr*;snP*&1Zrq>2;w08oh0RvHr`ERcn21!8vX8^e$AMIk?HouWBmpz>}TXIgW zTuKJcP{upok0>p~VApg-#cVFk=oH>?Qjn5NWp4iqe*Fe0Kic=bB7;}dd&jmco%JmK zU%0zyM)`t#m4>_nh6Qym$=)w1UNQ*i8+7)c!48H5XRuZC->A~e^!}?kg@dsL6q?#x z;N+LeWGQJlaBaRShtI?ef`GDhxw1c=;_VwM5Z}leJ$yRbAl5VVPGQc`LVe2(E)wMd z&<^HMYGnJ_P}4}3(B9-Q;TB6r0IDA#s3N6nQ-u_}0upGlYCvH^*QDEuG`1A?2^xet zt73ZpGN@fCIsB<>0_~KcA3XvIRGQ$UtFO?Ej6L>j|H zs%vsx5Z*%4m-6~ijAV4QOZj!jQ4y=inoZ^6S88!9ase#Okp^W=I%p>EN9DYD3y1<* zk9eC%0WGsJjqV3>wEst4ciGiexUg$G3GRX5?(VL|DPD?uafjkkpbZ{^ySr;~clY8B z#hn&P@wU9I^*mqRJ@y_We_(z{#+-M~d0Z-PF`2;eC-V9iQCgGW$g+fbl77Ei(K4<{ zB|Fl3F0h;#yrG?`Mm!1^+pn&bREE3ia}9HjA{idOd$EcNF7J6m#=d;Qf;nTjJ5aBg z%KTGB#_N!6ZG%>Q#Xx~SAAhw&gB95uyO3tqjYb5kDgg`^n03HAu~w>nGIaOGF1PfmbgfV}Qm=CwE?`-7XiJrCL?01?KO4QEXpnERd%|FOLKe}$2z2cHG^t5tJx{fjSzXF~A2zY1B#HPe!?urd}Q? z)E?eOR$9sC;x}2Z6`V_fZd{!yo8#DJ2LsXsN5Njk!c#H2!^z5sW;@YT=veR*=y$^| zZi5(yC_{~c;vr@lzOeST*!;V)pJS!vx_BKMAs4r8>htLob8YGq?i-Wc==GwiXz@f9 zy#N+?xtPgZR?9J)*y$u~8*da-kh`3Y2*y+&29GQR%0ZejfJ)O3QtCew?s3QOD@|`T zcBDrRD3m!61og{vC=Jl`N9Mgkxx)QlnFebrva*fn|AM5nZ$Vo7@njc+S#6@E8pA60 zUF^{bsJ{I)-dfS0n#3%+x!y;N2r2pD57Rq|<5WkbW({*+cqp)EXTQ}%)R69dACZ&{ zh?P_cO~omyZgL=nhM>2g$CY;!@Ex6;C5q6W#cuc@t=*l0{4NGRlrl+39gpjdOajp zzAj(<@teDfx(l%2a3x1yi@h5ujfMvPRUQ(q#^2#QTN*>>8#}l`!#V5JCVORVb-l|% zM^!&HEjNhc42TcSKn$A66#=$I6XKqSF*CjH>IiT|js)=Z3KV{mofjUS0%K?NH<6KB zv84X9e*IwrJsb6xMdDAhHkjIJUw2M#u@AeE>k#xsb3i8ui@*eCSs-9Ka=$jg)eOd4 zf-k5(BGFpWBYp%irp(XZFm~g!UjjhiCrHyoz=z`6_c|I#!?uu#416;JeEmpfTVOVM zV&I>7Fi%|^%K|#?EImP5#z&2cS?uIY~8io zIss?`qlHX4Ow4(Fw1{9@)GS-ig2ZgZx|U7DM>9x-c13%)<)>pz6;7=0Go|P zg8k`6lyPDA7bZG=2wdF$)=Mi)&h^khu%OPugg7~vC!Jab|&6QqwXH#T-G3iMZ86^RX2vh*6!64ec5*;bfoqU)q35Yr$hmL+J13`-SlcoS6 zp?K9fuIX=to7;7InHlnv9>1h;quR_bQ^O=`)C2Q30=LGpcVuXYFgS^qjm6Zn)52clW(?UwpLLGkvl6}FhtnqpkCXF&L6txHX~N{=PgYQ{lUYlKLP^8&Y#z6IpRr$evO815oY5Wfj2KT&7u z!HlUdG{nPhKh~yTH%~@K*!bD$uQdjlGNe3nTVhp_8 z=8vaz+1qp0g$x7xJ8OF#tWX~HqKS~@&%UD>>THY3pZMWldlZHD^Y2RQG_#zY&CeM6 z59ku!sm23GKYq5R5&D{*sXm{BzB-7ex`+uz9%mkC)oy!KO>}P$9RI5%h&v;e!&qW8d zztRFhyqt_ySU#?4qfAhJ*4W?6Z4+GCv0^`e3%{%U*)2}vV&yw+LNF`1Hgzh?RwL09 zao}=Yy(}1AdG(G~r%+5sQB8=4`-ZOa2jAOc9G-i68jF~Y{m8<5M#2XCx0;+W&ZmzD z?amK$=DRWL+&GRUriuvUVq$}^(^Dl++N18D9!!trazz0IHH{R3! zCk)H=yX81|E8?pwlz2IZ2*rVwso%Y>ZH~tB7yS|RZURAE z54JgFB3}ym+&<`KJp7?aIO`L-bsM;kec5IlkuUYTt5kXfKL4h>-X^%JQsmPS;Jh$* zG&A+h$3XT5yqDjR3P!@BluOsx{XZMk>%CA`h`58eUBN^cghMJ%o4mo4N(DjXm z;_#IZ)DzmZ&E=!VqR*;I+#e*Bh`;!wOCT=o)9`V>0`&|IOpeuFB zj`8E*qk#|4`kl!utwqT2-LTKOPRxV=6_E;U4;qYzTxu4Ihd<%<4Nd&eYinFMdK?sx zXXUf$$Mu=nJX+{q?KW+duetO9;|aA)kScK^HKw4MUkI+uYG1z8PsF9g@dL;SH+Fl~ zI8S!v$*g{C1Y?KYRju4O7a2+xU|G!LAPoWcMHJl=5p2Z{JF>o2@hDA$E|1p}KwF6I zioPj`IWNb*xt%#|8gT?cL{Wo4xcR|L`Mx~Man$8Klq>bvdH5%6&08rL2*U)DUDs2q z$fpdI>A6w}INUpv?jf9S{kIg^jD#48CRlkwAoP5j%@!0NbS;-Zd{p7D=F$`um_RBq zJX#YPk*L{HKA&wF9T6m}9`Fe^`8GuKuII5+d|9#GJm;sAPrjFFn{3ujG(;Vv&^cD& zY?P_@&whDJ4{d^s?oz-k^e{hEz1EP8`ED`Yl;Gro+gh0@*^b>>xItOYXbUpMg?Qi3Uzu17aV-qV7>+05aFr zn3t=Ew2Cg5njoL$&sjQV*;3q;5^_=$jy-98(+0Y(bt`ppEf#)`Xtmp2tX~fH6D#Rw zDX~)|6bofz<}TccRF)t38a3JQ{a$Qkxeb6=<@;p4Ry&SWDyS?a83fu5^PfhvZM3jO z)UBH9Y5Coy@z*MnrNZ6^#IMJD&bku|nooR@SpWl$(Q@>7Jwzu|ZMCo)hJxVAsb^&4 z2c*gxz4EqR5xDzr%!9v@&h_yFV#eh%24>|c8;cp#$`!NHr@S~r6$Ek1mCc6|#7fk~ z>`x7nEHt{}sTrf?A}dsBY+yxEZ8hM^sD`9ys)@?o#SKApnu|i9eCqebc7*smk zaZS0*g?yAbKr$c@*9$&L`>ipI)afW@Ew0oi-e zz1f|KQWa;A^>LH7z43c~7?#jVKL-va0>Z{0)wYAe^9ZKkATbtS>d0TLNEYGoSeWdH z6zQ4K&&9hD)i^CO$S-ciHY$QLH%vcgZ!1s#=_FwCaMh2pDFgJz~)~UzZyWh4_Xht9ifn z67NyV2Vxk9sn4;{q42WFX7Y=K{;*IUqt;MxvQ_D52uCzAvoLs~Hl2B2cz*|O%OKVG zcCnMQe&N7wZaBnqeK3O=LA-RLD{EVkzRb**WH$daTSKadHl^zLh}TYYYu)0n5MqtD z&$G~8Eu&}c4pP+tnq-n1so6<2niF9t8~2!7^6VY5`jS}By-6*`*l)oZFsf!@$U3$u zWc*rN#a|v71b?AQ+PWOB-z-$0G=(sy=^)rKTd*uI#fXMP5=n|t?|PBvlTU}os1YKK#lcWta>bq(|B51k;;c$ND$Arr+&UBIJ#Wn z3oEf`5phuGH7Ye*HP>n1w}~XnfhN;k(vyy^TBsPo73}goR>BoJT_V$*Rml$PY{e6Y$gyyQKOw|M-C#fHU1`>nuSHX-n z?BwnqT}=KQ`hQS!3*v02pzt*TnWE~q2mKplMj~ek$vxVf@n6(;hsY$&dfYGpIrDBYMa68WYx|HM! zkO)6&G<$g&Z2b9&oCFtNb)9!89#UDCkvPS40R?8kf;vH@nda0On6=30krdfV8PRM} zZE^+aP^{T{^g5BuaWeP?086TBLbidIRas;q9xYys*cB*Z6m>y@hEFC;=$`H)#e!foN0;YY;P<$2>GM0s~3{6sixC!*}Rwr>9 z+OVD*ddxdZ@z5&b_HZbsR8hsJX6W8x@V^zJBPf0!-F(pKLkxbG}0X$RI6vGD`u&MT+|8=z-Ke1v@+hrKTjJ4 z6YtP`yX3(jh6XJ|GV+z=lnr7Jjnd^X3-8DavT#fLvTH;5V}6{xdpVG=Iq8vNecx8e zJS;}{uDvi0z1+F0@LVIY5g-g$z^}Y6maCo&Mj$0{IXFnBb^9s;6?VN5T7d2-^EdufMRp75KN z53o|LP>qu{^()l}Iu~N5V4psibMVh%>a5y#d$qq%PRCC{RKy9U6S+I8Nl*t& zDgGFw48S5Pu82L*=}8{BiBT9SbLLm?5QI}J5I0PGX;fs679msFQMavaAge%2^_IUU z9xZi)DV1HDpgaX#19+4UP%MG(8pz|2rJ1KlN?gPU$t;IvEl0X*aySn9l`PK`>#%EK zQ0~DI9#>MIS5y;YIS;`Ejhq3Gnsbw_Ql0V?no;w_Lod|@Z~TT=f*cehQ6;RqSBuIu z>!cPd=CS&t@dFy<6z7U#%WKZ(svZ@GDl}5wF0suFpb@b0_pY6Sm)AD zHPIOHy7_9dZ)M^F-O=fS@Gc545xbWknaRtR7>Jzsa%Ph`0`y<|TmpSbw7oS@lxUH4 z*-)2KgT#8g2ZK0_Y4AgI1zvR-3|%LEVcEG6!jf|&dU zBHnt8#OCqi*w?BjaN1+u6UBn@fvyKMQd7$b|`D$}dXe>=|Yd5O}MCpB&F%%Mfq9QNpxS zpCMyBVUgtY*a$4gXz&G4W>%#Az;8g%K4Zkz-qJYqY>W(v$b1APGBMh`ASYgX8)ojfzRX}Bgt}BKWSCUB4zWSn z0}8Mmb?i}xoBn~c9}8H#ZD5QyvKYIKdO3s<4`9tCpiXei(=Ey?f$V&If+UCf{`^YxjhS8clROHC6<%ntssxx`ycywg%EWGWH z!S>_GjgY0%l0B&0#$DG|PsNsn0q$*j%=YhS3VQ6z82c#}=3|2%Xo~(>7yXMmI#dBY zXaw@L;W$L$BvkiAv06C5^dutufIOL&8t z=mIkyPm<(04F>Pp+nk2F*{8Ujr09}F=i5iH*%P_j8T*|khQBtdBbkH_xij_=ZT6mT zjtg}o(~;xzT26}@&&qT0TytSMWI>_rXCY$_(^4?!YlqYahni)~YDUKz@0=J+$L^rC zS{uiD)5s=H)Jj5ddo0Xo?P!73zEW4HjS;nHSrK;S81x`EGnO>1ajwsE(N+uUAiM}$ zJ!|81EYfvq)peYR#Tfr_-csw-1vvZMasgn0%u=4s&P4N?<1SF5F1lPSmcnLoF|tja zLu{OjbDh^>FTvpsskMnO1C((^uZJq(uuZzl4MOKt2+b(O%Kfc?*e%&P* zi+p^-#{N?adq_Pic=Mw<_2YrfkE;>Pza!2i|31Dbr1uEAYPh`~Oh!Hb`!T8OL}>mo zIsWQ5vQxo{3w*U*-tptUOB^ze3!g$eNSD?@JUtRdF!pDnLHxfOV{;4ZQ zy_=BJ^#)_~X6My+4VNp%Uo*4mm~nXYX)yASm&F$DtNmw`dDlAq7ys1V(Df1saNyM6 z&^aXSJ-aYDiLf!KTwk_7|Lm%BV7Yg<_H%EsyI~`G{a}Xkx$u5<=EJ!nH1Gfmxrw~| zqWyBsLUonEdGbc`MpiOX7zLZ*8@2rLMY!2-q%wEeZ#N_uZgO94&I#d)E2!#3zY)K? zV%@vZ=-otJ{g#k)Q!T^O{_wFSUgX_TPGfWYM^1=jtu=-_7?Kuhk!3 z$LqJ|FDI67@2vFhtZnaXeC})`?(EX;?91*PTJIc3@0?cdoR7UFf8KqxrPW2bcatP@ zi||gqL$hSMXGrsuL-9J$y@wx3%;et>yWkJHuz!uc_iFw1Q~hGGCk5L2@iUcIh5Bg< z@yForzsOo|SFwGy!(N;{B7CQ);W(`qG!egpUw%8a`hJu|kIZ{8_~MM2_cMOwp=`!B z2}Q^MCtCcMyFfiZY#-Fu6Hh6o`|u(Uf{#8@agT*kw-H26L%F`eKOQaqHxy0%PbkU? z00X`vhy%miE54PCZWK+IK5q@(cZOe0{ihgx%|#iV)29N7QY(w?v)hEs0u|h1|A#cy zarDpi(TJ!TB#%&d%|-wJp6UO+7;S57`ya{lwH1BsMqi`R*J4yiNa!^hbt#+qU()oy zlIg#r+1GCLe>~HQiCwvvzJDQv|B?k?bJ5KH&Hv=0uhHoL7NZLPDMsPl|F2L~vA%FP z>J>A!BDN?RjiZ)@lPfh8k0&u}RT_^sluV`(iw$HeHI`0i345GvjyL`fX1c_DV=-5t zn8a!_(NwWe_8-i&^0%FG6-dnDwq3wdFIIaHPNDK2%+$8^vqW2}nNh+=42P7}mLKD7 zb~k5RYy@22d!as0VZy%qJMEq!gxFJU_4}jobSnSa)16bAQ&`pos{I;{zvatDQL3%G zAC-q$=W_lpW}0Oj6W=npl;J$NJ^dfdwAc%QO1-P?df##>9G}w7&3cnLgDy|KyTfaC z-mz6XH?ZVtb7e5W(uJ6(e?on+U*3P zGM4WIV+x+^SmP)#?}p;*+Ui*tO6kpD#ixpf|w8ZAcvp-DH7rh;T)8R>J zB$C~l#it=*#aqB9tt*Z)oh(92qdpiSGG^;E*&Sh+E_O=bB*C+sK9B$@LW= z(Vra`Mt>@2Qh|;IGk0K7cN#v<+JjiRpQ#b zWS&(wuslRhj?3~EJ@n_uy+gcoFQ9y900#uQsOdjIrVc?SW*65P z#_zvKMsy0Vvyc^f%h)I31|;)S9~kqR}hTd(NU<`ZtYnGMl(!9_(E?O>(Z>4@NE#YD;Z<$-a2qjbIXB zHH^7H*j>h^Yd7ydq57`cS6L|J_wAXsA1-`Ytpbxw@{Q z0V7}%!rO&zJNqdUNB_df>n@q%s)B!Seo^osSS7RTx<>z-`$l6ttypk=CgR8M-#0f) z(wI7J8()5fSN)?Y`^>yX{%`DFyp1OM3o@n(fL8+vn^{FNAmqEVOkY2?f(HM#CEATR ziYO_&iZxhO8AXq|mxe_OfG#Dq?;<-TfdL{iHyeOB77wAT*z{VI1`#L}p=N=&Cyq z5^9F1U_6F_1cm}sU*AOBvHFC+gn;5S4J4pmQVNH?oo{ky{)z~u`B*rFMCg=o>~1Az zA*2+NPmM%c6--YwUl)Ym7W=%KD9SH_jlO831sYR=Pf{-co0&$bOZ8as4+6xHbC27ICWiksdC+9@GR86`?{?3vjSThEfNARbvdm)yrw7{@LJsf zQ4L3?SqwhaN=)CHW%G1XQD#$Ti+Nc`bnt1s;2*~wP=$ul)7<~kE zq*BF>p-)TfNZPDQF%=3-zvK`nR#RBLXdx+zKA_kHJYO9K3E8R*MeotHw^S5ijc60N#h!t z=5*y9&ANokX96C6v<~=h+uK8p$n&Mm;MT^scV{01g1!cH3utZEvLPH;eK)N={P4CT zjU5y#EpE^D)(bomTYV%tS;ci~0Y?RJ?yH#|vU#X+ameMsc-%5cWBW}zd~%Plgh38KET8?FkHEh@UC5` zAyr(OEluBo6b;6FLe3?m%IRhonQ^M&Jl5!|=9)vH|ikn;d zd1yX7){LE}23MVrv?!mm9G#V&p41&WEG2!59o9vnOEt9gRW~Sf8XZAP3)L%b`Yg_a zqFUDWj^ixRBMf?(E++Qm$BHTy&X=r>l$Yr>bCmm`_%Ht5=Le@e``^cQ8W-5_xeijsG-HgkJ7cAC`_j`k@wV_P?8bkK8~pg0`^pH5ThEu$L#cwj z=T|OQ@qRu{eH{kr4T?O5Kly`?GUkt)(nj)=(~*<9FB-oQ?WO##mRXCZ4u02uEk4A! zKd8Ikq{fP0Sfw`aSXue!*%Ya8f-uNaixb*S43IjtKNi`z?@=j;EVbiyZIYdPLq&-( zWJ!<0s>EKR-Xms8Z)O`k3VQb&0qxxY8(o(i`w~L8)2*SoOXyz@UCO?QV-kfqrjloQZ zE68lS!IpN^_fXme<%H6x9-3Idl`F^%E+?YUP})pZLZs250)rS_fus+fXfz0Tqd>;D z&{WMYbi|?9G@nk(LRg7|G_O@2+<}8~V0tsq!>>@*>(2<+JO;zS?Fg^}ZKyFSgpru! zxe$aPi=g;`Pt>Od+Eqg?2$w?u*$Ic~XxP{=B7pWoOnf8wuEXN%xd5)Ami_wj??K$< zJS+eZGXO+Y7l6>OPj_wW_QDM2?gJ((e5nG3`uavKkEU+P%YsCuKPofEiI#SODwVy-XgOf2^fH;;m4u?+A!Cw7SdNUXiHwb=$M+o3xodwXi$J3vNU808j2y!DRN|Mb2`CDPSUR)fH ziIi&zh)_Vxi(Vq@?@z6$B=Uoi*ZMAQ0{BREK-@YeZu&NRV<}E+DNN&b&$Q;8b*X(kQEtMX z_#?)X%c(l=A*(AwrsKrakK(@`n5yP!soFU}AvSE|X|V>lL1@I*3K4|b6bUk{KU)KN z&4BrL>A?wZheR0x@A=Kf`8yR2tnk?B2@&|X`4fawkAX3{EM$`Onf~u>gzGql`N>u9 zZ7D;%KpvTmEQHJ&(HYiRe(!C_SJSHtyyNu2^YoF$eA!;%cnq$fK40T8KSKEspt(p| zPY|Q?OKCK65HPP1RHu|969lB0Rpc87zhbKt@j2^{snCA01Y!h35t11eFu)GncnHd@ z$W^QdhS}*M(Ij|z=@I9{E8AYHTCJN?^9?_%=LU{21Jb_+NbvNOEl0e%08Ixf6G`E29~`sY9snAj#?~3Q%vRxl;@Gh3@S#NE38~KRADvh*U1o4{>;K+ z{v27tPE*WL9z+<4>q#PQElMC?q@xEn6kZ1}+$0Pn<+>=pn^nLw>?r*HP-x;)_WmWI z?EARR$3%BXLF$xn`N11$`erX94VIp=>y1#-=IO zxl#em<@@O1qA}Cgkm`}srC;z>CYYz;&m|NaAPGZDQ!~N82BlN*U%xvbP8cZU#5eB@ zA0IzbLf<4%6qo8W&zuCo+P8YG0lfAbOxCA+v>po459$%BQQ0jYStsu6z%`T;BEHg^ zLaTjH247U-KNXg(wS8EFe|f6pA?*7yknuIGBl#JQZ>{T|I7WOu;jU9&W*Sv6StvzJHcd1@T-ZuFKM_upH*$nSCiZ#Yi*+A6TRTWwt=*b_ ziV~cLK@3aZ9w8dTCtIU8@X@s*f;S+hQJ&kp zKJT;I=@aUs&RQ+pG=nzqfkt?2{=PsIDZCcG62}gw_IBmnHl??C6dEA>HfO4M5Q!r0 z*GYKIs^#&(7yYPCGqx7t0&Y(-JPv&jC7=csSVOe~q;n0yz7COi*@aUYW~wHAnyG5* zn5-Lms-x+zP|>eKkdA{wa8tco2;ICEN_fIOdHJ&1j?dFi+3>|jj9XQ}w!$Stc3|Np zI7LNRjzuq_bO5EL$96;3%XtgXscB)UgSfsVNEnv+q&-{(9#do$qO169;31|QVR)ZS z^rx#5gP`lY7o}gH)DA>#j3j&rsR4TDhIaaW~RrI@ZapCOZN_sGJHKZIpXIqdb z%%D%cI#y{4vQq3%7BqNkr}N+&$HEHUY6FXe43k}d?tbyG1>IyKOAq=~C;4SV{<2nD zZh~vA4;EMwV-bJ3| zVGZ!O<<#l(UG(Ick$Zmt1>PSxuPZMiki(n(TeIQ}7cPe)M*9*jhd5z)=_71fhTn^I z&RA)V`+TB;oKobi5Y_mX3A{#eW>Z{_c^}1jwinzHa_~aY952xAZPBGCMi!$M!W1!Ylia_Wp7478-wG7LMBaR3y7s8~8QE=v#WW;+8sN2@7+ z3Gq`-h*8-)x85zi=NQK7g2)Aa9d)ZzyoCL1;~2YGPA6V=%YmS4ElGv+Lb8h7P&pEO zXM{OIbrin&o~)daMfy{aT^zzugR0UJj=p#A3V#??5XS`oKz z5R+LDJJ=aQ68OK|OgQ+~?uBLpFW04{ z7pEPUv>jF{I~MJ2);p%ty0#!W{`0yoe;xG$ZIDv7qRuxrw|LE!sM^Zrl33C_Z#E9F zK5cYE2)CAh%}sinY-~4tyUyv<44ekxuK(y)x&P&&Hzt|&*KbOq`Nd=glwkHS_cbCd zC4t!Yf(e1wtY5lqXVGBx%Oze{*3RzSYa#%a7PT%cgm4n3hb3l6C|RVZ3gwa ze`^|ukW{uli%*?C-OJx)QTN>`c0958?f2~y#+HT+mpL*0YY`6Ut+(f%cb=B0d^(pM zYJi2LTlsqUoHIKzl-(yevrjzy7g!uN*dL$5eCLj>m3LRs*$xG9Ifg4Y_xg_(!n_JA zvm4P5QCJp9622L$Q?Yxf@on&8y$~P(`;0H|rv41>EiMpzcr#;;y`vL9{Wqvr@9hp{ z;?-Wp1Q3|88LK! z=C}pjPLzRMy(LRS*6hyLW6x8tAuIGdDDS(epxvl*anxqTdv0o4Pf1hH zP%M<$U)y@)xt+JzdpJL~P^F{qWvbT11OZf(cItH|F%uj296V;6e}CX%NdC-Z3@qPn ztW!I}q=~*y>_avOk(1P*zo?bqbM6yTBeZ*bXbEW-@Aanp`5o)Sf)$55Wi^k-8KKtg zF2f&H6yO|%mJQj@*(TEqr~4bsZ|kh@zgs#DUSkZrR>@fGr4__inXyL(?d(RmDdRbp zFU9NhAETuu7s=Sm=YG8BdIFLuMSEIj|LJnx{gbzlvUor*K2GtV^K#eg{fouz=e+~a zn!JkW0}|N|F!`Gr-OeCs9@h}f@<2|JPu8M}v)M@OL)~a!hs!)Y1MHR=LKPoJ)~JQW zzDMo37G5&|nwx!&0XtFE7ITs6_Tt08;8mK|rw728HI%Y3SL(GuR4x>TO#!rL97)6b zEA-FZRF<1Ac%3squa{3;6x5RwH-Fa}ejiIG^)Kp|vhxx)1r8^-{Oo>Sd68awhxeCt z?ZMUsdHRv@E9`3XtAU6UpkF#4&WeQL(C4ZVf*kUH#Y_=NH22XGndJUA6#Wlo>NhV# zfFWS1U?m(P3y2Z0C2cz8K2a-_e~%p~+*lfpsRl%?rj17k$K=E0eFaae-v1XfB}=7! zz2R4d%V+%;GYw;vH%u--#^&DK9)5n0uo=#)Jv9c9MM5FxMx|m;-+hJOm}C#a$PL^L z!BlTlN3z%IZDvTEM;I~-s8ND*)LKncZ_L8O)cC6PX}FPJFaf$%%!DRkr}o?3fwG%s zpyB;+3e9NlggUeFM6`G5#6X$Hk7r9Y@4~Z0J^KkTYQKERcw$;uR>Sgu(WDGsvU2Le zw$V-h1=LY0X1BSnnZYm^#q+8A^Ba&=YYXsy7ja1=5#gWm&6*9chEow2&lU}*YsNN{ zn9Ty9tHOW_acpx}nx1ggYHoP~3Qf-5a1BKoHX=4rS9!9JR##;x9|k5Q$iGaXm$&10 zDzlYVI(&uyUfl0Pf;EA7mC+09g?Fol1v9XFV|DFZNy7TKIe^^@5%=C7$ z=j{Ac-S9RE8l){-ZY4pTRtX#EeXQ7Nt z;$XqShGo%+wdO%p=wRyh6Dx9pRZ6%D9Z$JW$SjCser_T4f+AfgkB|?K83TVqrMyxx zi;XASSVee0`Zq^VXsCGkZ4r)Qn~r5t5&sQi=)0MV#^BUSeF0{MnVpDxV-4x>$XGcZ zz0~V101`eYH8AY+TWZ7ad1KwDSEo$NkuTh{GezlnY4 zzOkZg*KxWTeYZvzi4x8~j_95I@wwd;a@vHBW9_Cs@?F|<=3EH6_-n$WaZ_9j7e$tBLpN0- zSX>r0{e38)**5E%aGIM;>_yMC(XZ9YWfy$fW1duUe`pGha}^ zCb~smQq)?NNeBA`TL~H-vCKt1K+&UONF6c_PDoMgSaWk`4so0@Nf>AhP(9NGzZ$iAZ3Z5hLxCIENK0=7rZj2l`z*@mQ@>{I%uNcg*6Ee%S z1b+q3G+Y&Qa+8~BjrI|4wz@vdWD$-z;W&9k&m4K4Jq^-I{KDJCD3#XJhDiRfA~W*C z4p5R1krmAMvjGrWJ+zcA^CW{gg#~{wLndPe5?ttbrbZ~-%{bsjL;S>qg2yHPwC@V+RVH_Cf}XI?j2x@(4fwevKt0@-qmS<&Vb{RkMEZpBh7D5~VD*jmH5ud$-wdU5Dz^vIvC)dtRY*$ovaISy zm}95x!<&v%CvBp@4nvGP*|JhcK-D=BO{r97cRgXD>N-Y%+7s1*O&w7>kG1c4v;In= zZ#&J~_2tdXuWudxvO?uUC8=NsIc%!Zy1hSrbe7b@pBM?=6ihI(yh%jDENW~hBS5VHWfQqspr4;YE{u9$n_S_)4?(RxL?ZMgWP38sOpk@(`}zI zNh5Cbq3ESk!c`gRkG$rwAZlx+x3! zCgkQ7{a*Ul%C}}I^&`~)?#L*-(K9Usk3dJFmdZr?TzG{6%|~YeJY_7AoObYfiQ7cC z^fyGsSNpXKMmUkrfOU=L;#H8LXpj+ow4N`c5qmr+{R~| zk3`<9@Asyo-_mPi&Y>SHro3S~m2>nZs#QzFN9b$P%OUPiZdqXV8PQ`}A!8BiKUf`z z6r@bVIkkeHiaFsK8QKoOm@>1ox3bB)1;F4~5(yCmOD?O^eekdL= z;Ji#;%+B8t6_6hN?e>$|@KpcK(2Z_Jtx;1e8ld+5SxY;kv%vAT>8aRwcn7LUNuQZvA zP4c?utxEQdR^L@$cMNwg(gB=LKUfj({^9x;Y>Ntd^LA|o@E5=L6j+tr-0 zkzwdDbUi8UKh7gl+<7a@&rXNuX-{y4o???EIDf<2H(Ob=OLngXtJGq~H(<7bxF1WwGMMg0pJ-qL;Nd`_ zWicv&%fgj}^-G!VXOzU_DkT5gL+(U_G|efc?o*jh zBTIr-98OS-&o02~kJLI8y*Da|+kkz=V~-j<0Es25R;Zf1>Ywb%=13}rp&_WX z0%W{p2cwecJH;x8GRboCgJLFXn5PD{<|<0#2kEYHWflf7htOXzPYT9pVq|`|UeVOd zhfYB0r4H~rDduns;^`?>izd*hh^8RDV^S-9EMmn2l{^gOzNu^aK+8nMG>jc>(GjWC}r)4wxmx)-+C6DRyn1vSOwRR*nPYw_pl0a2fR+ z;YM>N!O<$-?c=FMg4@tc;&%|P?mI6&N2O3=uz@W>g0PJT}iQ2s(&e@W%EwXZosditI*_VX8yC8 zNS?BAo-W+JMzu6myM)OkRfT>{OQda2*pE1Z9zgDZAkNyYHCnjv+hMWakIK?9DMWZ| zDS#FufY>ZRoq0i+&Nnpi8kpO$M>R$S0@ooXr&o%GTS_55=5PJuG6vMc`6MQ*oC zT==4&y{e#IOeO@YA@ZxCI;&yUtKnX&5n-#al+~BWl2v%~YSi#*^wR1pN>To6G!|(s zh)zEkYb{Y=ElGYYS!XT9dhJznNDEs__bN+BS<7r*%NkzGURujJT+6*(%R^evCs;3F zST7VR?zew`sQ zN)t9pRormBT@SZ2@-RwjE{UrjH{=d5f<41JYe3ywsO`<`Gp^L#hZ|i>hHcH*z0Css z-MGU!sC)VxBbSCzQk!`ho0?(9gDJ4Sl+6LJ4aaKZwnyXrj?Ed9$T^9a*}oedY9?ti zTj&tcg(cM0t&Jt5%~voqDt>GE5Pj=%^>kCmXl4sXq}$|dXR8XywCfi2`(^4LmT8N| z_G-)~0h<1ij>+KC<{HD+d5-BQ!`9iQ=~NBj4-S)qzi>YP?XO7qXEEEz!KN3^rk6-~ zw}-HsY5FG#n%k7`gA%6qe`EgKnyw@500?)0j5{E~9R!6PMBN=En;m5D9hC4L)YKic z(jCy7iV}$SG{@5Vl z+`S7lCtEhB+}PDm*ri0aSa{f_W=x{--oa= 200: plot.log(step, lr=1e-3 * (400 - step) / 200) + if step == 200: + plot.axvline(label="lr decay starts") # a vertical line on every panel, at the current x + plot["acc"].axhline(0.9, "target") # a horizontal reference line on acc's axis slow() # %% diff --git a/liveplot/liveplot.py b/liveplot/liveplot.py index a3b3859..7a687a6 100644 --- a/liveplot/liveplot.py +++ b/liveplot/liveplot.py @@ -46,17 +46,23 @@ {"metrics": ["acc"], "ylim": (0, 1), "ylabel": "test accuracy", "xlabel": "epoch"} -(allowed keys: title, metrics, secondary, xlabel, ylabel, ylabel2, xlim, ylim, ylim2, -axhlines, axhlines2, smooth, yscale, yscale2; the names follow matplotlib's -`Axes.set(...)` keywords, with a `2` suffix for the right-hand axis). Reference -lines follow matplotlib too: `axhlines={"uniform": 10.8}` in a panel (or a list of -`axhline` kwargs) draws a dashed line at that level with a legend entry, -`plot.axhline(y, label, metric=...)` does the same at run time, and -`plot.axvline(label="lr drop")` draws a dotted vertical line on every panel at the -current x. Extra kwargs go to the artists. Smoothing: `smooth=0.9` on a panel (or -on LivePlot, as the default for every panel) draws each curve as wandb's -time-weighted EMA with that weight, with the raw values faded behind it. Log axes: -`yscale="log"` (`yscale2` for the right axis). +(the dict form; the setters below are the nicer way). Panels and axes are addressed +and configured with matplotlib's own names, before or during the loop: + + plot["acc"].set_ylim(0, 1) # the y-axis holding a metric (left or right) + plot["acc"].set_ylabel("test accuracy") + plot["loss"].axhline(0.1, label="target", color="red") + plot.panels[0].set_title("training") # a panel: title, xlabel, xlim, axvline, smooth + plot.panels[0].right.set_yscale("log") # .left / .right are the panel's y-axes + plot.set(xlabel="examples", smooth=0.9) # on the plot: every panel, like Axes.set + +Available on axes: set_ylabel, set_ylim, set_yscale, axhline, set(**kw); on panels: +set_title, set_xlabel, set_xlim, set_smooth, axvline, set(**kw), plus the left +axis's setters; on the plot: all of these for every panel, `axhline` (every left +axis, or `metric=` for one) and `axvline` (every panel). Extra kwargs on +`axhline` / `axvline` go to the matplotlib artist. Smoothing is wandb's +time-weighted EMA with the same 0 to 1 weight (`smooth=0.9`), raw values faded +behind. How it works: the training thread only appends numbers (~40 us per `log`). A separate *render process* owns the matplotlib figure, redraws it at most once per @@ -106,7 +112,7 @@ import weakref _PANEL_KEYS = {"title", "metrics", "secondary", "xlabel", "ylabel", "ylabel2", "xlim", "ylim", "ylim2", "axhlines", "axhlines2", - "smooth", "yscale", "yscale2"} + "axvlines", "smooth", "yscale", "yscale2"} _REF_LINE_STYLE = {"linestyle": "--", "linewidth": 1, "color": "0.45"} # defaults for axhline / axvline artists @@ -163,6 +169,7 @@ def _normalise_panel(spec) -> dict: "ylim2": spec.get("ylim2"), "axhlines": _normalise_axhlines(spec.get("axhlines")), # reference lines on the left axis (see _normalise_axhlines) "axhlines2": _normalise_axhlines(spec.get("axhlines2")), # ... and on the right axis + "axvlines": [dict(kw) for kw in spec.get("axvlines") or []], # vertical lines on this panel only (axvline kwargs) "smooth": spec.get("smooth"), # TWEMA weight in [0, 1); None = plot-wide default; 0 = off "yscale": spec.get("yscale", "linear"), # "linear" or "log", left axis "yscale2": spec.get("yscale2", "linear"), # ... right axis @@ -293,6 +300,9 @@ def set_layout(self, panels): for ax in axes[n:]: ax.set_visible(False) self.axes = list(axes[:n]) + for ax, panel in zip(self.axes, panels): + for kw in panel["axvlines"]: + self._draw_axvline(kw, [ax]) for kw in self.axvlines: self._draw_axvline(kw) self.fig.tight_layout() @@ -301,10 +311,10 @@ def add_axvline(self, kw: dict): self.axvlines.append(kw) self._draw_axvline(kw) - def _draw_axvline(self, kw): + def _draw_axvline(self, kw, axes=None): label = kw.get("label") style = {**_REF_LINE_STYLE, "linestyle": ":", **{k: v for k, v in kw.items() if k != "label"}} - for ax in self.axes: + for ax in self.axes if axes is None else axes: ax.axvline(**style) if label: ax.text(kw["x"], 0.98, f" {label}", transform=ax.get_xaxis_transform(), va="top", ha="left", fontsize=7, color="0.3", rotation=90) @@ -434,6 +444,149 @@ def _collect_loop(plot_ref, outbox, proc, done): done.set() +# --------------------------------------------------------------------------- panels and axes, addressed like matplotlib + + +def _lim(a, b): + """Accept matplotlib's forms: set_xlim((lo, hi)), set_xlim(lo, hi), set_xlim(lo) / set_xlim(right=hi) not supported.""" + if b is None and isinstance(a, (tuple, list)): + a, b = a + assert a is not None and b is not None, "give both limits, e.g. set_ylim(0, 1)" + return (float(a), float(b)) + + +class _Axis: + """ + One y-axis of a panel (left, or the right-hand `secondary` one), with matplotlib's `Axes` names: + set_ylabel / set_ylim / set_yscale / axhline / set(**kwargs). Panel-level setters (title, xlabel, + xlim, axvline, smooth) are available here too, as they are on a matplotlib Axes. + """ + + def __init__(self, plot, index: int, right: bool): + self._plot, self._index, self._right = plot, index, right + + @property + def panel(self): + return Panel(self._plot, self._index) + + @property + def metrics(self) -> list: + return list(self._plot._specs[self._index]["secondary" if self._right else "metrics"]) + + def _set(self, key, value): + self._plot._specs[self._index][key + ("2" if self._right else "")] = value + self._plot._send_layout() + + def set_ylabel(self, ylabel): + self._set("ylabel", str(ylabel)) + + def set_ylim(self, bottom=None, top=None): + self._set("ylim", _lim(bottom, top)) + + def set_yscale(self, value): + assert value in ("linear", "log"), f"yscale must be 'linear' or 'log', got {value!r}" + self._set("yscale", value) + + def axhline(self, y, label=None, **kwargs): + """Like `Axes.axhline`: a horizontal reference line on this axis, with `label` in the legend.""" + line = {**kwargs, "y": float(y), "label": str(label) if label is not None else f"{float(y):g}"} + self._plot._specs[self._index]["axhlines2" if self._right else "axhlines"].append(line) + self._plot._send_layout() + + def set(self, **kwargs): + """Like `Axes.set`: `ax.set(ylabel="loss", ylim=(0, 1), yscale="log", title=...)`.""" + for key, value in kwargs.items(): + getattr(self, f"set_{key}")(value) + + # panel-level setters, so plot["acc"].set_title(...) works as it would on a matplotlib Axes + def set_title(self, label): + self.panel.set_title(label) + + def set_xlabel(self, xlabel): + self.panel.set_xlabel(xlabel) + + def set_xlim(self, left=None, right=None): + self.panel.set_xlim(left, right) + + def axvline(self, x=None, label=None, **kwargs): + self.panel.axvline(x, label, **kwargs) + + def set_smooth(self, weight): + self.panel.set_smooth(weight) + + +class Panel: + """ + One panel of the grid: `plot.panels[i]`, or `plot[metric].panel`. `.left` / `.right` are its y-axes + (`.right` exists only if the panel has secondary metrics). y-setters here act on the left axis. + """ + + def __init__(self, plot, index: int): + self._plot, self._index = plot, index + + @property + def spec(self) -> dict: + return self._plot._specs[self._index] + + @property + def metrics(self) -> list: + return list(self.spec["metrics"]) + list(self.spec["secondary"]) + + @property + def left(self) -> _Axis: + return _Axis(self._plot, self._index, right=False) + + @property + def right(self) -> _Axis: + assert self.spec["secondary"], "this panel has no right-hand axis (no metrics after '|')" + return _Axis(self._plot, self._index, right=True) + + def _set(self, key, value): + self.spec[key] = value + self._plot._send_layout() + + def set_title(self, label): + self._set("title", str(label)) + + def set_xlabel(self, xlabel): + self._set("xlabel", str(xlabel)) + + def set_xlim(self, left=None, right=None): + self._set("xlim", _lim(left, right)) + + def set_smooth(self, weight): + """wandb-style smoothing weight in [0, 1) for every curve on this panel; 0 turns it off.""" + assert 0 <= weight < 1, f"smooth must be a weight in [0, 1), got {weight!r}" + self._set("smooth", weight) + + def axvline(self, x=None, label=None, **kwargs): + """Like `Axes.axvline`, on this panel only: a vertical line at `x` (default: the current step).""" + line = {**kwargs, "x": float(self._plot.step if x is None else x), "label": label} + self.spec["axvlines"].append(line) + self._plot._send_layout() + + def set(self, **kwargs): + """Like `Axes.set`: `panel.set(title="training", xlabel="examples", ylim=(0, 1))`.""" + for key, value in kwargs.items(): + getattr(self, f"set_{key}")(value) + + # y-setters act on the left axis, as on a matplotlib Axes + def set_ylabel(self, ylabel): + self.left.set_ylabel(ylabel) + + def set_ylim(self, bottom=None, top=None): + self.left.set_ylim(bottom, top) + + def set_yscale(self, value): + self.left.set_yscale(value) + + def axhline(self, y, label=None, **kwargs): + self.left.axhline(y, label, **kwargs) + + def __repr__(self): + return f"Panel({self._index}: {' '.join(self.spec['metrics'])}{' | ' + ' '.join(self.spec['secondary']) if self.spec['secondary'] else ''})" + + # --------------------------------------------------------------------------- the handle @@ -470,9 +623,10 @@ def __init__( """ iterable, specs = (args[0], args[1:]) if args and not isinstance(args[0], (str, dict)) else (None, args) self.smooth = smooth # default TWEMA weight for panels that don't set their own (wandb's smoothing slider) - self.panels = [self._with_defaults(_normalise_panel(p)) for p in specs] - self._explicit_layout = bool(self.panels) - self._placed = {n for p in self.panels for n in p["metrics"] + p["secondary"]} + self._panel_defaults: dict = {} # plot-level set_*() values, applied to panels created later + self._specs = [self._with_defaults(_normalise_panel(p)) for p in specs] + self._explicit_layout = bool(self._specs) + self._placed = {n for p in self._specs for n in p["metrics"] + p["secondary"]} self._layout = (max_cols, rows, cols, cell_size, dpi, unit) self._iterable, self._bar, self._desc, self._progress = iterable, None, desc, progress if total is None and iterable is not None: @@ -529,10 +683,72 @@ def _make_display_handle(): def _with_defaults(self, panel): if panel["smooth"] is None: panel["smooth"] = self.smooth + for key, value in self._panel_defaults.items(): # plot-level set_xlabel(...) etc. made before the panel existed + panel[key] = value return panel + # -- panels and axes, addressed like matplotlib ----------------------------------- + + @property + def panels(self) -> list: + """The panels of the grid, in order: `plot.panels[0].set_title("training")`.""" + return [Panel(self, i) for i in range(len(self._specs))] + + def __getitem__(self, metric: str) -> _Axis: + """ + The y-axis that holds `metric`: `plot["acc"].set_ylim(0, 1)`. Right-hand axes are found too, + which is what makes the left/right distinction disappear from the API. A metric that hasn't + been logged yet gets its panel created now. + """ + if metric not in self._placed: + self.data.setdefault(metric, ([], [])) + self._extend_layout([metric]) + for i, spec in enumerate(self._specs): + if metric in spec["metrics"]: + return _Axis(self, i, right=False) + if metric in spec["secondary"]: + return _Axis(self, i, right=True) + raise KeyError(metric) + + def _set_all(self, key, value): + """A plot-level setter: every existing panel, and every panel created later.""" + self._panel_defaults[key] = value + for spec in self._specs: + spec[key] = value + self._send_layout() + + def set_title(self, label): + self._set_all("title", str(label)) + + def set_xlabel(self, xlabel): + self._set_all("xlabel", str(xlabel)) + + def set_xlim(self, left=None, right=None): + self._set_all("xlim", _lim(left, right)) + + def set_ylabel(self, ylabel): + self._set_all("ylabel", str(ylabel)) + + def set_ylim(self, bottom=None, top=None): + self._set_all("ylim", _lim(bottom, top)) + + def set_yscale(self, value): + assert value in ("linear", "log"), f"yscale must be 'linear' or 'log', got {value!r}" + self._set_all("yscale", value) + + def set_smooth(self, weight): + """wandb-style smoothing weight in [0, 1) for every panel (and the default for later ones).""" + assert 0 <= weight < 1, f"smooth must be a weight in [0, 1), got {weight!r}" + self.smooth = weight + self._set_all("smooth", weight) + + def set(self, **kwargs): + """Like `Axes.set`, on every panel: `plot.set(xlabel="examples", yscale="log")`.""" + for key, value in kwargs.items(): + getattr(self, f"set_{key}")(value) + def _panels_or_placeholder(self): - return self.panels or [_normalise_panel({"title": "waiting for data…", "metrics": ["_"]})] + return self._specs or [_normalise_panel({"title": "waiting for data…", "metrics": ["_"]})] def _start_process(self): # "spawn", never "fork": the notebook process has usually initialised CUDA, @@ -680,12 +896,12 @@ def _extend_layout(self, new_metrics): return if self._explicit_layout: for m in unplaced: - self.panels.append(self._with_defaults(_normalise_panel({"metrics": [m]}))) - elif not self.panels: - self.panels.append(self._with_defaults(_normalise_panel({"metrics": unplaced}))) + self._specs.append(self._with_defaults(_normalise_panel({"metrics": [m]}))) + elif not self._specs: + self._specs.append(self._with_defaults(_normalise_panel({"metrics": unplaced}))) else: - self.panels[0]["metrics"].extend(unplaced) - self.panels[0]["title"] = " / ".join(self.panels[0]["metrics"]) + self._specs[0]["metrics"].extend(unplaced) + self._specs[0]["title"] = " / ".join(self._specs[0]["metrics"]) self._placed.update(unplaced) self._send_layout() @@ -696,15 +912,11 @@ def axhline(self, y, label=None, *, metric=None, **kwargs): artist. It goes on the axis of `metric`'s panel, or on the left axis of every panel if `metric` is None. E.g. the loss a model must beat: `plot.axhline(math.log(d_vocab), "uniform", metric="loss")`. """ + if metric is not None: + return self[metric].axhline(y, label, **kwargs) line = {**kwargs, "y": float(y), "label": str(label) if label is not None else f"{float(y):g}"} - if metric is not None and metric not in self._placed: - self.data.setdefault(metric, ([], [])) # create the metric's panel now so the line has somewhere to go - self._extend_layout([metric]) - for panel in self.panels: - if metric is None or metric in panel["metrics"]: - panel["axhlines"].append(line) - elif metric in panel["secondary"]: - panel["axhlines2"].append(line) + for spec in self._specs: + spec["axhlines"].append(line) self._send_layout() def axvline(self, x=None, label=None, **kwargs): @@ -722,9 +934,9 @@ def axvline(self, x=None, label=None, **kwargs): def _send_layout(self): if self.mode == "process": - self._inbox.put(("layout", self.panels)) + self._inbox.put(("layout", self._specs)) elif self.mode == "thread": - self._renderer.set_layout(self.panels) + self._renderer.set_layout(self._specs) def figure(self): """ diff --git a/tests/test_axes_api.py b/tests/test_axes_api.py new file mode 100644 index 0000000..915d178 --- /dev/null +++ b/tests/test_axes_api.py @@ -0,0 +1,97 @@ +import pytest + +from liveplot import LivePlot +from liveplot.liveplot import Panel, _Axis + + +def test_addressing_by_metric_and_by_panel(): + p = LivePlot("loss | acc", "lr") + p.log(0, loss=1.0, acc=0.5, lr=1e-3) + assert [type(x) for x in p.panels] == [Panel, Panel] and p.panels[0].metrics == ["loss", "acc"] + left, right, lr = p["loss"], p["acc"], p["lr"] + assert isinstance(left, _Axis) and not left._right and right._right and left.panel.spec is p.panels[0].spec + assert right.metrics == ["acc"] and lr.panel.spec is p.panels[1].spec + assert repr(p.panels[0]) == "Panel(0: loss | acc)" + with pytest.raises(AssertionError): + p.panels[1].right # no metrics after '|' + + +def test_matplotlib_named_setters_go_to_the_right_axis(): + p = LivePlot("loss | acc") + p.log(0, loss=1.0, acc=0.5) + p["loss"].set_ylabel("cross-entropy") + p["acc"].set_ylabel("test accuracy") + p["acc"].set_ylim(0, 1) # matplotlib's two-argument form + p["loss"].set_ylim((0.0, 2.0)) # ... and the tuple form + p["acc"].set_yscale("log") + p.panels[0].set_title("training") + p.panels[0].set_xlabel("examples") + p.panels[0].set_xlim(0, 500) + spec = p.panels[0].spec + assert spec["ylabel"] == "cross-entropy" and spec["ylabel2"] == "test accuracy" + assert spec["ylim"] == (0.0, 2.0) and spec["ylim2"] == (0.0, 1.0) and spec["yscale2"] == "log" and spec["yscale"] == "linear" + assert spec["title"] == "training" and spec["xlabel"] == "examples" and spec["xlim"] == (0.0, 500.0) + p["acc"].set_title("via the axis, like a matplotlib Axes") # panel-level setter reachable from an axis + assert spec["title"] == "via the axis, like a matplotlib Axes" + p.panels[0].set_ylabel("left again") # y-setters on a panel act on its left axis + assert spec["ylabel"] == "left again" + with pytest.raises(AssertionError): + p["acc"].set_yscale("sqrt") + with pytest.raises(AssertionError): + p["acc"].set_ylim(0) + + +def test_set_kwargs_and_reference_lines(): + p = LivePlot("loss | acc") + p.log(0, loss=1.0, acc=0.5) + p["acc"].set(ylabel="acc", ylim=(0, 1), yscale="log") + p.panels[0].set(title="t", xlabel="x", smooth=0.5) + spec = p.panels[0].spec + assert (spec["ylabel2"], spec["ylim2"], spec["yscale2"], spec["title"], spec["xlabel"], spec["smooth"]) == ("acc", (0.0, 1.0), "log", "t", "x", 0.5) + p["loss"].axhline(0.1, "target", color="red") + p["acc"].axhline(0.9) + p.panels[0].axvline(3, "here", linewidth=2) + p.log(7, loss=0.5) + p.panels[0].axvline(label="now") # x defaults to the current step + assert spec["axhlines"] == [{"color": "red", "y": 0.1, "label": "target"}] and spec["axhlines2"] == [{"y": 0.9, "label": "0.9"}] + assert spec["axvlines"] == [{"linewidth": 2, "x": 3.0, "label": "here"}, {"x": 7.0, "label": "now"}] + assert p.axvlines == [], "panel-level axvline is not a plot-wide one" + p.axhline(0.0, "zero", metric="loss") # the plot-level form with metric= delegates to the axis + assert spec["axhlines"][-1] == {"y": 0.0, "label": "zero"} + + +def test_plot_level_setters_apply_to_every_panel_and_later_ones(): + p = LivePlot("loss", "acc") + p.set(xlabel="examples", yscale="log") + p.set_smooth(0.8) + p.log(0, loss=1.0, acc=0.5, lr=1e-3) # lr's panel is created after the setters were called + for panel in p.panels: + assert panel.spec["xlabel"] == "examples" and panel.spec["yscale"] == "log" and panel.spec["smooth"] == 0.8 + p.set_ylim(0, 10) + assert all(panel.spec["ylim"] == (0.0, 10.0) for panel in p.panels) + with pytest.raises(AssertionError): + p.set_smooth(1.5) + + +def test_zero_config_then_configure(): + p = LivePlot() + p.set_title("my run") # before any panel exists + p.log(0, loss=1.0) + assert p.panels[0].spec["title"] == "my run" + p["val_loss"].set_ylabel("held-out") # addressing a metric not logged yet creates its panel + assert p.panels[0].metrics == ["loss", "val_loss"], "no layout given: the new metric joins the shared panel" + assert p.panels[0].spec["ylabel"] == "held-out" + + +def test_figure_reflects_setters(): + p = LivePlot("loss | acc", progress=False) + for step in range(5): + p.log(step, loss=1.0 / (step + 1), acc=step / 5) + p["acc"].set_ylim(0, 1) + p["acc"].set_ylabel("accuracy") + p.panels[0].set_title("hello") + p.panels[0].axvline(2, "two") + fig = p.figure() + ax, ax2 = fig.axes[0], fig.axes[1] + assert ax.get_title() == "hello" and ax2.get_ylabel() == "accuracy" and ax2.get_ylim() == (0.0, 1.0) + assert any(t.get_text().strip() == "two" for t in ax.texts) diff --git a/tests/test_liveplot.py b/tests/test_liveplot.py index e057b75..b653ec1 100644 --- a/tests/test_liveplot.py +++ b/tests/test_liveplot.py @@ -59,12 +59,12 @@ def test_off_mode_discovery_and_log_forms(): p.log(1, {"loss": 0.5}, acc=0.1) p.log(acc=0.2) # nothing wrapped: x stays at the last explicit step, 1 assert p.data == {"loss": ([0, 1], [1.0, 0.5]), "acc": ([1, 1], [0.1, 0.2])} - assert [pn["metrics"] for pn in p.panels] == [["loss", "acc"]], "no layout given: everything on one panel" + assert [pn["metrics"] for pn in p._specs] == [["loss", "acc"]], "no layout given: everything on one panel" p.finish(); p.finish() # idempotent q = LivePlot("loss", "a | b") q.log(0, loss=1, a=2, b=3, extra=4) - assert [(pn["metrics"], pn["secondary"]) for pn in q.panels] == [(["loss"], []), (["a"], ["b"]), (["extra"], [])] + assert [(pn["metrics"], pn["secondary"]) for pn in q._specs] == [(["loss"], []), (["a"], ["b"]), (["extra"], [])] def test_x_axis_follows_tqdm_counting(): @@ -165,7 +165,7 @@ def test_process_mode_end_to_end(fake_notebook): assert len(fake_notebook.frames) >= n_frames0 + 3 and all(f[:8] == PNG for f in fake_notebook.frames) assert not p._proc.is_alive() assert len(p.data["loss"][0]) == n_warmup + step and p.last_png == fake_notebook.frames[-1] - assert [pn["metrics"] for pn in p.panels] == [["loss"], ["acc"], ["lr"]] + assert [pn["metrics"] for pn in p._specs] == [["loss"], ["acc"], ["lr"]] def test_interrupt_inside_with_block_is_clean(fake_notebook): diff --git a/tests/test_reference_lines.py b/tests/test_reference_lines.py index 6e68772..ec46ca3 100644 --- a/tests/test_reference_lines.py +++ b/tests/test_reference_lines.py @@ -50,10 +50,10 @@ def test_axhline_and_axvline_off_mode(): p.axhline(0.2, "target", metric="loss", color="green") p.axhline(0.9, metric="acc") # label defaults to the value p.axhline(0.0) # no metric: left axis of every panel - assert p.panels[0]["axhlines"] == [{"color": "green", "y": 0.2, "label": "target"}, {"y": 0.0, "label": "0"}] - assert p.panels[0]["axhlines2"] == [{"y": 0.9, "label": "0.9"}] + assert p._specs[0]["axhlines"] == [{"color": "green", "y": 0.2, "label": "target"}, {"y": 0.0, "label": "0"}] + assert p._specs[0]["axhlines2"] == [{"y": 0.9, "label": "0.9"}] p.axhline(1e-3, "final lr", metric="lr") # metric not logged yet: creates its panel - assert p.panels[1]["metrics"] == ["lr"] and p.panels[1]["axhlines"] == [{"y": 0.001, "label": "final lr"}] + assert p._specs[1]["metrics"] == ["lr"] and p._specs[1]["axhlines"] == [{"y": 0.001, "label": "final lr"}] p.log(7, loss=0.5) p.axvline(label="lr drop") # x defaults to the current step p.axvline(9, "later", linewidth=2) diff --git a/tests/test_smoothing.py b/tests/test_smoothing.py index 7efa723..68879c8 100644 --- a/tests/test_smoothing.py +++ b/tests/test_smoothing.py @@ -77,7 +77,7 @@ def test_renderer_smooths_and_fades_raw(): def test_plot_wide_default_and_override(): p = LivePlot("loss", {"metrics": ["acc"], "smooth": 0}, smooth=0.9) p.log(0, loss=1.0, acc=0.5, lr=1e-3) # lr is discovered -> gets the default too - assert [pn["smooth"] for pn in p.panels] == [0.9, 0, 0.9] + assert [pn["smooth"] for pn in p._specs] == [0.9, 0, 0.9] q = LivePlot() q.log(0, loss=1.0) - assert q.panels[0]["smooth"] is None + assert q._specs[0]["smooth"] is None From f2dcadde3cba33f74215faee40df27fbe7133ee4 Mon Sep 17 00:00:00 2001 From: David Quarel Date: Thu, 17 Sep 2026 12:45:00 +0000 Subject: [PATCH 2/3] README: reference-line and smoothing sections in the setter syntax Co-Authored-By: Claude Fable 5.1 Claude-Session: https://claude.ai/code/session_01G9zs684RFxHvW6cNWqTPSF --- README.md | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/README.md b/README.md index b4df801..23dc7dd 100644 --- a/README.md +++ b/README.md @@ -107,6 +107,26 @@ The dict form, `{"metrics": ["acc"], "ylim": (0, 1), ...}`, is still accepted in `plot.log` accepts keywords, an explicit step (`plot.log(step, loss=...)`), or a dict (`plot.log(step, {"loss": ...})`). Values can be anything `float()` accepts, including one-element tensors. `plot.data` holds the full history as `{metric: (steps, values)}` and `plot.latest` the most recent value of each. +## Reference lines + +Matplotlib's `axhline` / `axvline`, on an axis, a panel, or the whole plot. Horizontal lines get a legend entry; extra kwargs go to the artist. + +```python +plot["loss"].axhline(math.log(d_vocab), "uniform") # the level a curve should beat +plot["return"].axhline(500, "solved", color="green") +plot.axvline(label="lr drop") # every panel, at the current x +plot.panels[1].axvline(2000, "checkpoint", linestyle="-") # one panel, at a given x +``` + +## Smoothing and log axes + +Per-step losses are noisy. `set_smooth(0.9)` draws each curve of a panel through wandb's default smoothing, the [time-weighted exponential moving average](https://docs.wandb.ai/models/app/features/panels/line-plot/smoothing), with the same 0 to 1 weight as wandb's smoothing slider and the raw values faded behind. On the plot it applies to every panel; `set_smooth(0)` turns it off. `set_yscale("log")` on an axis, a panel, or the plot gives log axes. + +```python +plot.set_smooth(0.9) +plot["loss"].set_yscale("log") +``` + ## Credits The per-panel label/limit options and the grid-shape rule are adapted from Tyler Lum's [live_plotter](https://github.com/tylerlum/live_plotter) (MIT); see `THIRD_PARTY_LICENSES.md`. From b5ff8390f22ffbe5a79b74b3f9915bbb5c5043ba Mon Sep 17 00:00:00 2001 From: David Quarel Date: Thu, 17 Sep 2026 12:57:51 +0000 Subject: [PATCH 3/3] README as a short landing page; the details move to the site's Guide page The README is now 27 lines: one-liner, badges (docs, Colab, tests), the demo GIF, install, a six-line example, a paragraph on what it is, and links into the site. Everything else it used to hold (nested loops, the x-axis, options, the matplotlib-style setters, reference lines, smoothing, how it works) is docs/guide.md, in the same order, which the site shows as "Guide" between Home and API. Co-Authored-By: Claude Fable 5.1 Claude-Session: https://claude.ai/code/session_01G9zs684RFxHvW6cNWqTPSF --- README.md | 131 ++++---------------------------------------------- docs/guide.md | 117 ++++++++++++++++++++++++++++++++++++++++++++ mkdocs.yml | 1 + 3 files changed, 128 insertions(+), 121 deletions(-) create mode 100644 docs/guide.md diff --git a/README.md b/README.md index 14eea32..9847d3a 100644 --- a/README.md +++ b/README.md @@ -2,137 +2,26 @@ Live training curves in Jupyter, Colab and the VS Code / Cursor interactive window, with a tqdm bar underneath, at (almost) no cost to the training loop. -[![Open in Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/ARENA-education/liveplot/blob/demo/examples/demo.ipynb) [![tests](https://github.com/ARENA-education/liveplot/actions/workflows/tests.yml/badge.svg)](https://github.com/ARENA-education/liveplot/actions/workflows/tests.yml) - -Documentation: **[arena-education.github.io/liveplot](https://arena-education.github.io/liveplot/)** (this README, the API, and the examples; built from the `.md` files on every push). - -Try it in Colab with the badge above: that notebook is [`examples/demo.py`](examples/demo.py), a cell-by-cell tour of the features, which CI converts with jupytext and publishes to the `demo` branch on every push to `main`. +[![docs](https://img.shields.io/badge/docs-arena--education.github.io%2Fliveplot-blue)](https://arena-education.github.io/liveplot/) [![Open in Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/ARENA-education/liveplot/blob/demo/examples/demo.ipynb) [![tests](https://github.com/ARENA-education/liveplot/actions/workflows/tests.yml/badge.svg)](https://github.com/ARENA-education/liveplot/actions/workflows/tests.yml) ![training loss every step, eval loss and accuracy every 50 steps, on one panel with two y-axes](docs/demo.gif) -The GIF is cell 2 of [`examples/demo.py`](examples/demo.py), a tour of the features in a cell-separated file: open it in the VS Code / Cursor interactive window and run it cell by cell. That cell trains a tiny numpy classifier, logging the training loss every step and the eval loss and accuracy every 50 steps, laid out as `"loss | eval_loss eval_acc"`. The GIF itself was recorded by the library: `examples/make_gif.py` runs the same loop as a plain script with `record="docs/demo.gif"`. - -```python -from liveplot import LivePlot - -plot = LivePlot(range(num_steps)) # a tqdm bar + a live plot -for step in plot: - loss, acc = train_step() - plot.log(loss=loss, acc=acc) # step is implicit; the bar's postfix shows the latest values -``` - -Metrics are discovered from what you log. With no layout given they all share one panel, with a legend. To split them up, give panel strings: - -```python -plot = LivePlot(range(num_steps), "loss", "return | entropy", "lossD lossG | acc") -``` - -Each string is one panel. Names separated by spaces share the left y-axis; names after a `|` go on a right-hand y-axis. Anything you log that no string mentions gets a panel of its own. Every panel has a legend. - -For nested loops, create the plot once and wrap the inner loop with `plot(...)`; the count, and so the x-axis, continues across epochs and you get one tqdm bar per epoch, as with tqdm: - -```python -plot = LivePlot("loss", "acc", total=epochs * len(loader)) -for epoch in range(epochs): - for imgs, labels in plot(loader, desc=f"epoch {epoch}"): # kwargs go to tqdm - plot.log(loss=train_step(imgs, labels)) - plot.log(acc=evaluate()) # metrics can have different cadences -plot.finish() # or wrap the whole thing in `with LivePlot(...) as plot:` -``` - -If you'd rather supply the x values yourself, use the context manager and pass the step to `log`: - -```python -with LivePlot("loss", "acc", total=num_steps) as plot: - for step in range(num_steps): - plot.log(step, loss=train_step()) -``` - -Already have a tqdm bar? Pass it as the iterable and it is reused instead of wrapped: `LivePlot(tqdm(loader), "loss")`. - -## Metrics logged at different rates - -Nothing special is needed. Every metric keeps its own list of `(x, value)` points, and each `log` call stamps its metrics with the current x. A metric logged every step gets a point per step; one logged every 50 steps, or once per epoch after the inner loop, gets a point wherever the count was at the time and is drawn as a line through those points. So in `"loss | eval_loss eval_acc"` the left axis fills in continuously while the right axis grows a point every 50 steps, all against the same x. - -## The x-axis - -It follows tqdm: the plot counts items consumed and never looks at their values. - - x = initial + n * unit_scale - -`n` is 0 inside the loop body for the first item, like `for step in range(N)`. `initial` shifts the start (`initial=1` for 1-based, `initial=10` to plot `range(10, 20)` at its values). `unit` and `unit_scale` relabel and rescale it: `unit="examples", unit_scale=batch_size` plots against examples seen, and the tqdm bar shows the same numbers. `total`, in items like tqdm's, fixes the x range; the single-loop form takes it from `len(iterable)`. An explicit `plot.log(step, ...)` uses that x for that call only, like wandb's `step=`. - -## Install - ``` pip install git+https://github.com/ARENA-education/liveplot.git ``` -Only `matplotlib` is required. `ipython` is needed for the live display and `tqdm` for the bar; any notebook has both, and without them the plot silently just collects `plot.data`. - -## How it works - -The training thread only appends numbers (about 40 µs per `log`). A separate render process owns the matplotlib figure, redraws it at most once per `refresh_seconds` (default 1; `0` means on every arrival), and sends back PNG bytes that get swapped into a fixed output cell. The output is a plain image, so it behaves identically in Jupyter, Colab, VS Code and Cursor: no widgets, no JavaScript, no CDN. - -Interrupting the cell is safe. Jupyter sends its interrupt to every process the kernel started; the render process ignores it, so you get a frozen plot with `plot.data` intact. A plot that is dropped without `finish()` shuts its process down when garbage collected, and the process exits by itself if the notebook kernel dies. - -## Options - -| | | -|---|---| -| `total`, `initial`, `unit`, `unit_scale` | tqdm's arguments, with tqdm's meaning; they define the x-axis (see above) | -| `refresh_seconds` | minimum time between redraws (default 1.0). Points arriving in between are batched into the next frame. `0` redraws whenever new data arrives, as fast as rendering allows (roughly 0.15 s per frame at a few thousand points), and costs nothing while idle. | -| `max_cols`, `rows`, `cols` | grid shape; `max_cols=None` gives a near-square grid | -| `progress`, `desc` | disable the bundled tqdm bars, or give the single-loop form's bar a description | -| `cell_size`, `dpi` | size of each panel in inches, and PNG resolution | -| `record` | `True` keeps every rendered frame in `plot.frames`; a path such as `"run.gif"` also writes an animated GIF at `finish()`. `plot.save_gif(path, speedup=1.0)` does it on demand. Works outside a notebook too. | - -## Titles, labels, limits: matplotlib's names - -Panels and axes are addressed and configured with the setters you already know from matplotlib, before or during the loop: - ```python -plot = LivePlot(loader, "loss | acc", "lr") - -plot["acc"].set_ylim(0, 1) # plot[metric] is the y-axis holding that metric (left or right) -plot["acc"].set_ylabel("test accuracy") -plot["loss"].axhline(0.1, label="target", color="red") # extra kwargs go to the matplotlib artist - -plot.panels[0].set_title("training") # a panel: set_title, set_xlabel, set_xlim, set_smooth, axvline -plot.panels[0].set_xlim(0, 10_000) -plot.panels[0].axvline(label="lr drop") # at the current x - -plot.set(xlabel="examples", smooth=0.9) # on the plot itself: every panel, like Axes.set(**kwargs) -``` - -`plot[metric]` finds the right-hand axis too, so there is no separate spelling for it; `plot.panels[i].left` / `.right` name the two axes explicitly. Everything on an axis takes matplotlib's name and signature: `set_ylabel`, `set_ylim` (two arguments or a tuple), `set_yscale("log")`, `axhline`, `set(**kwargs)`, and the panel's own setters are reachable from it as they would be on an `Axes`. A setter called mid-run just triggers a re-layout on the next frame. - -The dict form, `{"metrics": ["acc"], "ylim": (0, 1), ...}`, is still accepted in the layout list but the setters are the intended way. - -`plot.figure()` returns a matplotlib Figure of the plot as it stands, built independently of the live renderer, for `fig.savefig(...)`, a title, or any other tweak. - -`plot.log` accepts keywords, an explicit step (`plot.log(step, loss=...)`), or a dict (`plot.log(step, {"loss": ...})`). Values can be anything `float()` accepts, including one-element tensors. `plot.data` holds the full history as `{metric: (steps, values)}` and `plot.latest` the most recent value of each. - -## Reference lines - -Matplotlib's `axhline` / `axvline`, on an axis, a panel, or the whole plot. Horizontal lines get a legend entry; extra kwargs go to the artist. +from liveplot import LivePlot -```python -plot["loss"].axhline(math.log(d_vocab), "uniform") # the level a curve should beat -plot["return"].axhline(500, "solved", color="green") -plot.axvline(label="lr drop") # every panel, at the current x -plot.panels[1].axvline(2000, "checkpoint", linestyle="-") # one panel, at a given x +plot = LivePlot(loader, "loss | acc", "lr") # wrap the loop like tqdm; "|" puts acc on a right-hand axis +plot["acc"].set_ylim(0, 1) # configure like matplotlib +for batch in plot: + loss, acc = train_step(batch) + plot.log(loss=loss, acc=acc, lr=lr) # log like wandb ``` -## Smoothing and log axes - -Per-step losses are noisy. `set_smooth(0.9)` draws each curve of a panel through wandb's default smoothing, the [time-weighted exponential moving average](https://docs.wandb.ai/models/app/features/panels/line-plot/smoothing), with the same 0 to 1 weight as wandb's smoothing slider and the raw values faded behind. On the plot it applies to every panel; `set_smooth(0)` turns it off. `set_yscale("log")` on an axis, a panel, or the plot gives log axes. - -```python -plot.set_smooth(0.9) -plot["loss"].set_yscale("log") -``` +It wraps iterables like tqdm, logs like wandb and is configured like matplotlib, so the names are ones you already know. Rendering happens in a separate process and the output is a plain image, so it behaves the same everywhere with no widgets or JavaScript, and interrupting a cell is safe. -## Credits +**[Documentation](https://arena-education.github.io/liveplot/)**: the [guide](https://arena-education.github.io/liveplot/guide/) (nested loops, the x-axis, reference lines, smoothing, recording GIFs), the [API](https://arena-education.github.io/liveplot/api/), and the [examples](https://arena-education.github.io/liveplot/examples/). The tour in [`examples/demo.py`](examples/demo.py) runs cell by cell in the interactive window or [in Colab](https://colab.research.google.com/github/ARENA-education/liveplot/blob/demo/examples/demo.ipynb). -The per-panel label/limit options and the grid-shape rule are adapted from Tyler Lum's [live_plotter](https://github.com/tylerlum/live_plotter) (MIT); see `THIRD_PARTY_LICENSES.md`. +MIT. Per-panel option names and the grid rule are adapted from Tyler Lum's [live_plotter](https://github.com/tylerlum/live_plotter); see `THIRD_PARTY_LICENSES.md`. diff --git a/docs/guide.md b/docs/guide.md new file mode 100644 index 0000000..6190ab9 --- /dev/null +++ b/docs/guide.md @@ -0,0 +1,117 @@ +# Guide + +The one-liner first, then everything it can grow into. + +```python +from liveplot import LivePlot + +plot = LivePlot(range(num_steps)) # a tqdm bar + a live plot +for step in plot: + loss, acc = train_step() + plot.log(loss=loss, acc=acc) # step is implicit; the bar's postfix shows the latest values +``` + +Metrics are discovered from what you log. With no layout given they all share one panel, with a legend. To split them up, give panel strings: + +```python +plot = LivePlot(range(num_steps), "loss", "return | entropy", "lossD lossG | acc") +``` + +Each string is one panel. Names separated by spaces share the left y-axis; names after a `|` go on a right-hand y-axis. Anything you log that no string mentions gets a panel of its own. Every panel has a legend. + +For nested loops, create the plot once and wrap the inner loop with `plot(...)`; the count, and so the x-axis, continues across epochs and you get one tqdm bar per epoch, as with tqdm: + +```python +plot = LivePlot("loss", "acc", total=epochs * len(loader)) +for epoch in range(epochs): + for imgs, labels in plot(loader, desc=f"epoch {epoch}"): # kwargs go to tqdm + plot.log(loss=train_step(imgs, labels)) + plot.log(acc=evaluate()) # metrics can have different cadences +plot.finish() # or wrap the whole thing in `with LivePlot(...) as plot:` +``` + +If you'd rather supply the x values yourself, use the context manager and pass the step to `log`: + +```python +with LivePlot("loss", "acc", total=num_steps) as plot: + for step in range(num_steps): + plot.log(step, loss=train_step()) +``` + +Already have a tqdm bar? Pass it as the iterable and it is reused instead of wrapped: `LivePlot(tqdm(loader), "loss")`. + +## Metrics logged at different rates + +Nothing special is needed. Every metric keeps its own list of `(x, value)` points, and each `log` call stamps its metrics with the current x. A metric logged every step gets a point per step; one logged every 50 steps, or once per epoch after the inner loop, gets a point wherever the count was at the time and is drawn as a line through those points. So in `"loss | eval_loss eval_acc"` the left axis fills in continuously while the right axis grows a point every 50 steps, all against the same x. + +## The x-axis + +It follows tqdm: the plot counts items consumed and never looks at their values. + + x = initial + n * unit_scale + +`n` is 0 inside the loop body for the first item, like `for step in range(N)`. `initial` shifts the start (`initial=1` for 1-based, `initial=10` to plot `range(10, 20)` at its values). `unit` and `unit_scale` relabel and rescale it: `unit="examples", unit_scale=batch_size` plots against examples seen, and the tqdm bar shows the same numbers. `total`, in items like tqdm's, fixes the x range; the single-loop form takes it from `len(iterable)`. An explicit `plot.log(step, ...)` uses that x for that call only, like wandb's `step=`. + +## How it works + +The training thread only appends numbers (about 40 µs per `log`). A separate render process owns the matplotlib figure, redraws it at most once per `refresh_seconds` (default 1; `0` means on every arrival), and sends back PNG bytes that get swapped into a fixed output cell. The output is a plain image, so it behaves identically in Jupyter, Colab, VS Code and Cursor: no widgets, no JavaScript, no CDN. + +Interrupting the cell is safe. Jupyter sends its interrupt to every process the kernel started; the render process ignores it, so you get a frozen plot with `plot.data` intact. A plot that is dropped without `finish()` shuts its process down when garbage collected, and the process exits by itself if the notebook kernel dies. + +## Options + +| | | +|---|---| +| `total`, `initial`, `unit`, `unit_scale` | tqdm's arguments, with tqdm's meaning; they define the x-axis (see above) | +| `refresh_seconds` | minimum time between redraws (default 1.0). Points arriving in between are batched into the next frame. `0` redraws whenever new data arrives, as fast as rendering allows (roughly 0.15 s per frame at a few thousand points), and costs nothing while idle. | +| `max_cols`, `rows`, `cols` | grid shape; `max_cols=None` gives a near-square grid | +| `progress`, `desc` | disable the bundled tqdm bars, or give the single-loop form's bar a description | +| `cell_size`, `dpi` | size of each panel in inches, and PNG resolution | +| `record` | `True` keeps every rendered frame in `plot.frames`; a path such as `"run.gif"` also writes an animated GIF at `finish()`. `plot.save_gif(path, speedup=1.0)` does it on demand. Works outside a notebook too. | + +## Titles, labels, limits: matplotlib's names + +Panels and axes are addressed and configured with the setters you already know from matplotlib, before or during the loop: + +```python +plot = LivePlot(loader, "loss | acc", "lr") + +plot["acc"].set_ylim(0, 1) # plot[metric] is the y-axis holding that metric (left or right) +plot["acc"].set_ylabel("test accuracy") +plot["loss"].axhline(0.1, label="target", color="red") # extra kwargs go to the matplotlib artist + +plot.panels[0].set_title("training") # a panel: set_title, set_xlabel, set_xlim, set_smooth, axvline +plot.panels[0].set_xlim(0, 10_000) +plot.panels[0].axvline(label="lr drop") # at the current x + +plot.set(xlabel="examples", smooth=0.9) # on the plot itself: every panel, like Axes.set(**kwargs) +``` + +`plot[metric]` finds the right-hand axis too, so there is no separate spelling for it; `plot.panels[i].left` / `.right` name the two axes explicitly. Everything on an axis takes matplotlib's name and signature: `set_ylabel`, `set_ylim` (two arguments or a tuple), `set_yscale("log")`, `axhline`, `set(**kwargs)`, and the panel's own setters are reachable from it as they would be on an `Axes`. A setter called mid-run just triggers a re-layout on the next frame. + +The dict form, `{"metrics": ["acc"], "ylim": (0, 1), ...}`, is still accepted in the layout list but the setters are the intended way. + +`plot.figure()` returns a matplotlib Figure of the plot as it stands, built independently of the live renderer, for `fig.savefig(...)`, a title, or any other tweak. + +`plot.log` accepts keywords, an explicit step (`plot.log(step, loss=...)`), or a dict (`plot.log(step, {"loss": ...})`). Values can be anything `float()` accepts, including one-element tensors. `plot.data` holds the full history as `{metric: (steps, values)}` and `plot.latest` the most recent value of each. + +## Reference lines + +Matplotlib's `axhline` / `axvline`, on an axis, a panel, or the whole plot. Horizontal lines get a legend entry; extra kwargs go to the artist. + +```python +plot["loss"].axhline(math.log(d_vocab), "uniform") # the level a curve should beat +plot["return"].axhline(500, "solved", color="green") +plot.axvline(label="lr drop") # every panel, at the current x +plot.panels[1].axvline(2000, "checkpoint", linestyle="-") # one panel, at a given x +``` + +## Smoothing and log axes + +Per-step losses are noisy. `set_smooth(0.9)` draws each curve of a panel through wandb's default smoothing, the [time-weighted exponential moving average](https://docs.wandb.ai/models/app/features/panels/line-plot/smoothing), with the same 0 to 1 weight as wandb's smoothing slider and the raw values faded behind. On the plot it applies to every panel; `set_smooth(0)` turns it off. `set_yscale("log")` on an axis, a panel, or the plot gives log axes. + +```python +plot.set_smooth(0.9) +plot["loss"].set_yscale("log") +``` + diff --git a/mkdocs.yml b/mkdocs.yml index ff00d07..c0dc746 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -5,6 +5,7 @@ repo_url: https://github.com/ARENA-education/liveplot docs_dir: docs nav: - Home: index.md + - Guide: guide.md - API: api.md - Examples: examples.md theme: