From 9c773e8e64e31a712178ceb6f2471b42f7c4424b Mon Sep 17 00:00:00 2001 From: Arthur Barre Date: Mon, 10 Mar 2025 21:52:09 +0100 Subject: [PATCH] update UI --- backend/pnpm-lock.yaml | 29 +- backend/uploads/1741639296658-recording.webm | Bin 0 -> 109347 bytes frontend/package.json | 1 + frontend/pnpm-lock.yaml | 38 ++ .../illustrations/CookingLoader.tsx | 69 ++++ .../components/illustrations/EmptyRecipes.tsx | 51 +++ .../illustrations/KitchenIllustration.tsx | 62 ++++ frontend/src/components/ui/progress.tsx | 26 ++ frontend/src/layouts/MainLayout.tsx | 4 +- frontend/src/pages/Recipes/RecipeForm.tsx | 340 ++++++++++-------- frontend/src/pages/Recipes/RecipeList.tsx | 336 ++++++++++------- 11 files changed, 665 insertions(+), 291 deletions(-) create mode 100644 backend/uploads/1741639296658-recording.webm create mode 100644 frontend/src/components/illustrations/CookingLoader.tsx create mode 100644 frontend/src/components/illustrations/EmptyRecipes.tsx create mode 100644 frontend/src/components/illustrations/KitchenIllustration.tsx create mode 100644 frontend/src/components/ui/progress.tsx diff --git a/backend/pnpm-lock.yaml b/backend/pnpm-lock.yaml index 907134b..dd7c930 100644 --- a/backend/pnpm-lock.yaml +++ b/backend/pnpm-lock.yaml @@ -9,8 +9,8 @@ importers: .: dependencies: '@fastify/cors': - specifier: ^11.0.0 - version: 11.0.0 + specifier: ^8.5.0 + version: 8.5.0 '@fastify/jwt': specifier: ^7.0.0 version: 7.2.4 @@ -54,8 +54,8 @@ packages: '@fastify/busboy@3.1.1': resolution: {integrity: sha512-5DGmA8FTdB2XbDeEwc/5ZXBl6UbBAyBOOLlPuBnZ/N1SwdH9Ii+cOX3tBROlDgcTXxjOYnLMVoKk9+FXAw0CJw==} - '@fastify/cors@11.0.0': - resolution: {integrity: sha512-41Bx0LVGr2a6DnnhDN/SgfDlTRNZtEs8niPxyoymV6Hw09AIdz/9Rn/0Fpu+pBOs6kviwS44JY2mB8NcU2qSAA==} + '@fastify/cors@8.5.0': + resolution: {integrity: sha512-/oZ1QSb02XjP0IK1U0IXktEsw/dUBTxJOW7IpIeO8c/tNalw/KjoNSJv1Sf6eqoBPO+TDGkifq6ynFK3v68HFQ==} '@fastify/deepmerge@2.0.2': resolution: {integrity: sha512-3wuLdX5iiiYeZWP6bQrjqhrcvBIf0NHbQH1Ur1WbHvoiuTYUEItgygea3zs8aHpiitn0lOB8gX20u1qO+FDm7Q==} @@ -330,9 +330,6 @@ packages: fastify-plugin@4.5.1: resolution: {integrity: sha512-stRHYGeuqpEZTL1Ef0Ovr2ltazUT9g844X5z/zEBFLG8RYlpDiOCIG+ATvYEp+/zmc7sN29mcIMp8gvYplYPIQ==} - fastify-plugin@5.0.1: - resolution: {integrity: sha512-HCxs+YnRaWzCl+cWRYFnHmeRFyR5GVnJTAaCJQiYzQSDwK9MgJdyAsuL3nh0EWRCYMgQ5MeziymvmAhUHYHDUQ==} - fastify@4.29.0: resolution: {integrity: sha512-MaaUHUGcCgC8fXQDsDtioaCcag1fmPJ9j64vAKunqZF4aSub040ZGi/ag8NGE2714yREPOKZuHCfpPzuUD3UQQ==} @@ -516,12 +513,12 @@ packages: engines: {node: '>=10'} hasBin: true + mnemonist@0.39.6: + resolution: {integrity: sha512-A/0v5Z59y63US00cRSLiloEIw3t5G+MiKz4BhX21FI+YBJXBOGW0ohFxTxO08dsOYlzxo87T7vGfZKYp2bcAWA==} + mnemonist@0.39.8: resolution: {integrity: sha512-vyWo2K3fjrUw8YeeZ1zF0fy6Mu59RHokURlld8ymdUPjMlD9EC9ov1/YPqTgqRvUN9nTr3Gqfz29LYAmu0PHPQ==} - mnemonist@0.40.0: - resolution: {integrity: sha512-kdd8AFNig2AD5Rkih7EPCXhu/iMvwevQFX/uEiGhZyPZi7fHqOoF4V4kHLpCfysxXMgQ4B52kdPMCwARshKvEg==} - ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} @@ -818,10 +815,10 @@ snapshots: '@fastify/busboy@3.1.1': {} - '@fastify/cors@11.0.0': + '@fastify/cors@8.5.0': dependencies: - fastify-plugin: 5.0.1 - mnemonist: 0.40.0 + fastify-plugin: 4.5.1 + mnemonist: 0.39.6 '@fastify/deepmerge@2.0.2': {} @@ -1113,8 +1110,6 @@ snapshots: fastify-plugin@4.5.1: {} - fastify-plugin@5.0.1: {} - fastify@4.29.0: dependencies: '@fastify/ajv-compiler': 3.6.0 @@ -1323,11 +1318,11 @@ snapshots: mkdirp@1.0.4: {} - mnemonist@0.39.8: + mnemonist@0.39.6: dependencies: obliterator: 2.0.5 - mnemonist@0.40.0: + mnemonist@0.39.8: dependencies: obliterator: 2.0.5 diff --git a/backend/uploads/1741639296658-recording.webm b/backend/uploads/1741639296658-recording.webm new file mode 100644 index 0000000000000000000000000000000000000000..84faa3a25df035ac7d497c3e2c9517a998b0799e GIT binary patch literal 109347 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

QTLz#BTM82#o?8c_k+#xOo z{HbDPwHRh%t7%MLdBwibtdZBAS}L^b4|v;SJfkf$eAo%SFok=5wOFrXil|s_9q*}o z0l-*161h5v#!CKOKW=UdjBA0fv7XH+APHlhzBC{8%%Tu-;MKH1lGfL@??dboBI(*U zc_=_I+FLp8-kL1m4zJz9Rt)%Dq0kP$GC4{(YfXB4KnBlQS~a*&f@bqo*V&{Yp#h6C zQlge);)ud82V5uGgx7?aI4O??j^#T_RLY*CHhLByQhEQgMMrjC^M2LUqP^_d~GA*AjEBp^Q2`LTkTD z%`EU)CWw6AE78Liui{o3N3Jg6DmcwF5Q)V$+RBTG4_naVkl&xFj!$l2(Jr3e0Dl^q zK{6YzO(2|`OC+_gO_#}QCw3MH1P`|eN{8%2CKo&Td%+>tlG_*3u~{>VvSajozL{7? zJ7iK6vhLKHSqb^4<|x{d2#UO4P*mgOAsisJZA@t4u}Womc@lS1&{gj}T

