From 612d4a47a77c066433f7f7385488f447796c5ef0 Mon Sep 17 00:00:00 2001 From: Omri Levy Date: Mon, 3 Jun 2024 10:41:46 +0300 Subject: [PATCH] replaced schema types with generics --- ballerine-nestjs-typebox.tgz | Bin 0 -> 65497 bytes src/decorators.ts | 13 ++++++--- src/types.ts | 53 ++++++++++++++++++++--------------- 3 files changed, 39 insertions(+), 27 deletions(-) create mode 100644 ballerine-nestjs-typebox.tgz diff --git a/ballerine-nestjs-typebox.tgz b/ballerine-nestjs-typebox.tgz new file mode 100644 index 0000000000000000000000000000000000000000..48e3597d374169ebd9b9111ddd2c73ab2e24832d GIT binary patch literal 65497 zcmV)`Kz_d;iwFP!000006YRZxTidwOIDG%jr_kY?>yVsH%scHup=(0ua<(lj(6hfj z9PX}TD~Z6dy|x3SUB3Hsjb1ESc1Y63j=ML$E=Xd_Go#UHG#ZUYfo0!XJ-qt%q}6_Z z(f*$zuC=wbovkedpKEJt`sdol+V(bD+uYt+TVLPVS=&PJx$y%1&srhWXxA``t?+-= zz8RNZx$oq9cXEl|5*vFFURrAT!6+oXevE2%9c`>_Y#`HfLVS-d2E@gqrKK|*4oDOc z-$NuqeH`M>2=zkCi?P!{-4J8scahz;xdn?4q@*HGEk#7?##tw3PdpN*eY{h`DOI#eGTHMEI`GUW(T&GAJY`IIs zL-0&ILiZ%@`@V$wkiY+fDmWu*Er1G9=n=6M^PT%fb_)Bl_twU5xUd4WzYmK*4|lgpn^KU|{U%=2^e{pCk=dW_8XAJH!- z?~fX&{r}F++ZPw;^nB^$-Pzld_E7_!yl=hzaCGwi4LbaAiQb=HqPHjSPA=O==<*Z+ zLJsPreF4DUwa;5Wo9{2p!;`lsmmeET$0wKX0p{`PIWp0id474)`ta5~M`s_-&rUDe z$b5f<-k-idd4GI<^8QWxUHko|fll6|_ot}+pZ5Dpbn&zK_AQ`VGCy4Ye0mP_q1Nfy z$McgnKVPDsPv0K3&o9tn8@)X-58t*Ks`npJ>#ce6u7QrscjlWmee3k{=l1y$6l2t( z-+pexEx>2KM`r8tX+9^QN3W>A3DDAgjT=k)i7i*^DK9ktE3C-2`}z{^lYQP^0tvU6DHrhJ(Ar!)Ku% z;4mK5@B`@gsDYM0eZtW@-x<1ixq-f*JIfv7T@;5yj2`QIOT3`*a~ub4&k20u#b_Ui z+yAj#;#e_OZgqylbuR2a9$5UTA1aSYlzn#R69=vBE!n;o#mM#t1K<0!j`mTA{}_@G z*Oq_sa1`G}tL)iwU6%Feh!uUhiJp36H7RJ^MDq2}AIA7oV1?Eo9tAl1guUTl5-2DW ztK(Fr-0*!7<n7ET*Lz!rmz1b9R8gMrSI=Z)dJsjqP;t$6# zY2%4kn99g!6;!h0KWHc;FeWS#uJXsSymfPzE^FP~sl2gqK<$eRM~qeZFhv3JVjRK~ zKg@eeeVlqPm+!`EhN;%g9ok18zGt)>=FMHLzPGfxig4r-FK#*{vN|qqdiWu3y2Qii zC))IONP@V@3axs66F&qlu}R#tywOs3=utxzWdy$lFW1qRC4>+PaXbt?%4PJ=f6`Ad zyx`~l{ytjqX*XWco*8#Z|ARsT*UH|~w19{c}Hw3qx26`0rBwbYdn_6+W;(qAgQ_i=;&<|@Xl2&TOdOfrZ z?<^ZD^*#F5qXY)1o&xr}1SUAT{Esj2`M8{b2O!4pS>TD(8&KCbLo0NQ6VALEV@7>S z*{Tu1J8vJ`w`d<^(y;wOKwK;k@2Qd_Y2a;?{HAS@ z{G#yWPa!}xP&B8Z8HUzKtq@!;j?qozd#u`fnP)-h+c=7_b0lG)eWXB4zXP0A1PJ~4 zXI6xC8U!u?ngddRrH>2}(a%(!@&LjmD~9$(JCGO;BJ}z-`tq1X16M-DQ`M9$sb1KP z@bsiiMt`N?zn+EwCRPcjSrhD|n#68c-srRo^;hq?F1vRnZ(i4p5IaK~*J^&}MremR z+CLam!>%7f(*prlLFfk!19BwG&=ZNui^pAg{3NG4D zQ#?x-q$*Y)WTZAwl$x}!BHH~|p5mlN-gwq&2pHGK@GDz`?42>=>-ez_y;g>ZU4`&9 zP3qFPfMxl()Q$z5{F|`s^7zFx;3P!U4#`DV&vsp|RP#!w@kskin_+-8&uuZ{du{Qs z#u|tcV_-1ZBBh}onVs~gn$u&Zw|Tb}qgu?9Yj@&d%lEpZrNL{5n!ORjGYe~>hwOzuxZ4gee~qqW*qEH*L;n>aJz3T zyK+?8*s^;$q{|j*`3^8^V{J`NE}zOwX@3dj~_=2v~=D6NPUpV=aE0196G8J=mi$|)lAZ1}p*LiJp{jhD>{hF>UVXe=> z4>|LT=$^!OAL%a`x}za!MJvK+rQMvO_%N3?W-x>YhKmlQssjKUmgz8&_ zEA45?$jungX9Nr%XgQ%JcbV%Kc$<_;+)Fj4D$$tfFdvIRhY9DcVMP(?c~YH2nZ^?i zSK}NWok@S{;px#w-r@~ueNetqHaF6>8B_0Rgni5q$tWH-Q0AkXV>cBSa5eGw8fHL1 z*6OuPr%MUJSVJP8>`sWS+o_xfwBykBo4x0#=6IsCg});`8X0`lt1qNarM#Pp_GYyH zb-LJ@d2YT-`k1afnP#bUcgyq*S~=((K>Y5QDhYE%e=3~YrS+pfhB%yQ1nOFD^xToE z*O7kx&_4h8m+DBrf@m(LBc*$b{H2NupD#-|d)b+~vNkQgilshS_JkGfBM}|(&I&-p zD3CYp%UvlOZ*a`K0B5Hc>isi65)aJF*3aq_E4KUW(NX(t`?9S(JHjrG`D)DBhZMYF z+*o=P1ZvCeHJi`u63bU82WEpda%V_^755WqV-jcuATC&Eygc3r3#{KyEP5d|)ZYb&cO+3Bv)C2owvT7-Mh7!mFn5N#4izmd3KTiIR7 z@m?7ND-bUvJqq3oao}1uuC4y>Zq4{t{lEWx{g2fKTKUKNN?mrIUGz67i#>Tww&RmIY+B_@)}Sn&HqwIXFlCC`v!?LHrEL9itH)N>ekr>+o_ zX9%pEShEBP@n)*iV~(_QE}bPZF`;#(N1Pe?)Y~hC$cX#_t_4sw5R$-ULYGM3u8uvA zTNzHB>&=Nm+{GdGY#bra_nP>DL^1Yag_StQbcJ0<$hn$fo-(Q=-;_|fU>Nmly3aPL z;bY2Wn=&MVz#SzzGOE`M!;oO>d!XRQL{zCiA?W1qDDsD)jo(>8K)l|E^SAq{SUylH z`SD+=_`g&v&HQ4_CdU8oZ0hlUn`@iT@qcApg~b2mFQ0sE?4D~y5gG%MEe1rgQyp3k zR|&F^VgxbcmM`S+B^*V~@aQ!^c#H3_OH~Y;1nKVhp+|fV6o>v86j>H7N)NiU01UYK zB@y!tIli|7rWFp{5lm<9a2R2RnZF33|1740gYT zz~CYO5i`|tOceCwdU(PC;}(zZ{m|jj6dpe9u0Z%s&O;hQGIl*xp`Gg5EX`Am;OS;n zKuw|UqhWxgk$Q1}qsZ#vUG%#YY1Fld ziyc(s(Ps7E)95nEznRK$031#t$UV*LQiP#(!{^Sn+%Z|H+W5b@^F02Sa}_fFQ_J?436m1dj|UcU+3k!iFl)p(g>{a5_yO&sRpW>M{$%{{ zU&HueHB}%%Cj5NN2{^>Y0Q@dB38jwyw!e?Oq3g`x#3Tvg2$Cg#XqwGHHxg{(nu1_LEdtL{VuErGydxBo0nh0j9`3*E^pxXwz z-B82&Z#T3EOayljUk?E~z+H>>MXYZR$EPd|0#wpb;>xW7@Va#S{f)i`BrW%Fyv#y& zBOAR&e;XK5eL$9aO-3GbeFHC^l-e3lIqs! z8VsH653X*n_aM4Kbp+&VSRdHKJl)X$A)fdfIp|;AZb0B6C1Qzs09oTQ&2kZ2VNT1+ zhqPG}5(bH?5){zc3_zrjxPv@63S9{-BA{b-t3q=ufZd}goGG%sG9$>>Sw z_M>FfVGKb{v<~}v4%q&lW|NJsPO9t`xn@+<1m~Pu2sO6R0somIfj&#!tJ6jdQyT-> z%m4f*3gKV=Fsp%W0EkB+J0f5^M|Q*`O?GY@=uWk3W@{jcPj4VrA-xLDIi5;EURzpH(U4ck6lNr$NT6ol~MCR$CN$>LHBbM{JWR@B}S>_B*$OU%dr zR2i}JfwrcI;80!q$)ofRTM`+`6G~#~Uen`t#s*h&YT=!qDNSLmp4pRua-*?o zDiv2N8*6JT*Hjy5x7XS2FOT&rwg>V$yKeh8V1XtP*^T6N8E>7tX;1{|WVUam9r?Ui zP9&GMZ|YGlz&=jfS)X`12M}mq8Cz>tl(^J_@QDWsiOxK0b>`ZaTC=w7U1Xi?nW1}W#8)InqVGXt&r%g^?3xN z+VRk{SFTw$ocxeYUM(KnuI>1x0c)a2EqABcEGA7Z8A-UY%6+zyL#xw3S5NaGe+L{d zP2Z)FYS+AqhMxUHNe@H|CgIK!%v@xEF72h7es5lVWN!U~Z+TEdy>qow_U0HnNgpG> zb3-XL{tNf-oN-KA|6kwU$*lkFJdgjSTyq`&b32R>s_(p`{6()+|K|%j^Tsiu|8KAF ztm*xKoj#v8A$iwx|DV78|A7T;hL9Wj!XKy!Ki>~smoB)=Tkot<2a7y4;^q;F;xj^% z*{QcqAz8M(m5<{siE(JTl!{a`(bLY2@>}N3P;Vxi5VJS^_rpOaXD$O8ZbIM^{ZxIn z8bEN4HK-%9ht&iwB3A+Tdf!=YDqNXv4D~3GmEAleltV1EcR-?j#A-}Q$a)glLxV)e#3Qhm;wevI ze${Bjo^l{+yKWz~3h<eLL*qm%$61@Iqx_MuK<&Sfc1@|gpg4*{ z15P6_B@+H3b2~uVnK@$tS_+bjhXr}&BOL?)3^95bQ58+?O83wQSf-kx`dso zzD9`pQ_z}Ly*06m_ZE+)CAj4e0zZO&ex=?96`ulEZ=_!1h-;~P#J)|xQ@GM1i8bgGZI4HKpi+*!jEtS zLgsrt*upUiutTZiEK~-xui;;YQDbVXpb=m96bkq#`!y6~*!~0s9F6!YC`b+d2`m+R zR>rSHG4&BkY{!#|rW!xj&X7L@C5mM-kq)sxvo8DRA;G5_PA2Bf2$H;xJO zzs>cXjQ?kSed~GtSH=YzWEq^q%e!c~W4SI4i3bi_Sa)fPZ5OZ@z08M0D7a~?8Ee$5 zYrJF+MRE;ZfZeo)ao-Q&cj_1^^yN;*)Po%mkhA=Ny~@v0f_LAY zT(Wxui%{UHy$b9RTMth^bBvfjrAJ3C?;^J5z8r=2GFx7!#g~^5y5>l|xEaM(4?D|Z z2C!_beu+Z60T#jI>c9TA`Y!-0U?H^3yx6GO?2?CNdh>dTX9HahFblS>CBXEa3CYS%a1Kr|@Hv%h+ zl6Fywvd5gOTU+{rCfk(I3_={ogai1|SkIJWq%_F@25iCS7m`ouVkvOjS$ae{?$v10 zwI0v_5$E2z6utBt5g7z7=5#b8K@4rQ1WA7w-Hv#j6(LUd!R7y5-!?YnODUQ+Rd9;1 zzLd=-+kn?{-Pn;L%MWs6iHM}YS~esOh8Ji7TfV?IEi1Z2)sUb`sUV79Fqk%(MU^hl z)Lx_UZ_OmANou4J(B<>G8piNgZns!yA zAgLQ;lhSW#su}c9U?_t49Af(y6_%pTT;1*Yi{{=lO6y|@IrGk81dR+9V_k4+K z{P|z=v(}%s|JGk@Zs_*k_S*Jy{C_Fe7irdQHmISryt|x^jA<;h3EjEx$IH9R$?s@+ z_iEWNR-v0KZ^Y5^b%UCeP~f_;JYW;SXnA*eZ*R{uO|!AlGR@J?d#2g?{Bz^wk!g;O z>5t>a*0E{!=#Tz!W9`^92lR(`+}LTE=2jbiY_}VJ+cbYTf*-3#jUQU3`3HRxwi`Q# zrnz>wXPWKx!^QwW(_){G8p9*g>_M@Q{dQy6GR?IkTI{It&NSaO-k9ba_V2_rPZ}5S zt!J9U(bBYiTc$ZURFI4Jf+PAINcfpPhHvjFO8E9~3K71&RqF5?H1^&{v-O!X z<%4Nr2J)lX3iwSf6O<6z@Vr3#j&q*gRGBI{(mOO;UMuMaOtk3jw!kTwBr4dFXcSQX zq1k$I$b^~FBAGxzXhHzR`z=6vp_2|oZF5TgI22Im8~@IOPoD&b3M`Gt1nQ4U{dh~# zmVcATQqmU{qVw))g7j>medND3q?=)DB5(h{;3_8N`e8Bxm<6iZ!kQ7jGq{xpPgS5W3b!fI?P9c?dt$ip6sNY_%1uxOBTZd-*=4hPWXwe== zE08Bpn(mj(0#ZWxUFdN>V5#7pC!w2E?R{Wu&Z`pzHjWHQ%bn6HZ{^pc+~%gp6RK## z-*8x?!=weIx~0M_m4s##q(x%;36y$$HIQ0W6WYQf*@=`6bCen}o>uSUdhUdKVu-pq zP6nf+)L@lJoNf@MhbEVgnjgWG(I82}rBOuRGTW>w>g|ta>&21MOQIIFG&CMcklFzL zE43==*I!@|YH?%jz4+!GA2s|Vb8wup*7!*NYkUYgVbrDuV_VnXQrXjQA9yqKQQ}v# zwR))ZYFaR_scxC+Ax9edJa0Hrt)jMfEbQH1sl7`DZYKfQYWQGxD++)<6xN?4TWFJy zDc-fcH%d)qGY=0d-+0S#v>b{Q?d*2-xQ*?N*5Iat!4(l$xz z^x`;ITvfd+Q9P}olUi)HMSlPcLNi0>I%PGlH1QaI(eJZ&>sl0Uzh zyCkHjjLoH{8rD;@fZLC*qQqrHXj}=VuXr7V&%$?=krhX6@U= zlzE$D5dW-ARAHJDtKy)}bo$3fjjcnoCuTa77-d2UFMmE%DEr87o-1{>!0mYgJx?~0 z4Gz!~utZZFc?b6#9bPM$5SnJ2+e^}1ZkZPk)OL;9)M{q!K&z#4Pkzf-+PPK?=Qm6U z2I>SwIwDWZc6^+kpom$f+BY@xF6*>lLp+xu&7h@^!BhT`J?7+S%?gz88KX9@{uNlK zxr$_8mGdwmJDZ0&Gp>_8a!98mvTsYL9g&u*W>rf;miMIOYF&zAQ19l!Y31~?tV>>< zDQMi*I+%P{@?J*0&qmM|_%tuww4k)Yd5+7EbV^E}@LHs$%*$`kog>rSITEjo z!wAr~-)I8{oBHO}NU~0TQ`Hc7(uGDkN?2slR>Vw$$+>E3$XRctey_KF0~99f%DqE# zt#x;}{2X60^)>$dm$KqN*4DSyv+*B0&-*`1xpLz_(n)QniT_aEm^S`{Kq$s9H&mTl z)OHzC{rxLglIDQMAZ#A7j(w8yV((BLwBAmSnzx5(d**X1ZK7DI$L+qlf|{~zE|qax zjzU_w9$Tl~I5N$RBj%<%(ievF7Mi4nmnvA=a#CAnS8l`-9L3z$)i~9m+JH0mX?jHc zoUg<4=u4{ppnN|XzkHY)KUNQO$B(2SlsQ)Hqk(kk!VC)@yQ(d!28Pf{#z)PR2eS4q zXgj3_pELHYWw!pkXPWWhQRDu|j1F7>7srh;=YPy~tInkSA3JM${{OAbt(|B6U&fWI z|CJ2o(YLUv3dgO-Sk^&{t|~k!iMGq^;Fs%~)+O-d4>$|6|S@^(OWI z&2|0!pRKjE?dSeq#+BRu<=(0(dOs^Xq3@?Ist9f&8kcsGek=V0RK(69?LLPPKVja| zCvL0p#}POhXh5t8Hh>?Shm9===UsSb`VOzB^8e3E4NRKmF zK5=9^HK4pRtu{y|gIhGpfBTrm<&T&F(2`O9?Nu7~ZvH`C`(cX)_WSVU%?mo|cqbyy z-mRb1=DlC(9h-=OT9#67jGE?=FR=149C5db2> z(Uhr=7D&n;w8FzA67)?YClVCqFK4<9B8x~Wr16m(^&-8MT0D*BP5nrt6SUPrZNeuF zD*E!+2YHK8>g2EeLW{dJ8>A(Ifz-OCXW0Fg##+{wZwF&gEW-CYsBZ^7r zNwSXB;!%9&o@w43er(**70^8h3*0=E;&gP!YrrO`Z=mV^XqoNkka|%s_THFBtA}zc z1UbB`?$q+h{Lgb504D2yJ^$PG*5<~u{x9Ro)&H5pqox@E(l1S%3%1P0A8$-^2NZw% z#j(`ruq%c|EWwibt=NmiBc4t~z|${uKoD!37cx?wtz>|DXQ~ih3EKJ!oAxqS9}Hun z`^A({1b)8cWs_p<_2VSA^50@A*gB&xfOo5_ucfHVEaNHuzYauizbb(RI+KZ#7#Z04=PEC>>gWHEkjoy*DRb|g&ZvNkr=l|Myw zIU&2bOO$!LSJMvw$)>s~@*{+^X&YnnLVBM32T=PhW&5A@_+t|JD5)8@m5DBY9x98~ z+JspCOV6>x!`XN>MXf&46bRz$QL?rDKS`yJCe&FPw+Um_U3{t1JQh(waH3A`GuwyF zWcM)t=^gTQ87h#shvwk$^Pv($Dp#lkQ$8j!g&)&m`s0zZJ6a2`OxGChIl1zb#B$n7 zB$SL&)I$3NERXJvI?*e8LIb}*>t~z4hGQ!|poT7WYVrMB0N7PqL-HqQ zpA!40#Yv|Y_40)4RucZXoud3WO?f*-xeT07sTC!_QSY*HU#_;voue~<yB0oqWoKzz%jb>lWPxJ$=2JXj=`Z`M{Ps!Z#k1bZLgTDa$aqx1)ym? zO?yDfm^Z24?|)0J4Zn*iKaLxtH>NpyL)W3W3YJ?vTHv`5%wgF7IMf87o$w|+(Rnkr z24hIx&RS4*adrkL{SHrIbn=@zpGHcPvI zlE=@dDQ*3z(viyGGCld4za@ugLHW_mQHsSax{k8-bCRk^bw2$ZDZgRfMY`bx6Kz@ z`ugw2`g8n8IoID&Iv?cH(j}bQ?UGJtg(DP%{vB~}g!m&HDM_<+{kvT1Qs2WO>MPV;p)G zO|KvONXwJC%6`Ym))K`c%XR&GAn-K6o_ThHdf0=b zoFVf%p!2<$ctect{qUA}J!5I<0R8>%e@DMrp+~&l(!tUJG9x%3V8eK5(6gKq){zJe zJqL$9pR&lNb#U+wSrhjp?xVPm(Wdc$LhNEI!p718RO;S} z;6y^=UNrJL_E~B?)(rawNNk&u{_;y z=^!cBK+qOA11o_uupEp?j3BdX6cNZ;AN!)|F`Q%^xcC9lyz_`T2A7up{&#c&2U@!> zW$e<@@4x>Z^_RS0fQTl2D3hoc3R4gtBCCht+uzZ;fm$I3gj}rnae>e}mwk-zg9UV; z4tD)}CJTWX>yh);6bhUC!dRFMKT(hT-9La## zp>Ov|kj7LWgKFgh+aZqSYlxj_W1#nbj3Ve?R9_J6#VZU^V+qcvO7o;;#mQNg`k^HB ztrXK3rCGiqezYhjU7WG9Vq5V_T{58)Vk|h!4~s~bkNSQX_bn2x)EgS80K9aTmwgZs z@VeoZ`gL70^g2_~BfnQ*MIFC4V?{~FY7%dlQ&Hb{T%5h{Sav_^4?Sm6O_Pd0x9fsq!W zzIBITI71zb>DjZyqk4!Qx(ee%2XtCIVkgts{?K*M%`l3Q6(MXz#2tYO67OL*!uNd~ zVi+7e2Zb2ann5c?&sPnhxQDwWh9QLw@<06?$3fe30w2;p`*%1*KP6}7!f*&`&2k*V z&Q3`z2H#scK-la0p$%XHEAAtD$UTm67(q7%V4HLa)7-y{@$7fN4Mfv%+#S(M z${HnY_Z6BsDapa%21;>Hyqg{#L8brHO2iGcLL9Bs6ZwZR3FK84;kmqN&j^QbSZ*x{ z$sLGoh%LwW+z}}33wEUTE){n6y^g*-F432NdV}K{JMc`@9xM7F#8KdT5#B{#_*ln# zK0A>|9#xcdqz1ZLN%Z#0HJm~PrziyMha_SGBL|z zYH_R)N0Y}hKbo$G%}Fpwm!J89JU7nHRgdcjul(G^mw&bXEPc}5!Da! zrWh0SgCW1NZJubKuj^wfkEd!Wag5#=vWWwVS%-Qpe?DrR7J7>xI+)He=?qCXi_}4V zFr;T#hKzlV7-%T~7Eyxyt^mEvIi-&94L-q#F?pGvP~t3W_7O4@Yr`GsQ%zMpfIV=J ztQd8CKOP3qK@?)8HARWcA&28dj_<9g^%C%tdHoYmLF}{&D1BrYI9$S|#%UndUwBi# z()!Ib9Y+Prz|Gisj@obAm+gi2p0DXF;{=&8+rci@nLPzF)z=a>KFUeMrh&{L0E;Ve zNO8Z@s+jFxFpths+OGs2mk5SM*Y}{5hv9%4Fv4RWg}6r|7@;h0gw$Oat1!Anjim$B zbN!CxBJlqRvpBI?S6307t7XK|lC(Xn-%o9UZex zp==u0@gM$^So>!Lye<6prSRRINXnnEepgq;aD{{qPjlV*p>T^WWoZLLP=#R+qu3v$ z{50$YW5o8fCZNEY8ip`sb4Q3;&C3{0EL%2~)Y?+`OooyZ96_ak`zc5aRyI$yf&lF! z>)s+U^_U)8!0-_t%W7s2u#>g{Bo$3s(h35@h4%Jpn`>)pT+9HX?_$ICd$r#|#)!?F zm?T2s(DUdt(%VJ<_#&b7aQq>3YxT$9=_!v(3Z2SCw-sWCfNTf}WwPtwklbO1wNs8y zHzX08(ZPvYtQ9}|4g-1VJO0vA6QN}CgZxf}!#jEkrr# zI{$Datl9|Gh=C10FMe+g@YRaYGAq}O)P1J>R<7$58Fv_`j3DAE_9PBNu!W(laJ(u` zZ|ub+#E9C^h#mL)8r6sw#n^J7Clk*hcf=X8nePxs46WVA_N_KpTA+ww-Vox*cY)7z zQfymZLM7F2>crKG^-cFR07xOUiL^BqWHPsn$U6Xm3hxH_$m7x7qXP(x;Qci678Ox$_;(pwL&a)H;FW;HD+E|-l)FI>Q5pa^LTLd)HJR1t4qOg zdcK|$i557hec=le;!Iv;7MOrX(m2>X{Pq+4yP*wf*W+r#Yv+ zk|JYT^3~-*w)G?BtvtE7y3R-zb-9VRYKCE0VGouY48zD3xmOvS2Mq+Td84cAYkK1I zS?CW)gkN!gaHaxRE39Q!t`82-pJG$ z!9mUD&G>{8e08C7Q)kKnC2YFpoU{HHjc?di>wmUfa&(|5)FAj{hj-O2&UW zjY)(pY9K3$NY8u6tk7+KV}Pwvoo0D4AI;@7)*r^0 zdXJe)Y0T@`8xEq?5DGVgq_hFIHGoVF(S;4cm~lX1?h>uC7n;JRH~7v96{Z=GL*E%S z;LB;iqfh8BN;&=ZE1gy7nD`7>1$NYKot~S($#JEbr9X~inia^V>FocTp%psQEozxJ zcS%9(<_;$A>NDvIXp6LgidmLQKBz*S#$#aUIZSkGl}?wRvRG*W-D;&bPdhj4OTG!K zKGLmF{w&{=r4My;Ht(idK65kIu1$DnTLFnJh%r*l$Oa{eZo(Bc1Q$Mc6ttclP)ypoO$i}P5b~32@*FgZzRl-Z!@uZI|@G>6#C~s5nr&U zKlk_d(F&V}uV~MVBwmRY5|pe^FNjXwtR_39i<<598#mp#lSZ2F>|w@)Pr_{)OTx!V zP5Gs7GvztENEg-q2DGWZOy>HA25y6YqqZWMJRlKW*k>nB8!KtoFog!RJ_YS}2~D)j z@;|=7=i_n$AAlIY=Ri-?j&Z`Jq{bLppAzTtKfVC)$7O^c0&K?+0G5s!)A2H?XHJ=Y zkbZDy1;kB^!Gx&?f)?(d62xI^?P4m^Y240|`#S9X$ z@BoFJdLD4NWL43=Xf_h#L4;nvMqeKHa$ia)((9}je5BDX)1#h@?n=RTor5sT7bbNH zn;HN2QLQHN!xZMU3pG~nxh}hRC2w9s>@0}H)pgwnu`{%BEtlk)-?^c(^NRVr4}_Zx$L|+AeyHc;KLey9U#ByJ&^W(@8bR1*ZWxVW_IBft}j`L z^_(6-nF&3JpnbHqhX{HlWyx@{*Ngjmi2U%wIHs|NpqA*qeDjLr2p-}+kPiB6rTnR; zV31R41Uf+`DhApV?NZ$1`Kt&GG%al|AYg(h0J-UIAtYmepN3`8HPm_%shz`N9o$qp zO}|oHkiwb#7+-Oe-{W)UE)``;aa>g?p!#gU~aYGLHs*(rVX$(QS zzGLt+QaGmX^Zf$agmWCKjADJQ#6ORDDQ83(TUN7Vc%$T~bGh1r_R+@LTGkvD!vWf- zvA5X*S(|QLNsqPC@BjEBTkTQs^Y?6d!!XziNqW3_QYvy<4(;bUVrpL`0(IeY?Aj;~ z4od<;(4%gX&#A*AI)pH7!baw#-%1y)VV<3QI&WW`oxZpOmy9Y%*h! zr+U<1x{<$ReX<4Js>gaLIREG~`>D8MW+->OVA;#h9(MR6m4QWDBzOvZC zG|^+KH%88L2Tn%ExZ!h5mFCzd#l;t0YS|vfI+fbo^|6M;725>-^3ouh4h+Kw2GpeMR?I)r4yZ*=jOYl7wPJe>5j#9s66;$X|X0Er}K#x z#*F?{gd>&MLugdxEIp)axzTeMsY)05^+WsoOf{=68iQcp?cWEpK{dIPFakQSbEfVVW)Pp?jz=<$%dJwyfm|hnyskj^2$Np;{5mRwaE!#o9MFP6?@WOlPLqv z8nOI2hj6x~Y5g_HEJLVpX74xhrnNK%KG6R9!5Fg7ZSuK%F&F=Ptzf|MQ(nCLgGPvO&wx0%IQosm{o2azN+G?i;xCBZt)=#i*S}? zGk{=(G^)pC2yGEj5LR~MbrPJQURfU!6CRa3Lz+VS+!zAMlIT;vUb$YxrdM=fL`snn`2$=Fpll#SfeS@lBM{iDW6xt( zhE?Z!d!i82ydO4(-F#jXKhT|Av6k}!_^Bi0Y|U^_u?{5HltA8K81-xaQEWP_?0EP45v)My6C|oTv6+v1B%5qJ@QRo=0>x;|+81rATP--JH8@q5hRp53rZL zq3fbQl>if%RV})y3c1w%AE`s!=ZIs{`Cl(y=;uFdt#7YC_y01kr}{se@4(z~IBxI6 zbh==6Wspv3RTV9u7=6qrjs4&)?6PiiFbV)RsZ>IG*c&wABv^IPE>AU(6iiJ9c`%G- zW-7BIS^#E7`6UtaSFnU64#tpnA`UG$>;vhIY`eZ5zd`sNZPse3|8y@ z0ejCNbVrGep@1Q>ud<1AT@BF7gUle@;?cbyIy}PD!>8R92tv+zNMm8gMt~`FQu8-U z-&E78bmJn~?*R@4=A<${!m24+UVv_&S?LTpl`#g=mY0m%J-p-u=wfU_7OSy7)2h-Fh zETzdVVhaI6TT$0z$M;=qd1Lk#s|itdQH{QF=M(37_E^D7wf{u-pKIrzqW^DZ?7z*e z&7J4|U&fVKZ>+zwPf+8%$qYQWXq9RHBvAwJF5gh7aS{gr3R+ z1Lr(oI9(~qP|PL>^7I2v-Co8~oIKiLpJq=SGH78tXe!zz#7SNK`qRjT-k??peT z#*$Kc{8zgF9L<1<>pxq1|KHkPe;)r!xu)&^Cmt+nfB+Y(3%)gh)p%W!6d71S>e;Fv zu*A_(Dp6G?F_E%Tr5j00KS}=7wDVZLNnPb1+>)c8lG9q|siLwe&*4R*Pv5E4X~1?m zw+Ms?vRo8-8AO=-M#N4+)HX!rLl*UsKth$hcfKf6HdCO7M-%tsx?}bJHT^Y=PkAb3*iUau+e`&*eZU*2a`)_SW_y2CMuRpKxzb10SpFYt86JbAGZ1*9ENX@___NLIYE7}i%>xZ!4 z&P1lbL`f>d zNWXE8yU|5#*|&UGQ+huPV7Xc$(Oc{D2qf}&=-DgRG>$7{Td|sRK?0+aHvwB46f&*M zz15f5Rsr#LEkBjQ7;`U|nq+UD+N=g$wxqRcper@Af7Hk8v?F*RgFj$ z1C&mUN=qiY1KCEr8RZM@>r%Bhudei!-H31Jt%eijJHAr(KXa;=z5ctiv$3YH|7>qO z=YKEdN=N2uS=^_z1I*lAm=ki9bBsyC@#H+}2D*fuzYTQB&$WYZ#J-*BXc~F2?y(rq z(jm#}sn4eC{(?u*tIGq(3Xp^q^T7hWM(qb0&HCyVkNhsWY@lc~==kmd+C?6|!(kd6 zWK_LG`zZ0EKw>f54;`LowSg`V(r@T{WhD&>_4}X(0TkayzRQ!XHu%ZN@#q&k5>Yki zPfnq_(VU%u=bZ84N6CX%m+btB@sH7;eCEfAraq>wW#cFJ36IN?4NRVJ%E;L4d`U*@ z{mEr!K6-=#&3|-|-j$vs@pL;neHjwVte`*n#zT78OEKNGi1-YB)zS;EK>6(h8V>>tKPoDgE7wPZhR!L*fp%vlr3Eoqcd9Bw* z$>;HUS4PRAycBDC0pNtziemq)UXD(TF(jNROb@QMOI}37ZJ*oFR)u7_h zQ=EIc*+J{QRui#J6mo?Z%5Hp(xGQBK=tn?6tS!#|bZV_h_9D>|h~6*ySBp8xS~6ED^O&!+#S$A7-q*wOv}o9mmK&-4E>uK%m^|9LwAzQO}A z>q%N2%cDo3M~xZI*_z$I@HLLzgfwPcr9Bip?(PXM1uZe1r($VZSH*0;3Z|SVJ1l6q zLY)>I!@L|9jivviu8U{i#k23?yYgN9)tnc9HSa~0-4}E7Ur^|OPVi#zLQi`#c%gE< z864RppGHz_qF-Zfj*ZEljVDcyZ!~*;L|`#jxXCquVlJ=e!woA zJ-Ul7D4bSO^3}z`7-;mM)?I#3uS$g9xq$@B^xWr^il!}c+GVF&D1IK1YOaAy+tzh9 z&p?-Ueq9l-i$nBQ13}ZSvq$F{=-24APQrPEngph;$kMB~2h<&J+V+@=^MVxAF3PFL z0ZSvpljvVwH;~UH_w{aCl9{`R0(zx$=U^P)6~Rnl=Uw0x6X@DFf+OK9$M@V3t=un@Dwi6TVVE3Kt0NM{Fy5xClpVHv~sxLNGq8Gsze-B_l}tuzr0oMn>wg)MXkiw0jPd zXQTAP#!S?sKhcMcF;xIyUs;XxxcutFMqzdPusM5u;os&Hl?JHuthj!2vs7+;*!oHi z!N08uYy$9wvr50Y^~}HToPQs-zlEppZ+i;H0-nV%SHHPkNsfQm`Q}!De>+n)1t6?Y zbLcmBzMD4s@M1pg2LE2n(0G7(ng&b-DXFcP^I&7#gUxXdw#Gf!9`|5p+=CbJVClPU z^A9iQCeRRBJaV=L{b**Ypdd=#{W_G@BG96Ci#E2*Iuk^{@;xk&*%S? zbA65fS6SD|c!Twz!Erv}uXhTkb3v!Q!92h8lkVW;q0CVv&b9|EeiwYcsiQvV5yUK@ zV`VpQqc=x_UZZz#_(j+CSt6i1qDRB-X`nbI`LOORH#w9Ky+-S37p>_4m=`p29x_jO z1S`~(SV}_nEIanlAki`L2pkHRo2lr@s?my#I|Tz}4|smmD!>vyWGcW<$E5X##NQ%U zg35uh&>xr5T-?hZN-O>RbR*?>NB;yFnL;|)ZO*;?mQITHm#%QMTj9u%MOQbVAyUg5yUOB*Sn3do;Nc8M-bdj!J12&TlD<~G;Dr#%x9Jx{XmP$E zl4g>+5(2IFElVN0;}=3QjZF_nr^RI24~B;x1DhNiPRns3`H|sundXC2LVr`45Ybe6 zHC3&@pR?pL*}DIB)_){5x?qBxA8{rxWD!zdb9x0prrt^z~^>-Qn)3}bSK zQD-D{MFVw)F>?I~Q-Sfl9-IRO(bE)nx)HusM{pyrl^d3qs#S2AhP@Cgcl0wXuW&!kS7EkhJ=*rPeSE z;bdGAMMI44N!(}Uf5D^EE*)>)U=N4H)?}CybBDu_INEq8Em-}Qtl32a`TXTbt0yb^ zbhAIH6O;-hIO=r;p{@x2wMuot<>}GsF6xrrFvQ3o#>hhV)(EsgXGmNJBF1!Q2jv(P z?OS*7Job^;9pa8CLf5w(01ijWfl?l!co?`Cx!CK)eIuJuYd))Olw)~IZsQg9(&Tlw zuOs&B7u@n|!B^eBx+Y_n-sV@mZ(MU5UvIwfHs89BU45I(5K2f6SJ?e5XW0ELci8=` z_mAG6Z7r#>G>L(HNvQ-Tj$K!J=ImdbvpHVt89AP;;Z4VOzLd8p){kA!t9X0ltR#F* zJ0+`p(>E4h?5k9Rja~8kPFpc&P3WszH(3jut%>=P;8e}bqV*11Qa8}vMF>e!3;=DGvbC8znT>d#qM|1wuP|7&E^-C;%?anC~6p9793 z*ME1m*Ecige{b*XY&@_3mT`Sq4nn^dT7%`?FUwux;`i17N6Wic%Z9P)`40Xx@SUNH zqg5mDg2AfH{qfVbv1M$h%gCpzF6qFZfun7@rEIw|KZqM^>xBT_DFWz=B7nXu0_cwg z0Nq$C0_b`XKsSn!Q#j$OD9A1xngj!QA@F@23m3ISc5Cit&88{ZbRHH26$0zxl!0Cv9V#`Ff7EP*w`qLAB7EV z8ykgdt&IW&e4{8^g`W0YKzk~uHx>ri#XZZO(3E_x-5lW9f*hlpPnS4 zVYF&>qByi{Dk|*WLdk(c!b5P4h3fYNZl$TL2ytC(#lsMqHtY@Q`Si`cA62D+@dKQ1 z4`H(MYqLw-czXVgLkjnmvk)0p&vI9zVTb9OiQd+)1wGMhn;EblOyfD29c%~A@ty21 zm>DqrSr8ARRcq*w3C6>>LXXK{-aL^QI>T|PaVm9 zAJ1DANE9|b=614`{w*l{L5FzQrF)DlcY=}k?TAW1!Rk^D7T94?ASTbYimV8LFSbDd z!@!y_DVYa`*e@7I(Jk#woYj64{312FgFF7vo4d7@MNsIV!8c2iE*=E&q&efapm8Vp zbG{XNp<|MR;Q;oK&^_J7VIfgWyaIcKKrr-T;@W-7>tUxHWVd)!G(PNNn6DK$c3{sb zR3XyMh{ZvF=v%{L%^i-SX!u2rt@t6ZyyAqE&((_q?-i?}x};F%c+M0)#&5z9&RsmC z;S|pKZ=kss`oo}8oL(S3&kr%zp2ayKNK~we;aUYMo+33)5q7-i$D~Vas{o&!N_g=m z(ZDKB84PgPE0A)4UgTg)5fmwyUANe2tf)YNvsj8EvaJF;0bnT9DjblxQ=ho8#T*>I z7v|hnssd9@yGTXNDuD~sdcH?}lOc{^c?drg>mvy)65daYJozRBVN41gCIWY8-xddb z*l|fzU;{At9SrGY3UoS}iZhOBP+PIk3s$2M@rqo? zjc!SCmOTJ3bR+`=)URA9hWkD#vISx*EY^5T!fOh&?pSi*BImgbLy;5F1Ve!{QHG;X z%^F*`#YrmwFSJVof?~TgU?{dr#{~*$+zUt;ZQ^tk_QweViFCE3Sr;!oT95z zY!_U;BVjzWTxxHW&@bnVLx3(s3({TJ#qBIn*7_WOuxfc^K%)Y>A!Iw7GcvJCQcOq; zbGQ`)oAu{HK&w5?3X0bmfTdVvQ5f_;hIm+*g3!E55x`_~wiT4n|xh4)$U) z_X#_N9gv_9nmym2cQ0VPhze8H;9jHWNEI--p@EM@0jG=+`(^!M>~}*5^)6x$7ez(A zM}v|7vh2ujbH>0=kC+qC zg{0Y{b;+a|3In_OwW)^6qw+qgE|FY9?ktx$)KAl7y}ugtCHb!K1Ga~hJjlt#)8AEz zK-=<~uuO3W7FN}08%D7|XomhU#?8PAtwFPE*)e2PtQe(GqDdb>cd4EjQs#jktO#Kh zB1Q6u1h^T8mKSyXaIi?~us0k)Nc|r}5UT->`@Unq%|(&YkK>>j#a29w7D`9dAI6S< z?=>UR^DK9vwA|q^0=-T}d69%H-mnp@;Af3jq+<_=fjjB(4nG52K1H;Dk2dU?qqHcP0VSAgC6H2LHWKE>SB()vDap zQw4rKMP{|glRcH@8mWreOUdF9=}oq#IxS(;@B9Ni`DtU#Sl=|(G^ETi4fj^9D8k`{ z<*Ba#xC)1aOp3i6dJeG(oybN%Z5taq`oS1#fz>{?oJq?dvq6Ld$0tW4%m%YNaYN#a z@NjHT*#9vjKtCMN(<9~xlSg(;S_7LAs7odW63hmXI_f8^mCgpyAyF_*^v`Ti`P8UT z;C=`PzReSG;QKE1)y*by2qW!w{P)W8=uY;yqGN_%oDC<_vZ>wQC4%6t!W$>vzWbXSe-!PjE3~cvp-RH z%N(IjbNJ3o0PQ|;olimN+c=shp|(4WCg#?j4WjQw{v_*sW{9yhG0pO9FvHQr#5FSk zbb6sRX^n6ucv9Vcno8Zx2Hl${GaZi(pK#dgT*3MSYm)IiD?m2KpC^@b2iTo2up(Lp zye4x7w=rjU^QybM zr2x?PxHDg%#Or;6GmIxrEoTBedB5Lm;K-c0$p9810`Xj@QgEm<{xo-cD4w(xa3*NO zaGuIzI5G9&OyKTb&J)-?)zG~aP4HvQ2F?#}ari0j!$2`lVfjptb)UPxfql-^q^v|_ zM`+#CaE>OAMy}GT?BZEOyc@BTx*B{L5Igjf7zw)K-yd~C;#7FyUzF(j;k^|)%@DSZ zLwbdZ&==W$fGf%~CV(^y-M__E3F8wb7|$$M?AmEMIKZBRJ-aI5VWLD3`gg>sOwfra z!9Ejs6{F4>dDei~P420v7IDOjL!WwOpm)FyaJMRhmngxa)2qq6MUSlGV(KcwsAMsa zer>YvP0O)@>gtRCW3n=Q7ByA>eF2TkhITzl1_DzPMJ ztV4C^()Y_(ia2I1R*xbU{8=5Ugxy*tnj$PARf(=)gqyvg6*`rYbf797vQjPDV6SrimSw=#hVDCgm5=jf;Z{eYQ>0Je48;psz~Nw1p!^0tpt-8X)?V^ zRaBDP3&hsPt3#9>Vk^d}lr$9^mASZiPGt;s)|x!tw>lJw4WU({DT*p3?Tc5Q3!*?t zf<{BxlHUs@rDHkCI$Sj<8hX|+?)xG6jGc;*#L^`-JwI+*uIt}dhA^Orra-R|sM$hzagzTRq()APNmv{zt_T;FnTw=&W`AQ78pR)(SlO{rkhZpM6=^{G6jLwj_lQ%aN&!~lPhpw8#(PGxnjhpn`MPu?wmqk#L zo4?VuqDUr?uY%IZBQqfoht0sUZ{ei%ijl|<_3*>0@=y|30S>Y*$x^U_ccj@Fv1QXK z_MR2iN#(gL3+kbajKB&b+_b{b8dZRf4kWr-JQ>7`D?mlp^{pz3waTZDj zOb}A%qL9UIOUS2cp_T_FhEAlC0iYrrqD0XZ1xeW==^0oLO*Z2spQ}O>S39H{o~B&F z7OwylCQ(`zHs45f{{{B>#W~Z6<&w`hnkJ!X!GtN{L&@Ew%P%mx zDxbu~3)q4vVDlDb*Y|=ZEDLpMEC}ray|4UmI~hPrlU^+71U1(7Ft7I<8OS@m97gvR zta1GG!q_y{Kjl*>?}qqks`E+ZIM`XXisG;W((G6fv1iq33nv;|;q0NnrBkiUI{W~` zxk;o68_H+38cQdfWs%{x*!*^Ke&Nap2b>*Lb@>342aNR>Aavz-4fwF*sj{JjyKL=AptbVt}8 zhUEJb63Dd>TfOS5m8^w@y{}1sut>sZ@MSGjZS#rokbLbrP!*`Rhf(Z*b&ydNYT)?x z5O&Udk9DZBs3&}#Y3;6bGKCnhLKP(v{ASHQb^{#p@X$!)TLq6Ad-6Td?hi=(z0n+4 zVN5LdyCa*}x8EDhRn}*0ji!g=CZBN8(_$*TMl|S01tw z>jt^Lu){x^x45KQrqS}u*X8h+Zk8f3rV~Q#=R!y*v9;l#65n%2$(IG8ZFWO{&|E<4 zCzLFJ=}nQcHG5}Kgp|kyIyQwvIAcNmUOw^?>)aiBbRw2~DH&~vRrT;44%z=Q5tiDG z?O_;^JLOy1h)b+(;zy9*rZ@n+NbDH)Qd*FrVo@ZNkGQnv9(tfJ=>HO%S;bm%^D3yz zL|9^z#>2qn|I0*JVh!m|Que=0geBIHoff(})nU2wMOk7cVaF-9Jn>mB(lSk?;h+OH z68$I@Wyy8}bCc1}vXPc2w4_J8n17UtvcyWd)JNfp&vKELIaK07;6loDft&6yToCRq z@kqQV~2zGS?^Aa&MG;DH(0K z{yGxH;Rq6$4y@9)T5zQ032lP1%n9DTMPlrT&vKELSkGHL^1JN+B38>4^ySxgQOh#9 zJjY%fl8I@x=So4T+k^&zACXx3RyN|YH$}1kWg=Y6wl9|S4a4q+F}D{=QkgC@3`-&O zf0+o&T-;^(L&Yc4poe*O2t{A2>p7WqmOc4h%!HR`Nfe(8LAtQMBAw=um0G=c7_#gy>i6=Imz-b2j`>HaD9a2HhkrLw zY1?`!I_u7g?2rT{akWIjnF7l&B+Z-Xr!8YkKiZK!VcA-7v<<%vYf@~fb#wRAOJjY@ zSW7>(Ztg_h*FgY>5Zk_kd)T9&a|RjN{v=&6Gt4PCIW^1>ZqEtUObSB!YVZyYu;*aUo)|gs)hI-Of@cj1!y((6V=JyY6ZdX@ zeI>k!K`dVl+xKu`ut{Nn=b&{`u(|4ignKR-ka(JuTVIV~Fmz)QxO3*af?%q=G+zyU zx*6nGgCBb2k0GABW>zpv5k2$OuqSU%|7y^47kU=kIaP?~Y=DPelABZgUW^7FgRDpa z5@TarL|1SKOoIl*qna+J$H*53e(o|g7b}xinodBQb1{KAyx5r!xNzvjWPlZk_%uaI z(dj29xH~6!;k@QwA&z`^QugYpq0K|+Sd-2Jl67;ZK!`${_c`?rey}k=&h05zLC(o6 z`DeJ~pV#s!e7K2zdSSfOeE{O<7680zIaWYdWBPF%H2JRyK8$h+o8iElVkshC6kwjh zKRM(MJ3Tz>p?r%V(~H9qI|=?fAQnPtWWIJi8HIoI~Pg-h&BWWR_QHS(E%Zk;;7lTJf|X-Iv;1*2W;$rsKl&B7eG72Q)H;G zgidL4nyb=N!obeb`1QS|XmTr~15;fW7QHRE>f=Y2&PwT;X*fD-?`Dnrel{M^|e?o~0E0X(6fJ;(c!9Mj!n2a{AV^ExV6t8op6g>1XTC$?qx< zm#{CgEw3WWe-$DnXC>0NoQl!rTA#(j0Vgl#R@3LPbrtIyv(%wd6jx@%k;kW~p<>LZ zz+D~{bqVKC&JFKs)0?ojf~M{)hv}3)e3O_(H8p*&8HD(b;Ct9->)*Si8Xg--tVmD7 z!mq00QBs*%k@g)B$8qt!C0051#p8TyE9Yd!xVhJ*;MjPGHUOB2NBW>`# zsl}F5#YwKyw$OE?0kK1$$7@84H1$?B%|S|Lh1_i+4qW=LGQ?D-BW9!0m{zTpKxL_{ z8UtZ>Bgrem^*>L6(|D3>trY9wHrq`<)jrYa-s<&m_|pqx(^wxP zGI_$4FGl&Y!*Q^!u8C9+dJ?bA-PhC;bfY+0zHTgciHlFXt{*M$UVT}doc0 zUqfX?$OEtk;1Nh61sI;OanbbL&9}4T-ro3!3l}muXXRc+Nct*SM%1XNo|iNK`nP}O zdvpKS|NKw?{@*J9{XZjh>|g)kfBldDJ^%Kv|MFk|`@jE}>HqloB>(jv`2YOd|9ffk z+F5?6=cZatY>A0|S?}wJ=tpL}atHIeTCeQrA$!Mr+Wz(J0{ZgiBY$-LU0-p1S#+z% z3Au6dxceR*y2o}byE(Ns?e(m;f4xBDI+rf(9C^99%=B0ujoNkk@LH0htF0ohQt;Y* z-gc(qlKy%DAHH^V2`$f6;qQgZrO6_uN7lFHs)fyAEeoCd+TN{rm->9Yz&gFPEScTn z#iiPN8_3lchB8F{DODK-qkBHd2CL|d9kzS(pjT@&tAHG zD309Eb4c3ZmOAf;hx}%4ag80FR+X3S?)l#Flkas<+R5Um+_Ghcj%~83&1?IL@4vv= z#_jR$)!XLIo4#AGlTG$}J)Jx5o)q%?;!RDqN}FG+`}G2>=arw+vRuzTTKhDQmRz}) zrQMHF#jfW=r*7`IlefJZdA$Gd3HFtKf|v33Jy%*SpM|WEt6A*t4fCR0I(};7A*sH_ zYuA&1?>dUk5bVi+uGWV+~y>^kYJbc(xEpM&m z>-ITLbB=P+Dc8ST`pyb|72|i=yb8BXN5@i)g6r0Jbs3ZFQKqTN^LEF|IBWACE`55% zPRWo+f4B71&gC9PLhsHapUX?>kfrLjb0n_6=emrV{_>i=C#kMk@8qEwjmYO)da7`? zm9%QMo@-^c?Y_64tl10iU;p9Kp@suncAahOxi`nVb-VK38}T~)aWwhPX|9$_H{YY{^W7_!zG9!p zw|n1NxelGOr6Sj5_Xwe&+}BSuXFY%MPeu9vy|kW3!f|6nZ{XUogR;2SAv5Z5tDrRL;8lPi@rJ z^TdSK*{_c;!5w&In|5f`cHIL>W!zkJv4+A@h(L&13+Zxo%od<*f^I<+3xQRC{>__elMWt#Gwmw)-L`RcyhvzFdx zym^>IY^`y*JM~Du^wUXP+;=+gF@qVUu$0Yi+V3kbS$IAx8C8Tzr1Ffcj#Wck~eLkBkYngPn~Z$ zzc`2Fm6g2CY88z*re}L>yMMXiy=OOO7^m?kg2S|2Jn!|iNEGj5_no(-$ybc~zJA}e zlDzV#Uww5yyWyr!x!;{$cORpnb*`spUQAcP%xSu;xLx+D`s$Ngv!H|@VX>j`a& zv;1I0qH;c$A9$7D5ynx9(Um|o@X%g!vSmtK2?@hm!7 ze>q4WTjE+(k4dDNtLgNrGn*o1qQ%yuyDpQ;(~{|m43g~nOPAt9ds+`g+Yxg7B8*^? z9#5vy_B9gSmixX#v}&F8cFfDZ^`|bSwzSJB8F{1E_c?KMSI+ZcOD4k7gGyZi*g)P{Mu}NG--~>8@else46liHm6_n*>BFOePjDwv(AZi&w45Pm+v}!wd|~(jO8*%*SSLy zRXkL|+a}gNDO+9Q;RtwE3UI7?{cXO^HO)40G7qlx7FQhdyIg0`kgAjP6~58wvQF#q zy|>&X|4aE;OLfRQ^*vp)I%O_zYHHGZpK6cOP3ya!CxAlVa;KY@yuaM=K5G+jA>+2Y zhV)6D=(R0&TGhOfn49ToW+Rt5qsV8yd;e6gkD);C6Ndm15q}0c>mzvszwOA6(ysMp%ob}aAlH>yu>@%FfG%}0p!Pow=l(sM!dM1{1?@ym`U zKk2qDf$^+3mg+@hu@s=`6la#}`5RE#&gsmjiD+8u%^L0oC|6VOJ$>^;Z%aOT$5O17 zUeLYqC&;c(PuJY7Q5R&CT%K4H^)A)X5-%o8va@pP5wCZ59WRY%->IHC;p$iCn#KZ; z(DcwGxO>xh_haGfmNhHX)Gaoj>g}{DzVjGMB;!~ux)SzY$qRP5kK3AMf?H~<_7R%7 zVR4^ZFHOBn@||uwoH-$%I(Ki!w5K_teVf?LnkH;u%Md{S*`1GF&~&;ca?3=GOPezYB1^J@0a%;~jC=G3oL}b(2-!Nix>= z_NsSKHy)7rbMEN(PjIinB^*G&8M|*5A6ap2qnnVlA@eJTd>TY(>CSgLa}~w+$B%vq z_sDtstty)}r|!#eT9?lA+{&j!_R$4QE44JxvV#-*{`kkEb=5BXy(!&_nNrf9U)i4l zn_``NaOvQidJK5ZD~fW-?-#(ik1&J$);a?nayT zzJG#BI>V-UR?K;ee0FiO6u1gm(FTZyT9j_0ClGX9wbk%6>uuG z%CilA0t004$9=Ww90f#W`bfPZzQ09d%l%v#vZf`piw?1#wGRoIo!RdS@zY*$Wf2!O zn=dAR65pS}hF(JV=PM}YrN-QqI0XIKLfL%keSN=F*~xb|E7Sq?*6#1G>7G^6i+c%s z+8oTSURN0`X4T22i#|ISU8cLKdu^W6fga|&v}B)}B=08&-GJVka;CTMW8GsAt#Dw5 zp7XAIuxR-@Tm4YV_h;bUWOrJ3?MaFU5Cp}5`SGHD`$2n>r=ly*x+U%|L(4UnewUWK zZFP7v{>UOGRW|J!W^>9p7)I%N-}6-ILJ**Ubl08^Xdv)0O1-7u`we>>YgpGYaL1kN zIkSTy+dB`SJWIN9?Oon=o-;Hg_H@Or_5C$nY#dLnACZ!CdD4!G9|I8v{{HMHx`2fZ z4WdZCQa#jXBERd0mO*heLwZM?n;!~J`arkl zS-$wP(Zk(Qt0E0OyS?e&!8g5v&*K&A?z{|8XT9&Y=(=wjC#zx75%)fH7nQH8Yu7Vx zC%Ne|qki3c?m6<7FD?K67J>Kxz0$pd^#i!XTf>6!(5{RxY9CuKs-PXpn|q53`MxCI z>jAk?IfZT(9A*m>R{5KhcU0@S9p0N`Z)R~KG9RDZb4KbH4cAqGk<0DAy(BM+OYb`R zDDu9cGxH$9>J>*TfZK@PG9tVAL%~_}lH)!I2`(?u4@2eNdur95V>XempKm>*W$S6J zv$s-8eSgTsueZD>Ra6;VP>ektSBZDtJ;$bw#}0dZZTU{A2R0+et-qf|AiX5*>3wsT z9XAj0HqDoLs&qk?MG!Z>2g*n+I+;Qjm;4}>tYp2rZKW@IfDqn!ub3G!h??t%*evpC zu^8p%<80-=7yFv;zo3CoY(iJKNrdFBEugLaf%dSreP+<8a0cqqxwnS99ypfovkyUe z7qM}!0PFENCbjV`jSJU$3%b~A5H`k}9o;*luWf^F?R&vt0xW(3jkluw-op=f%H@4t zmi4lg!Y3NvdUiUQ3IYxn)f6 z`+ihxKXZUIcoaz;u1oK{*6`w;A8Kp61>Ljc*60F8o!aah1km@2HnU7kF2qB8)_Hu? zE-ifyphC%cy4MI06yH!ZCi?GQwS518Vtg8Cg>0i%`lAt>B;w1Zt;<}mYjF6SjeaPc zlJ|MMm0o^tTgb1CWZ=mirL|IX*{N*4%5>-Ur)fRChr`XQn0DUqSP&8YFyWj!Xx48Zy1)dKyo-*rL*a<*oe#$go3tFo1}eRYOyYd9OBPD0_gt&%T{g z^)9YSci%G@u;Rx0K4sF2REcral~HkO^Lc^zr*c4q}E#-sGG}df~%D4c;`)U2=+Qy}mjqKex=IVo&e( z`iFt|Ca_u>x9VPb=f$1X?u|}Dk3t|T?o0fGR!LuoFM4}ESMd1r{X4i_b_4?}0b+Ru z!sIbT4rFT`t-C7T)~7vLkxYcn*Getc4|wGEnq%QBCCDf_U(H!|DR=6Meq9?a7=4t# zHt(@(kk317|8SZXt+MPZIi#wbA8e9~Bj1?{o-6f^8*jtocRy!?ZERPzAL@ZJTPgc( zi2E}8l%~16Y%QeQOCV1#Mw78}9OLqc?eEPmwJ~%C*Y8r-W9^R*$Gzg3cu{Ac zb+5iomA6uIJ_0^=S}8v?zi+GFI{ToFS7LdDdWK)XCs$x*ZaiaAspKq!oN9V75B~6w zZ+R$hF->OOcuROnpt_Czh#c0os|`yFZP~ggDfK~~>i@8=Uv3ekbX1-(m^5tbhJ!#^ zSeRBe(Ep|AnTS_Bwk4G^;HFCRJ1$SFPNFa3aQqPvdoDT;GOo2rUJDcK3I_tb^!v8% zh$Xs&-}mGCEE+TN@OaCh?BF^e$vIf!l<47n7zQ`5zW5R;_843zbl&%0@b)O!u+3J$ zoLevNqqa3`u0EL~?OO~5=k$FT5-T&`|wh-Fnow>PdjB+Mg4GGLt_j< zYOikIcQXWJq#Ri-lqGLUU#)Eoq-rrIMeP)S&`KRj^~?~dCwz!7T>$;SSx6IUIkdc zYUwE`Y}3{e#nII9^ip#)GI=t@M2mhifK2`iLcwsW?z6q|kl&CN-k?bY0Pr8ld$2Y}Z4ocjWtFr+F1n zb)8E=-gcGLd%gWii1}RMImx>QAgXS49PD%joKt*%$o$N8){ZkR0d>$OohZmC1a=sE zGK*C=(S8D?=q_GQh(g~FU`RfL#ccBf@3^F(r?$C%?VJI?+-h{%Au@h40V^GYL-Z%_ z2hZOo$CKn1Ff16OFrnt%@4*Pj8vC`~0x}|c@7*tIhh?E7@b7I)K7v8!=vj+U3ZCRX z*Q6uP4N}+Q$1O7C;8)!I?Y#G$!$aQ-&P79#eEdRJbw%Nflar^Tbjj7X%T7r8$<9m? z(5t!oHtWoHI7eAOtlSV@e|Q*ymOgVd7kF8ZZr)FqtlW>yVH46Wc?#>|5AFLo=e5** zGm&)XL{q=Bz}mp@I&)^gszt48Pj7!XYU8NM`=K|jIh*bo-g6nC6Q6g*&hwUQ3!?D7 zj6RClhyD@*t#=^0TxP-Ty6F5w-|OWGXvK#q8d+_sOMiW?j3qzkg^eOAqZ;nz>m1c)ON8NzXN98guj0W4qwT&Pb*#u7;T@0G3ruDcfRG)F;rdB9srr| z_+o+1_38K1v^4F79+w?vdKGN@nHy{w1~Vo&64kSK@oOK@FVXQ%9C`8msL(fSWhK0< zbhVOW;gZv^Q>`~(|3B3JPV^n%+CnGZy&!JCe`stN<3;z~U9=wDI=8%^sm7nJLs-+Xs3Z_r~4jG{=M6RIWILvAKo{*;|H|m z28iz0AC5z_@MV>x&VCENQK#mTgGo}T#dpbbM=USf5`bZrGQ`ZvucQr_QT+f%CJLb9bsLVTAzDlpWec$nqIf_ zd&wkPn2Ph%g<@>)K-U!+c7b=umN(C`?3@a6^mI}ySr+x#^!=#VZC0-@;A6n}8@ld? z&+9_>KZ0D6-cfl~w-3cMyX&zc$_I zBL{yF;Ccx+h4EVjE7nKExX&uN+)M>AtO6?g{uVJL&Fs@kXVO*_YcT+MfPqyod~H9D zZ-b)Fx_Hv_(lUvEz)d|vxvnwJFvF`}!v+C0I`*|BoT+bkL0M}>lDbiswurMtLE zy1AZc`<)hH$U>g4wLRxm(~Z(+ZLd4I7K`RxBWU2y_wG7q-+xeca;Tjp%A|DNdp@L& z?i$(mTEN+$DSXD>wzp`3xBC7TElf5JoGAAUH9fgkD(-t#;EF=#d~C#W2b@H;nQ#Ly zTK@eO<(8E#O&O3f0kA7fuF^rZ`Y10wm-1t6yaPwGrfr^zJn_RXcxIRGx#Op`^X4U9 zi*|AbjjKr?B_vf`J1ygzjSiii<9_0MP2T=#8Ys>zrP*p71p`LMF|K8$^meMj_i>+X z-t|JsKKLVlugSs69X=|hK#jPKY~^Adpk2Dv&Rch&Ts@)$0WH@G9@~q50YgX=Nceqy z+orGPBg);?n^_m6d3)}r+>RO1y^cKVhSL4~P!EFM3Q9&QOWBp?xQ8C(DEDM}P@f0n z<=T~4y(!<4P@sZa*Z0G&1`OHRhmR}K5lCJsYPJYGte*$;uJ;rSem#_XJs06y+4B7% z$F$duKn4g(@Qru4`}qg;yPXPWUe`w@wZ`Tb=GEPGH-Tt2EtW1O$WgOz-< zpwsiX>?Idd#EG%P(35iWJf{BMzE4oz7|V+j{$+CEKMYzr1=>O{+K|z3do{zqt}t|9 zY(YTC4|3y_%}ij4q0rd^He`dAdd;!C-x;on;~ye?6`+d^z@mHne18TEVcO|MlX;H# z^JuHRs@}SnW@X3T6m|+9`>f+<7lm>s(fxi@_`<>9(E~J(Ib6z z(-BaTS_kl2rEmJ-0tDcL^W&N611X>iVn$|J?MHsQua9CRDJaacFQaVVrJVPBMMJka zIpb?-*|f)YGhZ7@qVx=_wT^Fy6acWs*IanP&(R} za#mJ58(#!Vj6~>5n%Amb-ygDxJ~=F_YcUto8aALgo zs;8bQ)F23qPleME?=qYg@GWz6-UmP!Of06RbiSxei=h)v0#n*+jsA}I^j35!n%_7IVR&M@5XJ=K5)CZXu zwisl}%eiqxfm(>|JCk=+&p;DO`;vBC5$n?Yeu0x_WnzQBpo({2b-YLSvcG`t5YAYn zjS2aul0r}AlIY**JG3m8gk~rXs=}PH~DXbI!lPcXr1|I2)^ zpg$}`_jC(wZ==o7axE&A>Y^6Y4>gm@v@#W&Ie0h2L z(L?$e(88EwB;dszWZud(^~-C@Ai>wQQxB$RPdn82u+%aUziCOEkL=dwgZX3N=it3G zV)O@5@vY~cNF?z9^mRt#)BK+izutYv)}Wc0-u%jWF@0J;WO;pm1{k2s%^=z{e%>F_ zEL8*a5%oFLUX`!(W~Lv(EQnl4*XuxMB-|| zA8;TEQSj2TF0mq#MbmS6O2?D*83_KxlnVN#vYG@AQ=sKYqWl=v3`rcxKd5sa#AmGu zGilOBQdX!5`k{I?rf@XXiE&NqL|E0bGxyz{?+2$ED1s&2YOer%VJeqvbt2fN=7G-Q z;yT-lHfb;<0B?(od;d`M$@3nhHp)OZ@pj`^9i|Hnp$=bE1LkW#&|E5?Ae)AgJ8glUYjqd_ zPt(hQY7n{l=naFxE`{R`(`Nab=69(lw=}PKB z7NEb^`!Y1Yi^V}CoCCP+qE}J{Rl4@>rMAC6gG9v6ZYR3HJbbmW6EBt97kLexvsw)I zacTN^TvGVH1y%I`V?dn02QL)hKL7}a6?iKQPYBjyj@^T5bmcsF5PjFSHWLlM!Z*SM@uMCcdRlX_sH|7DR)k+7EuTOxD2b{yCX9+;UOg z`z36K67g-x?zDLTi$5!Vs!k*lwo|Cqsewo6e$;oR^g-`FF{$@f-sit$$O<%20X6;+)2#ylS)ZLW z3d^1e1cX&2Y@yPaxLEc%oJ#ZqVQq8=U7@$(7Qd}6crSnRQwv$^Ss(KuCeVca ztz=$44%n>dQCw~9ACTYcGv|RuW0=Ehp-Y04SaNYapp6PW#|cO()`C|uMRDCzKRjek z=6-Q@*vYdpQ5MevC~`dtq$xjEFc+Jk{eHIJJ|`X5`ytO-Z|rg?q6OfYEk&x_$_ykq z(pjH~W3NfT%j5wWx%hS`g>(KpZn}N#!?&T6S>EZp`CXh4$jQ!G{N~(4(%S{PJ~5mh z`lb=+_QRY!NL1PPY=O(3!jKpT;bdj)@XK7j03+-0ypx5KQTL!j{lVR|`C-BVF~@j=LinA7#9NbC>&bpimY`@S>-aLp=J+9UgW+p-M#3wN6XwP<>F9uxyqbS}c5b0CLG3LtrL`0<7c zNdU#)AD#g`wsA+Lg#|H1apz{4otLUkya#C}P+GY8zVVWjic4+J>a=y)hII17u{UY1k+n;CGer|p_1BSw+cf^k~0`X^k zqK@uD+LA3Uc-4e|IPBm#f}fhCc>Lasx}Wr*K8;8faHr_`a--W;BxdWY`Iy+w4+I76 z$`AeywDO#^+UFK6=MrR?4yj09&ZI(Q{V1B!9SN{J&kr9OM>1sjYK5s1QAo!7lPkCB zK^Aw5B6y`Z67En)3(~$h%ebzZG4>vjr2RTPFa7Vqzk1F0U5(< zT2^iQ{v9AWXhZO3Nb_LSEZhvJRVg60b1h_9G;~obkepm}FT%xc+7FGFI>h;=@JJ4f z;y1Rg(|z|VaB~X{ojng1!XdaD0*f?1i`ahP(F)9KMXB$ECxbG?Un{6E6y z_gfg7?7UtGdxe|B7}fI`T44I2@wzKd>XkfA(9`)RHVRB~(Gp>B&1W<7j&|@A(0BWY>NOjb6?oh~X?mC!BG3&OLg4^c#?; zxbS&qO4pFOwT#XWnB8Hgx_YFW1@ej^L?yN8LV%V>dXStmqfoWHla_J|E%}T7;UQ<^ z(1Dar!?!F;)RN@0%vU0Dp=4vw-$d^!0%*d#Np%bV0FJj`%0vQ zMW;3vG{ErYoG@cX>Fq*T%nuLw2DiR|;Xs)M{oJ~JOYNYJB0VS0R#jbybXn!rd)J1+ zTI~l;|5n22j9%)XOy)X#Q3~4c3YLwxbR@9H0~>xe4T9DXmB~APAt*L0geSP`MIR{w zu(Z4D3K%=2EEY{5brS%$Al-IECEqEXA2#+FrTN9r2A>RpVFUgKIG%zj>3*aqaoUhw zD@PtOjNHM?#}9OG4$>{K=76aSu@!~DCly^g6Y&+Uz}qz8#6+^=39#_K*6m-$SoojJ zFG>4r@10$U1E8c~B(%60&pd|Wb!T3^^og&L*RHehFZav zXF=JOT@N}ZG%LL~EX(uHYKJccCps{~y2<)T=3zC^eM}$V-(*Lg=0A8mR9_kE2?Jog#iv=L}$$ zOt1qnAS*_ZFg-`zN1C?Y4e%Doazdqs0JlxtS?B#=fUeK>4KPCpClI(BagZUsoCF_* zEb%-LOqGGu%;wGY9RUw z+P_%1H$8%GOIqfI!dYN^QOL6d>(vmT_~NGXqHUaT|1h!>R^+;DcSU`#Xl#H# zsJEPrtb6!@BVRKf;Ad48;31MB_7S6gtknF2tMMw5B(xQyYa;1we2D?OSyw=Q zAR8UKf@=3hs4(_kVR(PS`-drWZf>b35`#momd^IGpr(_T#d_G!4svyk6mTtl6f4Vw zZ|@%rZyzBQM0I=l1{fP@8?iqZ8O4hY z<9DLYgTZ|+1xwT5-{jq*zR;H8gWjz_RJ139{{MVDF*uRL2Ly{^HI#kuxsAN#HH=tq z2zNeyjx%%O+V>BwLyn3yZ$`kvC{;wtfhDKxEISW?qg0_=HEz8F52WS1em{VMZ1S9g zdMmaTKoNrcJPqYbQ_2aq>Y?>)R2;qUCZvZ#pyNOIaIPv=$B6GUr=L7H=r2~K9Yp8M zVxLk`gVpm`CBg_Y7Ce)yeqaJc?oC>V+yFwh%HB!%{t-XiJS(s4J;=@zTZmCZox_Ti za$7%$iV;CF%Vt5V0fi~MJa~v8M^xGFMX^`&Ss$sj8lc(p=-%G%2Pgsk8M1fS8PZea zQ|-HGGXl}GdyrOCkWqou^w+cq*ckI&;Xm-ne(gHU9Ur%uKm}D0_C0QhH?;Ubt-)M- z!t1r)hvb0+&4b+UHCdqHYRycUmIIlEY`qf;2556CbNhTDou3Vj9PkT1?1*^zL#)cy zu<#h9q;N4Jo)$1_?**vy;+3LA5(8~RAA!9+5EvlJ%J_%gGz7ZBJG@`zHu(g#HB5Cd z^c=Ks$N&_f1s_6eax0t_aVF0XHJJ}x(${(mRNsSZVWNNt<|YC&y1Hx5x%ctPxCaif z7kR;qe}4vk4+_hN>cFB3Y*g~s1y1wuiipI_7I5ai?W0e_w$|Bmej)1IZlQtOy%#lF zM!m>2X(rSfBu~qsHfuk#f=(k&37dzI8T^CvM8|;GZ$^0cTCEJ_c}^k75RlUn`St6z%l|E#H5GIe^ZS*{Z1xiP1L=mX?WfiJ-erSGUZ=ZnE9J?B(kOq<@2X9N( z;24@42@B#rT?6f}h?|2Z3=yxqOcU;K zzL4R}Q=n%sUQu&7gj01pR2xuW9ZJNn{h$;KsJaXx$mfd)`s|K-m}L3DNarlI_vR-0Av*^Q#EMwRyWG4TIiUC}1PI=HLh-^1*~_>K4}$oDvSLkroqt^k`C?T6J#AON2bqOKSAm|DEc{rv)B zj^znapCtltyfb+fLY*2KI7b>vJQ4`qrIbJHe+gOGs{VmuQ6XLE8`JFsTi>JIZ(-cI zRH)Qv-U$TQ+PO&qsQaA#VB`M&9Z(k@?QHZ2wv?eK7TX6A2a4#z_p-BMUh}=DK1-AF zVjeu<+-CfACU2X}S+rV|XT`O#eyV^j4(5@}+FZqK-D&SH$d{=+STj8s1XAWP5= zJ%Mz>&&j+kq9FD!7ZMsic?<{JqB0;G!OF4keUWM)f^9kc$sO1-x-vA$u1(byhAhix z=7OAq&nw`=#w_jjgV6`_r4U{g;!rcRr8ico53yorF7jE0PFFf2ix6bkFwjoIfd31e zgEY247D=?JLwM4mTN>U;EP&^SWfF9j*I}&0K=^DeLxZ z2|lZ4K>sgDnp0h2OPbouI>|SUU`{>~2h08++Bq z%1<91RhjjR|3F2MX{T=Mi3>U;)!2|XocjqQy@XB-VPXf_we8RDqmbtO!SIHpW_7Z| znkpv{X~WFkg>^rOa3lh|Fc=O4U}?A^eNw?aNiLdz+97ln87@?nG{*eUP-~XJg^Py8xFRi7zY8o_v2<$Cw`` zcaH6~!Y1J1foX`29EI}V3CQ$AUhrh+5``FqQ5I^y?^8EC54A3&JP#WEmcRm=C)jw8 zg=K=pJ`FJ<_>aMj6)ZQpM4+7ivLOu}5UAF5mI%BtdDk{%TQmHS(SaMpR%IV{JoIB)RgCKZ4U~oT>vWWW|VMJ#U zqAEY4z!4af9%$K%C5P8;Er4Q-4Or!2*w-?0ev4F73}ynhJ#{`KT0^crcfX;fdK*b= z5BFpsF$hE^C%iRPKVal^(|h-0Ho`P=GMbndPV!IWIX1!p=eiw@?Lg)#Wb0rG{UNw} z1_?IHLDkq@mo5P#1y{2m%K^~RRQCbkwj;=sz#hU~NEmy6I#g$O6Ld0Hk&bv2y+0Jr zboFtr%?~T1?VkiCtg~{i+aLGn6!u=Lf3|{LXjOmk${lc<+n&Jl6-9`&3@p>$Ht<^l z4#y76eSzTnq1%q64VaZjf5_s-qLG{w5GQ#i+98VEKK$l-K=-rm6Mc`c5a9Z7BGHM7 zdjF7bC0JO*7Ralriv`d4?6AU2M1lVy6@&oM!&h?x%P4MB_Je`(hj7pI8Q7pqKx$l@=C$e;@nclh2}bY+S~250k;J&a*-G zVt*4HQk8nK;;0uq`t*a&7rW6573Y;mnIi1d-6s1s3{e|<1y?t|90+k;Ya?MC?}zv= z?4QsOe1`1|1pvQo(Vv8wl}IhB*`+rKUSEhw{eThGg$WbK@&hQ{KrnMZ zF>fdagR$W@)axKx{Ih)y@+Ks1B<=r8+PN#+*7DZ&T^u_=fIxa2A;9ItfiLgxYGXNa zGO7Ab;Hu-xzxQ5i&M`phy|sVx+vzUIC`z1OZ*4{5kn$=$N9>rjitbufI~kqT-7D^9 z#-4!_^dFg$iBVP@7Y+Y6r4s_wH9vrllbmR^uCXUe7|!I_ZSb!mrh8GU>{D;8y1iGP zpsk(S1TqwZ!&Znj?JHCh+nj6B^)?y@AUpQ?Jzr(=;k5TI*e5S$2AP*U9|M5ioCSR6 z{EL_O#vVwutuaHfhY_?iCob?6ic8yJx@K_O8KP_NMa(}oec&8+43UBXGE9Tv7X<1hC0FTkM=ov6dqcWswSCR%Glks zF<1y{XINJ3v=d|2WeI5N;I6IrL54vbPZ4s?3{;lhSc8!_LRuJWCM<-Lt+RTbp?!Pk zj>5I8JfxeUBvz+!P!0dp*QY7PB1uSK5h@UHf|mKItrgW%&K``@Y5x8G5w)&$H;08K zB(NCY*2}!A4fwhOa{*veqmwngE#$`QrY|l;4~N$;BtHXS53KH<*L$-N&DqL~Vr9W! zlYO_2B_xuGj#1s|{UsxRWFTPN*Ed1JnfD8Ut%Aj)w8Sya6+>^$>s8`3(ytiG~FO^;E<;LdcWI(@V)=OEIk zg{&zL$ZZ_met+_qPUfMr*m3OkRd?-Lk9$L?{4J8@0{uB_R@z>WTBlP(KQG1J?t2bm z;`bxh_IfDy_!6Jjc`CM>@$s7z9ZCPV#p(3jXFd!gmep()i|&7|i@oU8#F z{F6@}9QnXfP{k_J>s*9dHpVVigcL*>fN)-zGL6JhoAb!Hpfmr`so)lryOdFSt!w+t zi$B*k3*rnTD`U;ksLVcs`urLtat@N<4~xUx+ZaevXcjBczD-U_YPrB<_{f!kXpwDn zv%3rQi(0l@?Y}=5`vVQo{!qmstrFcQGQ z&{UtbUc4A*&JnYn5vArqb*~YCPN)Hg@O`@Y>C3TM|H%gcm%O6hEvFOjXaVWN33LNX!J2x1+9MD&9)m!K3yB60zu_$@v z$_;h-pBxIKBj02VwD%_-YzlKvuxI*SKA=USM8BDl5Zgv?Rb<*8QXa%ji@gv1_-b)U zRFJ2$Uew?d^-jCD(%-+WFR!+*Q-Cj*jiEjS;YcH8DNueDJJT7p(2c4c?f_sZ!cnE) zb8epA*e-T)jj+j*$GIn0F;w4%~?IIY+@2ZZXz zLD?8cudIhFVKtsaaEx1QsTElt4wK5Uj)n_aDolW4g-qY^w2qC?8!$e2c4JV-@}>|56Z&17T+-_LFx>*;LRvj<(8?`=6S z$dY&M5xsQ*`10^O;2H($jA3`g)Ljc|*jQugoNmAjz#`S|b9~)!-MdD!tScUZ4>KDy zuWukGKG9CCBBR*II{@k3WgRbSb1XP*w!)xs);WyoFq4wC1hR_a|TqjT&kMfi^JZ*}M#dwGlp%B&03_^5^ds}l!S zVP$Z&7#%T3BrH8i{z7cHH`h5NjV2AhiwFq$m_OhcZq^X0 z5>tiF?PUr^{eVETM=6ZS8_Y^#aHq0d!XaOqH`Hl7k+^HUq-c zxQb+95U;}z@s;1F?mQ@$e-ChX(V>yYcp6}qUbiQ2wc5gcruL(5%g-{$^rB~cV{75h zdVpUtp{q16?WS)43%bwgYgpY)i7%Zv-{EZx?A(bAkwjeQh;6fHi5Hd&g7#)1(lXG|+1wUn^SX61+sMm(yY46M*F*4#HL2sxKYuH66ucaNyoYnM0Zn)VCx%+qg4jh$p_U)d~+{q-^nRd`aEMp5;l`Ed?$c*sPNY^YoB$q zy*meyc9H%-ey{f`UrhANy(63C*mAe@%P}r^@r2#Z+360~SR8ONgGg~6xT;-O;=!_KYS>b-tZia~_6e2uCpd4xu& zHMHw{Unb>d4i)VqWWKb-5z}7o2aC<;nvlX~7&bQ9!IG!aRW1`^RZpoa&KbjYIm;gQ z@WRKXV8l>3Mx_C6p+_I%TI{}>#zw)3vjsW#fHm~jN^hk+9K2!-y`_9w=QyAi8*Om% z*zU`E1K*N1OL1`TJi`m(}3gb%G$beG%EdV>i(XhWdu`2rp$w=JnN0 zfdil#?f2n^)5vz7O83}Jb|w5%C!(D(EXwRQq90vT|KNb7k-B6@?#o`PK6^%Qg;B^? z%x~J}N~Z+KGVJ^@nWq-JCa_q^eoVB4?%e!;L47*hj6-x9ll!3WK-&a z5H0JJ&x^yUF=(Ini^ga5IZ!1Waw5BvlYFR|#1>XxdtXcoAB09g)HhfRZPNZLABnMF zse1Nz{+PQAB3Am+3Iq_k;1DjyPoCZpaU<-~EeEDyRSHYj9k$+0k_|GfWtcpy9)|b= z!EZAu?VKb$H6vBML(l5jfF^!1TwQM$8pTV#i2j^q6> zN1ZDc|FtuO$%ot@VJFUBdFGMX<9=G4Tx-iXJ~o~lEIHT1%WgyGfAQ& zYmBIiX2Ds7zaqGC{N#+C8m{D~UPs%ftxi8f;QZbd53x^Iv5gDezSsUl)Jx%@ro^mV zp6WWiP7v6XK!}yV(b3tc3jDs|bo~yBKDfBk%BQ}Bh@6M&T?c4-RMEPQ7r*qCjfzR_ z&F%v#tSCl+0J;&qS#RdclU#sH>9`%(YT=qXnA&ore$Sw4<)hC$tOO!=SUs$s9g)Uy zG?Vl_92R4D3q;%@2{wtX+F(Y!a8i}uA5&S7sPP~egNc66_@=;XZ1J@$E*RU=D?nC( z5`WKF0dptri*K?w)!pjICe@Fc0`aeK5!w~jO>t+>vN!r7~YZ7T7 zNze#!V@~+IgKhz6jsK*vGxWmmoPjZf=X>eL>v<8Fo%X%%ebN@~y9Hp=%{#hxh7-|> zOBBvvEN<{BjB9vPs@(PPK44*K7aIdc^7(m@rPp#*CKZa$o`MhzGuS#&_l8BcM|R~O z@sOijWzt$mYI}t9qa}msXoR8~<^l$4L&Hv^pegr5rW0?nhlVo8-LdonFZiTwrrhYM zWgwm!Z{KM&o~4ezDSy@!63v~8t~6N!hi3LmE}`*!d9Ql*FS zLjIr!J_>p8$t+Lv#T&3`^2#m2?S2eePbJzMiJn4OyPR8W4e>+hq#GQO-`ChfnCy7$ z*=Q%9@>er~*Mic*(N%ZlUACBGZ?z8ZGkpte>fgWQ5!7Gg>KrVT*?)2u0A!ne<>ow~ zW8GMkq4{6xn5|~6QE4sxejli`w&&U>hh7Mw7mLNxGVj97IC2{Is9*?1cfZ!Wg6glI z`7)R-%kKr%RrL-qG3EA1Ykapt?3>fBMv}3KcH%gD_zg6Fgnu8JI6ju&T_AbTlZ90j z%w)r?CGbUV`ooFJL)wAfp57}w!192WuXD$CXuQmQ@3yPi#$tZ7E+CzH##o!f`ljR! zC+N?h)B1=P7MX*)o>balWfxk*OUs8-wS$B?>Ie7-#UxRO+#osfH?f$%hk~#aUA4o< zXCd3E{s~q_o6|3QHP&Y9;E_3cvrjOG(ga1qLp-d)=1i00tbKu<)G>J&w;^6vZ5R(Z zN`$uUn@j{<6H4Bb%h&IhzBC$CZIn;*xN$TXS3Ni<;)FGa1Gv4aM1XiR?XLTNDY5nY zRB`wU_~(5nFqedghT@TzYS$4qE>_ z$|r*`(%hSpBOz9?`$vRqScc_9pxX&7pfI#ccz)y(#VIGPO+@DNVJH}Vbmf|- zm(!3Az(S32_ILmPWNgK4ir%dD)ni&!joZ5veLw-Aq95N2vGL5rFCvEFvNh_lw9b9h zfia#~WG`8Y8|~Jb%N|zlff!TgQaPsw^Ak?Lnl^LNBiZ}IBLlqLe#;uSq|luG=3oyt zci1)8ckRJ(Fvsc*ml!4_#T=MHd8cnKBVF$iqg{2Fm>ji-6^m=v3VXeq4%)|TERmvY zj91ckTQyLkC;I;-2REII|s;xaOC&zp!5X9gTrT7!-hHcfq;gZJMxYz!z%((>`9Owv1?AQ6`vI*b0!7%oVs`XHlju^RsW+^e@IflumKZ9<11TKC);%^K+Ag(5 z(>gU4)nv%@NM}>)s+S4;%9`GfSlexkKG||AWxymOSRb-2^u1Qx2xlWy&6v6(3CDeu zRu<=hwI*q0^EknvW&dI3`-|ZMYu#&Q&T4 z4DtSuYEPILHCAEKF|`T%p}ESP%_EQAsI&3iTh7WhcO72pHQ)*=_xDX7E&@-=*%4_B z`clHNgeD*~FVdMrueOdHI=w6ut+576jQv2FZS`VjgtCPp+v=(U%T%}~?dUTI{Pv!^ z?dyo3g(Al6V@v7_cyTW|TYBHSk`E(okFHYW)VhMsc`W(6+>S`8b5&OdsNP1g2lZ4( zH3W0?R#XIQclN&DL$q9QU13FAL3vxb?p#}k);J`~`tUCpH)S3Cnwv&+V~?u@D$70> zV*Y3&`m9CyLhRFOZMH%J18IG@;V4P~gU@muKaoI45^L*>k>^roPu){&T7}`(=>W9# zeVbe6Ly?}hV2d+ao-zv(F|kEB*oe~3xkgbgOIJ!{14&tj8xpY8TQ)*)INifV!Xy}CBtYu9WQM3@)+-|XVs zK_m40i*_<$X-#<>OqAYDR(2EU-spORd41cuB|q%eLkj#0MnfH`r5m)9Zk=| zhNg^C@CAaXL}J2hnXmep)J3WAPLD!i@Atpp)`CkhSD9$1rc6P+w{ogh?Uhl~C&^q& z=r_MH(wLuZdhGN2n>_oNvq6$q5SZ+&9oKp}{1VkoO6Z55Lpjw-g%tK77H9^p2+m z3NzZX-InnDr#O^Wt88T;rB8OQODt;3VbwRW?8v+Ycr%FZkW!$)O$MvJ?>>3R{xKsV z$MpM_S=z3~0Pfn&d!g~O7XlvD+DSDp(%W$@!F-bv1rnr2x<>uM);QZzzb?frOEDX} z|J}Z~wwRiAw8W*{q_o~^Db;u(Tn5nG zs{)co$aM(%xBdPD7^3$%&O(VzC~0}mx-N_-E&)Oso)0OiF20WQ&jGafKT!Mq2gIrE zbHgrPf)}sVDnX@}c9amsp}sVklU(6Xf`Am#LmGJa)36Aj;9J?CW_OcG|>^6;gx#TyHZ}-7sJ!&VE&~|l?Q*x*F z*)~0{%K573_DWLFT7+qGfQ>)c})rhYs`UE$llReLz zN9QHBN0t)2Hn}c`g?w$C*rXoYhyQrURW#prKWXu&uU@dTff53UYRUi#z0SRD`%R#K z{p*92p%_gb&PB?x0VB@ZLv{znT{*0C65S-%Cm!v}sEyO#78Snj*Mm3p@83Z*LvPdp z@N8{JQEb@-5bk`-iQxh?(XF{SP&T1Q?YN8DgUFAk4~gni>?*A)ma(v2FV>s7CIa8K zbr3ZgnV3a)4(o`9LViC@iM&rT-2$sIIjIBl?PHe$xb>D?v}F!OCCN|GxbF_yeXwnQ zKPoiJ$J^+seW0`+*Cw{wlB~i}B_9?$RVH**TH4+s*OiR+vOkz2?4~ECs=Gdag=T{_ zJ1L27qwixz!Qm57TCxu>I8M^$@9%+Rtr}v6n!Q~v`K|S#Yz!8&-QCUyh3k1gs7STY zre}xD*&d2M6GQ6`p3k}^={ zLqh?^XY5-!#f?zqN7rHphQJX;i^)L&0)sJ9{UJQlqI#*vs3e^`lq?;-2;Mp~r0O_9 z-TR!?Mp9UvWlaL?A2{##=^E%KTVn#1RxxCJIKPFK5xxBE9o>F4WHE2lISw^9#&@mU4Q+izwEf#wICE?Nlf(l}v zOg;83Z5~;pV7tGo5a=)$-5{Pn=RT?0=wHR@{aOG?09nw73(^|lJyg349@OvqfnAJ?-J^6+spV4zL- z+>%!hE41P~JMnOhd9aO_dd~*y(AJzMra!FQ%W$UEnU{nhT@$um99iKl+}rp3qAwH? zg@_uV<3(f1b3Q=9@2TjwaM{DWSzw?O*@S8L@b=w0ytD#&aratDM{Q1j=J!6FO*8gr zW6bMbrF)*!yd-bA+nA1^rb2@rfNr^A!WkM}mNmk85B~yyva#!G&B(7T9fQ5i$jjkf zRNM8UcatY59Vci7j~FL?=u2&~bh2&)(G9TbxS>cua(R-MsSJ{1*le>%9^?%}uk||A z<@5)SMnvf&0%7kC3Czh*L&uC6(t2liNbq{Ep@ef=-Fi8vY}i-k>rce#un8 zKEE!U$38HxY_dIdar~YaQ4=#!f%w^>eGS7!zM-Tsp&HwcD(lCUOxV`eW7GA@ zkhS$8(8`x{G>(M$$am)0$qNoSrkyo5avIrRHhz@si|Bg-VQafRgzLLbroLm3+X&Cx zs2M=4wBcu&kV4{UItu4@g#`FipGCCNhyMKs%(m+4l`BSpT0oDK87)iwa<`9CF0Xlr z#0#G7M6QdQ*kD>cgzJIdnRcLhU*x8%qjqPn65jE+a;stkD8`o^jVZ11u+m>JrND!i z)7Q$%-Oh*gs`uh^6*QpuGKwR?RAP8y>v&Fc)l!j-%1@JO|OD+;oz6OnByd= z4>+%4b(t8LmP)_5b5LQzPIepLM}xsRf_Fg2PP{EJ$micb`S;n>gjCwOqiQa@{3z}@ z=`${PO~NP3N*+El{^`NC`)#qc*|w+X$=4$-)y~)EVvcEECs?jB9T0nYT*^>W6P}8=am%My?)vhT6M+aVL>6|9%A%63;i%q_B#)wQJv?A7ouM{ z7+OLIULcVjYn|Si=i%7W`XI769UB177$38*&~FM-cb^GwY_VU@$++;y##EC|_u^sd z*xd2kELZ|gbWA?5N84N6vRweJm!r&Py2)d=o>gpgUvB#FKKLvE+Ih^F&s++Mxz&vm zFuJ1NcM~rc*56%_T~{+#4DuK`A1GK8 zLc8%`VQ>e&Br zE6T61s?#a-OTMrUfB#-rtOs#Zlu;>s9KdZAWtN&2ikLzIo*hIK@01eiXQS>gHxM39 z0z<$51zkqTHgQVY{MyJmTuy1pLBJ0OGU47oT8~j^2s)VrD7fQ}2gsgps>z`n0L)*! z$f)HE6b*fNt%FVP^rVS4_E%=Q{rX&_z#d-u`xx8p0zG;=qBTy26!foonK;G!pw7_A zda({Dd792?+3!Q3wS2Fe+R$cx<^?dcdQPyBEoHTY9VmfvXB%^X$$hS<&|!U`!Nu_I zoa>+_%1OD$xOBEpVP(eSuRv$ytWoDK^blJS;23v21ei*(TYEV{TC?@OPDgpWbT3#X zRU&pv&5KX$3mBtmM67sdzCBF5+@KVGyP#~%j84y81&gC>K0$4o91JR__F$J&e19Ds z)fdNG1x#r@O}`qN-F?JA!(lYlK45i{B=9>KPFBC2<_oNUTMrsM@^7^kdO=8@A%Gd^ z{C!PaXq;mQVm~#c9Yj}?bftMa)#`ls6h*0fUdvj+%*mK_c-+eiY#$WqHz+ssfrJpX z-@e$`3xTZtfOy(^e7BG8FO8o-37OsNRqgIj`L0A1Ya!KkJEn881~Uk8^Wk4G=b-Ut zexsf~1fIk!M~iGbb1K!JN?)UHSw0(|BcC#l?CI;_et_`i5D>>IdJej0hMcuKCst?6 zkt>RFdaq~hi@a2+!P_kHz;)yoD4%v&T23Jg1%}EmqV;ZCGK--Pf|dnEP%Ehu>JO#n z!OjP_L!iR>vqiXpLg#ASlrAVFDgROpa8H$b^5eD(M&Bq zs|QtT*%3rVn(gU2i?Zy*50Iml-5-SaKKM_XrA?mANz`$bQwMG3+QYNS=@rwv(j6-z z=Gx(39=>=F{bUl0dt~|@VCNrRJ;|U%@L7@B$jKxE7k^O$yl{@CJ^l`Q05%n>gg+5X1@7+6c zTQ%2xb}@4(M_NWg3^@-(zNxx>F>$eu5d>IEd?_I4j@jG6fa8?|W4YA}%lYyFp{CS_ z-1R)IaC&PEJGq4)?OadmsnuJ73Y*()_92R^KwIqLxbVF1m+%a}+zrpRvZIs(8KIQk z14axvzCWETRL4bVVAvGd$5{~NSikRRT?zNz!nA%&{<5oi%-vf#ci~VyP>KKZOiv+8^UH0U9R(7rKnHAm}k#Cr^q2db{1w$xeskF(1wN6 zR$&_$gQ(^n`mxej|0$@}!c$3Y7He|qYz456O?xq<=?L1MK`@C}4E;7@^ju-ZO7HzM zMXsa;Xu1nlEW~n?r0~OdpES~(w|5N-$unf#&ETxoF*rdd@qX(kN6-W9BsvfH5<@xu z`(H3-Yb7D5FEDd)%RP#(hlx1D|7Nw_S#Y!2w-Mx3F=aKcM|LruAS>4PGu! z1Y@&?3*9RX3*Pko>^TRrrd0_y%@?6%o9cAJ-4MW>-p_Kjy{m9qjGI}$?P3(HDdQA$ zG^6%&sW?4=BN5YD2=u6N$Nc2R(R_hZFP-?z<~Y2@;4Dpxqo3;VYq?fG5L($JPF#2P zIb@-2Y34p09ojly)*ZQGy&Dv*>5XyuT)EDc@-Vy3Y_XvF4yvd@s0)ompCYmH@@nuN|>80xwM|1f?U{YGVp<0O|X5B;L9K_6O^L7`Zitru8>X{)0s{zig z1CXxdgPPWXlJHLK{dT5+g_3CxiZ-7vXwrmjOHYK#R0_RS)bblbv%%y)QK@VR0*kKm?M4NMu-rKl^ct{%R zPlcH!XOGXgzV=I)vIA%DIsUFpP$X0ff6I(G<96Y)xs>1ihM-i?8kD)S>vVf~qd5?v zuXMJ609}AMZ4=1duuuGpusW!jCVTiLHhrb!VtNEE zoOr{?wvW{juz4%Bz)kLH-3O`YGC#Ly!)44ly$oDhNX46wNds@z*PL>%!ptc5yG@rE zE`A?=2Y-4Tw|QG#Tsh%eH_ASIofYv7bxqbb)TOR`|HH16f7T0*+E>{*nH;yBq%nKR zI#@^jO;O_}fW*tcVP|7(9`hpo4Uq@T)`ZZSqgcYv*|@OJ)VVtgO>3z34q0*d=`7k; zE!F#G^cJJ%15TpKC>%z`hQL|pp$c9Jx;Sxq)S3gCy*Q^}3&d0i|+reIHfRv9N~&qWdJ7zP$qfX*-Q1@AevVZhtEJAn&S+Qj zfszZrx-VcUoiffY1O<*GiT%h`?eJtB&@o$*29{fUz?TQ?7Zv+0Gc1|2NOQ zIY{y0St`pOD%`Hv=dT)tmGCuXMeBsFD?I=Wy@ky_?OAXZD*ZOkTJUi^>IZp1Lm9n38MSM-?oC*$q+LON2>b67{hjKw)xO4=qxx)|dKdxIW1G zwhfiK0dU;440fhLvT2P@Qzxb0u^;H5*P#luW|WXFZRNszJz#Lek~5Bu>38ucg6a(F zNbC^SIqTtZ4Gf0iZWBiM39q%3a@aAEK8!3Po7J(da#KN**P!6C|DXmB=c1`#pz-7; zpT3?YZq^IAe+L=+b(Hka!g|@ng5gQh4)mQ5C6hXYE=D&T7HWRiAtF!$NsEkGLZ$ab z99p_nA_-*44|9z9u;wbI1RalSO!}IqJPpY5-#Ls%vXClLyj( zaaxN(0`_hM*jKcdxWQn&)h@Nz&C@l3ZB*J(g>Rvr7R-2le~LP@?lKA{_>!G-WCabk z_sSR)KY?TPQ>N6l_m(LMQul{@UW4bsl!)Kf`?Q%{vQyDK^C>F#m8;umP zc{j><>hh$btlbK=u2!S@IdLNFxCFxd&p5{^Xq-DN zk_jX!396`P03cltFlQsJ-NzvOCm&2Q~_&T|<;8u+ARO+_7z&cWm3XZQHhO+qP}nwypoZfA#in(X?H( zi=318BwvzG?)Z5nR1uV-wQ7Ood2IkvmGe*1rr2^i@^gkMd=WU=EH<%sO4=3sDDWs% z?W1INX#qE~L~|LlpraUYiApQ8m@)9e59-;@u89y;d}HVwfY)Tzq}J(bQ_3b(rOR7k zAanbQd@PjETA0S5sxC@_ezvl2FI=1!y?E)gCor7hzCh%YA-YA7wyh=#9IgsRC6|l@ zM8A+GTpVQ_T_*JSilWdaZfn+9V@gy=G#Ljve+P26Q{?oxr7E%%sQJh3==0I?jQq9K z{*3&`Mkx-aGAkkMmqSpRi`J+bz19u3WBltTTouSfw!dgikYxYvDl7BC&+?9pO|qh< zxPHa-STHOT9c0AxyI)Tb-tbV&2AsA>v8OT;VkwkP7amE$3*J%1`yyDrpbTiFkBY z8Zn2dbTA{JVLtegPKpkAmKgF=f*1In+l-xnmHX6He%{O z1~@sFKX!|@Ox5gWphDo4l8AY=+=nYXrfjlhX3R^^DO?BnxM#I4AKvXCIa@}U;Da2? z){h=V3ZiWqVd*+ndbv55a+6!Fs>($IS88}V9}MgFi0*V`?q_p8sI`>E+6B7fjiuWJ z`*u`ilyy_&h*QNrzVoyW16;u2?y^HI@A9}_f0Ej@3Yvk5f`uu^@Q||pZdWe6-o}=T zPcBNTC8%XTFA(=v*}dLmNr%?wb{{V}sBO0G7OS3jXMOfr@6+{Oq=u{D@|9wY9JE`> za6juITrVW6-0O2s&{^tgMoRq-_Uh4t#qQ$=83)uicez6(LiH#Yo>RMLF$;2oV@~6u zl9o4x`|9#_X)RRQbCqsenqAcHa;~Sq=ApedoE+#c@phQ(CP7plD7XU{JZ*rguPH!o znT=0^E>KdO zB#kFJqmTj?N*71I(x+vw;f>s}zn|-D{|SNXWY)eM>`dH1YL$C1zPrfoI{TrvhO3=| zDYw3Lej$VEv7DS=cD+U^I$hmu^}gk2bT^ZMAU?h3d1;43849i9=5`u>9Lsp9XnwarbTw3708Au+FtGY6 zPVRPPp|AJd*}(P8GG>L`6L02zLCOj~7!Qu>Rbg|!tXe1}JKl49WRd5R)r~A<^t4CZ zdPD+TP?#Z#x^e0OUXSur4yT4%(SM$QXxd~(OoM$bu4ZN9p zMB0&ox6f=XGc^&v1a0AFhZm#LN-6h*BSs@kkiqR+S6+K~FpoNyo75vWP~-tvC&IW# zVNGR%dOWlx{9_Mgkf7I+#1k7~<0{1c8oG0As?Ri8?jbkHTH`masu;1e+$c!^ZB~kh znRJ7l!*Ek0*8`JYQHy5Zpt8%yLYeZ|Y`$mLe7T4AMGvu(8Tk@|Kr+Ov>Ll;$eBgk0 zijTgyn2$s1k5n=Px}7(Vkh{>N{zUU#i@#IXffpq2vudttI$1wCjFw=QA@;U#cE9E5%C5Bs6l7~K zNt&+cDvi{Ikt}WK=iA@7+`#6qF5dy+aQYH-xbz|H?|v+JVnYZzQCmWwPA0 z=BPYP(OcI!X9Ot;ocbZ|Ee`RO8{N@9)-IGbYpAz4g=>}bdox@(ROToAnQ^0XO<|BY z#{0-6iLAX>LU6j;0+(9crj}i7vDfV>74?kFQN|0onlQQbZM5!2lY0>Zy{bjP9fqcK zKHSOq2L0B1YOGNUT{Mht8{SmCu*aEDjLdp7&lY~z>eS*Z5?05-F^p!c#^gqZbc?^M z6ysEz`L0ytX_3#qbVJG|9KpB{!e5wh+inBNu8$4K`($Hr+g)g`>NgA%wn1KF)N1&v^$AfHAWWGE=C zWI_>wz3pvp)_XrBY-uW2G#F=EB3)n}6E%CM0A|p_Jp+7gCcB-ea^Hr=_EKISnjAG) z>_@k*ZEs~5pOiscmbdd~ABdx&p#ZrNXDUQ|Zm=R)*V!=5hFdq>sL zz&Xi9c7A>fFi{6gjfl$Ec!jfW)g&so#%ipb6+ddSFK@I9uk3v5>qi^X$#kpqnPhH5 z)oe9w=yV^w7U-msaa^DJIR_GmuhZp%3tYlXPMr8474F;o!QHYNDd{9mhoX=vb?HH! zww_?jV#R;T4mF3O4peA_`LJ#Tws66CI+N`*G|#?bDSh&IkeV#?qo#z#O-g|aUr#uV zSvXkI(X>p%^=xkyY}*<@=sCvGR$G-OocR-(Zw|Ni{tuE^2&FL?+~q;~8RuzjqRHMB z;^@i((-Fk>%DBd1;7ul6dc>k8aqw{L#ab7KV?&@*wP9KkMaG>IdB z3d5B+lTWxbo{7nOAoSMpbeA5UZAnZ3x1)B-vb1ecdX^OP&kH$yP4&=oTPsOm*f^uH zrmM-q`-0M({s*q!XrQQ$f*Vc>R94SjFr))4X-^gp3~2qT@Tgr275lh7y?}SFL4>`o z%$hapFLP23tfxa9#gqe6&Yr|fx)?;W_B=J z2vS}FJyo9T ztpMx}CzRd}%F~sr|8u7Z`9%Qvt^BZQG0X|IPR@0DW_izmmK8OZNiS%@V0&z9-{)jm zf)0D8p|%l9xfnJ#9-5(S;;&Em-i{x*+af1E8On!rR6Ntrgd6XUM0YnZhk+DUF|_kn zaChF{BsOeb1&AuWI9w~m8Yj)+(rAFLP$uO8GKM5gfjJOb$ZZStV?;5}CZelldxI5g zY1{XF@CK4t`G@E-uVlJ|(Ih!H_n|RQ)|ki&<(A!j9BybW zMK;}7!l3Y~qOEQ4Jms0m3Kd$S_uaM&osqYolCM8C!XL^onkfQ^$sg{Q5UC(`x_|f`}skz z8Qz}d@ygDN2u&5B^1BE!zP4-}*}Q@VUI2(Nmhr;2)q&5HXemky zYu*GrnZr+sjDvcWkF{taoV&Q`7vp@ASIDwqCK(CJgKylAqE-^J zIu5DE&3bMoV$HSN7)SX1dsflVY4 z%l!?wQ1~1!TP`LiA@pdkp&uaIK+xi0mM72Zm~FHmFMnULXudyMGb;;O&kOKak83*E zxM0Wr$hl)sYnCTU106Z0g>~~f0jVzXM1#>D>`FiOmM&;L6G|p2gazHTD50lWBz1n= z9anD(hDq65(KIqMUU@FUO|UkP;FxA5c&8+|mD<#jlw8l7v~-qLtq;PGz3k)#!OiDq zAX)d#tEVb;a*nmD5JI_ET{$dYh{E2vv&6JUg@2M zemy;L56RWmh|RECUQ{>-UTUIIgx2@&k{#y?PPD95Vn6DrgVPk58Zm@qN}>~2Ie^vO z8bL{12ma*?dAAHk-DZ^yt@EpP5Ao9>>zmyNXAmz_HmQ4vcJcuL=qBw%D7iKx76oR- ziJiaK<)K?#O}=%srbrrGBVOyZE@LSLa}zGqz(s64x&_Cpvcqh=+E9g zh3ca><{E@xGtpw)ayvbhZAhL^A-p^)__0Np9V1#^CIL zw)c+@K3h$Oq!xoH<0@FpO{Ofhd8MD|Eie6D9Fujzz<0}k#jh^er93q1XU{;>`?)oZ z=XWNKHSt_^z>>l4tOL^+9M0bKz(zTgBzH=3R^fcCh0XID7Oi<^_I{Ui@LJLyZ9(}CF{{#HHa-uMh^mU!Jsx+q4QiQ0=9dsE z+zmE(1T^3*+~skhzq=j?D8xu|p_H!~4WDUYgI2d9#t-lmf4p^6^;Am%lFL#=+Z^_O zsnRx7+Bx^m^_Q%dFj5! zG*suwgJDXI!xeMBu>XDdf1G#F;G$!TOR{e{;=>F&AruS|_xqA1bHg?aU!j_6P9YZoAG?y#6;6MD zKXqL0?1bA)wj;1p`y4Y4G=$83)tQ$nQ-lqp+#M_)OaT(T#vV1Spy9;{0JrSbOV{&>B)Q zGxjOmc25SsBTwpsyE*J|N} zgCYx6R9Y|VBnswUZ)kJCG)d{0y-g_%+0Ic9e?BZ)7%CQW7gmaEL=g05W@0$x!G3b8 zke+n6lZ!2FqzU)F00{O~sS)e7N8YT7C$UORUpBnQFDWJ7vgA2Sf^9a6az9r)mx?L^3cI z{>lrEsCkp2C3`F0^(HpXxWDST+^?jMC2w)fH6q>CaZ){6fr`B^!V+q$KIyBM$zO<-Ua)X3O ze&rkg-VCTo9h>8@ znOqSiuM%DTs9WPCUf-4ET1H!z>aGE=JQS`qNo{muJCn8VbpQ5!p5tG?_T zQN|^NLDPYc4;%1tbj02%DY3N0qB6B~1g==_Y)WDIQx)>Y9#(U(?@?q8IK`U_NFhQO ztqduT^(Hh&mSU>ofk&^|#CjESnph*{uGip)@vc=jlxufi7gt+MS=}zCG6MtrB@Jhy z)jiw+BY_69`BE3f!U0)*4(REV5ea9zX3(=c0xluAj;x-=A3E zlU+vWkGZAv{VZ=yW40r%%{@rM^Z@(rV;9IZy~nc0Ieg9yo@=Zte{V28!(QqJcB-zo zo0hK;x4L6rP*ER~=>*@;Ykx9oU`j~mtA;VM(+4{Um0Gs8XFXF=Q6QVEO`gc#CbFZB zAMwsZ2b+%bp`7acfEQ=iX3tsN0ym&VG?*MfdH4>0T#Z9V@LS_RM)QfwQh zz6L+{^{`(a<)vy;LwFWkX`4L9a{x*JKD0bPHkoRvg-A}Br&+?09KM-I*T{18yXcem zY&LeezI@;x;Y@qhb}SI77~52VhB z{lys|{N7h;aHnZAxb|cWLr5CclIF4gXu{F5g#`K>e}OBiJ+8eEHsn6r3&>pVk;vtg z*7l}O0C}9HMQaqi#%IlcVcH|PCQZ2N@2i|ArK-O>+h;nyxskL*G$c+`fg``|$mpo5 z5?$A$5U`4M{9zkbHb0&k?(&;ZHAHQA=85Fl;+d=rJT*gY8I6+DQv0E8yp|pHHy38+ zpB(LY=skE>y+)V8O5rUaei|&!zzX=Gpq5zrQI`M-$^0h0gw`Dia7pz)@?; zfe)A!SPwau8AQilyDvS}#|^}zGrc6a!)!%y0tnw1BlPqzV7#c$b+t_6O0F#G>uV!Z zzO0fF-LvnEjU2MAqaz`7`4^FmboOx8!6{7#poT~W zI%?N`m0h;Ln#kCbBzpe4x&Q)j#;#epz>%l+5y=I0(GtR4ll21?t+x0Q09v~%6#;5T z)`OvUYd&3*T75V^5B6fAR4uAm@A4=$#h$y;p1>rHwgxVcm;HzI*fZlk*qiqQ?AM%J zlNFdVSOWwA(aQE!NSwJ_m1$KlJS0F8b=JYFa#d-7a*QoE0XBn_->?JM3(8oZ2XRD4 z$L;qNd+C7lU}%y4pACHSNCC{ViG1~i_S$}SeALt>NocPc&c6WhE`<}ls@Or0 zLmS2bjIqgs`g2NqUJA;N=tm`o8n)+BxskgMznAjb^czGKo+jCIrMyUY1j@>9tvs5M z;#66Jf)9-D_W_usEUGk_^oiXCl&$e85QdrH3U1g}LA4s>abW}A9Eg!v<+y_7zxA&v zH?PQYR`>E@#)dTw^H*yp!O_cncDx=!7?PAVjMP8PuPDzXX5s+NxcX;XRDGjl9Db`o z!LpPutFEsA5ejo(!eXiXdt|Zzq2ahUYGA=48lm3s?Vlc~L=%PU+%7lgK^fKhc>2K! zoi$?ba!^p^M)qkqq3Lm)4DVh8Bt8dNQ0IMG7(dNPsoqdtJ8T@Xa2T}cv6*#eln;T zIq2)9W!DE+clv)lQFlH@Dr@asF4=?HQA2V^T|8Db^jsA|Nsgg3%jWCa!4UYv+b*kZ zHTm4}djb=${?s;2bXsx2ldyuEq93N+<$uOzw|oL%AUqk%fid%?ur+`tHPdgL>1%Vy z6vpFFA{B&G47xSP`jZEuwaDeQ0VtoSML?2wTqsE1>OI{`mQMx{4NXh&`+y!4H)QX@ zsjD8M8N`Z$9<-euP-SsUzxwOB4BfrWLA-KySnr8cf|_RIHCu6Rfc-|H{pEaP2l z|3>YPez+9D6y|GH380N$V73CWr0$)yM?K8$Y9|ucf4P&dPrzaF3YaTihIQA5Voi5e z!Y1hz)|~GJtscUUjzb93Rf)fcs^+og5?8Hx$UGa*xo=eUV7QFHp{lK|vF)n6*Rue| zLi|Yq4|n)f0s(*(v-la~0(!=c-VD z2uF#y(7H56I9pO1eCChOek9m6-z!S#bf8Wvo-x%4%qaIh`S|sadwo}piynjwi;mDc zIp=G4_nyhxAYDz0;qIVb2NS-nV9A#H6r01*dUVO?I0!g||y;AR(JY@gZuQdV&zi{flxJw|7bMMnb z5KnhHwk#jO$l+MDjgCNl+#Jq|ZtJjcksScOedCg|+Tv#Ca^w4MRV>h=TkTJEjnDg^ zy){_AYzs~Byy!8Q%Wfw{@?kJhsRLeYMem$Gle$Z(_?3fNE@qPfNI+_w2Pc3}Yx+(hRNwZw-*Z7OFS7^GDGvU9zwQKBw-_ zbL4?Seu<}k35gr~7F%&X#V9$me$jus4m~O5(GG_&~-1Zz^`8hHm;L_E>6QNrG*H%bsqmywS zyzQniq(K*=DfKF>!XVt^jJ`2!&8`F#3hVaGkAyGo$p3~6*4ib+-}z(#%;`tLGti@C zcZ|Fivr+?}hYUupF6*$lT558(p?{WCTXiy_hwG278b-q}bo`adBh|=MXOGBg>2H<~ zD0%^X_TJuevWR*I`df$h)dS|ID?N>Wwr)0q+c) z>!hyoj3gh@P;*s$4V>Rk@bOL(m$!kyfm+}T>^zO`}yNZmuVG?N0*}s$-J*Ju?DmH?Ny29_IBD*#VxiL2~ z+jHBRNzcfd8*ZKuk~U2-21o+|l$${cA8V|%MG#=|dP4`oKOR_SX&Ex6SZHs`zUtH? zpomYCy}q(Z8+4TZS}X9U`r>A~PkU|^O-Q)%4*2xOo8Hb-2Oej%G$0d?Kg6oC{};gD zEN^N{&tnaQ;Lj=4kEUtuo|C2kxO#q>11Badjd|yrTDQ%GjUIS-GiQdqza{^Cv1i%s zYz<>a4HX1BmYfUXCJE{0^F5P&mQW!3_1*?Ax#S) z=BF_^b`P}5rNdDEkRA2F`h;dGAvwQmS=nYskKPA-7O09gDup!yaD~yglNSKOM?~OU zQ$U2zt`P;oD8SB!At3W86pb2uTdZO7YGWET_(~_y!8eF>R)fFirm^sp-l9)bL7uM@ zRk!Oso?xM~W@pZ+f~(i6YZg&Z;iUbY8SwcktjiQ6dI657y41?NpJpG_aA&SA%=r$O z+vR6VHJdK~G`iH3wIknOV?S@}J*{X!g<=Aj7N4wwKIh@{Ltb13?1w=Z6IKw$11@v+ z*2MmaE?2gRDloVoXXh;D#w>g!-q92ec;D-46q(tz)GIQrnRjfxcFIja*v}G48epZ! zezZAbnACiN&z2mh!^Y=B;n+Yf$w1(fj?D?2FRaQyD6ps^dcE-LuBzg`+Po|s&{H@4 z((WXB#NK;a!8~}r5uZJD^7YmmVLfu%J?b^~JvzU0x;H!uc!{n^6J)eV4Xn8>%d;DIGSv;MA3MY8hK?mb9_g{cTkS z|HKZzU5UMW*8thhKx0eMA)VbAM=Uxu@rtaAPn}s~UH$;jRt_sO{jX4PkL$QcD6x+Z z9j(=Ac;JTq!3r9>Ix{*z8dNMhD-MCb{ZTeH*5`W7T=nv)JppRQ?8pSPJ|XLF$7oIy zpx6R1MxA*stoRHuhe#;)I5%W5xq@K`tKGunI4x+yD%YU_WWSZ{L=cZIZWgRoAG0T( zIC+%3mm8`5Zv}*9zd?~8GDBP%6ri*M6`xdodwlqWUmLF|1p3oBUiH@gcty5#TPZj> z5o$+Wo|WHEI9;oIX_~#Yz`s&>JiZ@K$Ah;%4<<*|@~tww&!kJ4KT_Q=7dk#AaJfHU z$A_i7-yi#~zmJ0tlXSU1o4((8z8?>Cqp7i*x3P}zlXSX2_p!b|Pw$hpcs{SkkGilQ zb$FX}lc&d$O5AifzF%+0ucI&Lj}OO-r@Yv@DcMbJ?4C zyw|?($8UF>xPd%gACsxOzF%Mau6RHDyao_I&xg6c=Z7D;KgVl7&mLc^vcB(KIKFB> zUb=4&?}snPAJ4|`U$djBaJ^W+B6u^gz1Y8PzaO%AzQSZ*N}<0}yytPb=cOuTF*453 z3kqUTiKqlL$xYFV(sw_i4J7P{FK2; zX-dR7t^aN~Wlc*;R43$3F-6lg|cWh zvTz=9;%IY~0FY);KpWy6v5q|aif*}Usb;7WxMcz*(PEA`mWo1QV}rSDaV@c~gtuj+ z$BSnwEQj67*QF~4_c+FiZu#q&N+tP7|M7|SrmM!R$@jzuZZ14+q~c|pSaaWFOy}oL zTA6@W0|C?3g5&v=Gol>tg@(gIRMpMz41~vi^wlBZBxr@iisj>YL@H6vI88yx0X zMLJ^H;@V=}2^=Y6*|);on!OI@KmSyTuxKO05MAuwE3&ci+@<|K)%krBk8T-F5P6L0 z+Jt3pTg0w}(>=)UeWKAWWYP}q!X?fbt8i-jurt;eB(FG^@G7ta^LqD1ew51BXSu_! zb6KoK*CfMJf*uAXNI+u3z6!N-zm}(y=27p}l`7F~hFmne%@E{qZd>s&Mml)|8ek@O z>VSr#9P`^dU3{*H$JIbBJKgV_&B5fXauM~ErxWZ^E#EJ}gZUg0al$QAj>+wJ^30Em zqqhVa%lK@uWLa7xpiSkhe6dkxS!yG(onv`fbEKUEhQDz<%bi~qHmdA^Hw&E7jTCu0 z&o&JPd7-eAq?|i(?htG0GX6|uF?4T)_E~}(Kl**8j8#mV+`;C2zGUo`h&AC(%iDu3 zJE)jziFeIUaTC0izI9xq+(LU2SIG6m`r%^%%T)XFhBB!)m)W&7R~j#RvUGBrwZH4h z;Sn9|;q%p-ap4#vF=03(t1UI41MVE%Iq{nLEsfjW#@U^XwtL;GcJSlIctU83Gl!;O zs)M-e!nMD&T<{{2jpgj~q%36~2i%7G?F?a~fJ0>(fG-g3i>A*W;^zf$qP+U$pBZ|Zz3=qmBG$TZYDRYQMkgvOt+*}{wz>^Xj{la*}T6rf=?%) zgXxZOGf=V8m`0bFfeFKe!z8DHoWE#vw0QwZ)``C34m&pirJSc-cc?vC83KNEo7%xc}D zmMeWAK9y>j!!;Yr{=(2RYseuvj>1#Z@UiSl!?T0h9L65#I{z`p&CrYU_k<6vd+6*ey}gSMl>_aKp6( zRYJAI=!bDqJrE!p2sj~pT*T(>{qot7SM}WdW%k+eb@nQgEd15^U;5zqCL-=bq3(j^$-(>P zI5ZLJC7}tn!|T;!>4Qx;wk6Gqooi9qGru*mg_(BCqo)Jm&iJw>E*0BNP#3!S>e-T& zoMo`ap=r9^aU%0~$M!AYMMpn?(n0o;;R>`VpTS%&bs zf`d}g+p_i#Tdcl|u)mofDDG}ov$?0Y*xV`X6|1dg63?0$zudYbw_?|+J*@A`Awg;0 zxQ5B3!}jL#wmosWl0lVVv%4|3-tRf9rH)fMbIlt|&zmITKNqQy^Ea%r6N@0aWWz+45A9Q7mBAI6Svaku{t^L-b|-Gs=c;<7c>!DFJ+#rR|sBSw#MGEqL*_; zSWO&!IRjQ%S$fL7eOO1ocv?)QxlFF0Fjo^z?y6btusWosDt)ejaCKj5doLa%f0kFd zM0iyUq_;E1F^jaleN}0nb!D0eA8Bkpb{;4dO51Z=s1Lr#Tb8B|Fr{}` z63;SwI4+yGuOk+kW$uy;H9lXmY_sph@Z7NU=Jw%yUQ|F6`0Hz83e(81Ec2cvSMnBY zi!??fTUQ3|EPc^#mQh+9n#` zzg#JAF=G~qs(@0iRnndpRqB>^?)4u8d50mEtsl<{?{MDL;R#o+gs;0r!ToqQ-TDIBvr;n1QudCE@Zncj#cgG zKoegISJw;fntCV8)dcsROIP)jTWc`!<3#-ZL)-l5V7J?FxBEj&*SF&Fa9qGPXJ%z6 z+lN~b%H8;Z@~AmMm84cg2g}|0VPpKVEvH2^61*MN;rfVUtU3-WF*B|-M&Z^pd0crc z-@YuNGTxF%HCHwWpVSMxE|yTuULGev9>tnWZP8ywj&4c6lx&R=%b5(F3OrgM&>SLK zLeLyNT4d1N2{W(_`Cwp3I82g+RzfSP?eD?CP%%;}|5R{VdRlNA6$2Fm76Yq+i^0th zS6DH8B)lXEDhVo4iU_p~b+#IqJ z`daWBRXtTbRz0hMtHJFMPnajcjnr0fo9cnhP&a}r*-fCEQ-XpRWFj&FMRF0jI77k# zadDy@fj+^$#DK(r$Ut;Zc96YqoEQNDDFQ*f1fc|>2w}7kM>uqXh8Sg{5NKKtLovz zRn2I%1Q#;W<;9{^k)6eXuQIvaSn!9h+TX7fwKgH3U+4O}XtB9nc&OuFrun>7x3G5< zyjwyg$xfcFV|D$cEL}r6EnkI)4<%3|kf!G^Zh55}GK+Dg+17jL zqy{;lk781z2u^OFakD4#?h?G|u8^$;9umnI7L^L&#_Hj6)Fiethx`et> zWe$ZCGRfe|6iT2pd@%VV7u$~Uf?t&CGAC%NZ#SSxWV7AhPfDIXookspog4K3Ao%dY4J~w_&|^ z8l7Ha1yXLc!@DfEpI@1`6!?>Gn-qNl@qS5ZG6Y#Y`f88& zcA0;~!ljbZ=RPBJRBJThS>@5XZT0O(2fsZ|B+j&lw9ndVw*GYD_8`V-xgSgLwH#M- z+8;yPC;14(p`8PXdbMMU`M~D?k#a5etIrn!34qBKprdQSo=BPPgCnCiZ#xgurIkNl z2_nJFo_K_O(PMb5Z;vPj_N{lS9B82@<$8hKhX7zl^!#%rK`MsZc@X2R-@6S$2sk=& zu2pi*k6&~y2TLC|cp$dY4O!+@*@-N_QBL z))V={M_DM4$Dlb1=S`s9gx+x+#i1hR$Q~-864<`^u0up3_uqk*N@X0`P{XW9JsO%k|6bI!2)2D zPq+JVNOuq8o<7S&NnPjHz|V9eaP7vvoZ33PRq7vC6y$*fG8{$KCrdEK3>!er^b(LH z47+u1NID$Y4WK^k*aM(C?AQySJ?xLPAC%wpbMcRuJ>2?OB9bRqZmd=-=-ub#0MAT! zU{AJU_-}htt|UoHOB73sXXz^^+qf1MPh#ZN@*zQ(SnPu1&*#NR*9f`3|7?ZZNDa+g zdGul28Z5TGl5vXv)I9YhP7|hBN(;84t|SyP>ChbJ6kcvxKt4vPZ1TL);W+hQQ_-5O z)jWYwSjfjhU0j;2(o#s|E3y5IlGQ&+*J91(4y;e2RX%EKjznf0CoJ$O9tO$kOYvn7)8Z0MVd6=4_)ncFeReoegD&{4ydD+PV)e|R48 zAnM>DI#l&<#G$&cVGG1Km%)VFLvKar1T`d}BVlhG4?K`CY#_8mmO(uwhF1^9ARIMVT61aL)``rab))4HY5_qPyS=Rd|e6LiIc_X}US^fyhjwADJ!|Mr;8d z{&zQ+#Kd4%wOa3Z9y{H>Hnwh$nAT@j+bo1e-eJwTpj&@C9NCK7(BR0xeAXW_{rEsb zq;kpp6R;!u=B}@p*k0A@SzyF{OIj0dmhI2phC%o^p$I`W0|bRQ73=`5k-;(sBES#_ z&XIqjabLv#A`gj}sF=jT%-wfxnL@_}u;z>$)ZPq6K0uaa1M6FaK7dV%JQNra-wQ>R zO^%pOcdanB@WF&?uEvmxkTe2l{IzhOXs%nM+k|-8GKu^l1{e^rticJJMe+kAYFm!4aXp6T0-T{1M*5=yw2aY z%r}eR{=L&D+{7gPI1(aLmo!8|6wO1iW^+Dzx0@2^Lmt-6=-XyUtx{qSkLR{g$9yvV zOkLWezpO`m!j=+^9U@JgRfT*(LDMMsZw3)ZMe}|JvpEn(j~Q#F6(&JBBKORtKb4A52_k}Bq?o`o zF@7)l_e~>5;a>}29gFl3$Kxl(qa)gN3AOp{-3LRg2>I1TM=sQfPDW?FLal=x z@?nh%b=Fv}eVY2X&bXY0rZY))I*v?zch?+=5T^tz?JCV$8L2bq0J2vMGQ>kpQh#d zEVG_%;W}}vluHCGWPCEZN)EszUf`icwcNDvBL8#q9bn zv+bP1Y1)2C?ds!jN~YQh&^@0}&e`j6s(Sl%;|^za+7Z%r%6AA)$EEl!v)!HVn*B^G zc+2=yle|;BO$7ik?_9mTdb4rKUEz|d?~3ss@lX3!|HNzDwsUCn8k96z2>(qJGs`aE&?^>qZ3PVL%mV9t?es%->>+aDR<$3i>CjY=8uS!GFg+P-#fJGyLfi?dSzO%DR=)qIRlFRVKXU41~;CGYJ z2Sj*v>gYYv=QuJ#W>m?Qzo%}9&zXguL%74E5SA0$>;{Ed2T3mLq#_6fQsL|E3hy?H zG?otdkq0d14X-TW4Nvf04qCwOE=?J5OJ-N>&>xiXp=U;TPsu1V1sVTtOsJ-`G`DHyZj` zh0>fNJtwJAS7u4XeV2y z&8HS(1FR#s_A=X#et-U$YWOQ?C;0UdH^MB~B8u>V zKqPh_nGhQ_ahntyX;O=|+PYgW$$ywr(4Jo!DTSL|fe!ReUuwes=gINN3^#j=;G7tv zu_!J&OHX@SVtBI*<+0umtjYD!J#Bvk3^ln}Re#YBeoYB+SBf|{OoI8G*d}pyPg$8U zqUt5mwNrM}Vph{4`V77g7~tQ99INY*{sUa4xwKP%UxMlWr;n6Owy~_hLi9ZeMCMm< zA7~a6$(sZ4Mh8T~KvSrt(LHKVamE2cz%Y$b4<#V0H75_(*pgZd>+tLGR$bdihtdsk>yW8unCAj2W4hrcMs zqmZYvyc-;2jLx82iXsga1K9t(obEwFiS%b`C+Zo8c(;RtXa>g9r~L`ck4uDuj8g5F zF&_Uyh7QuJ$4r!_R|8DczU!xEb1!vbORpFY2IuLWCzC`DoVIZgeK3k<>~OnC__b}&JRkl8b)`Y3i9&XW z;zkzOUO^g*+9TKh2F4>HOGM*poPT&69CmH6>ObSjqkQW%}!04}k6_^S2 z2+NiIFMwJlYr~jHZPd?~LamYZ*}t6bl~Q-rUy_Qg>&)1^Zghnx;Zv0nrKtxE%|a_l zOMmCI)g|osHRN3oyq3E%HePMSD$q8A66JiOC6K70eXIXr%jI5zSY0{p|?V2K?W0W^$0z`SbE zJg}NnT_XIFn*h&POx&L&kpYb}5Urqr1KGHA?hg87z6 zf1S({ + type, + schema, + coerceTypes, + stripUnknownProps, + name, + required, +}: SchemaValidatorConfig): SchemaValidator { if (!type) { throw new Error('Validator missing "type".'); } @@ -44,7 +49,7 @@ export function buildSchemaValidator(config: SchemaValidatorConfig): SchemaValid throw new Error(`Validator "${name}" expects a TypeBox schema.`); } - const check = ajv.compile(schema); + const check = ajv.compile>(schema); return { schema, diff --git a/src/types.ts b/src/types.ts index dfd338b..078d7a5 100644 --- a/src/types.ts +++ b/src/types.ts @@ -16,68 +16,73 @@ export type MethodDecorator = ( ) => TypedPropertyDescriptor | void; export interface HttpEndpointDecoratorConfig< - S extends TSchema = TSchema, - ResponseConfig extends ResponseValidatorConfig = ResponseValidatorConfig, + TTSchema extends TSchema = TSchema, + ResponseConfig extends ResponseValidatorConfig = ResponseValidatorConfig, RequestConfigs extends RequestValidatorConfig[] = RequestValidatorConfig[], > extends Omit { method: 'GET' | 'POST' | 'PATCH' | 'DELETE' | 'PUT'; responseCode?: number; path?: string; - validate?: ValidatorConfig; + validate?: ValidatorConfig; } -export interface SchemaValidator { - schema: T; +export interface SchemaValidator { + schema: TTSchema; name: string; - check: ValidateFunction; - validate(data: Obj | Obj[]): Static; + check: ValidateFunction>; + validate(data: Obj | Obj[]): Static; } -export interface ValidatorConfigBase { - schema?: TSchema; +export interface ValidatorConfigBase { + schema?: TTSchema; coerceTypes?: boolean; stripUnknownProps?: boolean; name?: string; required?: boolean; pipes?: (PipeTransform | Type)[]; } -export interface ResponseValidatorConfig extends ValidatorConfigBase { - schema: T; +export interface ResponseValidatorConfig extends ValidatorConfigBase { + schema: TTSchema; type?: 'response'; responseCode?: number; required?: true; pipes?: never; } -export interface ParamValidatorConfig extends ValidatorConfigBase { - schema?: TSchema; +export interface ParamValidatorConfig extends ValidatorConfigBase { + schema?: TTSchema; type: 'param'; name: string; stripUnknownProps?: never; } -export interface QueryValidatorConfig extends ValidatorConfigBase { - schema?: TSchema; +export interface QueryValidatorConfig extends ValidatorConfigBase { + schema?: TTSchema; type: 'query'; name: string; stripUnknownProps?: never; } -export interface BodyValidatorConfig extends ValidatorConfigBase { - schema: TSchema; +export interface BodyValidatorConfig extends ValidatorConfigBase { + schema: TTSchema; type: 'body'; } -export type RequestValidatorConfig = ParamValidatorConfig | QueryValidatorConfig | BodyValidatorConfig; -export type SchemaValidatorConfig = RequestValidatorConfig | ResponseValidatorConfig; +export type RequestValidatorConfig = + | ParamValidatorConfig + | QueryValidatorConfig + | BodyValidatorConfig; +export type SchemaValidatorConfig = + | RequestValidatorConfig + | ResponseValidatorConfig; export type ValidatorType = NonNullable; export interface ValidatorConfig< - S extends TSchema, - ResponseConfig extends ResponseValidatorConfig, + TTSchema extends TSchema, + ResponseConfig extends ResponseValidatorConfig, RequestConfigs extends RequestValidatorConfig[], > { - response?: S | ResponseConfig; + response?: TTSchema | ResponseConfig; request?: [...RequestConfigs]; } @@ -91,4 +96,6 @@ export type RequestConfigsToTypes = TComposite<[TOmit, TPartial>]>; +export type TPartialSome = TComposite< + [TOmit, TPartial>] +>;