V7BUb@ zsKvxPPrGICh_)L?&cA*4Wx>eRAK5X003^wY35k@0s8tl-?y>c%pottbR^g+)Z>Z;q z;e2S_;D4qG3N89f!mePo_P<)TM8g<4@)tbZX2_OTCEpWD4)4Js1=3uh zVBBj-=G>3OQge!*mq6uYqAZunn55chfsFN*P(;YfGJr&_0P7Y9#xqpuRUPOmxY<&< zL{*7cKy_+1gj0yvtIi4M`5(wYIRAmnU+O;BTHqT)EGXBV<9hyw zqR}72nq+96fOlBj+-D|}k7uiOzU#4i1)4xdm3Bhl#dl=t@5+}wVUiK#YCB7-d|5KmOK`81+YRvdcTL(@1N{9_$}=7zg5Te<>$Y=2gjp(wdM>TJ z@F==$Vai(yU?E!kXF6{{C!tv)g@sKkg3cOh6wuc7{Gx8~qF!V`CynvlLJfB~$#A`T zul^6q_y9?Kvx>+nub7~$O-()tR;5PaC3sJGu9n|}gX>8HE2oq%`d{#VX*Lvf{QfMl zZ<)4YQOfeiB0QmcV=8bF`lxx)y<6!go5OF4YvTC{zlin+#NKU~QB?2O+9>OfxxHFNk?8$eL|IjxPu~*t9V$-UM5P#2p?;W0&q@Q|{DI&pn~muZrU#CP0RS zQx=zd@2513s^YuNY4niEBD8B*w*N^$JZMnf!5Zvn;1f$=*$b{`Jx zdFNQ-hnNj=C+Dwtou`kUPdLx=)dX{_YL&h)Fp;`*Wqhgmo9JzeF%rgmP$OKBo!Jg8 zgt&~7pjWZx8mfXg{?Z=o?+0cappvoBPT(~PfPs_83qc>1&q!0&w=KbFJKU;v={>Pa zuQ2!pe%0U>U`%tX7Z}xbkx`miJfF0CfpHSmbZ7Md;J+TAgSwub3xez2Xv<=TqS0%? zxGKm1qdNl-2D#xHLgXv-xLGY;21jQS$DJ@9gD(qI(sT_1ltZj&woq&m_z{u(61Q*aMgg zxh5O^8zDk_-c;sp#U6=EP?3?&#QYVgMDfoe7YV-=mKxXQM`xSY^*v>9i1`TrP%W7s3Y7cU+BQNtmj1~Yrie%nGp=t@j6p6w z&h^nUe&v|;DV5+f*y>Qnm6xFTE$Mli=*fU+?i3Vq7>z^t?X43sg1*D!8ie)t(E7?E z@@%;?M2o?YceFXN`U?A}Nli`fbmcG)fH525A`pG@|ivMqqMzm?4fo0i*HENZ9G`IW`7(>43a#u9cB1;5Dfm|M zV9R~59kG#>b1LbZ!BvZb0Sf?gLyBbf{&9pXHOXnYA|rF;wuxVihqE|7$k(f)#ALz2>n z$XB0DDj`ZfcU$)cae>;k$=3F{|KvY!3M>t;0OPkw2-=(QO(Al(p!%}|byh*NHut%aR&QSZBl(lzo7oZ9d8C0=osM2c z-NN?2q##`F!iLTnZp+ntJo}eddDINJ9c)Z}DuJ=xy(Di@q%vOjrBToTRNzS*x9k6S&&s*qNoCNg#C_1TM85w@H5N8c)zt6$Rv3qw1mR0W-ccKr>lw@pI}Ax~=25 z^;;#Dt;6-pQcJz3Jcq__@Ez&Wn`BMRH-q&$B1dt&W4N4TK#76N@^IE?WdX*7 z=RVnKBhYBM0rQ-$qc8ImuP=RDrw13&)bQrR0;@+1t>NPs%uKFP4nugAuNZ=PChla> zM*pcdXw@Sq${|UT&tjE;RG!X)PgjsRzlLG?@^nc7NzpZFzsQb z9BaR3vY0#V2vJmDA%e)yX5f9-PUm&rxdGb8Tk=JB+f)0B_&&`LW&5$GDx~jpcXfmdggwGQM<5icaUPOup9QCl>?_@%aC+vXmN~`eQ#8jk%XfD~ zvu0uAYEaV!)SlHM*obA8Gt;yc7KR$CZlvBq?nfN)<}LR;(ezzz9>*qlC-A!|VH$1$ zDaJeH=CrigyV}3imxws7xVv@B^sIPE{mI#*l99wHfGHnW>F2_FNMj$&LG(d%QShGk zj&>q>s$`un&TjcT;x7#i{Zx92tUa;((jG!@Mn>@hKTK`MF}PIn07dy9VIR4D)#QPW zTB?Pq(ZdE7fUBWqg)UCtx?V`+7Q#B{0dYD5MHDZEaEq?y>IT9YDQ>`HZ}uvZl6B_$ zJ}?$wIkpgvcg2eLX%JGrThN#DExTezF7T{1L7_Q!(yllX!pu*LsYI3Dm2aa-3TjL1 z?zHCj>BM+=o?dhI`AXFNnI%7E*-q3>)_eMh1L_~$HdvA%+S}M+0mCoKmFLcD9l%AbZSxbxfq}WaGG5$qTRRnZB-_i%aJT_q(ExeXzm< zp;~rn7(dO*JpPOenc8Sbw>_A#?KS-6{k)PEya?+gN z0*-&9IVO={&%vhHy1e(FsE?IfaFDIcmHOCQ1QvoZUtxodnTshF&JP5d{~!IZKd>ar z)<%znGTRZMWeo6weoUN)uE$7;1F$3lmf@a+%vY%eE|V_J}F?R1l< zRBVcfzSrTkBs-=dk=Xqp>gmc+1@>tz#dL@-5H|Y%JQwtS6NR(v-Y?+&ky0uuE1|$l z7tYezyo{4~i!eQ%Z8h%jH3UrvtW52X;v{b8Yrak~xpx6W^wDOo)|orZ805qAbn-1W z6a!O1O#Or9CbpOXjw4XUtFtnD@i5z`4eU!{R8@`*=cm9Id7cc5mOcgs8ImI=(}p!I z3FydmDvZ7}@jPm%vWQZdbJqR0Zi5q_3294KkF7a`bY5!y)kcydkcM3o{~!@HCJhVs zSl9PMswmUWo-)$XZ`QampeMn>>5=S00b_OpOJk#ks)1m1sQx`85@rYp5IvWk{=wD~ zS_sR~&y-nevVYOoIj;`zp)mJlG@s*VCzY|JcdVv?BjMx^_t4w6W?M`}k8UDz0Nw3$ zSY;BIccW^p%JpJ5S7!TDFY?Lg76!2*5LAp5vyU2)Cqg7SHoUFx)qm&v^vs`p%$KNI zIRCWse4{Z7o4amC*Ck5?qxxpMorJo>-XJb=gy_jcRvBh906XK{PP=jgS~qXarJ-w`JY~Px6-ya^j zB+t6kQ!E86^^M<=3ath6cWu^9_jup#W-azg4dDV-JFC7sqN8K%a@rD=l{WZDG8{q6 zVjcfh6Fs4{1nDfF%(}`92KD@e(1S7P;it8((rn6OfLdp+%dZawgdoQpOLa+@|NfrX zLe45Njh_IO6l@7OZ|0r2%t}A;2F4f|5P3Ch1UakwJ*U|W6QZ+?xtrPmpG1HQZ}K2} zw%0SwoMMPGVz5;vsB!RQjy!fYpHB*R6eonnO=b&X2x;uA&645<6DU4$AavEupdq1_ z67kvmZ8~P!`55wVNY?(&Jg~z+x%V3B@41Lwk2R9Le76r#xSXv6l!=nGLCOQu>&Q|l z&m7M1>8S|VM90<1v&_AHToP>m^oJ{Tto=B;unfDiH|npw$*u#A?p-OmP|6Rc_yWI0 zrf!KH3=cLb0!el`Y1cFAy42?0Ezr2l`~yUdspnw`GTgT~0F0HdK!}xwWDX3aaCJrV zbw|ID=l7!7f?({X#0LJH%u04InYx-S!_ovjHvZNs7VZoLhWU@sU)Uc6;e`%R^5%d5 z040Q*GT*`I@c~J3-=bNo#eP#)PYP*o+*2s{!rEL*BVh(XV1ZmwAALZ>TWOIq?z@() zUsJwkGQ2iNbyYh&on)#V6)8pS&(3O~Ot@5BHaND>sc(a@EPIEM$xFIntHKV#sJC?h zUio?et^Hrwk6*{A85B2hF(#GqciLSpyQDS0N6>WUNUi|5?#C2g-;Rf(7)g`vwuJEA zSTpVTX*SQjR2zib;lp?uM$pFE20fTUkRAjblRp7NGvH_HWl`1lj%O4s8}6x<&T#VR z2(Tb`2~6c zKMMZp7awc+eeRJ#*zIBHzvw^}p|vbvxuWKOY<#H?&3L@skB}zWf*zWHu)18S0Cr4E z3KFiFz{H@}r4{fZ4uoQ&r{S|RukcOBM&nlNo@?!8d~ejdWGc2zvq+WjHoS!F z=bvIdavj*bw)nR;Hsg?SQw%>ar(FWtHOilRZor?6VH`2YhDW6rn)B#=nej8t#-(%?+duYn8ag68 zxzbJLX0N=yzu--ckhSG(yS1uEpq2ZI+U8OmWcrr0L#K9$2*dl*K&fa)fY}p701o- z)9{*U^FR0ps-Y>u*cU&6>bHSnJ7tu<{_K=Pg8gMOfy(l84elg=7h5UKFqO*|;=vzr91iSEOS5;xtkpV7O05}Zexvc=E* zPy7Ow_)q-Gst2!x?Q<_Vta2f~_2T>l5j5x$*JQqTab0@!hygQQqKaZ zS2l%-kb3DlwbYW=te2WmKQ~B>ut_xGrK1gh@X&hw9ON`PHGpu^Aj7Iulck{N_g>m- zWV2?RV6|PzoOoc*_Z%R-srLi33;2huV&(fW;H}A6!eg+94Esmv*w|)dGs!+6s}YKp zKb!1lL`IoR%EIDqd*iM5Q9S7xs@Bupz>;*{fXo?%J!DoyQcTdyu8*w%^wLL;(?_l& zWSA8w5bQlVesD<9?$xIQZFyJhakNU=u1W0F2-|90)js+2kJ3DJuY#>mj9F(+> z?z|OU1Pk-R3=49+VpPJFg|ssR8k6tT!i2_N>lzPwJ-Dsnu3g6YZniF~TmCk*;tLrU z+SfYeQ5C7Gmd@04NCJvWu6}IBO5=?HazY&g1|j3J_7WO7nF#WE-{c2u4Am~TS@(o8 z84Lor=xez{(IpC9-hNnZ(lZi&xh-hn*YJJMR6CmIaD>Z{&ChaL_zmFzDU<2cDIc$= zamp*}fL+CiM1i}l?d^~-vnhqTqd6-UXemhl@0SIM*JwqU^z5Lp&%!^*Obx&FiNCG{ zxq<}^p3Zsh)K+i)gZ_MM-wRTDeWptQme`!DNSfe{@(V9_*J8wfp5EEF=0 z!?a9rHreqXUge3!>1ArnykJi!C?SGYLj01cik?d!pbJj8p2Rh~x7R-qMC4ZSR{NHX zTTXjDHk5}?s@8S*gy=aDl|>R2e2dig0d7T*fTQsiX!nHI(B*Fste}&1OdzNhp9AUA zKg+G!7gUME-a^h{4m^r>nr-7b#cuqKO@%w$cc-CDL*x*%UzrrC=YU7xto?1HCUje< zCb#8H8RKgcNJ0D8)^LhSfV{g3A5Iozq@o-J&|EgVR)QIjqsUGkN%QW%>Ib=boxI*I z;mhH3eVq)qdEcv>`d6ZEwM!I~tRhdSCfIJ>%QRS-ViA=<;E?|lzkb=nI>QgMTa4H` zmEei1b0iN55=V`p2F?v~o_Xe=iIOhamF zMGi-Res5xKPpmBaIngD28v_~*RX>IY7DYK8cA^$tCldE9(-H`iS4>F*OX$OT7h(OE zOkbcESOEMQ!Gc5l=gYF_%cC@+)febDE_!D+8dol{s`-arTQLD5Bdax@?R*2DvZEXq z;^h3}+)2J87>NBk6O~cYL#*cC^she8qNAH!xe5nyL5_`-AdZxLQV-^Yf79XzuA*1Wdwbx$=eXy5fTZ@oD;R5T9ZU$us_ zL5^g?@O}lz@JiynmDmFRoiOVm0CKc`j%tSxySVN{QuELWT#8e=3hP{mq-ixi*6A}j z9PHg8YJR&A%_Tul4c4ll6+8Wz>>i};z9DjQHibl%uYI1$^3fcneGIvJt+TR$H-Jiv zhxvJX6;*De*4M6boaqs1$e~z))jG5Xnz2+iPq1HWWE^w7v9uQIPU?{jc{~{8Yk`ii zQDf?QWZU$5$(gejII)*)-V!Sn$(RnJ|KK@-u1mpd*tbbC5(+2YD`LY$ET>M2*RNz$ z)UI9sE&YsMY8W1-OCIvKEdG95Evfxr`aUnj`*1*B+1_|*qdei(gnrCmdjn`4U3W6g z)j`l>;K2Dbk#g}iuazqQb=UOE`vol`2o|v#Mc7b5hH0Y=PZg&x#%ugTo=~{pDyBOH zZ+3aOg7%JGJhk!2ay_J{(ZN`__Ze;}Jv@m3dVjr75mLjE`>+Z!>IY1D-!JkJO)&*n zRGyAeJ1Ac9dzu3*4q|PghCCAjk6-<=ed2MIys|k0xXT_RC$!Vcq(PA&r4TV^Vr{i_ zp3#kJSb%xkxyqNjcDoR?UcG|r1G5~dL zf$2H!IR3^eH6(b#&%j!5)RD5>myqIZrLfKM*-VmBB-*+;Nd~SQtA`cNn_zV2ix&%L z1_BTKmsb8@{$Kpo^A^7II~nt!l|UB^n5ZzgMD! z4P*!OVW2l^bG|@)9*9^^81M-^AlYyFU%$;Z*qp)6nPh0p@^mTdu0SnX?lY7vo3H(` z!;Go{|75+qZgkJ|TPd~IMTszkd2S#+%ANg7Mi9J8+D*l~svwpUDl{|!W!{rtLvD4Z5K)hjJg<~k2gmuKZgo|KvQhnB}R1UC)>Jx#9dX7PW*MD2@ z)m89fqcc^EG#mu+|FmqSR8ImMCAosGpv8Z{cSvo7BVq2zfcz~gyp_%DweT1 zB0p>f2^6x?%VX8xF+c4E%d2%%`ZtI4jIvbU=$=Tn7^92mzhKr|%qm>F{Gx(TSdC~O zEwNt_^Q$A=7&LNsN}N3;!`K28?+f5a^X;WM@tS>hR^P z@bU5T|J=iB1Q^%u67!kq3|qgnLFplB#q65q5W_V;}E-G-$N zzM8h=w=9Edhj6-H2tNkW5R8nE23M(qQ*Gas`gHv(*+^XVchb%^ z%ckD3ciM|2-3a)!nRBY{p-2vImDv~5O>%$;UaatVuat;AE(1#bP6ndy!{^0G zXM4C1GMiu{l(IZ+#s(h>;?%;i^UMF8%<*ud0E7U&0XLKa>5e1NLpYgM&F;m-`y+XJH zmVc?jY-K5Z{SH^bqTf}`iy2nX0U}9JN_LWc|1o7v;7Nu;)8ZCX1P8()PV=4(FKOjmV<~eU{OLs@r$PPnZzUhgpQU z;y{~@Gy?y&BFhd7m(GRI?vN6sdOU30W$4kU?Xxe$hJLvzivw9;c1i`gi9k3(h1!Zf za+;}MIG=(ZoD_@D6tj|64GF0Mvw)9X3hehF)cJ@tZI(mhao_nf=NMK61jIwhAX0p6nqGZVXRnlux>h5grlGI$|WGFpA!-7DZ?UXiMYg> zSlzvRgR^eyK)Zf{_0ahaIC4HWNQ635HT$0oE#%8jb;2Jhr%STZPGltcEZ&A12c+W~ zyJ6=`s(b&VL%V?lIDq?u{SEvPPww_iJpN)#LIKatu)@gVBsK^Y+5F!$$bUL>M3_M7 z2MP!TH-uciyjT*Q=pv6=_m&ih_sw85hlyR_{7L!*b@xK9=9cU?PqGw2D}+6I^obWq zWsGR}3nwFRr)FgT!oG*%&4+>lu8_z`#yyZsjc)?b`v(%i+M{2xF$lxpl@D*K2WhgY zeNow1m7c<=sr@0G=1aei(E-WhBYd9CA2GmY_oJQOd;C^8Ty`aXq#4CEpC94VPMLN> z`6k=kJvx26IXfAE z)NsZwVBj~6!H7dJbfxCj z7H@54yTUS_(riEGFZD%_H{f{HuN` z#ME@`6BbB3hOlB05C$RIg`*`_N$WUbEkY;a^L8GDFW*tgFw7{*x74dk2}PYjk-VqL zxLl;avRM8>@9#}0^GA>F!6u}lpEH*v4(rSHnZ)YXA0G{eu$B^_AR9R;O+FppA0rKJ z^Fi!izGrm^6F=m-tUamLlfF1NRzBUVjT}uR8%@c$npatDy3En4@2{+1QdXKk$ogZN zh?O`VY&sr$1QCWGShUUAT~PdJ2tYLr)Z*)F0(H<55e@0yZ)=vV_zETj-v5HUCSp4| z)D(!#?D1m78(d$`EXD`$c4(jPTB+W7mt2Obdc^*}ej7-h6AWnO=iphPSvvR;lV_Pq zKu^q3h}7CmHWZ8q%=E`cp}Y*l-5e-{X$*2cJ3r9oic`kVRb97-$1hrxUQEFrPR820TEzhh>E$Y8jK<>k_71K2O0trFBnT8f>;O{v9wt-fxi`4%^Q;ZtAp=Ea*+d zg-D@-$%XUK_f?ZgZlxVnMDCNJM%?O4t8+Ncac^)daogW0Pp%;|jv~D_i7&}vpw{at zkca|;rgQEU&`8>+JmTiXCnqgBmbCR*JC!I@u%ko9fdq7b`vX5NjTs0Q%b>a_Tv9D# zP>M`Bu6pod3KwexOLw=4qq5%Z>BrER?9+Vv>;9;w+E1~DSvHV}QR1-2?RQ^3sipsT z!^n^y#!q0 zK6o9Zhb_;{TsfAyV?}i9T*?{K>A=y-j(hNZj_}7l4~`&Dd(HE=IBRch0s6LJYG@Y7 zWK5mU3-W5sz$5&@U;RpsM=YijFO8Wli)HkytgU%17P8{zEwaxrWQN@Igfi@b4L>jg z+piS76CY-(7d90CLXFvd3S%qKMupl@OeU@%BS+)*Eej zVYqHP9>&7fwE0HAX}P@`6V#U8$2+kcs1>&I^Hx|5G8q)FD2c3n*vt0yDv>wC_FC-o`|4Na(sd@9uCq zGyu#X9z@N!FiO%F@CGmz3$z~qy-tcSk|Z<_wD~DZ!?-m=OM}J++uLpr?$7m1Bo;$f zAW!@Y_KojAka=?U(@UQxbwAVl?V*LeFSVuO=39e}S~hIreZFdS9^eeu5wHPl3`c*( zn)sCJCvQxDX$q_ky6-{lyp-xHVqy<%TUb~XcMfBJEXnkOmu(U=JLrsq`OfRJ&f!yO z^Q{|dE^(vb=h$AQ;(`3j$ktM{@gdf9`u6VW0D*x-4CHmm9a4lpDnb|5Kh;BVwN2;x z_uT|Uw}|7rXcL_!KI$_~70_{hi->FlhQzzg4_AO=K-3?rS_E0bfaORN#+7KFf;ubf zC$AB?mAG7YUh&Q2Rg~uI( zy}sLQr;ZkfKEDIaEO&g&b%Co?@t1LWVK0kxWdw$v!5Pg@l1e=ihLHM)E~7|P>qQ4p zlGZZHDu?4=gDYm~&T;=292f-d=;00HM#a#=qTa*{Wfo{1J9{bpw*tK= zk9_SY4L@K`(xsyRB5OjUm;R_#BYm((wva0wTgx&p;EmX~gIQAklYm#|PD*vsa+gQRMjoj5B}bL7gbt3WzwF zdgJ;T;eVn7f z{j$vI?QeQNyOa=eb;%OP9wOL-E`N<&1SRPnDn#I2TmTYwbT@%}R}?0a8FQGk(FKip zLgS_6U6+Qsn>zoOE_b={96FJLn?4fKJ^6oRijcVGu?47ylyY_J-lNJRnhc_{K`6Mg zDB5QFz&Tzmy`Mj9Ewa?M5523d$G^#NFSdqoZ zTBd~?4$P%zQh|ubA7?EsqZx`dJk+s*^muu-+bLpkj}?#7l{v6NzlxFG!D9^h-n0Ej zg`i+P$cl0!m*bxL!r?2D|2bev56U;4n355&F2dmP*_nVhVT%jwN^+RIbi4lc^OFrT;4)DZ&S7| z4?F$Ck@LY`4yofI>=6z3jmOdn4}5=?1+lW+4Hyb8}RVsp+=y{ zUg~P6!Lx1a2>ZxC!G3h#w?{ZpE&=+b8=hv7+%(H3u^v-E6P4kOVxp4C(F6$pCmE?v z#l+qwD^^8i$(vd&ZLE*Z+2Q2r;3poLKLLV72YW_V9mCY<&#x>mEAU+EU#a3!j;ZDbg zsn+u<1eySsnqqRiia1${6p5v0`V6J?0ouh&L|Mn5!AtWY7k(JEB56ZF83a|Q=H%Bj zUmfBi2VweMW5hUz0l-6=ld}HcPC#BE1ft3mh=rCzREM-aQ)MzYQ$+4yb z+n7t`+}dwotiMU^7x!ZprvoTBWO%jS<0B|{h;iudp1ADqgW{)A?pWsFli^T)wduQ6 z-2cUy!1it8QtuA++7+}eowdhdM-H0?jkvjlymcAm2Bi&P(a30@n=^ikJS&+(EP9o) zpoh;>)A`6tm1eF%d{>K~yR7<8sW;KtJgBywb{l;gU)h!4qxo>sj}+>lHVv>Eh#drl{tUKg)wb2ZO?XdSIm4>Yk4u$_w}qp>)FIW@Nx)YJ zMy4AvS32m9KemhdjF9OY|M_;)lU4kIln{&kJgD`Qi+5=y_RX*6&h z=_$3Rqi*J!YoBDXBMyIqG_-ngPL=(%KsKK=gR%48S;0!Z`viXVaMLLRn3B{m`b}{V zL2UU0PuJI2moR{d!}iV8;aZ43b80Fz_NHhTG@4?IAN?#5e7QdW5TBtL3;`Zt+SOMm zZW8j_!o}od(u~EL!kc;BLft(9U`k)>$*Cwcq!O-q8VLJ^cB0F3{8n zizL=tkal)Zx%`V#q4PE&2#RA$c`xTE*V@3B-`5G=+R^mGs zX?#RVWl=`j+H5eq{!SZ?n)RcKQ1i7BqeI4l1t@^~13)nrCC41|SI!t)th@2ow8)v8 zu}khtNCgh<{-ybv>NYDrflx~qp+e26YJHYv*)s*R@&X+YAp6#Wb`KZUY&#D3<3O}1 zg=~2rXbPn(TQ^uYy+e2TH`^+kY(~ay(&8c!xH~Sf2z>ng11)}j^eyYt92@J9wH%>n z5oZo53NV#{7TUba@JBUKSjsL)e{=D4kCL|& zD~Mu=qp~@xvORHK83FReY8Y4g;y7HyR$u$lT-{ND18yCZ1%jv1&%)(a_H6EYBB-;9 ziUO<8VIs4Lp%8BDK@N45*k1{~%+AA05h;pJ8YsA}>!f6#ge$QZ`nrs;nG+_H`$B)3 zxV;~t+v6xuKmvdE*;9R& zwF?8zZowB1Ibd4nb3R~r0$zfw%L!ENUY=)|_|`e#EF_r)rKT_akM+%NJTgMl`*)R? z$qP-*wz!-oL$Ac>vbX2@BBLF{2<)xpB!L$>N?x=%C7Vr_{v{N5K7l+r`|DYM;0iJt zNeiDwi3xCFMEJ-DK%jcT(88SX)cQ>sUFA~W{E8pIVPnJwnpu?v9E2y;bBh1LR^)ZE z^~5U15ya-}ji+goEyiWutFHdNB;EfrD61uP1mDv1H}ERfQ)qsmt==7&lcUS|hCN*C z##(AvE5#L;?FhX!^HLRv~L)1NCTSQ+Z@M_ha4`53s)4|j5oGA*N zDzBd3ywL6{3pi*(CdeTgvlD)~^?5Kxi`1jdY*$10#qejSf}kq7VQ=aF%XE0r74QFr zH(*#h2>?}>J!vP|OfS&GIlnb}J!8@wGMk8Qeic)$ob2X-hhR#88Q>LxSHIK`Vz zQ`P)u@M94nzQuy0p;nmjN%bLcy5l;?b=oSm!8 zF;tyG9_7&jcCx%W%eB@lZ@tIY1TZ)|KL8q5s2!75N9pe$%(aL{%dfq>Fxb~Vevr8e zR@PyTgf_t%u4kTzk@3!zYK_sz9a0RHmh*=X!FIzUdr+9MYXogVf*|Q5hLtYkaURlc3SaVnIUT~VjUX3BL z@Q z$DnIF!nuY%@Iec`SQ(O864DbA-;w26AZEBmz2*}J%8tClC~H($NL{V~TCKmV@EC|g zA{q_w*fCn1Z7LKpehC!2g`}SrG1vq^&P(TZ=S;H=GX7ClGV;1H%ZsIzr=}WhIS^M5 z@mDJk6j+ysir>~E1iqhH!EEgG^aN)R={U1#Zj$Qu09NTSuO?KK#pH2#NWY>7t?!R8 z10pt-Qp_}=v|13a5T7D{7SzJO+@~X4FfVe_KH|&ogAtL+v^IlJ;8Iq_a@fCY-3Z^F zhZW6YzdWHR)Sr6A1^+4HU|tF>_@_e`eHsY~V@&|A%zKH<%?cZKJd2gG#?JdhehVbk zoXi|arqa%CNKaj%HKTD(BXvFF$962#Yt9i4(=*cY!fy`IpzCnDT@-v7K*d~rmk%aA zk`I{qC62$9x61Hp0IN;AdRDsuKtuyN?OBM6->lb$=J_FqOMOmxdpRioKX*Z)C0Msx z88s99t0AM$d@ZUiBJi;Og&*y30qP?C`-$+IaXbOEIVE8gd=NQ01E?aQ<1<2mmh9fF zp8poVw?*`u#OXx(t-&}P^Vs?B6){7=yE>a*NnmEfVxJplSTaS?_~k_EzjTA(N(E2z zG^3O6%9Zu4_hZk`VN>bhJCsXK{d36G0eykhM;(5>!nlj&&S;EsJR)lMhbAp_u@BgV zGXu+{HC<9t;>H3iNzqTmI)QoPK6InV`5J-u?DNVWb(v8)qr1R6n)>oK7r7u+qzJoe z$+ss#tYaz!XcJF>y(=qWlBwn0cxEAKX5?!rJvX(6qb|+b?{zA04psI2dJb=`Q<9igfnf0d=A6UMowAq_rLerXBH`WJ}JYUaad-Sh2H&>1wiShCME^gX0rVQS`L+Yq+%u;BGO#`s4b&j)>(+n z$BKO~^3Y-`%nl9lw4LLw5x%M2J76P2c%WOMM3JHPQl}qXx0i(7N#5MqkfXF4accuj zZj$u*?L2%IJyP~AOrp{x$0dLp>lnDm@4-I(TT5ihCl@MLi)yOvJn&O)T8fglQE=y! zf|59wfH`~ardn3OgpM;%V-)esSlvzaP|Z)uV{v$9!0=OaTQJ0Jr9fIruI zh>Ge#%z6CW{3%n&7>U;5FAc}VsbNCHOnxhuI%#CD?&dBxp$AeSR(w-Jdw0-A_mN%NGS7oz)D$y8zFxn566=3~Nj^)%byywJ zsb~&6p~eUvk_i0Kg4r3VE=xLDSd2`(ZV%!4GjyXviGc;6fct~}3;zpkC7^LOgUZ(< zNriCdhySIAgNlS)`W{)bYJH~?Y4{ENxVC1DtQRB{5asKe9}=Ssk1Zcr{>FEy^_bGH zF~wQW*f-ZIIs_i96qIluceA7y%`oGo0S}HR;@qruKoS zT@a=w&G5t$l>~Q<5Q#r9@|cDllmX%+BP>S!<-Mi9S(&|B8WkziH;4tMffRRPWRZO0 zN~(W4We}k@YHp6>OikG^QdhX^81x>t`KGCpjhz629+pCmrCHL9=KZ7JQxBCHf7{ON z=DG=pKckI`Hq7@kPRG>c?zhu;tvu9)RdK$- zn)Z;fSzPI>5N1_>sR|+I%ZvYnU@7Uq#pCzXGbl9j*9V5!V)__)|ITTPy!bDRNeASX z@TN2n$(v6ZY8mHZXYJ`?mnu6qoQma|pUpSF`NnQo+PzKDDVG}> z&mxjnN<1^Z$}zZ_qS~O}3Po(-@PH+i9$!cJJb(xk7dGVYqgYxZnRtq#hoBpjsABo; zT3E3zU>T?&;SB2hdb&Bv>%;YXE4-B{923kf1QyDha!l$}gPm$I=JL7LOIvPrj1ca%8kt?ij8GdaLctMe8fdiex7-&0?R~9}oZ| zbQ5CwS;@@*QS2dO+6Cxhm9j>8@R!-rWkQkP?^s>vTmx*%^3~u6BBfDk*5*3h%E%>j zskc@39kE`<^8|DGaQR1BkJIl(LP9eQ)5vz~aHzY#Jnc+Jk|D-&&~P{EXx?ujG$N3c2OiT7-&jV5oB+ z>$U?7T@BV$C{m08q^Pe0p?w?*YFmw$AoqLHeIeCdw)W%odXcUp_0-yhq*j42)^Ig#|K-=K@}CMp%?EdzIGvqH*h6GrGYPR!n!tqz z798csY6bZ#v>8-pnv2;zto_31?Ce9 zJWL^;q z#mwGhlnd(`xwc@3&g`U2YG3}W@88PT?gf<~b7<~51Ewi~a8@kxVaYyz-;adKSxCUg z&o&rWMZfM4D?MXE`hdVPPqkiWzvZ1PJKOtN(*h) z49)(gPF_s-F(dpHwGn+5iR87OmBmBoA9G3wA&P><^0WoVX-=wl>X_lOkL#*$?&#E; z4Ck1YH6s!~_~rexeil}-e+2dBwuMFMZ5qt;sHI$F^fios4t&NpsGvJ(I&DH$*nxKd zs5=6B-dOUJl(QIA_t;ERCBhj3F!w1>Hw!lI$!Lb;i)y2C>C!-l;!T;lRMAk}?2?~lKrS7YcX26PXOxRXv@Uv(P%SuDb6)E+BbS09{ zv-Sivjo3YG8UG*m@eeS1j-PyJ_Q+G{Vuw}em5{1X`!_dzHea((kD;1exXh%oRf4(# zZA)524!j8Wx&>K@4;u;qdK4=vv(XGQj&o*P&uJG%-S`Q-u4kf zwQ?hD16$I=SW7Px021x|{hG3^qu1;!s5(n_0hU_pCJen&N2ifJD~!o{>YS}LOTMe;K6t$UhW9FHTrRDt%A7#f{90u+yn9#(u7TF zgG4vkTYa%wC6W(f*E<~)^?Hll)(y$h)sBzCDUY$Qu5^m)MW!3kO=ALf3$;En7vlm@ zI+#2=TgHMf`BrEy|Dd+qrNn$w@NKrIk7;w|^0=W#~{aJAWRA z5P#5|qsoJSg4CkVAYrt?$4m+fnUoS88Qz?!q$s|R5-cv)SopJMik{w{L!@-(yCJ#2 z=}&5$i4i-G(z#*==c3qZv@hObx}f9Z{>l3e+ZKU+7ri1TQt#qcu$*dkx)_?To?3{* zIGh|YF1^pKpY?q^#Ltt6ny&n>%2%Y#&6g#x++%#>?`1d9&}4E_70%V*7YZpQ3B%4O zhIuw|BdB>&x@MQEsdtd87y&E0loV1urpHd+diIa@>g2UZ=$;m{DH(ViW+g*lLnAGD zM5wZX %Z&XHy-3(Dr?Qn`jpkPg;|?BNM^T`4(h6PD^Xka6J77w2a$&GY_<%2;K3 z3nRziuNX!~+n9VBGW#}I)AjDPTml#J_lHPd0(6%PyLF?sCyYBX-`P$Y5AE$V>3f|> zkECqi+tr(}?l9bog?T8IvE@8&01yaEPbp2Io>(THNm3y*-kdkN-Sx_LyNq3#?GA%) zL9-Bxy^I^D9cfG75t0I)LNC$IvZuUYxby$?I+RPcf9&#`qeIt$22_CigZ&o#5q~GY zI7>e>b_%rZnv7*%(yp+=gqH^}eV3dUb`$1a6J_G>=h4mX%K7?Po-2jchYI8H05cC} zu9}8gCdV!$VQ~?tl6(212MAViq=e3XFW~&5JLiPcJXpBu7;i#1fU;_U>0*@lima?U zBoS3an|wy{l;BNwawQ(}D09YNaI><`7qT-{k?de+7^4>u2$C$8i7K3f@|OR6j1${$ z(OTnLz=f+5`w3=;u~#zd)cC{O^{iC&ULCheumTl$95L)wBG-NHzH6y@I|2|Bb~U}G zAsL0K%H(=(VeLKZi=Mk`U(Mwfey$k6Z7?f{X%0}Hjc~Set49I*)EkJoNPYUH+$9SM z9S(Ju9-A)v;=F@ziJ_HG9@dSWnquDzaf0g_2|z9h2kh*Uav-*gJ7WXMu!iOZ$szec zCfYP5-2U+8nmd~Yof3f0148dBK-glWqr`Z+HUN|Tp)iG%H%bHEUH@jI(_-8e78LK2 zAyGGb{1yqcMWFtJkcJBz3jcmQIfM-CGwn-KNv9Av+JaGJ?+1L4RX=2+H|lGF<9lgiO`|@nthD2zyfOpU?b>RU4r) z?8z&dFD!?dJ1V==7-)&Se34?$kP(3Hu){g0x?y@t;Gib=0*)$UR>WH!zKZlTu>H~` z0UP)K0M0ifbgGnh%)cpQhKBh`;F3 z`>-Bll6-X_qA5b-xDs=KMAM=zs#rt5hJy#cFqt)txBwSUFQ-}=Z&~rwAQ`(M;i=}h zoyB7NqKi39blR)_e>=`%xS3DVrn3>fjRJf{*IH1-SEJ+R#q1()MRaGitaV-HB2Qvq zkSa9&2z~ir7;eYOdcmAK`Q&s4(p$oYFhE66YS649KcIg-6|0)P=lLmq2AfKIQX@w1 z*HK-kVa*IM(7C7?%sT3Yny53!b!Y&Q z_gu13e7g-kt3Ihdvy|TonGmiBG5bDU@4UiBLZB0Lg$dnu(m~bV>qs2~#wQGd)Ez7P z=zI}9!G|#%)b6~vCmVC!4P|+Ge}&3#2Xc1AJS9zuF+h$kQClvDUu&rNPQ%z zNbXZ<4EB;KyFhGj;spbENRI&U_c#q0Dm3{pijviwyu^4XN1(fkej_K2^?D=TzfEtp z&vi3xLkm6F%%FbH##l^g=?T~y#&-SD?wa$g4xR>sk{vP7>!>ErC#*>TfuCI{VxyP6 zJ_DmJNL`rtRNmSWT`_N}E_CFD*tAxL16VG2@->j-6bJO+LF&WedQu^%@&`tFmjh)#WJ%P&HXikRv0P4xFaFO+bck?l4U* zX(_TG>ly`wZW@aqk{Cf3n`?BA6bR!?j(gd+uK_ZHbK^ZXtlz+xr(B8OzpslM4<<++FF2J z(`bj6W02Lq(ZVZ-WzdfEMxC8J)z$}q`}%t{%a~8a2>$^0znyju4B;@8$noi^GHdE$ z1(X{0h!Ch#tLfH1IKB8``2F~9wVfy(5xLD4Q>-yGQxSKd{KJ0P-Y?z|6Omm7)f27qH7ER7}IN^^0G$oq=d!XgKPWo|6%$Pt?Vrk z2XMK_?Vp4*S-NyggE!3*rWe;c0v{%()ZvH5vTvSMBQqN9sfq?#qeI4l2F!r_gZ>r$ z4nLLpR~xJt3te5Kum%9SJu{X`Xl#2Q0kUi_(*sm3xel5(f_lqy1zcb#M?x{0qpzqMSu(Hv zvFdDuT(BtpHdT;$=xafv#I%WOIu-bVV^<^$;}_dWJF>V1Rsx%~W{cx2bVIw>MJ$aBpxye!S+_v;*Ju{lKHn6?f7;hCo}U&|&?xJ+BD}MnG%Tl-#m31S z6e)Hj@nz*JWmvlEX6ik;NVRxpY z#O8R?0BNJB5^%u!ijHqw;3WyPIeEeMSr&BlwpQp_1rGP+7hNA4PDwqPnp~MK)Wgb( zMXGDM^@59VUn`wKK4J)+Ld)%#4_SJG#2Zqq0K~s z_ToiQd4-0njh?WvW2j9$aS(0(3JDav_PfhI*`lTBADw0P$4!%v`Y5eZ&gB)5JR`M7 zMn3X0l9;o${DC|N{0%UGlYnckb&eC4I@n%73_!s6i3;>V`6f&X)I7#QFw+Hc-$>w0 z-z+rkipk94#$p&_1igg|e$L?Y+N3b;fp;CFr@C?*4#h&P^&1HqS55T_3 zeN7{Fl2&9@`m74J_RU=O^ZFiWUY)NI^OM8%zJe0NfvJA3cMk}Shn|j=PQPYzlin}x zY-&Rjr3cK3<8SoseQpSdGv`NNS&uU5U|oztba_2B9MLC@+s8G(wDn9ErX>qWk)+j- zaV^?knV2g=0?C!kseGs@m9JTtFe99eH`-A@u{SNLs#lIlyga%`n$+oc|Jg8vR zTV!sr#Btr#I#v9@@Pmg9)41Oa=*b<{R%5}vDr}|zDX7zXuUoo>6!Y(WEU^^4;9Eiz z$s^4GhZ1}g6*6noqLR?ijAFu6@}5wN%?ULY>En?IPv}J_siA$T+jZJ9zL_rJ`q{tk zA7sh?R%l=I%v1f+Y{SXOUwSSY8{d5zJe89J!-MHoU1lfP00bhNb4ZGR471(!(qf_aY+ifsw~a(YxX3c6kEd` z!t?P+rv6~f>NHgB1C9Z7Q^U&M`NYX1t%wpe$2g_59MQIk0U=R}l3Qvu^u&X+vN_Cnz$1?wK4B&cCwHY8w_j3A104 z&Fv950Tx+DgbE(wN5YYXS81kVqS=0h%s$mDb9mpKNmdklg+TPaHksk8W=Uc*9|EL( zzJ!;lt>@Yg%yEmD`X5Q5gUp{vhk-Mts$IunS{fLlY`!bC=OAB0U4(8+**69K7*<+7 zI!OsKwlMU+EvWH~Iv=Gew~36LpcWx9-r!me;u=lY$lNW(eK%26y~md$Bj>4VLii%| z)xAXWgaS%^V&c-v(-xq-8@5$Oh5+oF*!R0c&bOI)S2P(`7pjf5Ik#VB)s-i72v1Wc zN+PgxW)F7<#`PHyj@U#Bo@W)Twh61gBGc{l?VTT)3}mGPM;AtU1T^QRpB)hlYokN1 zfd@o@`-A)u{ta=NeGyrfKQZ|lxbzoq>in{)3_EB8bd|<0oNZDsSa=KZ6KgwD;sbN| zz8qpo|9nT{2l)=YOH!h03wWl-}my z4NJPN%QGCW%@nc0BPjC2vL5vIw&eWmU$Cdt9aO_bjqo52Y!tZX#ZXy`A^)&wuPUaTXFpB=m)ZY=+Smlbq2&nY4BFM}yTskvOLfts(nL}GIe&22s%gZjxL=YcTr`c^D{3j#2o&x$fueA) z#ejO4ks9+wiZuan-Xi5m%>oN6+@oFV8wtW*={ z+<~_>OC|+oot3e4zColR33)$dO3oPE0 zyBuxs=>M(o%g1J?HU^2$pW`XUtgw9-ujEA}*QjX)Zw-{Ak?PLpFox6Mlnx;lTc_Fq zz$4B#dz&(^zCRS~soHV1yJ(2Kt&5q3oLDM73iB|>PF13Ni zFUsOQe_5kLp@9d0fcu004gL)jYWuGD3euTAt0Igt9~<4ymf#&spm`IH^=K4?MrVXp z5y&GJtHy=#TAJ!z3N0~a!dx2~Qug(kG>P4$QN8An4!Ez6`iU3O^g&V z8aN66R)d{f5|YzW+t;e?{fLpX96iqw(n(E7Z+vq(ptC_&A%Lo&t6_i<(t!%ltxgV0 z#oN`YGwyK!zK~MEt3(+#K(9@il7OudV`Wj?s23rwB{8xX|1AV|DBz>W5g*^{*!0?r zkeK8h&Ftsh3q8+*{smAYIz|g|KFF2O*BCjm+^tfE_u?}-P;(f6!YJEB9!&9q9-f-1 zW-{YQbNJW+IDOy*mOMFR+`n>S!SlvMPd!W4k7T^|#15Ic2h zcXO~-EdTq1Z|ukn5I%}=vz?$a_Co<{Ew$NhV{$-B8qVXs&c-iIoH}A7JZulL^3ORl z5463G1|6+j1CcxWwjA4-b$c^h53JLw?Yc0?f(dF9CmC|P9OZ+h>4Yzi4J=npdO%B~ z)J^aB$C(==`Cv)UoobO-z&E8bL*_&4D}KtT&Dz^luLZu==f~a8p@jf9(DZK`u2~O! zC;3ff4@aVva6aQj0n(+~N+I8Z2z33ymRrWA!b~f>M}^f0dcR^(j@#O*~=m_TAIrAUOqdlxe4M)YT-kx6zLSM(aCgnO2@Xzd!3W#D+t^ z?<(#un@dez*$UuZgwRzmQzYZ+25wxg34+kC*2irFwqsX!db*zLC{!i-Ku|3N1wj&! z95D)RGlYO)ymYwV&Kdxqcl38$r)D&<#6it)$4gjrQgGGqG@U0f%xkn?mu?Sm9$!i z2cQXaMQK@`pem>Q*A1|0hvNDrKx{}&*owJysR6TLQ_L>Q8F@lze_Aeuui_FY*j;blU^JwQt}r zSK_gKNj0=c|6Y&tGT3~VIkIJM&;+_{i{;@?EOL~XPP!?+X_CSKgg|@0ZY50ni6hRh zX)|Mun9_vha;<)pxV~SMV@s`PIh}7OPvfFrVd*Q8@z?bKG#O#)(N!p_j%Cl zXd}W&8Q3c)&{jxUalj8J4g*UAr1Mcd6cR4sGD1Lj50ww2L!E&K_<;L^{0#mL6j#!& z@hWJGD1Df^YFSvcaSUady@el6;o89v0$TwqkINwyz(n9*9+&f6s((K(kC?hhj0?$L z1%{^ad_WskvQ+SYXc2*;%LzPb?~whb6pnaU_F6+AK}&Yd3AhO7pNx%|>eEvwHO|!g zV|)naQTz7sK)7j;AuXy<9GuN*ZzrkO1sYIU^K#kWp&M-PT<%*J|KxL7+t4 zoucJ@22D_I#mI!9toxZ|`9W)aIqmhcuiz@0kCCZoUrcr|)x5Dzk&ZmPLS)sunsv-- zG#HfUu+NdveO;Zr(eOSiLnfnVNsMJ3eT|=lagqvzq=W_nq~JjlnJm3z`3hjYQd7Tu&GL*(%KkraqwY*cH)2pu&=)^VNGNmANyw%? zpr6qU!NZwyan_6p){rGl?VWTI|FhBnL=Sz2@->B4Tjuicv5TkHSC3Nam8PDVA&u#O zPgi|z21sEE0!!mle}pP#|C9syMxnDE-lP^ye*qW&1|W z0Uc?~(BbtVXYbca`7!wORo6zL?Q>O)aUZ*CpnC(nyQIYl2dVT=0DCPLlx0L|=IJF^ z{a4Hc{;zozt`rQXAaQ)GzMUy?U3zJKTkxc16h}zrY7u$xi+4R(f@q$4(=1VbukFkp zb$G{*L^lrT>*38YICOx@r&e2JE+rkBkWp@b(E-*)UA14T*;;HgkEbk}a_*6&BB~p9 zi*Z{Agp(EhAB>)&8@;OWF@p~aC1Q{&tq@LeySfr!2W7?-QJLM(5f*6aHdK z<;*|ph3n~ZLIPMx5g2KvNAmHje&!VA7+3?KtAKsK%T-=bg1jKL{MDUJWNunhMgwHi zS66!YNr^t^e31J)XB%qQ3puM6U5+r?$p=qp8}h-bnoagc3OXlg9C&$ zl+y7C?v!IxdZ_A2C88)i054G9%5-{X8mc`L$yKutZ;Rg{o;!Fy{WyoR!5=^Hulwc5 ztFv*I*1?7ZbxYWA!P$M;DAZ?>2>E4WKY&tE$)Fwg$9@kuIbYu zCUpFQ`uAl#-cSmzJki#%QY)I1FD!@i(4fwz5XP!Q?%?okp%d^c*T1xl5_m~e^Zo8= z5OuQZBJo@!Dkr5&P}Vt!+drZlMmrtJ6cCIcVO+h`;oAu{@ ztf#V`e?ibj9)?3@GUFE;5_aKG(&1*Mcdng00pE9YLlu<9B*ul)$R}n9)c3T(OP1<-hDhK-y%uj$3(W50PjC$__sCwx2-h(bE1v8gd?pe{;f|qvk z6mmw=a!(8DpXoFdRMP#(^3oL)H`q9W-d5_y1TI(RpoTqX~3xpbl%n@NU=c>KjvchZ2)%56>Z_EIa zlLeu%aM-c9!giV$;+J)5p`a<>YzmLuItVZc`GzPNoBJVRH)jVM`|nfDb0>iZ(F*S3 z@-T^xCMqOYbxf>hEQXmH6`5kxQEHe^Q)tnhyG$USNaAqP_G!hnWV@BYFY&oSB1TK+nCajzN^qQUmO)Pa=_zNKy9^IU1j3 zo~+un@zMUykQf-aq;+a$6GRespq{jITI1F~{mV5#D$|K9)Amp*EqFrQrQIkZel^7C zPmvc5Q^J-F8`&#)uilXt0JEB17nQN9N*DaAET$<9tFyQi9|$sA+uu^s^$tgmL!ka; z?VBEbo+^fiEO{Afx{^$@P?%msU91-TjwfKR+h+W$q6yGVCgPU?uQ9Yy@CoYBykqw# zSkuvEYn0Z;Ow0VW;&r{o{or4O_(w_p7C9ISWI^)?HVv&FL+}}_`?WnRCF2h1@QvMO z4FG>f0lupw^6`YqmXlYv6{V4!$xeAG1^>BgII%2Zrb~14CHZ{ zrOl90^8HnDXw=ThuQ8vBQZ2&q&_+miT zHBpT8q(q0(8W#rA=3_;qe6)5YhtLv{+f`aMA4_Wg6zL;whNM8QighfgI#FSn*yL@8 zF9rPoj-DvAytKr0xZxEz2SRW+g!Bzq*+OrkX1J|GL}O1j@ieFa@DW zdWUj?mm>I`w+ATqIbJdR3IcD*(DVafO&~T#Z2?f@=dgRYY1ITPWxMl;wrokv^dQbO7+;^ z<|Ln@BzGku+oO1GGPgl|XU{REg$y$^A2(3phSE>6MEH!X?0!dAxus1 zx0fy}nK!I3uL-iHyT-NpjO z&UbNJIdi0pEY+Wj{{iyC8VHVbaTcy$^Z=WjrXs+NbgfI10xoUOcGNMYN=RPN&JHkM z6lTn;7Ag_5c1Ev0&EmI*O6;)7>spJ}Z|LW@LzCx$a%_{-ub3~vp(klZ3L2)JVZ7=Q z#~7|b9_E}VVJ&+#H$LQi@5lcUgk{b-UptK(0_lqLF4gX+DHSe-fnLzbGD*pX9_*!k ze(ot>=H)-HSWmB@AK^tX_hz8n#YDpO^0ehi;a4Afp#C)R?6h$;({n+H9PNgmWP zs{~mu_B6K{8i?r#`NF-;;0;bXx#z*c!-C{J$aUK zd^7e@*uO~8`HghVr;(AM+ovTGS7`Lbk>hprtKmqDo+lDr%p3=XXp_R4FHcGm`VQwP zJqz|0!xVfc=bf8+BV=T)!TzU7!i39_{NEXtWt@1>_abSF`1Tky&kYl>1=BkO!J~{4 zN;_>Tt#;q9Z)csNrchO3Gb^AT0$AA%fiFX$>=0g+OhS1C0=~Mmx8^Kgo^}N|bM?mK zz=d4Ai_>IL@E2L|(uiupT7JaO95CaZTn`HD*1~yE<%DbA zudvMsrpmN1&J|dcfjj+BRW028D50LzUl=HackR)$f5+3>(YhDcC(j(dVnafOlr1n_ z(Z8l&ah8|Vqh2@olaPck4@y*nhhG-a&}0s&H#RFcTw@jz61q-5g?jP2$}zIfxO~N)KGt zv7c-MK)-KEtLr-_ol5e{($9>SEm02C75t)}BlelAB zQS8pIM7)`j@;PXtGF?`LqqCv?%AQ`)0ni(L+PPIoTyu zE8PXotc7Err8~k3?P?29Ayd$&M_LP13;OwmR&ID#386DKWGx3{6+zI}glKrT2PZDi z;=_apPUuSLbFN}EnV1f5`*(r3#HwMnXi_Y9!x7$Y+GsM9TnYuBm^x+~(LtT=@M8Li z2p!j)<*D{s;D7bEB4!>2qK9z0rc(F6;{`cTy)qn?Zsq)VNz2`vnXcD0r5=%UeyN1N z--oyDwZMvrA>d>Nr)+Yh(iSu>uPqaU{b~g`%}l_F_@N!D4rbcq!x+;IKiN5v0nyLI zRE>#!%Bt&E7q0liLJP~;B{Ti7s<-~t#zM=(W79^?_Yr&x)iC{OIzMh6YRu|0vVd9S z4JGM2>juZ55_z_m-8DRfvE=j2SdSk~7!`OknNd^-awMLQUFuR8N6J6lU`{hlmOWVq z*th1%(M9W0DmtkfJPnnEG6};N9Hk;uls#r_#4MF6fOx`6 zXADsDA<_u?(|r0~_!Sn4-=@3h8cU%FFEq$xu45RU zl0-6IQVU@17iqWp2cnELOP39s=p?;`t1fU5@ZX`58%!|2X**v=XXJ)$BdL)MWy!$t z5K0_aOD^ZFXEfJhWQF!_@zC+88$0~}LF}{-5Ue2-#sipfahsB$2sv-x8WGNZN%lEN z_{utWM+~BTby=V_>%6~j#~*Bx(ncg{n1~rJrEll_P&xZv18zla;dS*YMvX~q52y>g zV@3~lh4s*!^TMKAH$Wv8^$5gnI$dpQ?^5T32iFBwMnmV^^RMiuav6MZ*>{_vqc}Ft zrk-bo4|n3rXQ-e$Sdv6~HJg#++}sbHMWaLZfe9pl`-A-o{3zibzIL0uUSGo}{?w(; zfNb!u(onJeJ7k85Ro8B0#03!M9pYueHI2({+BJ!G@r71TwtyX7jrTi{!obynA-U?; zqrbWS!SXtv&Q%8`S?^?$u(Lge?fxWY#xz$HFPFW2b^i9TmQP*UTqnEh=Ln)Q_$F^5 zb!u1R$DBHQ5pz2*aiS4T4x<2~FM!zH?9;?{PJq9~eU)Put_H!ao7{m9a<#^w2G32& zjrRQ+x^A^&u4*m$Tkjk=rnSO!2iRV?Bitoykl3ufU6%owd{uck zGN0kXRvhD?rEH(rX{(>HR<3jcfb+Q>UaLIDmMVsTmZj-P$`jViWeY7FX`E9;Znh7( zx5Vx@nKCI8cqd>r45t3!!oxgpVY?QF3`^n6+%y< zTl3|2+nW8+uL)I%9yGctiF+`=`2?43dIdr6P+|4zzAmwFcKP54(8R-YEj;p0oF$ie{M-Z2Akwio%(@M)Zp~%(2GwmK$6XS4Ta!l?*f{^!DrM||1O-)ftzrc zNA09BJO<3Dt`Ev6zaNf}4S_$yJ zclBqqCU+e_J!=kJ@>u=(XIgJ@D~fU%Aik);g8BJm${h4RpDtioumz#(nIX z&%r-EIMa{_5n9TZ8-F?2%@*ag`@-jeJF(nFS%|)N# z3;{yV0?t_BCn7(4u@#&|4-XxQ9Si%SW*1)x#lpCne(*oMB9*O`?#yg=srzNS&MWFP z3OQW{{>SlQ5@4|xEVA*iVy&5g>9Ie4)86vKNMtOwS}uNrVt<>)Di}Inn)8-wqLu#r zuckuS1cyECaInDN!`KUNljWp|5 z^zscyv;3w@YYej&%r?b$qik!(osX>gK8F%t7_k1c&#PmloaQO-WO3{r}!` z)y0PEtLq!U%C0+Eh-TyX!3DzSQ|+D#g!US_J*emJwYWIam+*>6>6@SwFN^%Ie|BSk zs1~C`m4OLhfcu005B&=o=JV96fkwx4r?U5Vph_%6fq)BbjE0Q|@=}qC22!Z0L zKvxCjiW85DKDYxp_Hp}EI9>wR)6@BbQt$1s zVrZ8Gs@+EOa^mE&Q^eeB#mbL^j?eMCk0{ZigXF4WAYZ-NGSKx|4?U4Isq{hwq0Dzd z@?`+4Z#p4xr;yW2Jw|G7G_$wzk7l1=+-D^5690LSfgj^kUUOXg1=Hg|Xdiy=<$xcJ zy1d_jof=o8jow>G{90!Il)wHzw5=#q7JPdoze%hKjy~w5xQ~F~z$aiOT@iq<*K*y% zC7gwpqz=|uexsMuNJy&??krRrp%)Oh2QhJ`Zd%3$`EuOk7(ohVXEj|;tw0l{X7IknC}LdpV7y*2~4DM zg+3GXU;Osp6lX9pOo(Ag8rW@na+jlb0O1guWgxGbGQdFu^j_oT)70_A0=iZK*D|6{ zwy%+?p-nJ7>_(;)08(g6fk*RTK0x0?dVydpNFN7hnWfkQ3^Xz$M(PMo#>ozxO;FEB zJ~1yIY`eQEeWi0jDLRcz1lyCZJbr(~ix}7SYQsWfG+{JVczF5O(22mmg~1b1vDKYb2H^6@nXN_G+5H>S2DWJJLE`hhW8IAhn^o-YvhX z$VP2Iclq)$c<)&wSXF5yBlqne8}K})wq!76hSwM4NJ%jx7GwGpL5l`{@6)0Sqm@qz zfa;KX6>17eO96@He!5fc)Oo_so|?em(Hl4o)g*Z_;kXq!IvzjdlxN)zyAuz4MppE- z_FPGM{u$k$;Yym4Wh2JnpAXAOB*POh;UWtpSJCg@igXw9zdzaxLURoYv9S3h8F8I% zhVfP927hPLvY?_!y|Km~l}ww^k7zuG7)vvyV5EZR)@s(vBEGB_PS7`$!|b7lPeJ#) zH8`?Cdij5L6XuK%Jk~(`4mh&d!o_bNpI7P>F5FS&)o~NW*Um1p0&gUcjlf4uPv9X- zn!9w@+?#W=gqt7h{WF!OftNIAbe{MMgtpq5Ro=t4)DBrIqbH+7(SZq^fcu003jPW_ z_PwlnY1`^~qC5K&L7ISljV>kX1X-EO=boFMe{&aC0}%cs>G8nMo`tyT*Yh*`!-W2W z^5>y72$s&)m2`?uk7PpA(AnQ)q_GqsTAh;ZQ=a_zG_oaJZCe_-S`*4)1P;`FB^S zi{=GH1iL-Tk+BC8kuQ84V*_3*xI6M+CrViG0RJa#grQIcVDG|>NSdQq?FR^bOL+w` z_Ydb#SUFhH6NksKj%XdL4`Bv!WxQ>JE`^a}eOiJAxEYi@ zc=22CQ9WFTdRd#e!L_?eJaHsBT6Ibx$Ee6RYrn+Ge2dSkY;&Klcmom%crMZwg2Tx#k* zeM=mTIQg5qU;@Es=aFm`?jj{*lE`lBmN67;Ct!xmRg%waw0>CYwf~RPk6EN@ZpIE- zxs-A{ghHbZjF;ngm~)tYn{U=>A-c$#~D;`_FEd62LiuS z@i4APS!9LxSDwPkO>lSi4j+__X)j`4{QF&D#yV0*34LyP9nV=QE}Y3M6W;dBUq5xC z&Y@fM`QpllCTdKJdhNj7-YQ7D9-!c`eGeVe>7fu4V(XYHl|Y9w>Mk9FqY>Gr zovp>c>zE6gj3W-!2UzW6M4o13v#;D}t+lkL0C252Gfh($$(Qe3kn}fA@&nkO#bp2p z-LQOvCObrtecM4kSngYA)pjQrJ@gbOP4oEP{A8m<4S@;Rfct~|3jP{dXwlPF-+4Ny z3<*i^0-Vfxk3{9Ogwe3jh|SRhG~7{dr(hx+bVvASE%gtzbTux+@4#-}P=Aa@%jdU~ zwuiLT7$`YLl-Cd?1HARnuO5kM!ww;?9c2<0B@4uo_D#Y1Iy2sY$ZjnxTFCaAf}8h$ zRq?e_quD?*bK!6QH zBvNYf1ioV-nF6F5PJP0EgL(UK2Fx20Xev|N%seWl;oSUSAHZ3uO5gN#Xi?>ECAQ#H z7<3L^G63&r@!ud(utbeQqeqH~&j4H_ynACkRNL^-z#`@NZ9!geqf*Ro)|cd3_&;Ja zNaJz6``*cOXnANsE;(Iei7n~3#>by=MKf58^!3`Pw>8oe2ee=Bkg2w9Ha&bgv1)V2 z!4F=SH(Tg%8FEQEA~+>boh=W^;`{I|sc+!WvyU$oGW7Wj4h;td+lOrxr6Dp{b*}qE z4H3+PJ1NM2D&G5cikPGPMbr*?+GCmk5t3JXIt6S5ZMR6my?RbXKo3S($mO#BfrFEdB2)bj_*RkcQ=Y|wbiZjO&wTIi_{5^yoAh>2o)^!i{13p(a zWof1M|LI(KCdHnx=DiHY;ENWZto;o-=cAbim}?+N#s2ouImjH;HRv>rC$(3*SEW|F z$!Kbg=GX>txyZJ*JdWHB_(KW7jHL+XRqB~14{aM7DKZ=q&!j7|ckXq}R5d_!jk8xk znaM*xkFe$z`M2~v?Hcq8$<4KUSE6_%o=H;Qn{8usS8S1E)4NNWiac;p?4FoOppW<^ z{52;bc_}eQu}USnu04A|T`Wlem_7=6L!r6x60jiC4b6R@Uee%iN>2!PJ@zh)-zoTV zY29VsLAG2W1)rj#vkFRI{<79D9tG!9JQMXsNpS+5f?ca|%IHVS+A(W)SrZapy&`O> zjC+`Vqo4LHq(5f7-VYbO(-hG^m`3Q1alzIvOKq7|F1(*Zm#+UF#=Bep*~m?TkA5OL zuQ@u(39#R}S9b#Z4q#jn98$kk0Fmg<*FAX&)jFd?$bkwJfct~}4EzdH=8^*CjwQfI zNmPg3$aw$pTAYy#4n=%Ke7A>pdtq<@GqcM>ON$EJW~CDSa^2}Bj0;^!(@%61o&SPN z^d7h{hk7ollEnrCxfCRaPH-;HS-!|;3_3XHj9F=uXp0q0U5YoHCNO|TiN^j<_O4RN zy8)t>tpcYyw5hS79mH`P4~L=Bm!vC;@UPz1wn_}DZGI)=zV2ogNvfzaWoZF7S!Z&9 zqpWX6gcINLQ*#lA7V_yqRe${~{;9q0^L2mL{IZB(E?DxgQ)A!Vvn zMbNyx6|Wy&-Jvf)Z3gA1simL{vm0al@JAs+AO0!JcppjH*)D;V{KpP7j{Mam3-cC`gP3%BPsp~73QylyPC)f5BU;?OUVvLvPA zbU>I~%AT+LDa@|uQGrw4;FE&9Rl%#{rf_3H!-%I6v)zvdo1fAcx#mt|q5?_{Mb9Mg zU3PkkhG$X2Vx(gB{pWd}0YR+tQP1J=lB>f-;R4boOv%X+tbt|t(NhztWsdi z<**}rBK5W=Dkk~8bB^j{7^&S)!8vklnxGBc_`bY{5+Rk?RCbMsc&Cw}Ke;2yqXl*u zV$Au)=XV~d)Ratv9DnY4sN&b+FhfR(Ok+trh=f5WDK%j?gi550wbKDsS_uSvXY75( zo@>rh3`-i0aiQx(cwvI6`k;XLE5>7!Z=;zW$5}s_k(Rk;b9zdde zA0&W6PZzmz(jnLYQQR#GXngw9)ZT}!Web|lAgo4@x}6of77LI9z9@VZ;V=X$4A7=b z6I$rGXZhlhG|z8Dci}!yXzQXBHSlLNez(9Lp}f$Os)tn|yOpE3O6bszF($GZz@W?} zFCGL6`S>CTGw0CO&Z9%jfeKK7`-A=w{1HSIdn8=Xv_B7X__^#0LM+PO#Td4Wv^)G& z&dgs#rH-j#bBT<(G9kG9W(GD&p^Yu4mP|Lnm@pY3PMX34h8%J3dF-BZ^s&^(zQl8W zm5p7PA>rX?PBzr(l)LwrjDj0cU;TG7*D&^k(yo)-$p#lGP;|noYOSQeIf$2};2-wa zR_R!0Q2ZMSto{wC^xyAxf_5#k15@(y6D)vCrQC`vy@di!uXjzq)fVR075Cg5&N}Iq z?Jy1bGZGJ6rZzNbI{76{r~b{orDzE`XubvH7S&+4Vm0EWvO9RJ8+|hwEH4G2uDo(? zGqw_A(zv<63vxl11p-;dkT96veh-6X><5iwCvpomI4fd6Uj3<2_P$8wFfMj^G!&pS zm$0pd4U=#w_8O{q2+rcL#$B6r$9@_j8g_Qtz9FAXB@igGaLE*LF={dyRC4xpIJy## z0o>4)`sBbvM}`b=t=+}olp3Gh%a^8+9+QF-gM2x}J6@w8WGi`l0Wkr?2#NMP=MrWg zLe4$kiZbb%djLKIY&67ehK3bkX^#dA-U{fwtuU{{-Y_MYA&aAr9HB}5hK(CeJ~@7U z`)3gAi;O!#0te}`(L7XKs~)4uuCb}?lIHnMGDlmMsGTL0Ky$NwvoJUwgFa7{91CnC zY*ME8EOBd`R2RTuaRSQ!MK~Gp+WGeAcA|HvUB6j-3umktiz%xUyNN{{!8vtj^gsLb zCHSz#7GS>R?BUB47#wu1T#WDXQmuNfBXYV({>&(N4RvB@%)~=9VLpT)FDD;^m#b`i zMug(j;rCz3Q)dC7M`#afEtId=ERm8PMt%d5(#Xg)4hm4J0zvEr zpff=W1(Qh$39UaPxEBiYI7sG{WQ+N$0(DGkFJWmicy%AhmcXNXP3ILY^@w;SEskBc z$_V5l8eJAHbK0<02zdsD8Ev{<Nr3qV@9L%!JZis}T3ds`~SS3>SU*w`VY|kYDam8D(+;qlv9q7+%zBbZlt49t z%JOR4fM{k6lrWhBi_Y1k&@xb9*|)t&@`7ELU#nQSZsd+8y9Gj}vx^g&CM*q{!llIo zb{%Vz9&ZnkJva8eXdXX;#CBNs;y$95BFqgV5SeapF7maeP$#LAd4^UI$F7iDVv7nt zm0EBXI&9){c$1=5>#Y(!7Iszl4Q`OOQO(>54nf;doGQ1|VywMiiqHJm(ib-;ID&&e zO3=No>S-2kY}E^uJ}uOfZYK<7L=Myk_nwveY|UaGN}X!Pdspk0WJw_6tXSg?a1uwI zq~cS*C5JWlXcE2l--NS!zJWR1lm(#Q6NzI%+v;t(!DGG+%s>fh4U?g2gwK3z%gm`U z?mLiG7RN3RaCwD+8V58l`B*1j_oVASUscYeSc}n{_;R=3#zYiXTU}*2 z?f7i#wm{FAtbZSh@eKd5z;)%*By^w~Mk>iB%ys_uyBy;CY~G1nd)H(feaZO17ZvmF zH5Dbzz8(?4ShB2}6Ux)dl^b)FEo8%%)R%x2?f<3JOWoNC8i^CJlGV6X%X^+LG#0t z@$(bfAtHTE+WRzmGz9(lm5x)*Js*q;%oms{jB1aGc)0+AlE z(+{L0C3o;#jXM|y%00}%*^D?sa)T=RnST=IA(OhUF(_h$aZjEuK^dSTdCps@K#<`n zftP+>G&UMT2Rar)b{C5x_JSLf+!tsnCa*7}L!^NU$bkEU{|x;Nu)GcY0HOxbk|N1W zV{2rL9MnOAT)S_GT;ig**B9nB)boV$@SHD-E@;2Z)gsBA2-)H6Lf4~x)r1Pe1$x-3 zG@QVU79)gM;QT2vtzXTC7jfEaqVoF-7;JwT)}z|b2-uEhW+yy&u9&P2n%NPZW*jWK z;#WLZZs$s3Aw|GOULs{juDuVC;h?jF=X`pd=dU3ue31-z)!Yy2L^9WyOg{9?-bn6H zb+b-7MK^x==##Yjs%5oZDR>V)zC}70V6<{H0?Fx2BC>Qm!uhcpFB8cM`g0{QwW$I& z#+|u6GX$jnR0E(HZII4p>Z&Ha-5~(P^U_ihQBIIp|22KKaagl{5z8$2Dgx3ZuG)Q- zJ@K1E1SkK9<*k?)0sQ^>;!PY5RYb>?#1$9^+r+ljy9-S-SFHcM0cmGY)bHZ^O%3?) zS8drI8xmd|OPO$vqN4!jguhFPGEkbUXXu(xX%Kj=pk_OUBH-2q=}6STa1#xre2kM= z`-iDb%5BV*3Y4+RTo8nsZW#ad?_Pt#x7Z3i1mjN+#KZ-dR`8NhzCDX}av7L8K7uc# z7AcB&xohnZRV@Bj##@BC1R%0RH*yDchuLK$)U{?~cW!-8q6_(kj=)YO?ZWJLx16PS zfh1d_b3=&*a3J~^ZvfWXyp2A)ffjJBvgO`*g%r%Ou5@`gJr zOavnGre%F~{wKwdve58|#mLr3_G?T*G@Xlux*e?vw}@2FsdLZ;4w|UZo&P*GZqhTx z0EKYPYO4mjC&EsmYW)-f6sg%Gju3T8)@qK(tAplgW-@>PI2j7lbX*xK6Ls_Dav!p} z?0)LjYtC9s)!Hvp;VX07$emx+VI>@r%gXzOZRb)^M&Z2iJY3jr+Ty zCs$VL0jozrJMXTp?#=RzQR}J(XiaS<$UOi{Vs4JIx78C1-y|`TDM2q>S_IiGQGnsf+g zD+$N`wy*i#ubP?8v7)~bK21Uj1*Kb|Wb&+9JJV5;H|qs^zi z)A^gxRFW+Mo_aX{#KP05^1+^X2m~4u#)U#{Zs#i znd?J@586VYosgs&SSxx{nDAile zo5!GLH(;8aUK+k$+%Itt3qO+%iv?M_Y)Le}m7UcbV-{S_ABR>LbJ}7v-{yNr9f_S{ zKMTVa0M-y(66{Oajwa_zDl@<5B1iybcp;=$TAcOKVMEdYq+(H{WLL=n-^$c7sS$dR zB%m6U*6fP(^~VgM0#cG{XwaxH=^05+^zPsPo1kMl8%7UP#Bp<0(+XApu4f6NcmEwt zO*}LPA@FDc9m*9ETW?*9y6aC298S09=py>~)|Ow~&?-fi0kx^}X0$Gb(AWNMJ)mS8 zp$#t(%k+aCT+GhTlnwZ2p55{&`hQ9jCu0-?)i($-3KMH~DFJz8viEn?Hf_5JMyW$K zyder7F)=H-__3;XJA!XhM|5)_S4uMnyZ-(wrp;KAN!Ey7i%8Zn!U3$94wac>)QpK2 zB_^W*r*1FKuNvF5ex8WDj3p0?sW?aH8jXdJg-}!`9Re5DyZxZ1!pW@ zBh`O~XR>1{DeM>F%P;P9F?ey^_=?vwSKVymwvWg`J6eJvC|KNR%4FaOT_EMiD;2j} zSQB2IC`^R126}tqt{$ljGO1-p%&)|B!&Zs`joBd&HdC>)I|Zo6 z+X*hnz(=@E-T?>38&9~q^+)JmFUogeJ`In)12TnFR4N@YO}F0-9ht6Yw9d8OTUpmbOA8zsNBA9yYGyifkKVTV=MmFTrR> zxgA)yyS&poiZ2+WzZ7Dn9dN|fS>RQx{cDD_VqWZA?XH;(j~F1PpeRR@fl;4nc;xsS zw9-K0xKi~<#3+JXS$5J**@wJAWekh2w?`YBL6X?jGYhrS0P4KRid7s|&7LivH#9Bh z=9XPaw;uup!@C+rps4(LA>F@rI#c_o&Yp&8p$e0ys0Mn*oRE-owh8nvHof;e!M=7pY%6U)df zn<`fmA2%N?Pn1oR+dRDOV;{UVhC|r%mpdsQD+kzqXe{^T$V0Un*KtNm(82Q)RsjB1aC^VT@|6tWfxJWzZ^se3lM{yP*! zsP)+cM{9{b>L+9{x57E+wNv;)W*kBZHP3{bpwJ!pi9+*eTDh5u0vp^?BoX;-i!dYu zf6;)sXd}+FzRLT5=H0*IkXszrZKRdeV$ROhe!nE8+IjiQp$yRb)llC|$0JUG85|IiJ=Qun@cw(qM82JFBhT zr8_dO`f2QrW#>IVMXcXJUL#9erkA;O{;C9qzh`S3n@SBjN<)Vja@F;HQ&S z2zG9Qp^|FbU0-;Bo=33*kM?C5>>&?<8hDNajdpQGd3h=-7wSJabxKB9OM7obmDb>C z{sDt)!w_JPdX1u_MuSStmYL#v|Irg{mMn{-Dr%T=7z-XMMB`Th4{ zdLKq)u-XX>e-%$^tKlKXgmnT%f@LS}TSYQ@FUVUkbETNcZk8uym-EMQfNzL`_R3=1 zRg&>__YN{{ag|_1wPX3s74BwaJ~A-=YxQ~xGEbKez2Bl_uP%?5;7J-a>T5^Lw@ho5 zhCV46^wgBVH3Kj^ZHoHL+EPY35mis^8SUblVXjv8*Ji>VV+o~==iZFk=|~N*o|_hO zt`7aVzuf))Rv(o^In`P`i>*Q#2hM)TE2`$qr^fnd)&&p3R)G($*J~NfHt?V9 zF@5kuv}-S{y-2x8;jK*)cT*742sDP%vg(NkboT~?6|(Xl2zrO>b+)yT_eX%#a+I1u z=9*I%o1@9$BM5wX)O0A9>bcB@AdDo1VP5K!PS+ffP|x=xAKIhFO!K^1)9$o+*`AWw zp}Qg^{=2!1T3UEZ93o^&8shz!iR!g?T~qAy0Z%9t5$@_}q!qC88^_lXzL0ejeg@}u zpnPErz1^<2x|zBtjA^~HULkY^R>0GU5VNjM}$~>Pp_THsJD$D6K zue;+u1)1YKQ=A^?sS?9tv@Df>mO$d-hA!7i)t{?+GP@u#(?#jQSS@ylOSB^n;xI%@ zLB$|Bum^K@o1y8s2JF^(kCFOL9{Z3T*bE|pz~r1{u|veXr!w9>e}@Kph8K2I{kzX6 zxinjr?*J9_US%eDo4*Rxrt%p)wkpVl>Fn||vJ!?_MDmL-ouNrNaUv{sQ>7~nA2BF- ze+o9<;L!2VlLC^xVW+B92gRT(g)1AN{G_|fj;N4?i(@D1=m9|suM(HC68Kq-GKJL` zCeXjs>6$6J7Z{NcwFS!9hHxs(#!l3fmAYfn`*#yRdePExS2*VKz#5tQ=YNJESfeW~R`-A)p{0yxG$N?G8E(ac* zgEAYyT}~@C9EvpfX_a^(YJ%KN3rg#1b=)N7#s zj>WJTv0#?8lx$!SlSK{O4hmW6NyM;o{Hwl)rrgVuV<~-% zOd5eVdKS|-EBj;&lhK9_dNIPVwgf&_Jf-7Vo@5TZy`ea%;{(`=%M6N9_}*7pFd6tR z1(i$3`(z4G>Zye~JnTDI_6O>gqIEbw+dF z@-`OF=~@Rg0IkmRXXG+TW8%6?6z15f3xjB7am;LNlxnrNC=wCfjL*LqC=rTYCWZ_3 zu2?1{9a=6EkO&9L*Fm{2(FT5W?{O|?y_0OyXXyEwp+shpdtP1{^-A;lx>;03cjW24 z@K6x8Fub@~zE3kum}>}#_MmRMi2@ex0D3@$zfOOLPDxKzc*p^pRF+)DB&J33+ru`j zt)9GZ_+lUF@h9&+$tM@3Gng5QzOBpcpjxMXEs>9RcTHndasO&W=9jCp_CJ*%izm}b zNF}j}f$H}KE^W~>Pxg99VaPJRnDCHrxYueg^V~;7E~PXAfWaa=QbgUG4cCw1t!qeo zCS(s$`k}69HuceL;cum?UA(N;g?W#XZF0X`3G&w{m_Gk_fe*0uCN%`_^yRyte&$QN zUoyzAW$D^QIGh>S(SY+zUl~J8l%x?9$M!_OFuo%g9X_-l15t7%?kuvRIkyR|t*g!S zrKS-y!Zm90j$9}{{Bvm5^r*X-F&W7~W3i2(pMzy6YQxT{J|pLrZ!BuL3}Q}W6sQ+{{HKn+TW9LAYXN=iv8$Ol_ z+JAvmnjRP_EE5H;BaI&%Hps6#I?kB9)jQs|SWVc%z*Ur6r`)xbJeyW)d-u|y(b}4` z${XwGzqnExz7F458(`u#<{eKljcZ1&8kdf&gkX8dYUP-4X$FP!JiVhCWa{{BB|LT` zCYFI#PcP0hVV(c95;ekQUZ56x+ubk?>>Bfn@SL7%oWXzrVAy^(!RZp^oBMZRNTJ{W zE?Me2wpn8O2qwg^R2hY@2BBEx1O?_QUeHG7{Hrm`V-^iA1JcP<=bOkbru3WOgSLmg70lhb6|Fl_w* zlFcC+u8iyrCRE@pTWH;VwFU%f7b$%2*SF?Yf*!|Rv;u5Ea4r&#W-qSWQ8(bEEd{vU z-gS`5S5@?AXoBvHBHo4G%q%>Gc}+m_3n08-u-BF-d*MhuzLQbmoE=DO5aW)&OvKfZ zUEVg9=C;XsyLI8B0M5(d{KhviRBe}&jb}zC-5e`Q$Y$l6Ij{BzF0j(6)iZ9(2;-r0 z><+SgFcc`uL$G*Cscf;g=?4S>IVAM#p;YJ!9<h<1E3YE zJ&9R}9w5U;xFX}piRIuX_#kVU=7jEuDC$qg?PLM*m$*6ez)qW(HNJ9&UWRG zU`|b>rqC0VvmrpQo@f5slJ=!kTfrT_JMt#8BDpIm7RA=O9r8{4aEi2haNW>c`9gH5 zoR|~AwL|QQ+n*-LwWw!$nS^TC{x;?KkHLPl@*Vv?MxS^1sql&l<2N7jlmA_+(#lh+ zcUZ#$v<#kshhLHl;OD?oLy8|dH+ZbqGKQiqN12XcZSPz`sc}sMkhW?L*n_82c{!W3 z%s%{LvXztp`U`yAl>o7nlI{bqtxm7cD+AFDVpIOCl4tWxaEB^{G(-;Y zeX8P(xD9#eo@=S>qygg)4h{2+P!2#n^JfGEi_D|+1+TPLh`q7t4hP4lFqq$5EUaWH z2Tl*yIj_c(I~5F4g?NcTHP|3TamCo%c=X|R1D;IuM$UfP1`4}xyjdftn6Q~NpuF%{ z+$Xw~|EsIcmykY0B#%f_F3%&wS!7)-(%VEWsMKza$ie%Uu2T%O5b;Q=ax@HhKQbFD zqeFXv3^0KEgZ~Qs3Pe&l0X3h4pyKi> ze3-IyAeQEO03uaM{NU^0G1`T^bKSJ3nuY`(L@s;kup`5*NEaPtNwmoLf^o z-Vo;(h=gk0`XG?^3n`Ty9TS=l+R!62C^bfW%A*hAa+}4(M^(bl8j=;IfLe?zKQfO& z0R&41SZVoMr74&vzVjtePTnV0Aq+r$?yN45I{?)qGVTCsXUtWME|vme(b!X`LP4MF zD+uezxarRtjb2G#LlaeJm45xHr*rLA)d_+nRC!l?vUp7;aDpr!a>d>cEv)3Z-4c{$ z@a8uQ9_jF&xp`lkfzGX|Wq06*yaJ>B%>)?}qX(j!$-K&U4@IbNfHZ1@qr*a%)Z|V8 zW*CA{vv1KNDuXiHp2D!79+_a7hr%}^-`|;I!w3GGHS{UIF~o2yQGYz6xF_7oEZ3BJ zi9I0bxoy;Bjcp?wdJ?S?&mRtBia9n}^sVp0(Eqa`%Ms8K{`|O=^4$g^+@565Lk~cW zpQ!LOFa&@0_t?*QnH_(v;3MwNX@<6>*w62hHbdav$R;+yZ)_;uNrfBGBT& ze0{n$xIxlz75s>($a+Bkm5Z!X@mQ?b;-6pP{DO3&hesKc(qHBH2=0CM8;4!RtZl^_ z-Que3Z3U~wfmNK?%4Tp(zf$Tw`>sRvPC$?=5jImJ6}@9k{?yn;AYfRFgn|?BP`7ouKTxCCe40Aq?i`yr7)?-9aYSw==#%>o2l-mSMph5atD5+ zTqc1NF*z2`K-ixB3t6&UR$gR^1SG zqT4FuBNE?uzrLeGe1QyXfct~~3jGRCzv|=@%3Oj~+EKsT;d6yvj5@M=V~_jvWuIit^X-uO0)E8@@6>ynHe786JS^i8587 zQ0OkfhE`JH(+uN(&6)BF$yH3ilnQLS-DfOqUY}#Z6Q_Ldg^N@GULVhH59aI!n4~YB52-GHoS+ z?;1CzpFHSxWr+Zh1VpNFjdcBC@%EmV*(TbyV_!q1d`fhwNKS{uN ze8yJFfW@%P)B2YfLA+4SJTJ7jo5#e38cqY-$^JDcTO}qK8Y4~;6C01x;iz5YBczjN zTi)bi5#OwZVyU`oDEASv1^2Tt!PVvugra!$WiC3?Gwycr84Jlv*~g@OPjeVyKCfm_ z^z#I-60;8RxhKVa-{vBq5wN>zjF}=26j-<;BE3&9S~O!53&TIZZ$*=o73|UkVY&;= zAA+zwJDu!tI#p9n)iypksdPdlEcsi|A+DFJOG@->m8B34B4*K`DCUCP#X4*PjgR0P zcPG$n9R!ghGs(m4j?RriG*qAKVr_6$X1q94s>coHD9iycpnzL}Ra~$o1<5$iqAQAWDDTznR%{`M7d_!d(D360?#X zG2~^68$58C=c#nxcHq~bzMq7F^H?|;LXyI-K8}q8+%AWHtO**d01RyZ>=i`13 zwJ-Ea9P986UXV1|q8z;kWAGS4{G&uOfefgC`-A;B{R(mEwZgV+;uLS}4ktDv#6KVu znndKD^Hx!@ za<$`nYOzH10K6yN|F)*HKfG9CLea)9Gpu!sw-WzT`?S0fBFPVuD~e_J42!>iep`tFb%Nhy301TmOxX=C{Rxcv#vl5r^-&`&^R=)PY<^jZPL(OwF4Omt7U_Sw-Qrt9sb&ZnN$g z7ieA`#x_t>Cr6J;1b%9y#b)d#m%>dl?R|}hqRyii4PKZHwsU8>M_MLikm4T^E7!i| zw5#;{QgAlLOl)2LxfN=#VAfOVRw4hbt#F@UP;+yTMtJ5+#mAP;O@P8B4&S6|x9&k! z?cF1p;&?2KLOA%y!Jv9>k+{X6)nHxTfZFo6Z&KI*h`)wM3R>21NP$Rd3a$kUMfYjE zo@oO3>=7c@hj+6r__l6vT7|_bh+^9<9lW{omTFah1he@#wm7zR!7Lm|S8DlKMTqBm zzIgt3F*(LfAUvz8vU*ui>Z=x>dJoZ0LWm7tAyrk*RVZRR?08Hts5yv#yq3(A)Zql@ zA>&U1+D)=(7QFa4fQVu8nf&34BU%E;N3xhMGm=~{BH@O9BxIW)L}7CD?b~dmglj3Z z2P?BDr%huu*E&c^}9-51_n<=ajpA{!u4a9`-2-4KDHSDENr6yL46jb&nbw4%F`zpKIiJrzeH~@ zYAb^V!!pea_Kg0t&n{zf}G5MqK%4Iv0(j{ZvN_e1YsxDWe9OTX|F zl@ckn?Qswsot{P}TWE=OqNKq)PQ79nU8*=nL`WPo8}mLlI{K5W_`Cf%`_X5-~6jYO01GW8i1y@;?N5*1?=C8zeFJjz##J zLP6$L8y2lIQ0)=VgRlS@tU{H<<(hHg{0*T;i)q{~P3`+Rc^URUy~{~kb}|BN+^;j9wPS>?j=72qqzzY=R*`Q1$(^#PpN z7v@xUvf#F;&CX0LI$T#d`jhK4wXmZZT8iD ztN)8IU{&o_bM!pGhzJR2LNG9xj%N=DlCl~Ut84eTZbO->9w9;!5VZRo=liUS_+v4P z6F01R{qVo($n}uT@o|XJR2Jb7e)xAWT{ zz+CDZYljF_Smw|oS=j&ve#lqxdXe}2ofR!wLFlL%6lJvg;t*nWPXE&gvT^q1UmQ*w zQ$Z@QgxxG%8b3RWOPGS2k;IykzOu^&Qr%2%b)~@&S&FNYb=91TmhkuBoEVCF##63R z^)+^uU?EMMpk?`A#)BcBh~5ibcZ@D18jGmwTR;gYYs+zC2F|n)``^en#8R%}K*0TD z>i{2pg#Yrb{-YIo4z{7LE3cOO@U$vkr278qULg-`{lq`^Fe+?K4NH6xVw4g&diiGm z$hNSsHN_KAIZ%v%FV$rW>jch1cp)w%TqzlY1Rxm~I6GDfYM)HLD7_!JfkY_4O1u7o z8{AD;*-k^-mmR->Yu_;sv`3&c;4^rt%iKeWLbl##Yt`hJo48hjOnBS=$?T1eMoro=Yy;4JWIkt&t-*Gw#50gR7?t8ZMaCH$-Z-54+apfujF$i|6ZFLzq=EV}9QZc~7!&-g#*D0PSB z0pmgJp0K9APoPx^H(LnIPouW8)dUjalBz7sE^ES3>&2dGbW(FIh`K%A+IjX@De^{V z3hu*${RjprWUORHqeFp#4IqH~gZvBq3nLlIc`1G+xAm558&LA(QJK)KD7)uzYQ}}* z>>i+LZ623}{K`k$pHxx#)Da8>=kY`tYLE%OQC~o!U}s6EL}b*=yYC^58ACH(Gbp}e z$W^yl@7CA{o2hLCqJ4wcVH`-$6Esoe2qjt@)WF>jvn8|W=7IqgXGQ~U5zU(K%%#;3 zL+C*agFeT>b@i*qkf0@K_q#mAs6Ky5u@&+$m6{aAP6EFU6#O$6$oIbMd#{Y{xAKaJ zmJu6J;G>m&+6=E-v|3l|IMrtaNyHp6=h83oTeQ$s;}EXowOVN%^TVBoix{9{njUa; zn{CX(tAWHM*h8G(ugzQ}o+{FC#yT(LkD=`Ec4;$(i;hEv2$sMHwdDeF7XAhtZAV$8!6>jXi{n_jI{hb z=t{7umg>owAKUK_2nvdx?O1{Y0c5LZNDet$D;=~DAo%JqC6663jhyfs zgpU>J(lP^Rb_mUZJRf$3h+VELsHh}t%0W*ofI*bPrGtlY?aNLiSb?`-_~{u=!#dClT8Dk%n&qfPXZN^&p9b%V+u7f zbIFKct{&ntzFAF#i82;3UrLj&&JomPo=h60~EN>=qCYr;E~_d9^5 znh|N&;c(Qi`RxWt`Q(CV9+m7y^kk(GKmsR_74Fq_;d4T`4Vv%{D~c*7&q!lZ8&^f+ zurtgqR0@ikb33SxoU%}&xx_9}bjuX5pNn0Qhzq>#%?ACldwq5(6_~3ZhC5y1>kz4p zd@=wcs!_nec&*cu^bp*GeJp@MPNIhaqU!$HqeFv%4P1cxgZvBq3)#3$&J6;dw2NlI zP`6oM+3`NhCI2}=31~<@lRJxq)}%suYc=#k;6vt!mQiuWc3{$Ut7y$C#ux1pcqqzVX`HQQfAo7{;|F|S={uol9kb#uz=1)5)C`Mq_{Tiv5ywOY^ixD>7Imw z<}*TNY`?OmoP(IYV}^W&M$0~zxAIv^g~(5kZC>S_sX9HQcXdMFGm?hal!>A=7KVc( z5jiUgkG8?4>%u64WJiX$XVOa~{G^Bq$$6yAA15cR+~je3hAd zgv2`E-74ivj$Bnrc|a~jCmrrMZ((?oG2U3J< zV2Ea2VYZn6P~uCO3b_t~?|`c%c2!dF3~4`kl!yB=_~t;-=JN1NIEt_Ocne<`X3>bV z$DXyo=O_EX1swv#V{z~WfsCobEA~s^Zq?eos|U{hUi)_%OpYY$1&P0Y#{J^BE%2Nw zH7U%-d$K|&4>BzCUz2@x%+b)Jo}RDdQlHnxK%c5Nbt_y`8c#LCUR-Z|>vALe#&3|* zJ3{G_?Wq~^OIxo{(Dzo)Jh$2ZgXw;h@*yR$5&v*hyV=<++a?wE>~Rynv>w~haB0_V zv@9_FT3ZCKBVad4=D2y#?m~sKTH)CqK-;+IG1AL%$;RDRrRKuW-9f*MSY{O#=DMx7 zvJP^Y5+F~*M!DIrxKbohK>C>HHt&L}`;5%3ZM9Vyk>yD={4_(mrtY>j!J8$VGd;FI zGJ;^pr(|rDg%?wUNFB`EkNExP76OoAc>*+yu2b?%Jp8IH{5k2^(O4)Gx#IAaoAoOQ z+;@snmVXeWf%>SSs3diIl z2qex#)w4E4L_nq^$_tImln|SeroL6-!=)w6u6Q~r`BIsu>CArE=_iu)#yC*9{04L# zoLVo4$mjd|reLXvSX=$en*deAyOd24_FCX&w9CJl*zau=sIs) zX1Im1oquO}WHagT6>hXhzOKQ{@pz!;!WUNkkX<43iOJZzy4!nCBI~=^vctMq*By4R zWZ6>2IRcr3W1hsnaF)-x4sbmwlK^(i}eWXFMA*2b1tDBwT@I7 zM=fC+i{MjK^oFtZH4a1(z3hkkk;NO#C8PE2SD!0-e|HQGHn$~YW?=dRVZs>s5FWdd z%QV}$s?CcY_l zG+*)=IVu7=pK@2R$dMb$op(&)R8 zs+$eZPu9UJmBJt3XYA+wtno^$@2pf|oE22@9RxiiN6auoG^&!d_h9Pu#lZr{9npZBZ@%A z2tc<>Iu;q_cXFdWjv8EzR361NnKcX5^J}Gdbq||XpALKI26o}*mB&8*PdYdh6~g=) z@J~$p#h1G5j=G7H^uCIZsU$Nb^HnRXnVpn+)$oJO!gEO+zL%R{Z|9^&$BUx#H;ZmMK0? zNgZgu5x?uJvBY#%zzlAR0@9{4)j-hZJwIb}<*p1P3G+@~Dn>xul`j*E!oPNVqc-97hS! zD*lycSth1Kv=*^I)72ppHCLCla)h6{bZK)8T>>7;Y7?vrQW$chS7PE_iz>wiOm#m6 z5!tU%lP#X|vn?*X^30K6kx zEHBt(GsBuda;Fk=(n+0#>@MB!qxTL8%a#A6HIdhHc)Yo=8LlC8$foVbVCplVZ!bbx zid&)nK9GPd4fDl8|f_4}4x0#7bUc8Yx5QCUBF3 z$t^BwtS`%^Mavykksf0JCfQxvcmwt#{D{0qg>xYsF}~OS8&SdZ-WYm~0^Lpq2UP|a zi=u|RVzq*YOTXpOk_P3RB=y9WiOXKTNFjQpB$%-W8>}(-e#ZI+{zN+nDP%4UlJ?Bdd}XoZ7|_*6u#i2@$dat1v{9=HcGrn7YC($(^)cRR3e|%#@VXo-00BFW?dTfT z)2Rz50gX_mrf~xj#jm2%S^fiRTDEQ(DkWYI$ptmkmkj%y!N;FJgrNZD8$jwz!m!SI zSV(AyIsi?F`q<&Lw^TWKh%0kvPMlF6y(cFan|ld7R>`t#1CKea&leNAhwo1=4W#<3F;m&pbybr5 zO%W*UW$6lB5UaBZyL=-0_rgg3qeI<+4iJF*gZvWw8wA8PIV+vJ$jsB(**D>pF8p<> zQvc-P8>N4}tt0@k6>ogeBcR*5qQ3@_GOjC9ERen#j@c-q6Ow^M*HX23VjiZ;4jq3#OtGe_InxQsuBZDoyt>@bKVc?{K&%kNl7FpJQS3)LY~D%ggbxwt)a~VN z&d>0~h-nw`V{E(}a$m&`GgXu(NFRzM_#diT`^A8SMZ9R@NC*QXQwDvzTkDUU^1qZ% zp`ZfZoN+h%K?J>z>6g!^J!YF>p?#olndu+sb2WAS&%7{Sh7?}wA@zR8s=odwCszd3 z2bTu_SwFvoYymWE9Lgt>9EDA6M_flF6D1{$C5XAoQ}!rh@sT?ghBi%%c6#5N>9wNX~|-QCxNif~&r zGN@gY>x0uXE;eicC}-puxL)%QFZSp)o*jBDFM5tHx$CKP^(|Kmnsacq(~F6naCf_= zQ9FOMoSe%^!ifYWJ8Z&?AL3O-kru^X98m^yPYssGRao^6;M4bL4N2Bphyd=5*pDlS z0!&oS3K$gGUI}t0OV$d;_)kFPLzCM#W`;tpS9T*;Jlwgqoe3vyNz;1!b9Wh1;0b4QJFjdT&|Hpaek+q7p(--ze|cNWYMOJIaU4sb zje|W_$k;U4t2e&Hpi!!w8#Ji2v>|aM;s4djsF&Me@@F^jVc*qFCX`c`UdYJJBDvgR zSE}i0rFaQ@6VB&6>vWC3C#7;Yl50b{7P`6oQ*#2_I{nhP`sA5A7@{!8IfD0NsbH9p zb}?ji0->+o;gt(TVsx23T0IeX(qmi+_IvFn$|wbyO?7Ql-jj<^P3A070Ib^aO8z+^ zA*0;Cd=8s=1xfPYALcu2LoGb5!CMr9qeIMr4oraigZ>Nt8`dqT_f|MSJZKWhqZ;P0 zp!FzkZC6*ow^bA7Zu)F1pDGjpT$>hN?}8?B zEFhS|2%&Dn$Hq{ZIdO(ZD8vxI^2CLB`^ zYAk%!kvL(pPpz7{Twl0bZc4_q>)U$YPjNgvPW#~76Lg1lzuWLeRrHXpB$PYGgavqz zG@tohk~ruEi!f_mcq*_ACL(9K%*+-X$}BxzO^LRX!5cAX1RP58B*r?*_XGs=1O zOFP)cPUKIwTu=ez>4BInZFoK};@8Fb=}g;)sBWM_)MCmRe{Z1^uQVXfb0*`8Pc*_(<)Mh9nTThm`tb=TR%On_O?VQj2&PhP*j4pTJ=$AyR!DM8ZT#02^; zj2~YiTpCqhA+7`IRfhdoRs+;Wj>ot6DOUmUpXeYq7(GrSiAivuzd7@jG|@R@;3*2m z>}mu>@fLR|K{zzibAa`0R=^avM4CQAN~f5UdprxB>J3!xyX^+?>K=UgfCCNifQG)>Pmo{Uja9Zs zBm5U+?9I(KdqHXZnIu%%QcA3sObQKamn;RUPO$fXxh|O#KK*GVh>4)^?ucF z1mm|(rMf2)`x|ScLyLh9h=BWp{tNvJ)@qX2QAUO%{fpA;kV^v6&5r3>?QC>Rf>&6Q zUJ?nKyv7V6(H;wy`tfk3*y+K8)bdg5rnbqdXibr_75Z8mIXiTXXMSctTSO_CuLJ~ykJb^rX^M}2el#hyg$g^Xs& z7>YPejOF|Z?XF<1cP2hLEA3LqhH(|xRyu8DDnZQ1`VvACO3s>MJQ2C2mMz=(>B|b>%W61CyJR1sE>`Zpw&U_jh;eEQWhfjcDIkv(q0%G zSYXmFnfZe_JN)+#D^BP}B=jw8HnGnvk$aY((Rp3y8m`+{d4>x=9>zP#>9hrzi97AV zjR??Kx)1X~vt`(!{Z@{#sC6qAL~f*4W54CtNr1sWLs5jB@%$?FYCt@}Qqpgg;=8Gj7n>6|i_xddM}07aIg7){>-vCgLN^_>knDecgg(m5ME z=o8VdgfJ%Dy04HHOQ8J0gQsATr5c~o0!!W44cu^YkMi`Z)sswvMkOgxqZ)>ijm7L` zT$jVf(F{E|s=_Jk@1A$Y{g`t}l%X)1r$nsa8w@1g&K;*Np4dB;M;;uHsU#}09PQ?~ zHLzn3-e;ELude!}5@2BM*FoaFzRCT5Mn5w<>yzZ%%AA)g%&;a0GIyS+5IVSTo+f?$ zo%>5az1?Q==SNR4d&H`%#G+C{3~WfYgD6)x$K$AZiUEhBFvhHi{sy`)%o|tPf+(~z zd&;1Xp2GRH58?LvNRu!aFGLk@1|Z!@?6E{5&P9RwlUf2wSN+raw0Tv2bdRAKJ6eQa zB?RzupTrA9Nmxnsb??#xI(GbBQW044G{rrDghVnB(^UjmctT-5z*hkB-5qhoTqTjA z+E-lJjtXJ|+zl4OrQQ56`s3s^->TZwL0&F?$=w7_Okx!Mixu*PiaiNcXt438or@Nr zP08K;3fz(H?+D%rJ6^Aw`o0AltAoibf-uovz1&tE`S!DFPD^k8#!%WuZg&;&jv;ov zGA<-8t~-Tb;JjO+ylqiYwn{8}KKrLG%fe~#U|7~<*=(&XiEE>3dLq%+ z!W1sPi^RW5yIh_)eCmM_bUK+O2Zu0K%~SKehI=>=;}&q*Rii`5feyrg`-A=v{1FJ~ z$AVa9{Lf3ikAdZV=Xc6?cf+^Hlv@pzjt4qUe^iltJq;ct_SB3wv|}8Z5u^T`rN0{s zFKsH)h!8h-q_xQoxFZnV`$`Hw_n5>CRW6s0GL5asOf;18!`ZRaooirky&&lFX|ZFx zkwI*8U;L7Lw8j*3%WK1kGY)~8@XWB>gg1(|&&1AZQ2Os+$D*~^m zHFBCNX(Kxi^@5mS;9Q#NO~MAPedD$!7n<+CGi3($P{q70AlI~A*i4Hcg(#@RFDHtNfYR?91vA1mwv81|0%asZ>=5WKl&d4ie& z9_263LqS1Q79^~d+-(NT%~K!Xb=GsoW+Lj!A| zC0k4P73N*{y3N4HY4CxFi|Ut9iG{GtHxU}pc*cvjY_%k)OA(fBCQ%bsA$p6EWJS@t zN_!tpGwI~J@iEyOc|V(i#bNz6G+FH*mc!_EacC2QEjY{%Q(mX!mrA9=*c{OD!L7hR zeyr(+_72cb_}9eTi=&S47-n#V!ISFl2S#_t-)!M$$l+`>=-7+1v%HlOg=`tYLV!)WQ!4y(aWIAkPeZ)9G9H%Pc zll&t{0ws`yhjkki7I<<#v?v4yuZp)}&S+R#Qn|0FX7X@4w;>qoM>XjL%rRsp%A4>O zwuUAk0ti5cFbiU@BC4vwFyclXTLolMgxvu@|H~AZ_M4XcJ<`w>dL(!A7HG;=RfApT z9%*`E&~@e39R4UR+2XGZ`1!jdSaRMOb~DW3QHJu3cE1=R=U4Of&Lg}*APh{=CNL@6 zZE*=3D(D{6dG25YNRvhI6f#GV8L!=^DHGEAfnT}>%5dYFE;29G*LfHFcfY*TkCkyz z*_nT{-0VG~~wYt3^U2^n}W z$z5U5p=I5H;Q049+2R-D3Jn1#0DyvqSuQ!v2WCeIzApL2EUC~@eUjz-?G3)2OO728 zlrLYmyt~{q2OD>{s*~6z9m8>{cR1jV@daaPyU+;xKNRG-LlOG|Anyv<+I?Km49feM1z~laY-F3`rKYQc~OwS@PM~c@yo9 z-{4rL$IfUwh37zjpLy<^oowW7llpQyLpbc1<_y?mHmydz1a_XIK{`W8}SO?Zn3O!pHeQ z1k<6F+3l3cufYA`Ybqcg%Q;G<;lntD~-M} zH>W^-?w`l^se1;Bbs_ubis&UVjV`Rm?vS9!<`iGud0ERMO_ehyZV@_F9adS~KVkc> zi8pcaxu~qJEL~Fxpv)aRh!Gfx5Aym!K#oUL{9Sl64U^l%Z@feeb+wz+TL&b6K{0QL z+b1h#ME3Pg-MYHF5x&^kDy$vGQYGso?C1iYEaOLexXX2b8{IvZrP4Ke=ev_>c?{~l zN`5Lhr&6lxEF6Iu|I)CB3lu{dXwZm1=n{ufEP5$85k^pq+xK(m`>Q3}d_CIUy^AB; z=&qu@y6nsvQ-fr1;$ph5@hx~*``4szN{M{oCr z6w8V>^c}AYM_}h@6c(c3#or)pykO_M(tK3T_sRJPjTX|Y{0!J|XRfe$=@`-A)o{T3b(*Jz79=gw0O9hcd* zt`4$pAg_}er)4=C&GBVG9BV=suU$80rp>v}eOUgT%qKMo#fG`9Bw@Rj6aw49hZwh( zdKvq;FtOrV9g3;$0#7~U6^fHDsk{(_*e}&dp%{CB$lk~RML>L~BH7WSrEYW$a3Vl; z20xZ1SzCmJ4R7ydN@lKmMkVwNgXC5wOde!v?R!l7j5^eg_?rVun$Mk_$-Hjt;70HR zc&w=xZj2-Y33SL@+nW4a$+Q76wt<3J1XL9oen8m0Ij%XZKQ84Pk|jHPj^so$uF65U zCl6kq<5s6k2(=)C3o`&-<0^h6&sk65^r1@3syl4UWM=R-OgQ5+IWY{Qw#@418pUG` zX~=T_=8x+GvB|yagVzeF?3A@(_N086Gs*@;0PUvS$xz{R(nr|udfOm5f?L1wCKXL3 z9g)zHbDTnkoT@6&YfqfzWIqZtdFg)r)kq+e&;)C7>s(inQ|m+QmX_BOgC<@(PM2U> zjB6SeqZ;xpSE(oCNgT0ZNy!`x`)_!6OV)C1)u~!H+tr7g;jnxzlNBkBtl5|Nl?$zd zkOGM#dAPhjJ)3N~r1VqK6Uv@OIufPAMB|KuTbvl*e=Y898M7{#I4X}Gcb+O(f+^}@-`fUS&HBpK%CM+8$Ue^poZXB zpeg@9`zy03YSJ*4!UvvT?0Zr)vtcUsrG_0kFYnMymBn*RnBQ%OR9qw*c!2wZ{~P=q*q4*ALInvPBbmR`RI<|88e9Z?i%z;T+dfAVpoC5M zQf_~bwvYB608u`X4`3R&m4%6Hn#|RS16kDCX{P9$ZrB- z+U2qi=IeiMVt@p^cuNKQY}ndXjy6p)JO)pun?7q2FBDACrHZI%syW;d^1LgMe3LWK$$9-xW6IV%2aLu+a2!4?PtS1iRI4O ze>ZV@`?1}E)Gy28{J8V5jt`)m!OX{Z1I{)dUkyWdFUllI!Slv|^8KAD-iNrchr(<5 zDb?;XAxq_>8fAPRSdw@GDL5Hz96nh;lr1LE=FHy{QbDn3(6JsdhF>@&`;4i(%Eg)3 zS4g&+cEv$L(8vSTLx#53JeM%u_GCc(g1Ivq;l5XDI$4o#Y_IWA}RHwBrjWHKp@ zFgU^^()Z>(kUgqs;UmDta)nIU1m=X0J2)pJqL;pcQyY*sBQUg7 z`j!IG=)FIBO5qAqy#&Mmv_vh-6He05#p;E)KDA6mgFiwm2QU&`xyJR(81uC5OcaRqXyA)Zs6o$YwxN;JkX2m9)BEf-D=*gS<#FQBPb*la{tZ z!_D*_07(dNgXB4mf}I?tvyu^#%Q9%K=_)2Xb$oXhX%>;#K2&$T(QTah(vM(wDvgBn z06rxR?ZPKbHTbAfgV$&{ub8jUy_tkWr3kC>OdSX-(06)IZFpEw+h&3pyZe0zd^ZfI z!AhMpB+cn(^$(Q1lbEP|}&Ynk*wYBew_2l0CzkU%RT^rm4fE z0$udeQ$&Ily9=Uz`rKk;5`|3GC$n+3Ka|6Ew+7N8R!9pAwI~Au9q3uBK!y0B?OzzM zA1CN=LaUM5E`A5oUon!MSJ8{XfXeGAMPTom zi5I_pKPsMd|18`}t7BBowJQ$}9sn5e0Pr_&`Ssh4pwM==l3B~pezq5aYn`8E1G^uB zn8k5t9yyCUo*(ImS(5vD<@tElaZ+%)!NQ3zBeU?~l&ZLh9FiU!P&CX63exKhT8xhF zNjg&WrjPF7;Bd)$t++Bp@y^~Cmlg-_J$d|)x@&Igc5cChBW;wvdSPFP4VLO)0^6vc zMX}Rahb+3w7c|vXL;%(MCj;?)O`}9~fe*BR`-A>F{1JSE$D%5Q_;{I`!z;S2;&{1q ztu7qY?|X8^DmL64lE7a~{_Bb9{34r?w5QTjsOUN+0E>wfrn!z^w=psnfmJqyL43k6 zEU4PZ4S5VoGBTi|svCN9f?*vBhXr`QMg6p0UQ~Y@JXi0f=Uo&G%=FdW7?rw`?^VM? zXl}as9g3>B!5YuISp6F}X(vSw8EZOxmmg#Hu5Gv{aD)9b_F)j3Jhi8WPrk3wfjuk` zclija5dW*qA1WiwxhM%kaZ6@83`Lz{GSZU*AO-)`^}|4d3;P_yP0+<d8w zGkla1Qm5K$U%EitG8`k(ck?bt=SNo>be?hRR%C>Zx|@F+sJh1llTmeI`;w!-?awPD zn80XMkCNb#&2d^)5knq!$DDUt%MZ@ceF#u^*XfawVqJ_`r9QS*Wc%f84_ZTzr)tdz zbeBcRfH*m9i%`!nYB7v@i@>4=iuwsg|1p(`3MuAOR#et+fSk!M%Z-Y>?@0wRc4BObV!5A<5KE9d@(?iGTF5=@V2N#;{w$qkJ zvRgrzQtxz7l>ew_xISY(G4GhZX|xZ0s% zeJZSPu_mjyW4jCBrIl^%1^f1gV!%Ln=W~c0=cP)jvFRf zz|VH*t>BUv-55<(!~a!!65CTuQu{>?DtPG1$N)B6UT{!F4 zs~KCYz0d?>irM_xwF=0rsw6nIg>c{CgZL~yTCD~M2-e~=)t()!PIv5+8F%jqV=t-QFoEb+@9}Dpg@*~+rpQg2bw=+muD$G8qIin{ zjzDq0qOgZMpkg{POO?`cz;&(RvG}mS5fu#bq9~LC%VbNvW@MNq;X?b2y4VtBHQ2RS zs60JS-UtIySZXnTn7Hk4it3iq#;x2Y9i9pNFaLV^g``Sf0t(yRj+=Z3Tclq9pqBBO z>JiK}>z83ao#_tv14`toASLG2FI+KLinOeaL7G|rJ?~n9mt*p|<#465O>rP6C$An^ z1o_;)0nlUVmQ-3RpOQZgAjtf`UQ-f`vVJn$KuP==uihEhh@fkbfB%B2BckT{zDhl`YbmrWPKEJusAEOl zHcUF98phFlyNJ$O{H)Rj+>?9J3ea=5D=K(t9uxTH885U`+J}s4Fq*A|R}i7WfrBKg zy{O2n^tlp6*E?sgC9-0>Xr~Nh5XZXpCdSp8-K_Q0-_H2hkb(`{zUaC_HXggs%MZ z2`%~dND(x6_tbj%br9t{(0>%9WVGXBX+bj7Mg)B(_&l2$_?xbOeK3FE-VlK8DV-72 z&%>(?QsSmhAM6ZNO{QVuq#q|l#YhNe?cMm}_oWOd&`J-3Y0dvgcj_z+)5%)rcqOC( zDNx*MT>AAo4kw};p4ZFicdM>iq3B5>mG%OaV(UW8A^^b!PD{I0pO)fAy{>!rPt=}^ zJWqbfUg4ZH3GF!US}Z1YCc48j$5_kN|`V!pV@*~Xo&8)A6QDz)X{ zW>rOT5|VG`rGaA3jp;ufA54D7D?$KI@_+y3xB^W9Yd=CD)?9#6myG{i8l`@-D1#g` ztUfql0e#at(JHEF-2Hm#K}(BYROfW*jN1 zHm=mcr7yjO_*$&M42aNb#e@MH&Ql8RnkoKR4D}K)%$h2#mzJ5RobM|E8M> zPzpJD95iP;QJ4H5)cf6w@y1SXPgFae5W6fM<=^++oCK#kFC?5upoy7cI8AOP)n1?? zfHjTqj66^q;@} z&ps40eMZ6&>!qi*Pj9T2zu;J;uP&%x)=jZ>yQLU-Ea*G|U42f=#6^-#aMpXxTR6|Awv2;?qxO>Eg;A)bX@UU*XlHIjR?;kDwQ?d3 zwH&16WaY;kj|7`ql^FZhJ(%2ls&(#E))P*ZJJaiQb0Op@$a`np>|`t_2iuPG!iTOO z2kcRonbYO%!l0e^1+wbDh+2R`D6zxi@c0|jRs+b?$iK`~cfjTbYl>fsw&BsFn7;_t zTPu(FF=I|UFtmewDW;Q6C^9YfMIh8aLE{T>@dRRcTD_yFnFO&*~zRrkl4 z;*?AN;apR{8mx5iBtm?coFy6BGcyyAy05~IAZSVr ztHa8MLMKj@ZM(mAAp~)rKn+`>*-bC-2h^;p`>+sAzXAC17{2Fn^Xl7ipjS@nZV=a zPGX;%i{q21ic{zMfJAj<{9Cau8=1iivyKCsUfHfTT$FlnzdosV_!REvJ(|!y3KQ=% zo(aK>&*#?TXHg{ZgPGUJ?uYOf_CW_UE1DiJh?%eI8U7x67X{^a-b&q+X(NeO=lft8 z=p-L0FYj|eD$s9=Je_TC470c=^DML`RkUnvMCL0qF9Nj1gY`A1UBlqPC+>*XucrCw z2phs+bc>24uDFk=vl?!eIuFyjKHytE^3A}+%-?6ZS4Ml~QjVv}9-hmegP&xFGAv!L zf}bAMNPw&!0aAze2y5P#vLY)*v`?C<>|Mf-&=WBq4u#Z9Lewt)#NLv`U~Uxj(WdB> zPV9WsKu@~FK?*u$IN`N18P@cuPvV4Ahk6V>f&_=j zK)0Lh7{*zamX7vt1xoHMgKG>=jy-aN&3_NDmDqVTzU>!tY)oOYV?=gAC0quhL&|{= zXn^~J{tEpRtw3841>4tXomqpd&1_jF6bYiPA`t44O{)J7b4a&<@=rkm;EWxz=CAh%A%y}w7x;XS?GCekZr>%}gX}^dYayR0!0py| zZzE{w0F2WDiwucRR51*uUL^A99hrudo@Wy{efPTIhFP2sBv(1e=GQD{O zu7 z0q|8tc6y5@gRTs~q!lixtt&~jx=#{vq}~MZH~A5JALWihCd9P#5|s6lA zBp2vWF>F9vgAZ)6l@{*vwRi0g2%49`xzcNU)UWsh(Ju|Ll_tD1hgVt_DIFckx&do7 zSkwHL?QJ@k>rv$5JEEIW=C(^>bnU5_gXr|^pUnFA#!jljbl-iL(2I3QfppA8sMn1tGAYx>RM5S;83SfkP_Kd~(#;mTZXRH0`3@-b=Xz85 z=f8x`i3@|3PMHmq+}BxAx>LDs1zshj1I+h+qha${9U_}*ERydbRe6GM2U$r-*06iJ zyCsK2l*(wUXsd_2R2KsYZ&DE9c-J7zj1AI5YTg%LFJm{7ELF|A(`~;$8LjoDSFTC0 zM5+0}0nu{OrpqkPkS&k|Wk`Mk1rgYznhnH+x2O%f7-OXG6W`_8X4mxi0qq5YBjuK; z2nmyMsg;8}uKs7uX<(XC=E( zKMF5Ly+5H859mAt5{^&qLRX5d zgCNV))|!VB_xizx_C zzc^iLM^f*}dNb=+d@^)wv^3DUje-~t+Cfzvgd%sm{!x|RwTT_{_{qMgoCi@}ZmIkW znz|{9asa!!|6p;|ZRk0w1M46yAtWsm-Fo*+WN=DkgPEde0058UjqBxcXgOZBM_CTo z8rlJ`NP$sAbf3C|d2tRgfeHQ=Y%_`<4%B0ERDI=9Q4xm$x9Q6)Vog&<)$Cy$qin)A*@?f zLn4!kD=Q)2w3-HNMkHRrG45SgYY45PH<<30yv+HH$)jPgEHOzWwQ=Mn$fEP4GJ+~E ziGqQdKD%!@A-&*QNJi9S)>E_byZ`KTOUX2DzAO!Qn)-kNPfthHFKxhIOs3+RgG@~L z51QnH;lAH&fZDl z?@Le|k)C3X;3&oK$|)cxG2i}r)5a~=H)Us@izD^tbwsW_mP&_ zxq7=Yez9^kRUke^r|WN)oomIIm5YmNs`Q+nH`zebk4 zuLVtlTKCXv3H5kz)=V*y538apx=71NuKzFoLGtl4cT1v}Q3u&WBhkY!^bVtNXN$%d zx&rc!=HN#Tz)VHo!tjJZ`xJcIC%!wP8!d3`HWbbKOcGs= zXl#T*uym)>{X5$Y3MQ>Z>E+x`-$&X~pVl{Gk{lX3Qh9{3pJr4} zYILDP!h_aRa4iMr`R35kNqHi8vMCH#2oZf!_ZAej&gL2+>H+PU&pHMukE1s%H!4Zd zzIeMEPr>zA#m*&?N;gk6coOM?0;kaX9SWzjNtw+vRw0n#^2=aRqeFCo5a59OgZ>Hp z3IJFKmj1-ch|jYhPJ?qESvkhA#t6X0e>A%Efkn5&k415~-W00r8dG?v`TEX+C<$#A1Y);2?!ipz>?!7#h zc%^FevI$uOipUeY_=v&aWjiAh2|Vs2c)yQg?oNiewsYkVrOo5lGRKh1wBORGDg(C+ zS+hVZSp|o}P-~A?U$+>iKvj7OFGz=GCg8l7LV-pNBA1Uxo75m>!A&o&qVl$$Q^Uj6 z5os37|EtkgERGdJPsyuC0u**_-YKYhe_5ve!4{MnIC`Bk}WF-YDQS6Oc{!p-P`Mw zE`)L^Ajdqsd>N9~WE0)DyM3|=L@K$-qLD((G_jhOzTU)~)Tlkx%V|%d1$np!9|@)Z zkOWPyg$rWe`{N8x)fSD@2CZ{UbBY0c0xN-&gT!Vh00h&No6nd)x$gB%|d~A)4nf`*9b{H1SC()vJ^Ypu!P1VV$SNmx=igCe5KAy zuyt_E0_8Fhp2`V-M^hw;GG1LyCbB9Dw_S z{R;jI*!6z3exmc0L8`dnde1B|$EcGpLsnQ@Wql~qLsPl*b^=^Syn3=8ViDs+m1+Ri z#xr;|LA$c&FVhRpBhYPmyl~u#j*8c3RQTl%Nv~B;v2f?>8i&5f556Ov6rFVPg(X)r zqMVWcx#~GJhCT1Oq|;lwp`!${y<*>|lCgpWG!nnW`WQSbTgXv|uVCNsRi3x>kHN0> zwV(!uws8a+1Lojp+;H1XV>%ReVd{&fbg;?m2hk8dL4KNG)&-R^_ceL`o$SWZHC8z| zw=ItuaCwHDme!I9H+B$D&i>|EV@;c6CiaKk(ndzG9@%U=fu=_W!65>uw9>npc1N7N zuvP|p3m-jJIC|Be-w*kZahv0mYH5AlB>f1TF9C!j3S9OJb=F-!7l~31S+sdXU%cMw z_#N&|Hm))=Oz`|B%^W|yg@rZN++AuPmF+CeGfRCp*eP4W@GzShOLUG?RNKzfvi&a~ zHmHIe4Y2Z3r2%p_nv8-*$`ITAHlPmhTixBs_LufA%$3S4k>rP%xF@ZGz)GPXR}!*} zdLsKClSaDrlP_@y+$8dCA-}8e8+T*qqH8GDN9+8L`IS3OeyWL1A~pK#!Fdp8U+k($ zwR@}Pw?8{(kVc>E-Wds5MIF!?)##xxr+FJF<8fKm+qzlqeYuX-KjsU+?=Vkwaz@&D zi{9M+Z=>Fe>uT-o34jsQA7V87p#Z9`7gHRK*SDoapIDP8JFe2z#E8o=?9>ElNbbCT zY~?+_Q)l=X^If5cfun^&qIS=>Ad6_$KccN_<^Jn-NA~yYOW^bCC!9KMM$D!mk>J8U z-+yId(z=ADA5~Acfb);drm3d-wdAryHg-Y48Bs@^GQm%L8+ zFasP)f4|~;Vi5oCS|Yw@-R?#&hZg6J6a_yL z-pEqM6Rbk?mJ+ofM*0;&DKtlk{YW&^q_%U(+J|`u#4|)`Px6avslgwl_O!GuS-6~PFR@1JqbP_$1A@Gd>I+?)m`bbq5% zbcaqkU5|EDYBxXa2WMomdk(>U0y$3~)u=-0eYz08c*yjYeh=2a&qAmi5E0u9Th7At zV8k-eWl53gQNr6xJrJ2*}#^e$WRN_y|upYL!^>s!7bR zndp-J+-H2U*6dE3YpNS=CcYJ|FxJyjaceKcE~?RQbVeM zll~^A%qRD8>xr@N@K6P?7GSTHuNU3%9OGw#r}gLNwF&G|X z156F(D!FM1CaM#>t#X>Qy07Ok4Ai!Rr|D^pQFf~1)k}~m4BP#jg9S{1xWl6rVp0kG z*b~)}Qp;ma+K|jd0Do-V!Q#C-zBGlX9S;&f!WlOFCQTOq&Oc$b8A?|R&M5Cf+IO%{3dxD0X003@@e2pDC8Mf=Qi#c zpR{1P?TGQ}x(@6<^#L>a*>TRek5z|}PE-e4z;{J(^M+wifc^z;nJ{`|_y#AJAK~0a z0>9BHgDo!^QvqyVurQ}QmdST{${83 zG-RM^uv&lXg|t2XfD+7}YRx&=#Y!R8l+*q>@>vB|{3Bx6h-BFJARgArtd4}~Oo^yw zRmA}{XJNDUu^&l!cZ`r$IrcgC3$e5l1Wv@w^;z~?p9CVGRwdX2EP&tI%K_!e*+L)N zhG6ARLU&v8x{a9Dt-WM63@TB~k|DDD+=oL?F`iP%eeR28{%Y-DS3X)a>K@6-mki1f7zoB^O-V7n*mu{dYVm|MY^&a}) z^=y_9=TFyKB%MYd_@J_@Qlmq-ff1B|`-A@q{R`O;NFs{*;gH8I{H8iXRf&F0RMTb7 z75zuP8L9YQ7p>L#!6S_^B^{T7uz+=>^2*i?Es%8fav^PGY$OKv2*1R^5r7;?)jV-2 zkmTvYjpFjzpV~;Vvo2Sx$vDlPKj|5%=2{E}2*@kVCFPAE=t^V5lE}~ms{PHvk~k|* zT2Y&8VC4Lc{0J@eqt#YKwVxhdgJ$sh(u(0{+aTb8@qjcKSJEfoCx6KqkGm`A+la4^ z<1|=4m=mLB&hE@h2Ty3ebWzAyg#?znOvE@SOM}8Lj^Bm%RPClnsDYB?O|iv)$X+bT znG#)b0r4vvu4z#23fizCDrO^UzWajIm64&x>V8Im?m*mPD}Q7zVp3B@ygt}P^tEcA zi+UZSx_B^22jPmtO4y0i_wEp&i76t%LnLDIy1b`;`LMhso5i&$VAyy9eGV9xaeBYpHd7`n-ThLOrS?HYt%Kd}*j3Q--wC}d zb*;(V*r40iGg?O|Mo^?CPr<2y@@6Q7!a)I)i2+lpEs|~o{^HSi16E)n0GNvXG5lwVfDIy z`B@XjVp2YO`^isK9+8#5uPFwVm*t|b)a8vrq~TO!?2!vmqeNAK5zv79gZwG~BHw+{ zi}P)1o2TT-_pP!--&K00b~Hv)txqYeKkS7%L9|i;XbuZsh!n3G;Heid72&1~9xTQ6 zL=_}OM*hdNy8U2l;3@NWSc!goUr?e5XRhSZYgF<7NRV1*<{wf9)bxQ@PM2wHe@4^$ zZlgs|?Mt@+sGoGG9G#W;T_F<@9r_lR(Dzuhvk1(tpIgCydu%=WfH9W{3s`#zIS$1U z{2xgw)(m+nrY!BJtkF6e>aH0s+ItxxS)dIO63iF20flQ>VS7zqVh_hm47A6W60~e_ z3TzD4y14ICtFfH|NTcK3N5Zz z4DuE7m+0@9wODu`W~ZK6|KKX|HRRpwR0@I_^n8on`P0&<7fY%4d^4>p%Zepw)3Zxe zw#^aH*o`hpr^~<7_nD)BXrL1(JXwCHN1p(p6u(d7NSmP1HChyAn*gz)F9GDE6=S!m z@7~OF#jChsHhN+VUKsFgiTYt^yjfo(FKy1ZS_ zKsLp01XlZCng_YI!Zc@VxIIOS- z2Qeu!=FM?B@+0Zx|DUwv4`o;dD&<072M(d&Ur&!-9R3kju8GQHD032rf3v6IdP_K3 z6x`Bli^wM_0miq4$j0*Niz9-{gaDaAO+1S>o9anrr@vs-?urszWcp=I94o5e0(y3jlM3LN>VgcpCIHy=ZS{Th&a-X1vHeafm%Do8KX=r zExvke$_5be&b+9qxwbYZ=1gkO>`sj-GI)wN9d73|kKn{=%hd9wYTjvrnnE|*A)(q* zJqGCY*2F@^f>=l9>j=*lKnTk-1eiUWwOH2RWUK*{b7M|K7dIbh=J7^jha~aC<)tRp7^c&7?Z>$iQ}eSM zc2`OQqeLiy5)6R*gZ>HpFasXcOg6rafRTGOuUb_`<{|MYoSp~YJ_T;49z$WUnBz<= z(CBGYy^HL%XLYYU-g1`s<@GHni^pS*l{VT~2+_jDzHrH>(vOGT7Mhg?^ zcX4hJ)wyj=J&7^56yWTSL86-el2tMv^9wvPT1gdKCQZxk*5;$6%Xm`|`nxut!5?$Z z*pv~p1TlSl;M!vyMN+UoZS$a}wYUob&~~T^kT1881C1413p%HSOP*YA!kC110}m&g z=yXD+HM-BcL5~H*M(l3wpt>!&=0{Gv=5AEMg7KzgdN6r&0a96UkR+fTG)k$*1tRF0 zOeB?o=N$@)t&hh_`UT_LbzScc_TR$&w($rYOhDM76j^2~%>TB(XuHoIxg&N+3K}i~&+GmmA8tU3T9> zB>9A=7}oZt|}@V6$c4lAhxzb_EXLrfiM*A z(#_gb{vhz1=U6_5l;J?^7v2fEtC3vIK?aDvm;B;fJ+O{AIrhy&0tF0ZGCyN?`qLu1 z<}yXV=H0yG9y-%4IyiXj8K%17l#%Jpk&_Z=i%YnAbJ^RX-? zF^m-ras-faCbuOYP+Mk^{@Lo zOiSKh%%MlbrPy-FUP9w1GXZNpyRlalF#+Kz?|7q`Krg*=PAc#VvBlh^Zyk|u?QEUO zzH&0#_CX4{T1|so#agT(i5Lkl?T%IysyOQ$iRp?MaXmkP;50j(KFo^81g%-j_Y}Dt zNCgXHlO$chLt#jX-~Xgd&t;|Q^pom@kz=oZJ~u-BlUheC_)1L)=NG}?oBO|oyv_aW znZgMRjAiVj7)0x<_VDMBFL1*?3UFOUrV7NNckAc5YT!S1xGy?R=XA$D#80jkUTBoz zv!>JyldHG{2{(*_@h%7dNM`gXJ}Q{bP`|RS&^@1{L&|{?NPzo;{1N>Md{2WJ9gIvo zj*!O!F{t!DzVbmVPr>pg^o1N8t1#ZA0nX(kpngavRCG^B8gW~To8~TX^6FKG465vW z#-Q5A;N%MmDmJcUBmMPYN?sE;=a@qtRMdxJrd6W!Fe~&paZ=3p{f*+U%goNjB-Rqz2qbHKC%|f0B_- z__gZ)^m8=;%C`}?(Qs%7g5Vg>h#Ji6!m|Yoizw9BN8N7RdayLXMrVlx#7j5M3=jxa z+V`yr{jkVdlBJGab2pDMWfFQvMR0OHB8Mq&I4Ey*IlLKVDX15U3dkTb5=1n0Q%%Bq z*ZZ6EGMNHG9#AP?N!oY1jXBg!GIaz7HHy?QZOaQ%BltXbc>b#<7(A`K^yWeW49Wso zunUCpS8nufg|lEaPIAdE7+kOWHkvf$?jCO7=M$EL@{xUSOz4lNqb%`4)bW07jzkTe zJ_5zm3BoT#V?M8L6HByS9Jicf+!KF&oDP#qih1XAnLYohp)>0@x+^8uA`1Lmg|H%N z!ha(#5gwUtA=cZ5JxL8cDbB7fCBSGOAs5+KJZL)f(ujyB{48o1T^Tz}R0z|HV9CPM zwoX3aqgu1>?|wTcnmzeM+7(S`;SW~Sj!Ht?vlqOc#0Bdz!5!qgvPF$&Rt4}r9vaV~ z4y_Cf?W1{%R$;K;-ub0%>q+aiZ6MaSSq5E@t}7PGgnAILDFF;uYQL{j+QEfcx^#4a z3}Fnb_a7Lz#BGs#)*o{&#w=8HODt#yLv&|BC*Ld{!4o4Qw_x~1=;bIV7^7* z;|5)$gYwK5O0z`&e-$wKlDk;BaA@|DlSqcUadM6ozV2KVPYf4_#1ZZ5a+vx-Evq$=E zjU2^mvu@O0s5zD|@3Vr#DZPDV_`r2Y*w~L(CU za|Br>zaTneCLE;kJZKD`{>i$gn}?2ix2?xZVlpM*I<6t5?MHEB*b!7SK5T#i)c{Pe zt7_ZL2rEDos%W+A=j?jpqeG*C5`=*JgZvTv5q|AW2J*p|wNjJV*oj@kp9`z2&*4;3 zEUlnZ9&Z5e+rH2GOltlc9jCW;>d_1o$=$Ad)@r-Z+f8#20IPll96=?O-Jd!eO{LKU z(~|XR6nXHe6@UuA#Uy^I;-OwbPZj>%*=AE70?ZJFP*I0}c-R!vQq#pId}wSyj_T$q z`EC0(i{2j!9(9we?9R9^-;v9 zO;OJaIiEX)h7aK5`lY)Y$j%_(7Ovdsl5bOto(s9jXIPJoO(k{ln%x=KKLkr0j8Zqw zvFE#&@;#`;N0~1NzMCSz*KoS3!P8fhP?^W0090vuYIb7}g90xH)$Q+(>`!zF-1$8|PjUQZ!{xgm68Btk_ z<$H((jqOaUN?@HQw;E(4^gyc&uU;NuQ1)C_zJi{m@M(jF@h1p0#eX)oHh2u zvkECmtt~*fI_?$Z5MnTuUOs2s^4*g>Avv!q@#Hts?=O+VjJA1CjkVH=W;Ol9Ic8M+ z_L7T$eZrP%;RAyW1Mh7Up)m2Q*|?aj1PGP(%@4y@AFYbxVAF1%`wcp3Ow46fe89VA z|8ORQNvTwc#Yq#&4#WD7oDEpok04MeYz9YVtggwR%L6?S@j`MVu;Xsw!~XDt5Y&s1 zPE73;{ejea%L}6{)Jwb$w0^x@Kn_Lu;uJng$@VR4j3m4xtsA0kBL*5^zh_8BK9A_w zl_NB8>LYNMdY*!W(ou$b{8x#QGnSYlZ5p>j02!Kji`<$UKjsSBZQi3SdH4E$>Jo}C z-m_p1o8kX@I69C5ke;JM)`1ehfcu008vGHo4-Y>qX|F=(a5SjDFa1}DoF(4O2CNL) zb{lAOhl);e#)cquV@o>-zbL!fmI|pr`S<_^4V$oU0H^5B=gmc zCrZ*Fy(e-HKTr_gf~L?Gi1rE5CN5ahdb-kpEOG)SG@i~C(R#7PcFvP7oCPjp;A=KO z7x`{*?QB-t0)Xsc(iavXKjcIZ?pzd_|C$@{PZFllGH5P08z#c`E>q%5kb(m1iv){e z+J*ICKr^*NWIFcE1k|ahfWK`1*4nhKjM2Z+6N?O^Dcz-sHA`V1?jc2mr$X}x_qX>~ z@O_(hi^7;1G%iSp#{N(6EJM`)QKTB29jIFaP~6YBV$>T$Im@`Pa!UV~J@kMgjce|_ zx}NpStJGT&9POk*?cJ6M=O@Fj(NMEMi-$Q$s7^z5@=h*j1^h)jLx(p8TJ8SCXhPWs z^`{C^BU2VgE`~W>rumbcRj51L^E`C9`O)18tnei2-0)5CWlnnob@)qGs}Pj2Em=9n zAB{fRg!x?#)aF|ax~ zeOEQy56?1OxKi(bVl_;r-YQ%QJu82gc9cW;^;Ez5E)RG3-=Z6?WWB@6D(Zo|FusAp z3SOC+X!$ltKak1tjdb>w9^L~8v(M-PvEspxcfIap2rl^j6kcwXHKO9ilD1$UX+mug#<9i<>&%WptkPci@SDIjGgVf%Z*81Dy5kl5u^UWAAq0p;C)M_v3E+!or{d{t+##YvFOb|q3WqmraR|o7T_}rxTOU%|qOU9qHo$cX za@csYCF>|#`LNZ6;tB_DOGJc|z=YjP(1?PHK>JuvVzc3?B?(|RA*0;~JHDkQ*cLl4 z(2e|b<2aIx_YMN~JeCV|(q+|z5c9k%-%Pw2-!=a0;{yYIoO>!t@5V*?yT|SN?;9eZ zDluN+kJ3|?>NxZVB!+QYa9FFWc533!Sjz2 z<;i(d>U96TB1}1>Lyv(H{DAv|{|WvI*!&_lWe{7v%zy43Ayw)pITy|EpqScn8UB2@ zI8DD!Dy4xngkj$N>SR{3>+iDRw3I~@p#D5#cM_P?EfEqVs~^bYD|<-if^f+RG6MWS zYoZKA5z2ygF>Io(2mDsuEIYa_$a{2?7)F*MkU4RD9+!9c);u2cP@1BFwFtH|XP*z3 zSaWvR$j9c9@+FA8WZpEc*R;no^bBQYOceK=^n-H6EE4Ne#JX^~lG<}%`yZ|ima3Ov z_xoO!vNb3h8G)JVHn!!G^hZ}3FV3;8Pfopiv-PXve$f0+N%<4T8JFjA!d85WWP5pk zb&M&Wm=|l33gn)z7!AtQI+vpbIU7$62diROw4N__P^%dqONd*IQJX*Mpfl|df12|t z72HzQU~7pY&O0=I{;*`u%H@-+65cMplGCxxyZcM0t#C6YZ>@tlhM@wOS6kBzeqA}n zgLd_*V|`Bxe^=UVZ6&nb^6ZND(s7;YpkegGv4k_gvxpAvOS4VO?9fUV`(vLPE zV7&L&2}!=m)Q!)>@v8D`v~f8YZcon$6vO}$>Tt()$3Gx0zWH&AUZ$VbSEr*jRM~?B zX_?|fU@WxD*H%d$IQ#BaFC^F(Ec$?L*=bvX85-eSBYIUDf=H#NfZudeW@L$HPDoKL zQwH4EJro^<_+^&s{D}*y^+^v&>QADjx0&?VyYV4*gQG@Lwa~du|J=C^nq`GZ*rp*q z>Q8Zr#(zMgu%NFx`$aCzSKg= zY3?e&v0w%Nq)|aQcU%5loheeMwp)Ap1brzM>uEqa(03r{dy5?#iP;pV_BxrAZU#y? zCx5-6y>YiBvW%n(>BLsdq%gASvA#LgnPNAh&aI0>pw*JneGxr-%lzgbydXOm>{{`% z&GWLWjD>Am`rr|Xw?YLDzTII`LMbhI?$E2Ubyc|ba9afvoo9~|zX3jl;JqbLY1_Tg z#m%O2_gIgS>R6Wq>sETJqO^XVroRO(;K>{T)Nzsc49E2ot7TjFOI2nHH_vzL^Z|yfj&q&y=5%!|Jzz$45G025&F%8J{CR1YY@xa2Cyt@CbvV z`r?(OD8aXy-r_u%+`Bi-rUo$bYOl$4?*8X6t!E=%tr+gl8Y1^6IHg_&C8jQL!sEq|2Bqg^GiwMxIF zP)>29U0~d>icB=)VIr0YJkd6f+*9X>L4Flx^Bio(RsU1dnrnM`0Ks$AUTnrC$U%q% z6~tMy($T>S8omfiDTi@ws+>wr0$7^2y!vd+g_AfQ^x!HG@+GiJEwRaXOroR8p7xl8 zMXXmEJ8-wFFSZemD=Bqpi3sr)&LzreD@4;yZmu7!ZzlkqO+R-)2#BDV81`>3LCcJi z8Zbk)aE!&QqJ>V@`%&z`!^a`jMgd+iW*`Dqc##s`ywFbua!;d-(}Es8F8HuV<3A#) z!z{b`B#LX&EyHwoqIu18)HwC8QW3_LqWm*zHlWBgXdO|`3lbQ83I58c32reLg56VE zTexPr2CVFOi!rwTUtPqY|L^(;19j@Ie32hCydoPMkMB%Sz^Sr*JnWovCaur`w?kx8 z(N+%_sP$1H-uOa-SfDPtB}*9IOF?0PNB3vn$Y4!zKSG(=T;L7%DF zK;y=W#<#l}AI`=qn7z~Vv)#jV$2n9DnX?Sr5BTiNBmY{c2!2jgvObcT_U2kN*WI$; zAvS%2CLJZ9IY}?WKhShu?}d!f0J+>4=vHPMuysEjCe}hFANo6Jfh~D#;``_t-~<}W zCk%-gh;tWjOE?>rMep)x2+pVV+$eihayw@yG#3CsP{!>ZhPDx6MrEh++XM-IT2IVXTmxibes&%4pW?H6&n5BQr2C>ngEW0*h z?X=+|yDljuy1%lu5!W7CoE2`vV+zVM@1rORs|ju@q`QO4LXAVFc{rNEo)259zmGz@ z1hW2So})Sk&C+v--n|3=o8FY=vD@vt@L8S`B2No6@)jZqrJh;YE(>6YO97tSwRk%! zgrnU+=p-KO!g?6~m#~jNig$90n?;jwWE6VzX(iFeGSkU;$Jb-kl-Md>={ZAMDox^uk7GDgnuH0_7qZn+~6**tA0iHJ>`IEyPcGKLnO)md`$aQw=8DYZ2^`#-y7ImW# z%{W?#!vl|Tj}D3|w5ppey7_vcy%EN-8Izd2hXd|)jz?L#i-3Xa2NuvoPC6B|3mb^U z_8KW4Cm@_jVPqUB2Y_#QsKXGz+nf zeuGg-@fDe>bEUL%ZbD=2mcF4F$^sg-&~F3GQLD4zgBQa`6;G0DT$iG!?a^FfdqUc3M#{AWvbRWH30 z8()pnlwGVw8m8GyS)1{y)?!fsCj!patzQ?sjnx?XnzMO&VqO3qf6FJakwfk-ggui#SGIP|`q`G3?T|X;yGxL7bHe9Hv-^YKH&x6_*pwBA@ z%ej4q`>ZjTXVhGDn>ifjZyd9%JH9DxB4BM!Js$RW_qO6lrw8DEmFs}g;hojxd2CUG zUOMBK=#hor*`b}Ph!8j$77$X5koZjHF$A_D;{B<6w5j2?{tnpg?{34xPy)?|hZufg zCmhb2eP8CNmSit2Kw}-NVK}Jk2*GXg?L*(d(_e?M{0;_-X*~)hQGK-v6b04uWKjJZ z`5xxm)zuCGxVOjFNR06p7FLOUY%o<)VS7P5r@K9b5=d}E3qY$uEsZ8B(pdOQkUM4N zB#dB4yQ;R+31Ktw8<~mPqh2z$;n$g0W`=(0?=Ow~CntY6_0)0K)%07`H2alVb4U-KYi#p3i5qu4|2m$g9h22m^8yOuN=vJ% z>DGcvSW2!zX^b2`%5Fe8iwaa#z|aK^!vRqEB)q7p17*RK@p^vUTGTnOHPjDKmv_%- zV5AY|K8*e4UFQd8G{k^kAdV)7|Lny$*9oD-I7{v~tQWUDeG2YDQT9u~ zH%e?eWId0azAWEF(E~GxOGPwHuwjIP(I(rc=19RmhG@fVEptb=^TjuS_(uS8K#ji> z2BlbHco+t&U$j&}vFShosc%EUmI6~Y5tT%ET2#HtzTnQ)Vd@sg&lsFP+q%HmlFMVD z8D>zWk3!wCvP6@H14O0(r%Twmq05-L41#nDpBjrXN3F{p;lL^Y8hx0RoDZ|FT4%si z6N;6wZ<<}-zz(m6>?0}DktbcW-i>7bqUM=8_PW;XeX9@pt8VakMpoGlu@&p!3^J+) zB*=@$#i?WIT^(KzsD$-E>#PsBwh>-+C=zpU>WU>{qeKdU z6YPNdgZ&l%BIVUVzPEjcd)8tVBuAWM^SjMI++liwjSP=M8wmUh)^+>E3Acl6`WH9*KtPOh)cl<>+>p;ze zA549Ss@CQ@ZLmA+h07 z8K4<3=X<0fYKrCd{cCfhg@6Ux^!ktSo9ht~C2#3S2Vh%6%oX&LwM!@cG+y)sp}W2g z-3GS}lY6_aUht|JrM?V15*aAo!@Y_QjySwO#vrOhb0SBrnLr#l1X;}9lK!s4@27ic zi=A0P3oG{1qxVX<4`NW@{NDDt?3JobO(qc@jTXPFaR8#cGP^#B(Rpj^?0*@VahS&w$U+QD6K|5QL^ za!;pA@5(Y-KA>4C;`O}fj&1@hg5^ZY$aH_*(G2#y;ZBFu@_nnM%aI0A8lK_^tp!kN zWRMh&%!3y$e)XrvV6%>;h}u9|kLfP=E6eMobrJq^@I_^&qXQ+x$qnItOS>atSSo)j z}DW+rx#I?fVmfZz~N+MVb~U!FSDI~@My+)$}u==#>kz2$Mgq9p*P88v1#ptfGA z1{$;iYBjwhDc#XLJ#er_jv%D3ijjHzZx3P2gzu|~5$$_o!`}+0ZvUWSCz?XwDk|JX zm)keohoB0R!}nQJRlv6qwMoy7w^enbI%9-`ialq_sB z)DWaReDzqUwp1nL0FMc4tYKQBX}cxRTPHRyPfu+I@%6O+A;5|;mnV$ZvXJ7h60Jth zHS40wXEnCw;B+|tv7nlFNy$p_q6_+YjTcfn#$9pkr6Qd(qfvw(7oQMMlqzu@B&Bo| zTA{yf(jZy<(g{~jb?#mm$&);+M`2=ffOi! z`-A)u{|L9+b6|)k*biB*G)Z{u6A) zOdPmL(`$C0$y0Z~P>%(%azq_#=RosqB7Ej?n!;)UJb-GcAedd+S;{Cs45bzNsbQ-Mx(_ru%URyU zJ(z2+>G&02I@vIWJdR7{$#7yao&~0Kc-7{P2-+zCSxu{2r>EAdVLMm1U#i*Zb~PPy z_P`8dLc1}7>%LMoz`!(#RWdq}a@tj9ZZ$j#Wd9FRsoK-`D>OVDyo-(5#SOfRT_Op@ zX}ps;rJrWg(cgP*!8@bWp}2u zvkn%WA=8-Y_ZjDWiT=)(=sj$OrHc5#b-5#`j;hSsl&z!>fp%}N%Q!+bW|%wxX7EV8 zyNui=qnUv#OjQ9hQ(Kh2Cee8(w*6f&q+c?GSMqL6Kwq4$qbYVtrvS2pE=->;M_n@3 zq}~yw>LJ_+E1X}y6O8?|LH{DRhsM!Mr-&)g=wCt{t89XUYKtS_+9G0S;*gen-9&DW zze(Y|W8#sn+nQ%L0QZ3RBT_>(K$;H5s!e}3SD4Ax#t#TD%b~s2yfU@z`FVhp)_;r$ zANXg|=~~xUg9DaSS1T4cU3H z=m{?Puo;aS0_liRdPE+l`vI|}3hPjy0P-{!!WHXI#`(<5cY;#=M+r4Wl+-q%?N3Ha z5?B1i9Mo~16{<(r)>SC2GiX-U}HJAl`Xqw~1np+E@ zv zwbB(LVm$?>`Ytz0XrCwL{(+g-PS0I&kJz2n1M6)+tH>@8V#VIA^wb&ifO?Ifw2nAv zUE_&<3Z`Zu1a6I@e*;~2^iA(-b&Ic6qxNbQ_48qB`kdH!a~bS<*!vyuLL`;gyF%zZ zL9hDLo?~~Zs89g@4FfSfEzj0o>|!Ko!Wv}OU!N6!P}WqC1nt1%H~1=LtOu_kCVY{S zYCabvn|ncb32dgHjUMOdn)^ZXldL_9rv)*BA?8%(*O8i{Z=cr|c`U0cHhWSjy#hmS z`w)v0KLl`!^XpMQd~j`5F<>;vUfw4Hhr(lbaKRf#N8OdtXvxIiPm5S#T}ZvYsXm}c z4+0P;yg&;&Fc+*$T=Qy4QMs(ff-@MWKrH7m*h=j&Ua_|KO_S3r7JYaMXiS+2m(;Pj z9Ux2vx;> zo@3c)kbvb={U>DKWXc)bM%{@>`p%UCtL%7A^3rWQA}U5r#~@Ej)m-iklRwK#hsU@}R1I5~*G>6tRvcz=sq*IIPghRX=&|S7m_cN*%L{|eVHvY|OuOREM zW!v@G%9gKuvO(4yD%0lK1>Wa_1v7TK(|2gpBpaS?6#vo`ou@)6-x1vznze2+JcMI?KLL?)u6IvFjc~zKlzN`k=n=;jCNVu}KV)YEqrU&jEG#>>$Nrh-yIK&U z({3w6~LWL%Goj8^L; zd8S4>mo$=oRQg;*NLhe`lo7q8_LY;iW@$$- zjz~HuUO%(|d14dlfbp;8@q;Zh*qEGC#(&`(di;dI^F3i*XX32WP*KuI5HgGrj&0I# z#FrAm|2)OKeG`94QW9fQVVDU0(6l9_Jr2V6n@6x0h7KFPkJrJJXsM$^#(@-|fcpdA zfV#{Uz&OcZqPb@B$2bv@>?sFvivd4zPka2Ec3iAnKcOwjv`s!Dairg_~ zn%p~6qNunaNnTg*Rxr?XHxA<0GztcRiCa{iR1h>CYZ+l6>dYP*PXt}UUmXwn5AxvCDLr-jrsmD=>_^!#*T|Jl4WZa8)g2~UuFS=NxkgAyBZg)R>ZXb26Lpl*< zd3<%&$cS@DdC7Tqzpyp0h4H-6%=n6n7x1%EL1*^{d3(V_YQludAw`?)JE3^c#l0MZUI<#XC+@Th-#)0eL!a4)K01H zzAHaIXYjhsckfT1`HWxRSbC}#&l6KDH)Bgkbz9JXww%j*2r*tka7X~Hk?GCtWobrF z>A&HQNsYf)>^R@w)z(j@u@Jhgiav;TIKLKPkE31{>NMOwfgHw0d{TTfVFd>sVx=b? zh8HCtbo5e%X+Z=8>kqYi?4c7jDDw1wY z9cHQ6~^)2}?}%^=e+DL$QGr+<^Oo{1N;S-p?mHRY_{c^UKFUqT(3L z%&GRTeIvRVJH>y@x$r85eSm9ok#FwityWI#_^zO;{>VdXo61`S45rJcwK_;@-5um` zRNki=#+X0CcL|_4a3Ah193=(wIYZAl!-&c$gPKm%cpA&F>kCz4Xn$k zsm9R63!~fJ$-#+P%`5NvhA5;^Y_;2y=+cTG+yPzC>sajHKJS!cVRd2bh}JHy%@6ae zf&9PLg7&CFF+fQ&7GVUWP^?~tjc7rPRoZY7U7YM(LJrG+UwqnqMsxLiD@7ef50XQH zQ$21B3LS4tE5NZP&{mySYYQV+vyCFo6<5JBP19xLfC#L22t((wTvdx;)*{b|kN1ae zj=JCaB9wv27pEkHtW)qO7OGU!b?x`JSh!7*=|4Ve5XTK$U2*=UFSt$`8}y=?&Mg}1 zTrKYYO1MqV;t6kDnHKXtuEg>FCOI=7Ow?+Gy2_l3bOZ}mAu?O7WKcqEytSnAnQh>- zkh6x03B3Vn+D;%4zw`Tr;2YOE+DNByNb`_N!S{iitlvjxcAZJEwk95C%_L;Bz{xb+ zqKJ|y7>cT89;*PbCS%4G-oF)f0;d3reBsE!54?s!Tsf!l`#SDmfnlq5s;>M}eNDvD z*Ftth-`vM<%p0am!OSZXHxxEqGa(Sa#F1O9=(7ueUXep>aH{1OyYT#K&D-J2>V68q zJQ$cDm|MCPlX2BKtyvOeJDO9_?f90fC1vPN4NsW8jvtf&r&F@T`+{HzWEsu1u&yat>jr#hZ^m!63?(j$4jS1#qMIXS${&&*XzRDai8=s2L&y-Rl?_lPy!aj~7iNRYT0g*?Tl`wQ%_U0l3Rl?2uGC&7 zB=S^f!OMKBOsy^ORnZBiDW^6ixbDNr?f44*>$_U^#MvOts8j#MSRWsU^{mWAx08Y| zGz2u1TfcmNqu9a0p>+{-N`+d}Sk$USmWh#-9-uK3Zu?QAL)U>77=ZhO{So{OEWi`Y zPH}bXXPj&Ms4Du-`yhqZ_58t1avvXk#`rh&M)ylj#XEg|ebJU#L=>edF39IDbPy^r znBxX>Ij%1wDPB=}-DaO$46YfNRJN)2dl~A!$7Ta8zo+g^R9z%85q@nfc@9~k(rTqz zfTlLMXS0wo+Hs7`z2?~kFr_|2h_MnHLbHYSQ!aK_Ye&Y`6nerf8j;&I82&poB!0J| z6<6Q33Vk)6+aX+EU|M;%kOYle^sKqc@6929*oIh*nMlkGT+QUxP>uY>F*+jf8;=Z5 zltRp+gF`LV(pe=1w2Ftwk;yqURAod4P?i`(y~bFh5a|MUw0M^PEGvG!VR<^I1gJ%? zcWfKa+!6Bd&}s2)$Xn4pGUC-Dm~y*SmJWB;@m&2^V|TiN;~DP>G+;zYL5r(gDQX1o zq9m!=bSPRhBuG@>pP>9YA3OuLoQE&VApaUnQ}u3bZ%vFq?ec&kpG1~E6c0Y8sSAjE z0xr=g3 z;4#%_-!xG-)sXFFMr_vU1!lV|Ca`yfduej`zq7Nn`Y&kKy5^ylGcOom?md0F|7?HPWz~M(76f3S zd|V5ixieFq=jhx`_U+Q9yf?8~O2|VS68i-I&C13vweTW_aO25WA0UWB2Bjt3NeBAH zYpC{18VXizy7VxIU^aIz=j&?=jK1?%h>o97g^~T}zwPAysirJgx1a4QB(Fwl?ISaM z8f4kW_BLGTLU3=emm`1g^@q#OvMB;!n{+fyT9-P+P>#H2|9DvAk<$Rp-S}Zh6KE(1 zn62Ay49S4uF(Qr;WJ)9sF4y}jXkFe!9jlr%!MzVXj^PpYPR}7I2Z=dBad{dphFYWRZ*K8*P~tyiH2?T(SGaIC3o@x?V#inF{?{Lm3l0c? zuE>@81K!o*A#!uET#BYRu({Gt(1d6M%_yhe#Iw^riL#1SDfAYW#~_BbKw!qR5>r-! zZkwQ{cxD1Fcn-dVWr+fsj%s-$_B}eM#+n`SV8{&OpIt&fv9g9uZ$Lc9ftbeF)P^Ib zUr5QfMux)l(4^acQvg$ztFza(wul9KlR+^ZPk}fWV~}YS*j|?QM)~OJO&XUbiLOmD z#>T&0uJmlw3MS%!nvJrY9m=I+Bg^~m_*+B#DW&O%Up1f3=Pz2T`}^zcQ0sHIv|rqO ztcrgS6wh`B#0H~3f#q;SI9=tr$ah+HZ4bzzF%$1bH@^}f5fhTipD`~LV^=n}K2v<$ zX(<=pV3pz3n`Hmh$re^Vk!k#;@Im9P`>Z$;_1z;Vd_f+9Y*mhHbCqsTE+xPY&?Ysa zhb3Xp5Gp2~brIULRM=-AeD4!(aY^<;+C0b*dO2=g%3a5opuMUDAMhAs+g6+Ou$lTi zF=dWfFw+tZT^+jDfkTXH8Tv@ia-)EB;hlEHs&16{e|`fbyL?8*fUNo(<45ZG)j33` z`l#bQA(r0>jP7>v3A4p+s}D|py2y@+sc`&Z@0+;FH#AP54TVw6?4nrpDnB$wGXnE71_rSi%`WyS`7|%^zoqsB(-H= z%tgA$gk_J2G0Xa~dEcU8a=3^4UD%#U_$jDzouHf znlZu0?<%{hH}A)F?p$Gv{6ndRba8ireQb5^c3p~H-u5n2o#7n(-am_OBcl#stpwOc zJKDN=iXHoI0kg6F>K;qTfc+;-TZBH=Xv$CgJ3f(YO3$KjePQJms6 zXNuqWVutoLtyBg$4sxAk+&`dj-g`)8u$?VKdc|oQIn#Z2g@w4Dy6Wj(*VwJEp!!^& z8&HMhuEago0FYaeF9m3dUr?cBjzwy_7Y_?%!T%5Le zx~HoA6qpzOE(EDJnGPXAgc+$N)g&?1A@`dY5u?}ytZmQlp(fbXBMs(+?SLC;Eg{-R zOnyZXKcJEN37;>-AII5Wdd(JfWT*N4t8pV*Ekkb`5e`Yyirr8MdEDIS)`qSCHhczf zjMqs7E#!+97w>@arBW>#UFTSqOMhv+<5h9$Gk;HK>F?j`6AhwwrLKuZy{B94BTF$_ zLMRaeu-{Ue?>&2XI@H7k=rsVSy)UVnlPy_o=CCq{P4b|;@8;1Z;9vIZpbv;7!`rX_ zCW9o%Ji7*`3?3x4PQjQdgN-bvE6h%({5xCB@qPtQ+0;|;L`|9dtTm)u{C7Tc^Ft)A z|0I%@ju+DTu2oI=_DIM=XO!amCj@u3yU1a;I>5v5K;VB4InYIn2al#mm?zO4#vu7V zeMRtvqcA_q!`BgQ{uU?{G&{sUz?4h8P!|UfygGrr$$ufTrN9pilMb&@vKntBzhmV_ zR8%c><~$4jzgaav!!exGK5lq{g&fq6>>2x8hq@$F#dxmF=P=7t-uFnBB~r| zE+T2lFdDA3LHTG0Fd%uv=n@l+PKTz8q&19B)KKAr{9Dxg%;`YyXtiJ5FaZXX-1z*N z0(cio*}S+x4jv-;-KvMT6^V?lUBB^c9yYU@R*BD`isQdk&U`mC>W!wLJL3$)nYIe!L{VOred&4f%l=hEcy@fnq_0opc#U z;bSG&e9crA694kaX{&oR#c!^N(nWF>s1ou$Vz_%b&aqjtD4ACi1#z8Nvo4AjCX3<( zRuUY&)a)#j41-*Z?T&Y>aC~iKmPo~)JyM#F4tX}$d6nyD>pk<@idJv-%e^MG4yfVS zaW%}Xn8q%2rpcKWJ&X~XBSG!BPY(}VFsT5>W7gNp z_v?QERWgOv!k4NiS{7|WIjb|M2l^tdKnmI{JIyiqt(2J)=Q{t9zijq8m*<>d9NKg$S zZ!EHTKU8nXdGK6v6nW9CS1i&BW{f&%dAFBNf>*s+c1aFNVdgdUC)Wzz?WLhA36tNz zvr}VS@&i(%~w%5)A%)Rhd#^gH!Jnni(7l(>4uDWJN2161M zZLkphVF;LgPSd{xtaChT*`}q~oGpr1RI(y$7i)r9AUgcYitIY!BwLpMa*?MLBIM4# zh+OzS*&o7(zP8O0gYqwT4)7vev>bI*UCYxWag|$d9)SAyU9Mk^mCUvywaXQ+zo>CG zS~Eg`v;ad50EcLf-sh8Iv(I1?qma3`Ow8r7&KBxE9YPfWqG;Fu#;V`0Lsa z)}Vxlez`hyWQ%@R$YI=N~Y5fA_yQiRG zcM>@HW)P1JZ)yuBf^Tif!NW{c&oA0o%>AGq6P#52A;YtUW)Db`0}^v;LSfnQp>cYe zk*PXQ9Iin!k_q1;!|lx&kE25EUJ{rDR2uX0dWrdM15rf;Rw)!Y;OQgYw-G5{{N6sK zZ(qzFr{pJtes$syp=1Y*V}w{)5>m2$245GhmzI{^A5xe%%Sr+K9vMh#_5DyA(99ZH zW3g+KtGi&Ga|A88K-khZ%{i$9&73)AevYcXiGM->r`&wQ zUD*VhXGg(1xo<|K!vRzx8A4y#>2ANaq%Xy1zD?<#1d80P}SB`Ntjt(IjgsMVac<@9sw zhBHTTe~$4JnFfkGlPya!NKvdzZ1S#Xe)(1ijhl!2OCDiO#%bf zV_lFjnTjb7^0NzFJY7_;W(pbwClP(meMp2HIiyPxytB~`LilmnHa~{!{YL_&sKz}{ zp@O_)5Q|E636yq9&#>16Ga%nl0S3K5W-*yUaZ2Ny%x2?&()PwDIQv>rV0U@Eu+5p(3ii+&O*LMRzlI zWxYBQ715w*@ywU{1#*vOnrnaxKDA4)3QH3~+fJvr(kS;l2R zM4L*@gqzkdQ;v)-N#)G5d=vpm_sN#9XQOGi?vB`ftE0`~3Pb+HY1*HO0$NFjG5`PR z9#5r8Ur7OC{V)RtF&E&#s#u+y3aOI)pM)yv;+oxQkxeuab*bZFA*O9#5D+Cj29^ysger!vU0l9w2X3*Pk@por ztqsHnYHM9G6U@G*EW*sm2FBf#hHTjOCZ!eKQjkP-o9aa=;m-_+?yq6?_KR-|k%e+6 zqjB-#Um=&FB(SzXKi6X&072awVg;ZleAW}u>+e2lCm)x`W?aKTR;ibOz3q+YP((_7 z@Da{+*7h}b$u1jV|Awmd`5GtPwshN zC_?05R8L}ARSE&$mo|ypXet@2kDq$`%NdlU705%v84{i^(J}O2)IqIAxHCac{+bNZ z^zc;&B_wiyp%CtNBKC@&S1ZZiWae!$eQkHe=O#jsp1!=eXyd8zQgtH^;T_*qTB$1& z3D|7<`=StwJu}ln0FS*YUcp(*83IJN>z&@|qj&@Cy@bXP*$ai9Qs{{~Was%JT%)-&h!x2;yDf)1ir%|bPis6LR z+|s2W=~zE~!ZSDD`aPRooM`dD7S7BiQ)6bqwm8&Pe`y&m}R1e z$f2CnI2arVr%pbKv16@3R?Mbb1PWyA!xJbqFu!o_>7h9`n|WgCvf%FZzgr8+hFJk6 z*aClI%DvkZ=7C#%$Hwf>Wj9;ojFp31NDRA1h?yRz99hL4MCXGaX`xOUq$vLSrZEo4 zbZ77$jpiHHRb`qnE>KnLR=ph1cb9lL7ykw0fqxLhs>3kINWrw~wAdYwWXhP=mDCRK z_Nyz>8MJ$2n9y$;ZJm=J*rTpJ#-72N3d-lKpmok{7rUQv{e@<8yE8`+)zL0mw0)aI zb5Ph0e#-KOcZW(50aZqlMli<4wC}mQWsBp2BUy4@{WRv)Ld1LA$fYl8;F=-ZnZSKr z=Ho!_yC@46!((|-A=INo%7GSufct~|5&jud-tLkiBy!cs=s0wQpGLWqcv*)J!VGRdqN|qA0%T=)LPnaHh+$JgIE;M^>%O^sR2FbSHc-MlgGe45| zmPtu1Jpp(T1f1k_I)9XLRb|QMIjLDSd(2!4?h|cOh?D<~N>GF168zI}iD%GVV9Qm_|7h}`(daZtJ`r>}LR)`|lZRB-4Gp1su^Sog3dp4Va`xu2`7t8^V z>o7yvO{|_)B`7h7Fj3jj=AHUpE?XOtlb#6j4q3~;SxN=8w3l^K$@hzq>?M>ww4oHy zp1bOeA=G*dyzB?b+oo*Z5BDZo=!#y(E+VFK+ss`1N(dX{Kdr&M-DUzV(mYpiLWd>5 zhl#VfH=kz9IUz@^#auALkn^%X>53ys0LFav9`8>S&C(^f#C}FG|)ECp4Y-`&yr1z zm(i&*_20r7XveB&uHDlhuSqsF(-;o29P{c@ntGq$tFg8O^eLl|aH#g+iUh_FP$v}( zTeG4R^hNm_GE3yGVxI43qKdSY!#AZFC_#|{sWG=>%spn2<=Mz+PZe+g$cWj)uad2k zmrwzxBF6s0wcro{HjrW;WvrON+EVUfcJE`E+2JlVht{NQlJC_F;dJIs4BsxbZD~GN z0A?Lo|NLXIRO&Cuyr;t*xq*pL+eW-35K*cLyE5i0ulSY-No5RvyekntD#^D6S$X0A zcoPp8&K(F>Smn_rXulbmpWIq_oq&j+h-i@H>6HQy>zw&g~!Fw(YJQ#5rCzTybkj^qSJ$XDndNW}cHkcp**%lpcp+HG^1!*>QUW z5Qy;AsNXep4&^1Y9&DWiaP2t}ETfV!-pKHXWchvXC>8fRF3e{)hBzilE(Rblj1=|@ z2p-Unuhl2c^%StM7f^dm=851=FT@k@`$BVOaQ>AmjV8V2iAEmQWHP$Ak0OlJ?2_Rb zPMLx*?^}!w%;<@I)c0N!d(0{yo-9N9-rI~>KKn6*J5vhfP>@fH-6J~4 zE+bXSMv(`&(eMb`8dQ&r>;i_JX0wzhlDvn{uaf32cGhCU5-rc+F|DayiehewTM;qz zbeMHo$GOZJcSC~OaosTd+Am2=j z8%PrBZJkC=E&&x|fhfOOjTyePaNGn!ylRVPE=bB>%jY6QBb6r@z-=RR-Gq(Pt;>9T zET#n6t<>F<^<9~NAH6=56zg8=;lyuvv!sb5ZASC4L zFNL7N72C;ms@KQy3(D6d-2{In$jw@)l(VC>M8tl(RYTgh=0~ZYs#-NGI!vovakg_PXuXm81@+S`=l>zn| zao0l$m5Lj=ISjup1Uy0u5xzHaOeqbba&iz`E;c;yjiF{1Q2Q*Mw98FDvo54$=qnd* z#C}f!THsZ8yhJ?xbZyphNh?P`SxmCuwD|^mo@DP7sE$bsH|y|KWVZXVPUz(@6BL7_EI0xQRo)Se57de!onS6KC5kfKFRTD6f|EZ5S} z7zR|d#*FMU2L_{Cxqyunh&b}9I6TV3ghioDb57Hx_JM&?H_8tW$!8ZgPW^r3Tn>Do zBq*43?_ajQ&wDFCd3M~c6qDQo$18>ITH#vaYdXoLd5bJDz>-Mju`{=>;7aDpS~HMo z$GURpRI#CM4DVqFsyKY*ZORr{EH`<1%MjCG8kAw|_Z1urY`mseRVi>V*(NRtp%)}l zH6>ooQdo#&&oh>K?T_-M==gn;Vos#_7m@spP>CCkKtTL3lZF? zG0!RWn`s)hMra0vxXYQ?MzMsM$rOWZu0Q8V((i{@+782ZPr(SEpTWu}voPN&ao;wm zwD=T`XKDjK;Lw*wSkGC+{`!N2d9Sw+lMR|5g_15BL1F+vVg6LbtrZ_Wv4_mT!!1>- zf%vpIEU61B1UE|wefwx#tdZDqf^IxiO>%ZSk&8I^!d}ZC&@sXh@%_*tA$8gIV-XB1 zv{2ZAZFHM9^Y%_^<^ajH%0#OlcBPdiRM^Fyhw_AC*FHKh(#fVFNb2uv%^fO-uOvyD zy%!(Loc_Ybd68r9l3Z|Xp@%dq(ZZJUXoxUVVyXyoYO`?y8d=5lRuw>~f4)*0SvTzX zG~#|gA9H@2S!cT~(18TL1mJCd56r)Mtc;dU5uYWgPC_OUtuZLhH(qc5GQbEsv6mZo zL-J(%7lPcL*{&xNlMUh5LQWze#}HD`pY7VASJ;=+KkhGD?$eP748B!`ntYQV*Vz-_ zKcDXm+b#cSRiXbJQ2f>%K*YbikJGMlK(7_9%38#>3c6E9E+^b{k56MV2JMF>#N?Ln z(i!rBUPqsS4O{q(oM~i#&-`bzd{hnG@IL3oc8oVEb4G z(G{=Mm0ozCQ7j@(rI8L}B@EK8Nw&Q#6jzLux!9>qxkZV)Grkmk%~CoWjIlo?S=KhW ztG9Owm^O=(C#9~(8DJ!~==h7^V9*Ntav;T)}V*+fdDVO{5=1F%b;p&Mb zokjmpHtTrgujAy7Zj1MHSv81iy7g|s{k&yqA2xB+JQpRPh ziElifal;f_GhiJ3!5bqwiiDaPs-Go+UAyXn-D)h?w3a;h4eCHFGOy@Gt)$^cyAEhc zn*3mH$$~gUT(Xq!o)Qhn|Fo2Bo|wCOqeFIq7c_wTgZv5p3D{Ukw;r#7%C-2o-;yxF zFwBgtYaIK_g7|ae6KT5?bXc^8q9Mimbr8Aj0XDc_pz(*(m6T|%vf`vjPrOIbiMPH; zt*ZnLdipC;v$|;E2PxA%@fH7F5_UFlU^rX0iQO{V*mk>3Rt%DWC>#V~1;URVo{oC| z>uPJORx<*x%eG0he!ucqKBS(gJI%(o@Vsk~UzM#ZouGFSo0Jxo0I=C9AJG7!aa*+i zBJ+-5jza}M%069}ABNsUdU7sC=X?rjzqDQt#pXtBJ_t?RNR@wT^NKIGes5Ohp$i7Q z&-w;aw{?(lC#IHFSnp531?A^r@e5t3q)vZo7lNgUK^NbBa>#P zMnAUmfp6oZH$z)699H!O8y_|u<)+F%2T?;|I`L&^AU!t~p)b(LH4>}eh)EJlOS%Yt znc-?WUxJC0~H|V8RbgATA6P9Gi>SV7L!rdryGw zDj=T+`o{YX8@_L~t7Dnp3W)@5$8{&tiU)FxT6vLZV$~YsLV6jaIRjVn(|B}T}U zSU1el@ao7P`0$W$&c3|oOF-;;B#DkCr`(r=J8|z5qerSX3FII7mX)G8#m#Cr;j*DayF`o=PpcJ{vURn8tmViH9U<1sEy9j z%`|wSQ|dj<1D$y>Uap72or!1x@o@iM1lluhqi)th{$6GHZkvAy^07?2(>}?!Gx4GT zg;7zpn+5F}4yz<$w#%Gie@rsL2HMA=xLh6YY4$6LOxQCEgvbcr=C&rRK=`jdDqf30 z6fuGt&zN=4(^vzu)eL6Fxh?Fswzwtv%B|99GW6V>8H-0I8S)~L(D#zzDHd!xC3-w| z91nbd%b)bG42ChsdjVLGHGW^aX2t}vg=fKZrb}@7Hq0J*DnacFvR({Md0q@~;8yyr zO}GXcQ95BnWx+|wVO^n|CA-&2DV`P4-_p@`-}()#ik#K6xnH$j7KJjSU7Ghd;>|1G zRO&0Zrtj1gygaDhyVyvI%RATCgMG(oX%0f1NJ09%a!ZS;3<31gew}UBgf#JpZ(ByH zwPVe=9;=>oxL>oV0hGxM?FG{I4Q$qGr;B!5+_f#8hZ_tW|1uf~2vOplF;hDpxSHMT z?bMkU& z`E|TnGUyF)rBZZEUpc7=M&T*r6a1i4j#ed7A>+gPRS>q0HR67$CJ54Yy9KaavOwyBH-n<&(#B{dnutj8YFeih zWQ2qG3)N|(L(+j4tbqH2{tf>Q)?}guk?BeEh*z-;P6?EWDFwOFL`=Y{Jtr=%RLN{{?ntGNIyhj8; zm21Z8VonX12RyFQJRYza`wQIt&&7fuQ*%!PU1@`20rc7PscO;HnPcYJU^*I$0oBD> ze7ap#y!E0M89J80<-tTdjj$d5Tbc2L~wmf`iMM;wPBs zK2_mcLI#9oj`=zwS6C`^oQ){ZBVk(uFRZprCaPEbJhjkSv8;+szI4Cxt4nAOP-Tgs z8trqRh?4C+`%a%At!3Cw^qU#^2D@gL9-Dr_F-fH9t&l15m~d??T$-<_`z1*%$PPPs zLmDI>I6gk+cf(hp0B0c$Oh;Ga1$t0|{4EQkuSU!sm+LkBbfF+R_1CQ4#*iwqWrG+~ ze4kJorgSGzYaS+{k@^3o?dWLQlNrPcHSQA+*+Ed)gCbpD5!f~y zof5@#PEFgh+N9sm>AwLaR#8LxkAM7pA2uK8IA5InOH+Jc3ftT|imo^2&3U$ypqHJI z$|bIPJ6}XC^4Px3(8PNEmfhyg*Am8@hX3DB-ocID*mx@4kTUA=;K{>E%8s6{Y}6$? z4)CT3K71l5x1ce~EWG7CTrfo6X(veK&SZ%%13PJ;f6Jtp8HK<`v5zbf5c6Z!88Qap zT}7qT79gx4y%)6QX4Yf<-UvnUT&}U*#{#4So~CAKqfVozQ<#|MG`IxZ^@shQB7XdG z!hSAIVrdy6hmNGhBY2C_j1VC&q!47KUD?2lNx|m+6x#AvTo;Qu47Q>Nt48b_{pI#~ z7Kj%)GmFcd2y_;AWW~K5#KEUhOzqwPQ2D_E+MBad9 z(#b8EZ09RqBzmN3tN}|WwAi0b|LJKXrHK+dS$$|R;9)E_wVqn<@g5q5YDQ3+&Ctv{ zK(bLXv>z)MBum++&BG>XFnjhW`YIndmw`2Z_!@TO}gYY-N8=Q74xtVnwA4 ztv_l@VPFcxEmfeL-My9T&wL_G!*3}#RF;D%h6=+{MjZ<8BImXe5JBEQ(8b0UCwG6N zW???6aHB+Pffwk2`-A=@{Sx0Xh0~lZL)lFShH4Bn9_&?v(J|Wcf2(;Dfi1?xI!ZzQ zr8l+qcfD_Rv%bWuE%OLPp|+*n)FIKf16uW{EIZ-6Ieyk-yoF&3(ceDPliUJuaTshG z#|87B)uxD#Z4G$9Bc7<$9PZ$K!BGpjSd_ATzmS3oqxCS83{@n1h?Q$aU+4!ZZqdwN zv8=54dvrC8JrqYa1)$QVtR_l))gjz)`)oDeCQi7hq6!j~z zW~A;@?kaq;u_m=IfnzR91R3~%FdymDT8QKdl@>lAovsb~iecd>v;66_b^;tfNL#4D##60e-iUbRUyL4W{ARlFrn2 zUn2n^qgz%h0t8Q1Znk@~hiS5lGMMPtL9A|mFNyfOLd1y1(IJWl2hmhDmT>VQSHH}C z+Y?5c!cZx}d-z7Y)dq{8tBg7(4vty@9p%4E`xy?VK0!+uD$ziokAYufK#2V|x_CZ%ffF3jKVz9S9{(PGG$wY!d<1EA7 z{x&B-g_(=Ex!S{I!;M!2OW*d8#OgCToZLygr~oOcAQThijepd@?xB7Zpx+O^c$-hG z6%PC~i2jy+gXg2bZWBDi0YMP}6V&tGKn~L^>DU`=IOWY>t=?hy3ANfCV}tg8pYAi2 zqJeb;iV<1Hg){!a>hGdsE&6!a4}@tHdJEm)+7}5d`Z%E(`0&e(oiCin6j!a>4cx8g z1x7ynyvn8qjWt$3JBCVtsn$jZQoG)HH(vBGc$!*yD)c&=vsLbh*jIVM`Fg{47hs@*@KNOsnpAT@)TU&A)7J$a^? zki9nmhMnS4YsU2a8uTLDIa4W?>%yJ1Sxyz)&aP%MP4B8TbdA;&S_^FIrAA!6=2b*9 zPxL^fw``YyOonSZZPQMR8mNEepZ7FSE&>>FVq&^+;V;lmEhI7k;A<1cEYf{DhibF_ z?}roKA!fb*R7|ZN2Ca)Q8`>!?zWp@VH<&v?1dw4eJBfAO0%ZGMKG}?r4&J-t`8hXP zUS(!au4TBGQ4GZ;Dm++` zB!K&a|0Dbp-!VXTc3&stRz$PB%k0<)1_{$abrTt})T5hs3BjExM<)xD^8)~TTipkR zHVWSubF@B*n>o)ChiRDfK+F`xyYrqZcf~S*=hMMn^fNa0(hrJae^I|+Ki&zj?0=zm zbHb4~5pC8!J|0H^y7W~#K`0+Qn%Y6}lJmotyn|5g#{8crdt_gb)=Rg}O1Opopi(uz z2&L(eF2b#%h%elwfpn0^+IC}S|J4QuCwvePCtR&GF3J&_lpkMsItq8yJ!ol#DselR zcz|%>ND>e4sQ#53;9K-^QxzBq`0u|G37$tn%AQ)l??g~L6BqBx)u%*B2~H!-ryQ*{O_8Ln0wn>+${RA0QO&SCUs_#bSqp2_!#|y=F^J022P(COgE(x z=pT|nYzkx`ItHp2G+Oj9#a^#rz=2J3PSP2`P92lqX1(zvsM>6mgMT_HZPf8C+Ev*3=5keXE3BWDS_O2Q(`b8=~&Tm)_3Pn2oNfZPHi!rWy~ z;6j^xOb=O_BMhlmjA&=tWKANcBnl-Y?R^H$Tr2|R@z(It<@is z3Je0vF~Akk7V5A?C$c7y(vXnlB8%WIZ+3%W$1K;KmOG)J#%YI7W2D}BY3UDALR$Ev zS=k2L;`Oh|Op1WP@+N^|2y3O|c5=w+2So+#DahWO3{HlkxK63sOrLP_B>$_fChx0|taVXs6GM{&@anQV z_-G-wtE36k0*Pm&FpZ({g1JRvJ3rI=R3R=|ZUMd*Dh^uv8x|p*t2le1q=kGZz$4qP zWwL1A%E;WNk&WC8wy_olRU;zI@64;l_r1?10HsVLcYZ(oiL(*9_N)6SdTHaZrgavKSW7OpE--i^du6S4 z1(C@?1Y}#abOL9iL&kv^V1WAr-p+BG1G!;vL!Cx(6LRp&sK`@J?KF7;xkY8ChE}2a zOJ~43X!DBG&IKp?%m9Hdwr`g|6AhztlI1Uvs+7p@G4c?Fr7>;ty$iFV^8;t6xD&^esNKb3H(%ul40* zpLGjVkDm&pLOYshnr^;G^OdFf?|~8u8IgM1$k@xpLlNA5JnmubjSZ~21pXPVa`c#y z1i`Orc3G?)2K~XUZaHds5jTR)$xMNgt^L2Wi#df;&g3<<>r7a>XNuov`ZWg^@F0Xx zEDOSbDg@Ub-7=FIVI3S?VQ80qRTRav;j4GFmtPR#voH~Y6UZLGLIAq-AHXQi_DoC|jVnZXcwB=t<15>{2P+%#5;Z-p;q!kN{*=)dabTgzy<%K8eUy_}#{Y0QzPbCN&K zqf+9G>II3$mqht>w3uDr^mqaG{o0{)F}P;ET@qxDg7SWiZBQh3zm9?M#8XNSQK}5r z%6K_Mq3@TF5xjpD$ zts{1P0C_6$%z=T9A%##4kCQ>~El&vjX}b&#-`GYwWAriB2JjK7-pxOD25(~Tk~qp8 zyaIIJ%;39z11>HW{NlKc&r}r0KdVZd@g2uHFMH#?+muNxY}jxZMyF=ZsQg%}&zv=& zBK0^A!q3;&=1;C0+Zn!}R$d5wODwRFCLg?||6v|`^1a<--%2^;`(}?1iDhuZQAHBW z`cMg2NeLA2W#!EheS;0B-Kjn6sNh8Jt%2VS6TOV)>`x5mWw-WhTZ3ZNzU{7ZUQj7HO`gdo>fbJAD0+p?X~{h=tc67i zMA%8b`LI;#Ruo8Xa=}Np^H!io7Q8XZVbUQNY}dS|Eh-%#e6zoqeIGp7@UCn zgZv5n8QS*Q(9Sx@87w6Svb#l5M(!D%LlV|iF)980=z}GkShoQ~TIQH~Tw@%W9b}>P z=#UlHJ3#whN%9l>MdCf5f?7(*7sc_&wl8%$BCM(cAjp35DE68gH>uKmpW0E;hog!1 zAa?t{1(@);%8|Fyi^Wyys;WNsEt&e6{AGuunNCdVzw7M_WN4%&_3 ziYC5`ASVyME))7Zv1!>cs$%$T33Av$w65l8DxteHYsy`_)?oTHB}X}qMS3m!KPK?c z+ZUyZNHJE(21CyA&yh#%6G7wzO!mZ&JJLsBIX4pwi2@VoY%PexC2!#E*4Ac|5Qah| zM;JzJBply-C40q%qH2(LI#w!&w5Xj4&Jk>Og#>HaR>v>P+xWSM7-4$YibWnz2U8m%X=H4>wIzMM zubo_pc0-a#8OO+>|8`BI9*d&63D``d3d6VcnM8;d2kJ$>Binw^Ts`u*kOMAeP@0=G`BK-vOS-^}D zzcwb;ocUtl0I#3`UJxj_TnP@vJc)e~p-E~-S<0NbK~|_8mh|iSjSHmL0y9PF*@=uN zM0Kb7VgQ3;Rq`?pwrD(P-xLx0>#xg6u8*+=#%ghZ+?D|vCe^Fo^O%=Rb>4V32iIjC zGbgu_FJS67CW048zJqi>SLYUu;$Rsxqi_JM>gB4@Q06Y#t6$P5Mj*Yhj%- zLR$MUtNOCNzNTIy1900}>1R5}E&{H7`W5IT zTQ60-*^Xoef9R?ga)wJnlY$0Xz+$+^LQB3^rvDTf33rW~Q>-Z&_vi?vhM*Gm%v+PZ z%<<%$(Kc`gh|0ZudJ$f283&5m_(yBueRCY0$sU^GX~1bg=qjwdy%AZ7JNz`;gy6Ic$rr zLJ<5BM^S})XP}hH!-0TPWW~?e(i|m=TkTA0p7Xzwc0bmpwg2~v1#3RUrG%TUL`rOa$N4eF#$?6da~uVh0e9F$ z1BEbv3)mWg6^X+ayvU9=pD6VlbCOTeD*K@SnMQ`HEAZJ!4;C$G`U&$D8rn)#)irG0 zZwt!ws5`K=2#D;i+z$c{1GagsthnX4IDe!w8sy4Td@y|2hSVPrpvyJ=IPVvW+s(8A zvzOZmR^!8it*c&5Z|*S+2Gf4G2$1>{Qw^a>wa-HJY0~pOw#W$bacxxRsXBoU<~U{m z&yeU#2r!47sX3o36&I_U$qXs44Ja*+sVEg#a}SiW%A0b!@RUYo?4;ZN$dLV@&vpFQ zA0^hikP-FXr~mBEpmn0!4;WAv9#do9hRa37iuqxf(l!CCY|vW?-N z1Qr6lTEhr9m4U^(g6Wu6HgdDDO@T|jHQuY&nBi-={Oe?5I4+1R#C_y1txTYDviV~} zy8=V8m*;YSvQS1OgyY-eqz{Ue{70~E9m0lz4}A=fJy()BLPy~0z!$RhQ=H4$=@q(1 z89Hk76Y(dLbDg6@#(^0WfcpdAllT8DVSte5BDVb|u4g{m3ld6ZpyKT`YLDsRG>r=u zL$BtjDnd{D56w`b9S6CWzRVgrDebDIjiLR^zhI)Y%0tiqCqGBHHq9Cm0 zrm_@8F=DNTD4FHQ0%>g)1$eV_(Ozl|ZJxkd(2c;+8k4trVC%k0@r%vjP2&6s9I-?& zk+C;!t>{;8a=hW*QZI=>N1oAFi2YLwd0H^qvygxy3W&!0{bKe3 z6@3pG^XCKIM*MOpwnze6J16s^$hR2lfl$({Z;*e1C4@+Q3s*CBx#N(t%OCX5(W~qr zl7xyx%K_A(o9Nug+ujJmNXD}hC8hO4tt>h$mbxe=G%rsl+!segS zyljXb7cJ^%61VYzu{Z8&a72=>yYPlfY!2aLInD+6bee{q`5eC)2|){j6vP(cjLLhNE6F}-NNr}nrcSFj z?%>NW4vfaQQgDQ_dBR_3vqGFn0s6e0;{x=J`@A04kqF3&%F#ROy{<=Y(B}5fSV!)H z+sw$2)d<9&r3#sXiGn6N!|?m$aMqw7fLffx%w(b6p!5(I2g(?*N1NImpzuE0mPfSE z#Ng8R!5K2s*3aRmC9?jC+_N^jP!N0hrD|c*&bXu!bK8KDk`QqNl#4{^s6Nh5%7%=0 z-06=(qu6guMnc$fQep5P2nP&VG^^Q()=Gjra!C z0C;pGuUl7^3vd@)t}^_{<4L0?&(7Kik&@AeybA{&qNdOA9C6@7wEU8 zh+eUc4-pIz-IS-;l=Lm(XLkk3f-boRWnw7&62 zhDxzn_r&d}d1ib5)2K_&50>|A9(y;}rtwc9qCV52>!0gNI3O^}j=aZ80nWyQjb$q4c#gch z+d0O5;tMx%U3~0@z%GW?6H5FCQMfpzA`Z|}b>BxyEJebWVdcc}iies*h+WZ~3R#$P z+G+vNI~JxxY`V1786zR8?+PWtw}O(b$V#sAQOwfDtt$|MVfP%7u51QfL^YEz3MB?g zqeD%B8H|AYgZ>Bn2~fYOX1KA>ivyrJfZ%F*E;36{jWL2uZwv-!?oaG1r~-Kbx)298 zUc6%tjx+JTtbHaqO=+WE&b!qy)!l%=`sZ0%(^CMCM|EfPzIIG}$w9upXsX zVHY<7V^)Ef%5Wu6<3JkNba=dv)vDxMSn$mcdg`=g^X5Co=QNS|htwSRp|e|QNG$5J z4{Wm=GIGav=0r)BM(eI}f z;HfjWWp>p2KrrN|3Q!he>z{C**p?1D7SbTR9PdLE8}lbX6v;Lt_eEl=`I}={jv!7Q z@KCxZZ@cE;6K?`i&U9@Lcsg;F|0aT3pPo=0YT{z7p=~2_NAE0I*KV97(F@O?PXE*} zX{T51x)H<4C3w@|?}ETF6ldN?`-HAUm=raenEsbzyJ0$3;|!lD-+@{@!)$y-s`c1; z;?P;0TQJLrOWuLVlKch=e^m-LSG@sX3xyfk_F{!B5hn+|n2qK=3F{nHcO>Uh;8EF1 z9d`)={GYg#LK6O(iG$}~ebO5!&-p&DZ`AF1VlYeUY5Aci@gVv<;oU_Wnt`h(2&#+bi8Evmg7u*vTMPtQnu_eUDRfmr6L0&VT`JDTahsIUwI+`@#YCC zRR%#<)&nj>o*1_sOiAxy^XFbhw8 zxG+HReFwKU*w?C|fCPX4zy`oNz!z~(?aC%T_fL&1^~a0iQMn=d$yCRAN~>a|D?Q$6 z^nmk%@pLMve=Z<+;}uA_Ju+YA!nCa#X8#-pFrjuiYm)k`7cvYSw;3Kil`oWWV$^TB z|JM@gLXsPkBR7)@9lS^%byW6)LhPlIDH$2vmg0qr+G@fmtWr@jj}2JI{sM2#LF<<=9m)$f&upVo z^V4?y+=3Z?{EjHDhX zRIwzq*I%i(ucn1TXve6+rz#n#qkwC0CqP^<_v^&&N&({M> zVKD@k|F)MiSa#p-vi-vQC*1b1^P9amCBLVt;o3U z67ZGL!A_}CT%KaUSuD;}+DA2&a~3R*drW$!lS}$1V3b)Hk(13i|1gASJZ3wl{ki8z zDsLn0L0QU*&2t20$rz>GT#lac1NM0$%lhZj%;!MFstffXQKLYC_m;J-d2_r>Fhj|$ z)`VWWfh$_lQZ@yNUZ!q+4Aq6O;P$19C$(#Tiu!2W(b3hBc8igmt-13u8g;21Hw*_N zYwsZI%le_D$zAundwQtEWmEN2m|)_v3L>KI@GeAfrqfVa`VBNlTI&9Dvn{X7wMo>S zv^oAb#9b`PW4mwGk*(`t2H!Lh2#@IgV0tXw!0ZsonMo&%t`=qn#$3WPI@HN8DWT|B z(g>4%(O&2l{(1V2A6w9cQE8Pab4C*NhqAg_t~hMekxZgv?4g5`n9p`c1y)eOQ#Q%* z1lUKYH21@B$UvWH5d;;+F!9QTA>l|2ublQ{rRtPQuFR6W6u-T2@q>`_8 zqRhQjde>e2&zk&@4Wry)=Hzjz>q>kq;pxTV3YLhhY`tiUex0m2v#Fy*+<_Vdfct~~ zGyXnuofnIP&vqrVzLg)z`}6?d6g?>K(r;k-^^Yw@+?$K)5Ap$fwsfxMlID)#5W=w@vZ{F96@bC++gkUkBNTFF2f z&)Ru53dKx4&C}_wir>;b=rbNrrlfLpdG4KVJ10snA_9^Q7S7pAhu~MjYJVR(M9}}i zMdI6mT~%N7{_zj6yi3gwJ!fd{ldRR2b2P>>_9o6e%nWTsEjq&j**4ySd!p22&(7hQ zbI&l{h%W`$t`c_CUZyqg`?-i@fMAbE`wR{4{Momxk8LFk2Ri?Wk6rO1c}~F`y-OEv zYrJFs=I#IwW1NpHn<^ry*`%m2FvO_8>P}S(YwMM0`a_8=kcH1#L_XAvf9sz1e0)OP zM*RHJL$Z8uS*bVBWLWSo+32=>l1){z2F{v0lrwAWuVB}>QK6uhNJ;JU0mgws^2&QG z2CFYXo2#$M26n+35j@%IF%Rr$67tktD!5pZuSvUfQlDl=q~}V}n}><#3wWPaa_{84 zCk%H=*&rZ_Em}dT_+M-g04b115O-c=pT+?EsqKDzEAB%GS}hw^DWG~|@-srDUC1Q3 zKt<=v6b2oF(C_3^jcO*h7YzWjZ8s#obHwqk2g6p|O!&I(?Bq#mD#P_&7^z*%h+w5c^e*|0_9w?DXwSnDyW3l%q=7o0Ic-pC(5`)7 zBp2oB@Z5Ld7B`33%d(yG%_WW?q7}c(zO^_x+4$F)Pa*9w#`= 6'} + framer-motion@12.4.11: + resolution: {integrity: sha512-MHeZlgzo9DnQ6+TFgRqJiOk4vWwsDcXFtxeXlVawVs1nwgcZW3966foGIgkIiIrBSPHB9RlbqspAxiYWosFT9g==} + peerDependencies: + '@emotion/is-prop-valid': '*' + react: ^18.0.0 || ^19.0.0 + react-dom: ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + '@emotion/is-prop-valid': + optional: true + react: + optional: true + react-dom: + optional: true + fsevents@2.3.3: resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} @@ -1551,6 +1568,12 @@ packages: resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} engines: {node: '>=16 || 14 >=14.17'} + motion-dom@12.4.11: + resolution: {integrity: sha512-wstlyV3pktgFjqsjbXMo1NX9hQD9XTVqxQNvfc+FREAgxr3GVzgWIEKvbyyNlki3J1jmmh+et9X3aCKeqFPcxA==} + + motion-utils@12.4.10: + resolution: {integrity: sha512-NPwZd94V013SwRf++jMrk2+HEBgPkeIE2RiOzhAuuQlqxMJPkKt/LXVh6Upl+iN8oarSGD2dlY5/bqgsYXDABA==} + ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} @@ -3017,6 +3040,15 @@ snapshots: es-set-tostringtag: 2.1.0 mime-types: 2.1.35 + framer-motion@12.4.11(react-dom@19.0.0(react@19.0.0))(react@19.0.0): + dependencies: + motion-dom: 12.4.11 + motion-utils: 12.4.10 + tslib: 2.8.1 + optionalDependencies: + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) + fsevents@2.3.3: optional: true @@ -3206,6 +3238,12 @@ snapshots: dependencies: brace-expansion: 2.0.1 + motion-dom@12.4.11: + dependencies: + motion-utils: 12.4.10 + + motion-utils@12.4.10: {} + ms@2.1.3: {} nanoid@3.3.9: {} diff --git a/frontend/src/components/illustrations/CookingLoader.tsx b/frontend/src/components/illustrations/CookingLoader.tsx new file mode 100644 index 0000000..09ad374 --- /dev/null +++ b/frontend/src/components/illustrations/CookingLoader.tsx @@ -0,0 +1,69 @@ +import { motion } from "framer-motion"; + +export function CookingLoader() { + return ( +

+ ); +} diff --git a/frontend/src/components/illustrations/EmptyRecipes.tsx b/frontend/src/components/illustrations/EmptyRecipes.tsx new file mode 100644 index 0000000..2ec0b81 --- /dev/null +++ b/frontend/src/components/illustrations/EmptyRecipes.tsx @@ -0,0 +1,51 @@ +"use client" + +import { motion } from "framer-motion" +import { Button } from "@/components/ui/button" +import { ChefHat, Plus } from "lucide-react" + +interface EmptyRecipesProps { + onCreateRecipe: () => void +} + +export function EmptyRecipes({ onCreateRecipe }: EmptyRecipesProps) { + return ( + +
+ + +
+ +

Aucune recette trouvée

+

+ Votre collection de recettes est vide. Créez votre première recette en enregistrant les ingrédients que vous + avez dans votre frigo. +

+ + +
+ ) +} + diff --git a/frontend/src/components/illustrations/KitchenIllustration.tsx b/frontend/src/components/illustrations/KitchenIllustration.tsx new file mode 100644 index 0000000..927a216 --- /dev/null +++ b/frontend/src/components/illustrations/KitchenIllustration.tsx @@ -0,0 +1,62 @@ +import { motion } from "framer-motion"; + +export function KitchenIllustration() { + return ( + + {/* Pot */} + + + + {/* Pot handles */} + + + + {/* Steam animation */} + + + + + + + {/* Stove */} + + + + + + {/* Spoon */} + + + + {/* Vegetables */} + {/* Lettuce */} + {/* Tomato */} + {/* Carrot */} + {/* Carrot top */} + + ); +} diff --git a/frontend/src/components/ui/progress.tsx b/frontend/src/components/ui/progress.tsx new file mode 100644 index 0000000..bd761c6 --- /dev/null +++ b/frontend/src/components/ui/progress.tsx @@ -0,0 +1,26 @@ +import * as React from "react" +import * as ProgressPrimitive from "@radix-ui/react-progress" + +import { cn } from "@/lib/utils" + +const Progress = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, value, ...props }, ref) => ( + + + +)) +Progress.displayName = ProgressPrimitive.Root.displayName + +export { Progress } \ No newline at end of file diff --git a/frontend/src/layouts/MainLayout.tsx b/frontend/src/layouts/MainLayout.tsx index 46e82d7..1d9355b 100644 --- a/frontend/src/layouts/MainLayout.tsx +++ b/frontend/src/layouts/MainLayout.tsx @@ -17,10 +17,10 @@ export function MainLayout({ children }: MainLayoutProps) { } return ( -
+
-
+
{children}
diff --git a/frontend/src/pages/Recipes/RecipeForm.tsx b/frontend/src/pages/Recipes/RecipeForm.tsx index f57b18d..ae0674a 100644 --- a/frontend/src/pages/Recipes/RecipeForm.tsx +++ b/frontend/src/pages/Recipes/RecipeForm.tsx @@ -1,209 +1,216 @@ -import { useState } from "react"; -import { useNavigate } from "react-router-dom"; -import { recipeService } from "@/api/recipe"; -import { Button } from "@/components/ui/button"; -import { Input } from "@/components/ui/input"; -import { Label } from "@/components/ui/label"; -import { Textarea } from "@/components/ui/textarea"; -import { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle } from "@/components/ui/card"; -import { Mic, Upload, ArrowLeft, Loader2 } from "lucide-react"; +"use client" + +import type React from "react" + +import { useState, useRef } from "react" +import { useNavigate } from "react-router-dom" +import { recipeService } from "@/api/recipe" +import { Button } from "@/components/ui/button" +import { Input } from "@/components/ui/input" +import { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle } from "@/components/ui/card" +import { Mic, Upload, ArrowLeft, Loader2 } from "lucide-react" +import { motion } from "framer-motion" +import { KitchenIllustration } from "@/components/illustrations/KitchenIllustration" +import { CookingLoader } from "@/components/illustrations/CookingLoader" export default function RecipeForm() { - const navigate = useNavigate(); + const navigate = useNavigate() + const fileInputRef = useRef(null) - const [audioFile, setAudioFile] = useState(null); - const [isRecording, setIsRecording] = useState(false); - const [mediaRecorder, setMediaRecorder] = useState(null); - const [recordingStatus, setRecordingStatus] = useState("idle"); - const [loading, setLoading] = useState(false); - const [error, setError] = useState(""); + const [audioFile, setAudioFile] = useState(null) + const [isRecording, setIsRecording] = useState(false) + const [mediaRecorder, setMediaRecorder] = useState(null) + const [recordingStatus, setRecordingStatus] = useState<"idle" | "recording" | "processing">("idle") + const [loading, setLoading] = useState(false) + const [error, setError] = useState("") // Gérer l'upload de fichier audio const handleFileChange = (e: React.ChangeEvent) => { if (e.target.files && e.target.files.length > 0) { - setAudioFile(e.target.files[0]); + setAudioFile(e.target.files[0]) + setError("") } - }; + } // Démarrer l'enregistrement audio const startRecording = async () => { try { - const stream = await navigator.mediaDevices.getUserMedia({ audio: true }); - const recorder = new MediaRecorder(stream); - setMediaRecorder(recorder); + const stream = await navigator.mediaDevices.getUserMedia({ audio: true }) + const recorder = new MediaRecorder(stream) + setMediaRecorder(recorder) - const chunks: BlobPart[] = []; + const chunks: BlobPart[] = [] recorder.ondataavailable = (e) => { - chunks.push(e.data); - }; + chunks.push(e.data) + } recorder.onstop = () => { - const blob = new Blob(chunks, { type: 'audio/webm' }); - const file = new File([blob], "recording.webm", { type: 'audio/webm' }); - setAudioFile(file); - setRecordingStatus("idle"); - }; + const blob = new Blob(chunks, { type: "audio/webm" }) + const file = new File([blob], "recording.webm", { type: "audio/webm" }) + setAudioFile(file) + setRecordingStatus("idle") + setError("") + } - recorder.start(); - setIsRecording(true); - setRecordingStatus("recording"); + recorder.start() + setIsRecording(true) + setRecordingStatus("recording") } catch (err) { - console.error("Erreur lors de l'accès au microphone:", err); - // toast({ - // variant: "destructive", - // title: "Erreur de microphone", - // description: "Impossible d'accéder au microphone. Vérifiez les permissions." - // }); + console.error("Erreur lors de l'accès au microphone:", err) + setError("Impossible d'accéder au microphone. Vérifiez les permissions.") } - }; + } // Arrêter l'enregistrement audio const stopRecording = () => { if (mediaRecorder && isRecording) { - mediaRecorder.stop(); - setIsRecording(false); - setRecordingStatus("processing"); + mediaRecorder.stop() + setIsRecording(false) + setRecordingStatus("processing") // Arrêter toutes les pistes audio - mediaRecorder.stream.getTracks().forEach(track => track.stop()); + mediaRecorder.stream.getTracks().forEach((track) => track.stop()) } - }; + } // Soumettre le formulaire const handleSubmit = async (e: React.FormEvent) => { - e.preventDefault(); + e.preventDefault() if (!audioFile) { - setError("Veuillez fournir un enregistrement audio des ingrédients"); - return; + setError("Veuillez fournir un enregistrement audio des ingrédients") + return } - setLoading(true); - setError(""); + setLoading(true) + setError("") + setRecordingStatus("processing") try { - const recipe = await recipeService.createRecipe(audioFile); - - // toast({ - // title: "Recette créée !", - // description: "Votre recette a été générée avec succès." - // }); - - // Rediriger vers la page de détails de la recette - navigate(`/recipes/${recipe.id}`); + const recipe = await recipeService.createRecipe(audioFile) + navigate(`/recipes/${recipe.id}`) } catch (err) { - console.error("Erreur lors de la création de la recette:", err); - setError(err instanceof Error ? err.message : "Une erreur est survenue lors de la création de la recette"); - - // toast({ - // variant: "destructive", - // title: "Erreur", - // description: "Impossible de créer la recette. Veuillez réessayer." - // }); + console.error("Erreur lors de la création de la recette:", err) + setError(err instanceof Error ? err.message : "Une erreur est survenue lors de la création de la recette") + setRecordingStatus("idle") } finally { - setLoading(false); + setLoading(false) } - }; + } return ( -
- +
+
+ +
- - - Créer une nouvelle recette - - Enregistrez ou téléchargez un fichier audio listant les ingrédients disponibles, - et nous générerons une recette pour vous. - - +
+ {/* Illustrations */} +
+ +
-
- + + + Créer une nouvelle recette + + Enregistrez ou téléchargez un fichier audio listant les ingrédients disponibles, et nous générerons une + recette pour vous. + + + + {error && ( -
+
{error}
)} -
- -
- - -
+ {recordingStatus !== "processing" && !loading && ( +
+ {audioFile && ( +
+

Fichier audio prêt !

+

+ {audioFile.name} ({(audioFile.size / 1024).toFixed(2)} KB) +

- {recordingStatus === "processing" && ( -
- - Traitement de l'enregistrement... -
- )} - - {audioFile && ( -
-

Fichier audio prêt :

-

{audioFile.name} ({(audioFile.size / 1024).toFixed(2)} KB)

- -
- +
+ +
-
- )} + )} -

- Enregistrez-vous en listant les ingrédients que vous avez à disposition. - Notre IA générera une recette adaptée à ces ingrédients. -

-
+
+ + + + +
+ +

+ Enregistrez-vous en listant les ingrédients que vous avez à disposition. Notre IA générera une + recette adaptée à ces ingrédients. +

+
+ )} + + {(recordingStatus === "processing" || loading) && ( +
+ +

Préparation de votre recette...

+

+ Notre chef IA mijote quelque chose de délicieux avec vos ingrédients +

+
+ )} + - - -
- ); -} \ No newline at end of file + +
+ + {/* Recording button at bottom */} + {recordingStatus !== "processing" && !loading && !audioFile && ( +
+ + + +
+ )} + +
+ ) +} + diff --git a/frontend/src/pages/Recipes/RecipeList.tsx b/frontend/src/pages/Recipes/RecipeList.tsx index 26ea4cd..e98ae44 100644 --- a/frontend/src/pages/Recipes/RecipeList.tsx +++ b/frontend/src/pages/Recipes/RecipeList.tsx @@ -1,159 +1,253 @@ -import { useState, useEffect } from "react"; -import { Link, useNavigate } from "react-router-dom"; -import { recipeService, Recipe } from "@/api/recipe"; -import { Button } from "@/components/ui/button"; -import { Input } from "@/components/ui/input"; -import { Search, Filter, Plus } from "lucide-react"; +"use client" + +import type React from "react" + +import { useState, useEffect } from "react" +import { useNavigate } from "react-router-dom" +import { recipeService, type Recipe } from "@/api/recipe" +import { Button } from "@/components/ui/button" +import { Input } from "@/components/ui/input" +import { Search, Plus, Clock, Utensils, Heart, Share2, ArrowUpRight } from "lucide-react" +import { motion } from "framer-motion" +import { CookingLoader } from "@/components/illustrations/CookingLoader" +import { KitchenIllustration } from "@/components/illustrations/KitchenIllustration" +import { Tabs, TabsList, TabsTrigger } from "@/components/ui/tabs" +import { Badge } from "@/components/ui/badge" +import { Card, CardContent, CardFooter } from "@/components/ui/card" +import { EmptyRecipes } from "@/components/illustrations/EmptyRecipes" export default function RecipeList() { - const navigate = useNavigate(); - const [recipes, setRecipes] = useState([]); - const [loading, setLoading] = useState(true); - const [error, setError] = useState(""); - const [searchQuery, setSearchQuery] = useState(""); + const navigate = useNavigate() + const [recipes, setRecipes] = useState([]) + const [loading, setLoading] = useState(true) + const [error, setError] = useState("") + const [searchQuery, setSearchQuery] = useState("") + const [activeFilter, setActiveFilter] = useState("all") useEffect(() => { const fetchRecipes = async () => { try { - setLoading(true); - const data = await recipeService.getRecipes(); - setRecipes(data); + setLoading(true) + const data = await recipeService.getRecipes() + setRecipes(data) } catch (err) { - setError("Impossible de charger les recettes"); - console.error(err); + setError("Impossible de charger les recettes") + console.error(err) } finally { - setLoading(false); + setLoading(false) } - }; + } - fetchRecipes(); - }, []); + fetchRecipes() + }, []) const handleSearch = async (e: React.FormEvent) => { - e.preventDefault(); + e.preventDefault() if (!searchQuery.trim()) { - const data = await recipeService.getRecipes(); - setRecipes(data); - return; + const data = await recipeService.getRecipes() + setRecipes(data) + return } try { - setLoading(true); - const results = await recipeService.getRecipes(); - setRecipes(results); + setLoading(true) + const results = await recipeService.getRecipes() + setRecipes(results) } catch (err) { - setError("Erreur lors de la recherche"); - console.error(err); + setError("Erreur lors de la recherche") + console.error(err) } finally { - setLoading(false); + setLoading(false) } - }; + } const handleCreateRecipe = () => { - navigate("/recipes/new"); - }; + navigate("/recipes/new") + } + + // Filter recipes based on the active filter + const filteredRecipes = recipes.filter((recipe) => { + if (activeFilter === "all") return true + if (activeFilter === "easy" && recipe.difficulty === "Facile") return true + if (activeFilter === "quick" && (recipe.preparationTime || 0) <= 30) return true + if (activeFilter === "vegetarian" && recipe.tags?.includes("Végétarien")) return true + return false + }) return ( -
-
-
-

Recettes

-

- Découvrez notre collection de recettes délicieuses -

-
-
-
- setSearchQuery(e.target.value)} - /> - -
- -
-
+
+ {/* Main content */} {error && ( -
+ {error} -
+ )} +
+ + + Toutes + Faciles + Rapides + Végé + + + + +
+ {loading ? ( -
-
-
+ ) : ( <> - {recipes.length === 0 ? ( -
-

Aucune recette trouvée

-

- Essayez de modifier vos critères de recherche ou - -

-
+ {filteredRecipes.length === 0 ? ( + ) : ( -
- {recipes.map((recipe) => ( - -
- {recipe.title} -
-
-

{recipe.title}

-

- {recipe.description || "Aucune description disponible"} -

-
- {recipe.tags?.slice(0, 3).map((tag) => ( - - {tag} - - ))} -
-
- - {recipe.preparationTime ? `${recipe.preparationTime} min` : ""} - - {recipe.difficulty || ""} -
-
- + + {filteredRecipes.map((recipe, index) => ( + ))} -
+ )} )} + + {/* Floating action button (mobile only) */} +
+ + + +
- ); -} \ No newline at end of file + ) +} + +interface RecipeCardProps { + recipe: Recipe + index: number +} + +function RecipeCard({ recipe, index }: RecipeCardProps) { + const navigate = useNavigate() + + return ( + + +
navigate(`/recipes/${recipe.id}`)} + > + {recipe.title} +
+
+

{recipe.title}

+

{recipe.description || "Aucune description disponible"}

+
+
+ +
+ {recipe.difficulty === "Facile" && ( + + Facile + + )} + {recipe.difficulty === "Moyen" && ( + + Moyen + + )} + {recipe.difficulty === "Difficile" && ( + + Difficile + + )} + {(recipe.preparationTime || 0) <= 30 && ( + + Rapide + + )} +
+
+ + +
+ {recipe.tags?.slice(0, 3).map((tag) => ( + + {tag} + + ))} +
+ +
+ {recipe.preparationTime && ( +
+ + {recipe.preparationTime} min +
+ )} + + {recipe.servings && ( +
+ + {recipe.servings} pers. +
+ )} +
+
+ + + + +
+ + +
+
+
+
+ ) +} +