From 7d24a5a18c9941c71efa742c0a0dd4b6251e3e85 Mon Sep 17 00:00:00 2001 From: "google-labs-jules[bot]" <161369871+google-labs-jules[bot]@users.noreply.github.com> Date: Sat, 14 Feb 2026 09:34:15 +0000 Subject: [PATCH 1/4] perf: optimize ScheduleContainer by conditionally rendering views - Implements `useMediaQuery` hook to detect viewport size. - Updates `ScheduleContainer` to conditionally render `ScheduleGrid` (desktop) or `ScheduleMobile` (mobile) based on viewport size. - Prevents rendering both components and hiding one with CSS, reducing DOM nodes and memory usage. - Maintains SSR and hydration compatibility by rendering both (hidden) initially. - Adds `__tests__/components/schedule/ScheduleContainer.test.tsx` to verify the logic. Co-authored-by: anyulled <100741+anyulled@users.noreply.github.com> --- .../schedule/ScheduleContainer.test.tsx | 62 +++++++++++++++++++ components/schedule/ScheduleContainer.tsx | 27 ++++++-- hooks/useMediaQuery.ts | 37 +++++++++++ 3 files changed, 120 insertions(+), 6 deletions(-) create mode 100644 __tests__/components/schedule/ScheduleContainer.test.tsx create mode 100644 hooks/useMediaQuery.ts diff --git a/__tests__/components/schedule/ScheduleContainer.test.tsx b/__tests__/components/schedule/ScheduleContainer.test.tsx new file mode 100644 index 00000000..7337ce5c --- /dev/null +++ b/__tests__/components/schedule/ScheduleContainer.test.tsx @@ -0,0 +1,62 @@ +import { render, screen } from "@testing-library/react"; +import ScheduleContainer from "../../../components/schedule/ScheduleContainer"; +import { DailySchedule } from "../../../hooks/useSchedule"; +import { useMediaQuery } from "../../../hooks/useMediaQuery"; + +// Mock the hook +jest.mock("../../../hooks/useMediaQuery"); + +// Mock child components to verify rendering +jest.mock("../../../components/schedule/ScheduleGrid", () => { + const MockScheduleGrid = () =>
XMjxE)H<_;ol229tgugeiT2tl{Ih;K4L&lQYkos;29`!EDLRhRzrWPlA5FR z;0z6JtmPUb3N8?#sZo#K;lND63Tv=&1CliP(vA040{t+DeIh8imGn-7iI{kAMMx9M z{Ch=mil$v56jx@;?h0N9e`kfE15y=v?z6&M!-SXrPBXf@)tqj2o8!Ve=V2M`xC?H? z-&>^N`;Hx(h#bU$j$?5_k)OR7iZN!d5wXOx2!ZQ4{Z4!LbWKEst&1tTk4*vnS-LQU zw|hmVQ>xKE*z3l$?w9^4jlwlh;fV}usiRA8jeCbDCEGa2;uP7gGC*?47w(|cBBDtQ zz()~v5CMeufWlN$M^2+k%-Xky8Q><@KSmkM$CW?LGt2W*w4kMG)M07U?vS9HEyf8< zj13(eS_3>&7HV6@vivIu;nGJMnU42CEsUD?)dni+Cqy$1IM_R9`D>CeXFx~z!I)Mr z4FKa})|xLK!SedKe;X|iq(#4{i|WK_oCza)&rU^}NXJwRX9S(SR+*Y^$jGZOR~uKE z39ji+q(*5qI>;k$xVuq~(D6F5)-=#bsCa98i30Hz-yM=raG<&eLQ&w2jIkJ-e#h|< z>`_&SCVSh%S;kZ{li#5uk`P)bZ0wpp25$(w;uV@-f{MyBa#s0x{H>$gG|{gA?&iWx z*wW0zwN?eB&)&}-G4m{TSll;A5%01r ln=C2Ag3l8BbKS zG v~8eb*jNx47b_Z5$lPWy9 urHvZe-o&2_l)3eD z=N_m}p$@5*i-vBOOTMcGT86|Q!FjX+4!ce !9;pSR0NJ _wPXkv`+97mX2 zf;?f$L^wHDC`)$*WlGjGva;HTH2xA_{-a&>caPfY`GVDp9h6xY5~bdXpI}L@uVGwMxQWgN<9*4%FY7uEEeIjMujJGN5@lzVLkXI zyEBQP5k^(i;v-R{%$$coGVgTP;RFwq*q&2!Z ZR(AnPGCQx?cP|NgRQ>` z?h9(j5lU)|YJ_tN$q?XK4-)1t6vQNK5_PVNL)B2>K#=ecL3HdY`)b8!Yr}Ox;}C(r z)l5)fU};r_ndf<5?|0K39ozubR=dN6QiVkE!WaTPpW}ZoWUfOjJGL)95e8 zO^U-_st&=}TNDOfGn5V+8o4J@rLzi}xLO-L+8QWo!8wf?nq8h1 (VU=ZKNjebvaSeW}Js` z`~O_jX$BNnAq4FIWg4a-wZBRR@m`3e%`bru*3fpU>q8PRA2|s%Xl>zN%Zl|wEB!gK zA5=huhRcVN)=lcd_XBzI=4=-<_pf5ZFB9GErEz9%j8Dh)Wb(~=*(HvneU2&;eIzek zS9#pjP^67#*|~gX-d$yb_N&*xA6x6wEKj)yZfP0}x|FRys_xueM2RsO^#(!^i8sPm zwEn$IcW@ 0U~P%Z`M#u&Jmty6?yeZcNA^Xc8C8 z32oe-7y*N=M&DTr=sa_WuR<7qJ(5*nII`-hjcGkw6mN6B=*&ATD7QZxjLtIA*1_qC z=zt<8ua>z{_7SeBB4l;!tb39a-a);Jz!5s)C~!9k0_l;PJh??FZHMF002YiM?p$U# zO;m6M)>_4&t0L}^WZ%Y&{7N;4j_7R}qH~9U+l`VabU-)?bHbiR-3)1Pl=n!q0O1Ab zmJ3MvXr0UcNxQOCANrwYf<&EynALB+8M08S?G~#2Pxy{ovq-K0? l1Gl)AMg$k*DZf8 zpIEf0Pl{p@I6=gEP{)N9EnZ+ $fA<8Ua=K$oWBx9^lFwX|sTH=XcYc;6=%{F%7}r zGlcTLR~QYbL9{&BM-{-(WGz?SMi0# zp+3GV5l;Iy1AIfRD3$s=sG-rD;}*hlv>F-qbgDrE9Y}JVB0$CoDJNBJsu6T0GKQm* z{3fatTvWPsgD%2wshy5 I|Su3&L#iH8&XVYKeAjTgNm1d8nGJIg`u1s5DS8hAULSKR8US8*Z%;y3>0mhPae6 zk~9IK;l#ejw*}~E4CJZK+;b`u$Rf+?@-=h>F2Yv1rYAq%h6*HLzOlwih-*8o3 d?n=0x@jGXR_;zw#Fh?v@&(h>2@vYuiaf;H!_i9K) z`}Y}hh8%#fP;Q2HKGj4B;d2WCp+Z%2m~3Gw<)>P`a6^ydFzeMW=hYZxih0APx|5QH zBclKZBV*iSwYaFk%Baw&=ET-&bsI6IM4_=OLQH8CI9+&u26l3VVP97veQW%1pK%2A zk8|7F_Uqolhw=8l5yq$V+T*>Jc}m1MzQT_sIhrfy)1AzHGCfxQi?Cnr=(5OIJ|e6> zrkJ@YTftR%C9uWV%-UqzPZ!m f#wzvA1(C4BzJ6zvduuK*c2;eFj z+wF8NFt5*CijXWM!jGv)pBs8S(_HhRPij!= |3N-(L3Gwl~P$M8} z7MWT>H%V(I>77LOA&u+b0;$N!Az)^%Z) 0#kOe#5hgm75S6ff~ z=6D`I)Ou$%*SpG0x sfm7 ;sH$`VHy$Q1&IyO1D5-BQTT!o$P6 z8EAq0dXIOeeA7c73nFla@_dD}kzBp0)B&`(kxst`5`?6 aNY4@WYWs>5 scr-ho9B zxOs1c2^TRK`sggWdVCpTTH2RS=0{&xXU#Mo;j9Cw0y|YyJ2!BG9HZrwJxZxO9H25u zs@+^Mhs`(6^DQzxCi->761|W>w2oS>Wh*X1#qVq zVdCOQH;D8i`+s1eAk~Ka& -F%7C63 zLU^`ZT?jkyS$XV(u6=$PoMo;6`>okTiK Qav(J}5)U-ZPk zuyi4 zkb$@T6CuRT`y3A%k Ifaj|hstTJD_|BfBA4rmR98&Q{z8Q! zu7xxVKP>gBMQS8G_9C*L4n Jvc^cPA(~SEP$D0$#IYi1A9iNbdqza-37dCU4C40^K~!FZ%R&Y&qy= zH!o7cl*7J@y_T+k^XPmAS7*{;svrLKDomoP8T#?h!5FP$YJQn$eqSEO3r<0yV`fJU z&-m0L&gwt=BWc^HRjL?pHM>02m;lWtsvs#LCISIvy=~8~^7MTYMyts}=t^uR1#>4Q zXU5Wn=qVB6^sRFe+PX}<_Eei~IBlg6u$D4%3s>7tV4$EKj9-;(mTO5#NnY=}Z$|cx z>rQmqCch8{#K+Nm@z~+a#6eUI*v5hekQ45HBS5A(zGlzFOA{F#e-Y`mc(~j+O6;as zcvrlTPNDB)Ax_ATm@Z8e=n9ftnk+%4dHmcvHbipdGK|NDrWgObfLl)9q}j#K($pzJ zfDfuQ4=lt%1nn)=0uD tuT=3~iyKu*Ptw<&qYVs%kWS@* z%Q_BzKA>|98|5@!ny>emC~L}Dp-{?3Trv!;jw^|{aZ;S(-3M1lY&by5KGh#|^k7X? zM9=5VU5!B(A>Ru`sq)Bqo=Oy1fW5o2ft=5XfE{bAh*FECDl_AE*w@6+J8K4URr3RS zPJ{O-kUd$BQ~v1e`Oh$7FN?s8MKYZXwo?|vg@xnAR>F?zR#P*xg`c955~DC<`Xrt~ z83b%Q=$gAaexIn7b_Ut?miUsimWFPQS2s;UWk8 gY2=g7YUH8 zd7JH}*&n4&-pxw3ziaMbz&-&F5)|tJK@G|-Kr@QMvxVu}e_$Z#&nF+qkO|`#mzF?H zfVH!J@=;Kn3`OP%>v(D_DGA5fZ3+HgOnqZ?CQ;Mv6DJd6V%wQm6WgBHPA0Z(+Y>*r zZQHhOTQ~2Ad+%EPudBOP*E)q=XZLOjMLd*~;k2^>r2WKSZSrypDdN!fLkdckc3X_v zYl&_A5qN+T`$<0#%Yo`pzRkzFOm(`Lz*s?7j (D1ez zAC7XIBiJFqj2|sD%}|q^_CNmZ?8>ITb2>1_T#^T0sUH8R^R*J=Zrf}ds*z1R)Ov(- zS?6Aiy$uQHNT9?e0NtYmH_Qz-!-fd7pLG2NPj<6|h^P^+gsB zfmLOF6Y)Fj>m>Qn<3OD`lvj~~^g>S_D2$4csL~p+ZygUcX)&OAE&+xViNOs%biRxc zROf#pea!C^hgKcTCZc}`@1jD-&F>Pdz|#c-0MsBlQAjWZA&%Jnt<1Y;r;+ z!pxfmv$Bp}m*7GwuWoD@-mS!nimO3SW0ogY>({YgiKQ@Tq?0=c>UWxWCT=N+Z0KKU zp&T(jybg9+ru&CMVMrzt0Ds9=4 ^9fXu)vp1ZXuH1u&!FD{4HE^ zaY0sgbEEn?3;-BOGGOt4;H{OAbu4W%|LRA_c*n bpFD;H_R4K95GU@tkyLqHL@3-9G1|NRLf=}8qN~E zi6Zv#X~>ASLDRO;vn$9s(GcCDZ@5V+$P<9&;c!)e2{iT5sZFF8w6~#lIhPCJt|X@2 z)uxqx(-f!eSTiX`nY@M;eJ!7vl~zipAe{QFrp8|+#5_b i*RJrRS%d}pgTLrjJq10f1UpxQ^nQE zh_gML^or4%^Vb#0YGJiEzM2S(G8WtFTi*U>NbrlBU!&a8j_R( 5*j;aFPmVNg1*$t$ks~6YO=+j#A6coIp|Gv|5;sVRSeSSVblk6 z3U>Qx3B0?pe2U`1YfIVO`DkXGAiMet2!I}=e+lW{hV&;2?7`s*v0py*qb1S*cR({&@z%80YS ym&>P|58PA)a80)njmri6JJ(+ z@*m%07?lvN>JL~)%dQPp{nctLnCx3Gyy5r9n$Id68X1295dJa#hy1VrHqWMv>;})E z6sK`uUsRv)wpNu~pyA=rZg3u1N1B~>!EPW4ul&Bdjj1zqbp8N1Ee|l7hGV>^SukR~ zp#>T5*!)MqSfVNg+29+gzvF!>eqkJIF$Ge2pgFAxZ!46IK?Odn7&X`m6RfgeXZGTS zMnCWTN6-*@1Q)5^gx`w?` s9ur~ zML8dhZohju%j;hKR#uMD+tCs%dYRYP!X6htU}IKF!%e`c#_7{K@C0o|d9LA0`Oo-o zulhtLu TKd?p$ihqL6bNG$G2u@cX#fS3vls?l1vx#0HS^)|@;bWF1N zXG>qa@uVPxEahN6B*zGN#O1oBWo1)Fp*&1DU^OdHavtJx>k%zK-Ij0A3Ok>iKfF&K zF?75HPs*yJZMi?1U0f4#6i6qc=}NLYpAy)_?{-w@zC{&U?N4MEtp-OV0hw3~t0ir) z($XvEax%WUg1b4aW6qpVJ#KPqU>-4VB`PHNIM=J?SE5lJR}+ZYTn@YT=5}d99=6!n zaF+TrVi}$vUXl?HV;G-IW@c4#$-LS1pZvxmN!r38f`9M+!uQBkxbH;O*mP9i&d*3q zb-g~{x8xsAs0|L&yiRYTetM7U$2|Dh-7Z~lLo#Ua9Bnoq^F3z8j|vBe*S$yR{_(sS zTP_OjM>t`;S}6n|VQ;!$F_;U!7`{y^wqqgzP61nSdskm4ZCj*267>>8v`3D(p0pUR z_2`rGF~Yf!?fN4I8+MP_v;r1?_Pz|V9WA#(&OPR`O0 &QA!Iu$I?%E2%C3o6+?c7D(3w E*4{+I1i7J(v*#3I5t~?E@qB z_>Z%BZ{HG@LfFw -8 zo+2KTzAmbKI6qPUcwQ_fUnwG3@y*mGy(R^r66dWYCH*;9b9jED8{(BqSJ5a& zv{({6C|Z8MxcXZ2Sd2?nP`V;uG}rT8yfPR}s?z Ux(Fq1jwX z&UP>ydy#vxmX2uQV>)~0lT31PZE_w`Vq&LXr{M_fZE8s~tYo @$A=a!!@W|vS2?S_DLD=C>uHvf)KR|GOx3ePlO zL-t|arT+u(O)oPte-(6)tPI|Uv8^ON9G8D7Q_*g7adkV~eGYkpch6b6@`&!N-5&9H z6>T&x`Z(>2Qc+o8828B2Hj{T=TzGNlq@ij&xX>h!S=cIlzC6 8(~q J!-a|}ZZ>+jey~+Mvdxvt+!vWkI|77wnE-4{{ z-klp@e%n|}%A@7`YWA61{lM!D(Dkv2mn>{9VfMUxN%k)zn=|3zGU?T`%6VNs(K?G( zu=(5~^-@0wA6Ns~-mW2&BlC2m>q7IzXEz@ RhJmszNB@H#5PcNs&lS#;H1?A7)8F|&*1b#)=Bko;Bt@p0{^bk^8$H{9)p zUV3;j1w6G;p?|yWijHK(jQn;6D{F(- udhRk?c{SiFcEWhr6&5 zcUsDMKKo+QI_2B;0xLy~2^iAB0dO^4BiO620?*xxOn|?ohvO;$Cb)K#pmPNR;PLfo z@rtS|o%tBsS#H0ut84DdBZe`F`R1nYU9zpjLEHXt9q6~_{h9yNp-^`i18+{?$a*z6 z8xucix;zPo!()E^Y)atn@Y;02RiFMiYG@@0%Aia6e0`wu#D~W0DP7(*=rZE7DX!6R z tHV}z M+OI%r@^2enlE)>c6cTigave|Yf=|c=^=}&yDXnc $5`L(b5eFD7(@ej!5ry+PbO+omyeL*Pyjf9C?Sn{;tb z^~5Jy%j2{# #<@e18#Y{B!5mP`l&*`{^tXH3TCRiT{JXAoaecNmKy7Kg zKKj&6q5pn*G;AgQNU8e!ccJp2ZLFx^a`JeS;r)3Bmgh3cY@u?X92qv>pw}S8iO+?0 zX)WY0MrG9TVx_k0w0{`QIPesM&kYoy(Rho)>~*bL^|#&qWbnN(A%u@}yXwPqh?m`Q zZ+Cw=q%He{W{9gZE!p$%4rB2NZ`NsdtnYK#jaYwBPe}cspz|uk$>L$KNe=JjB2i@$ zB5dpp{(?*YQpnsHjDv96=N BIDI^aBprmxxMkl;xWpuE`*oS za+v+@6ATd2i2rs~3uZaHmBIIlvjN}tRANIxx1uYwaBZdJpRrfoLt7I^D0_yU`G-6; z1zMJ;VRPpg8NAM5?%YK$( z6IefA_q4gRfn7afB#ZlU`N<<@+VT6adow=<-i_yJwjpIpIuY9axX&xEHF(0?eJ8Po zz?`Mi5GCvAnencV=<)c*PK=>klDlnI?4(0~VN*Zm{%n@+?_dGLW@_Dg+7Uj?)qLX- z4_<=L$64A y|^ni}ss4ozQ2*9lX+ zMk*k(*~4j!pAnJyD| ?^W^THj{bto@ltg61YCG)^0oyV>(^lnGriVKi1ycai+%c zoH$ c)5c%2n&)pvB z3kOuL34c&pM+ENeBkjTQE&=wIL&a%8x(yBkP@q@f@9~PBT)HKq&Y=T1E|C;NO~~hT zA1{v=Dwj;#TjZy%_qs~50b?)8?2qR~`a%&U?_VxwgIT;!XxA#Z&e>k=$&7zG3M=zn z12I7mINRSw5j$7aJKn}_ZP+WyE**?w{C5#NaMIoJHEMUtDi$)%cwH};#kQM0R1J^f z^ESPtX!y47FP7FCtv1zfPTavM&z7>(_IuAhkANNwCyE;DN1^!Hop;7hI$3Ra^Eb~4 zke;oM4Rwy~Z?~fxP99rsb|OXAB3Z5IkC$6s2W`5<-N1$g_Q*Dxh4~) w%}NT*bV1|CT!@+3`YGf@O*M0igVVbsDflGHj$oV-D=74{&uz z4p{Z!-Y;amNS>GeJ_4V6-UUuK;QXiAN}C+tOQ`IL9Y2xh*Ki_XwDBPY%`!NR $P=_Ab?SX3-4R=p^cAjxfrb3E*qbZ39GO` z2tWvdLgVS(gJsvMRznHUQ{=$c&-gcXAX29qxU2cjTVHgu#ds_ZmlOT(lX*jgGZ$NL zfz1jRt dwMO}8`MZTV|l zJ99Exb@z*o$CItQ1Vq(~;*zgC&yQdyO(@(IO;yC?l$5#oRIc(Zffoq3rggiO#H~yl zGVw2x(d3T1mv0>DbRX*-<&mN4byzBw?e=%1*e}87W{)#P`=cXo_r34+L9Nvl0?_{Y zUTeulB)u;pP$2CDh~Ub`jdHk?~u+4chEaHZCKl5qi; zzKe}VHjMsvb7TpLw{$f9$ 8W$v(cTV5qA0$jSY5EOJ3eL$#dwEaj+|M6XP z0>_(?iS*aRY|6jY5)sX;B&IqZ1|-;{xt~U7x;T6;cf^t&E;X^!mK&o&u-H8tE>cn7 zkRu$g77EL4PS`CQ7q8amE^?w(&Me)ZuKu0JI; 8prtFU-w~#p14bwY6r5pA>g^K zkN|K5+|4bFD!Oe&?hYGqLWp3#LI`}v3{pVnbB*KXgzGawfM~YY`Egy$Mr|k1LBdXb zOVQu;V*HN&pS}CS>gnzzL zV(YiN|NjRU)+UjKADa>w4*{?I@emFH}@ypWN9 zB@z 2A4F}ekDs@`&_fa<%g$$;q@$aWOs z6=%Ve!26Put}4&h_^hh#`}Mhl7%MBpP=L#&*|CpsnsJ RhIS!+lZ zf{yNFFZfaS_Q_{)ah_m3-|~olfU_mc8_fM d?xaoi zwdt==on(>VsNb^!0X96O$4dss*Cfg9t?h3;S%?=N*Gra0O8$Af2wU79YT2JWsy?3+ zn>;dWP4luHCf0MChuItUJ8xf )u ck zZiL-T(<$@}iPZ>`sQ1_UL}2Hcn-X#y)Y)FW)G>JUu&;tfUBzdPj&^0ITkpbF20TF5 z>yW;8$>(cRmHIOE*Yja1JU7z~EN;K2#bmtZq0Z}VDYxQ8#od+G`-G}ySkP8B%V||p zN4uN$MDHz@%GSABm-|@$)u+ioo38bmnr2&t_wpB<`)>XTyi?RwhvH^~hn@DsWzm(} zU38I8d`kA)O?-HIDHq^*zd~hc;`deAtqsmoGmfs^k^j-3k6b&Ky95_{6F799+f8_% z-(N2aKFi+$y02}+a=v__iR tog%{>uQ( z)%d6T#Nc4Z1mJp7^NY(w{EIzhBOtK-b5?AMrvnW@&HHAuvzw+_=KQy!bU`1L@ax+Q zo9jGufM7jMc1@1=R@6c1^u*2P!+urdNbA?@-V+V^r|o^)7p2eX3_F4PwWZ*7P1om! z#QU!Q)1{Z|sFcmu%^52W4vx|$FdR^w59E!j#`m~9 GO)9=0(}|xwXj|^bm>hWhj}6@KPC`; zIPYdFGMwK}mhQ5yn{?ky9SrXX2wL=4SsjkvFVnU*`CbOoQYy9U%pa?cz^b!YAO85S zcU`MKeLkKzS+czu$`Jd@fJcg9P*M9)hKq6Q2ua1&BIeFQKnkevg16N0+xPdoVg9HE zp-CZ1h#m m!-rt!7=5=j#_;^2HV7zx}F1Rjvef?`;`1 _N5e2=%pgB%G409R`@8<-WL zaV_BU-n)z0dR~`v-|W@}>&_F~yd(L$A@6V( n0 zJ6+(l8!16w&K$4D0@*&Dr+gH50q(f3r(;t_iTjxeRi>4+%8SD$l_1GXzmP~l)v144 z B2K@13;X{++7Z`8PcBLsHcD_eT1FRfV4n**sw~9#!Vf&E#sqcTbYQT+G^r; zLsldY{y)0>{TOtpn71OFbKV|<{UX Iv#WYWvdEy6(W>c>}^^jB3N~fYTsUjybbaws(kxstW=N~x^qeLOV#Y%ET50U z9705Z^TLH40$hZIfmTkzFtqTtlews(*~#b|8H;}bBQ~+Ora2>={)zT)%pwbWR)N>Q zM-yHu2kFX;;GpfdCmY`#_!jq5|7$Bxn+48g`Xe|vmcux@*lk`cqrI6hD}Z53EST18 z71Oa=@_{N+8!mMJXI`yhIV1R>XibW|8d+DXf>w+?_fr 0r%&ZD;KYqu=!hnsYz|3qI z(QDHPGER&}VlOIZViSpq+Os)WyIrR4d^Fl@zFfsDN-Ah*UTm~IR%&*Tu?Xpt{h*p< zj@FyvyPv#6?C2|ku1a5hJGD6XzJKu`AAj|YQm&1hD;?~s-)!x9@+hr2NGVzu5}w~h z6rt~n1Zt}BV1`&EhID=){5J*@L`R?vWl^YRH))0m&8SH;P3{se!r`RL^h;hsD_Zki zsFmaVr0{h7mNKmpTo%(CjgZT(W)!MCikbP59?}g;LsB7fE_d3|L|l5DRAJZ*I;xWN zio>;j(F8;B9-05>>6OfKNa~=+tK2sRb72A*(;UI3qtsajGhYKs?Nm1VI+Gx=OKX(R z%W8T7bx4K)-6B1uC^ Sca2OD 4WY_dCn0Hn5Oxk-|kEJ%)Kkle`+ zk?b_^yZj`Uu`_wp3<(xx!-!JRYR77(aOqo>=8w!k>+Bbv)794wm2MZ;0HYS0+{2)L zP@u^R`@E8){`!z8tY7Y5!*>)?1x1_8$>VY-GQuR>8cXLenB%y(+IXzY?pmKkoP1b& z^>>oOMQk?<2I2erULiD`PUZ7+e>(f=bJHx;oIk|lfc^IciP6xzk9ge09{kEqEF)N^ zwN(uYr*o^**LFhC2lO9eijCD }0P&DMX$LLQ@ z!f8YV Twa0pC~8jrmm9X)$WT4FP$!gg!%P-0do0Oslek#Zkky=q&ic# z6EKY9xcRi=Ndu4NaQL`7UmG?Z#Bx#=XP-oIqC_zpC9kw$r&P=(wHzGZ3owPh)PXD( zsm}t(w0Pow54;V3*2B6CC(hVQ-jEX7Nn%LBtf z<@U19iz5jpK!S=E_z`k~>#tFuF*wsWJ3S`EKr0WY>}_NoBwAo_%SuZ6piv015*4!N zXe>r1)G!IOV|0A3QC5W3Kad9S?aW-Z m->C8~R2=!*L15<7DWN$a+Ilx?0wqk(r?He0BRLj?<*j*gzDJpouaokWx z IHs4V{L)0&o@)BvsdL*=O+z^A@jg~Pg%(9fBfJkPr$=|y8NuP8xcf*gt4$Z zYfVXZywZu6CSRkOGGbck@Q`?#jbB}DeH>+m>%9cIe!~9HPJOjJR)|DH3~D5zPnqTA zPTVAwjK_}9T`=qEBf%N~4%TobY(=?PHsTp!cXyBm+>r2huBfm}rn(40qT++^g154p z5c-JZe|5bLuspMfa1Wd?Sc@>)V@lA;b1}l0=@(zOLL4y~qh494b0)tA3k-lB{v)wv z)p$gT7Gz%T%@9b);`EbD@Sipbj!up*P5^Whu)Se09h5MIGu+diV&c;at2y^V(%p{5 z9m*a)(=?v^Q^Dd{bdG6x=V$Yt0M}=w6%};LP{N2ECrlmeJY|7~tx9Asg*StG8PP9Y zMw+qXrNHNezVN0>RUPpkDsiB(twtl^IBSpKimPHtSy{EES1t>PVqv|}mSzV0;2$V2 z#`McpT|Eo^s$=O+Tx~nGxP=Ypa-o;l-@ha%ubrNZwYD<1wq93J6)O4A-i!aQke@qQ zu xm4f$Q^Q44$O=T~WXSwp~)IXZVw6@c3tK zJ04mQ%fX7&OAvJ?m{Z8}B}yMfS+l3ER8!+!h^C7;e8VA9GT{IvVO)0)is3L&!i zHGft*EFMX}qatbJnwzyRiV3HO{TUs#(-XQt<0r>;aH49DowL+xB*K1k4La*-z+Ykk z%-xr&|HRv-#gD*Hytc5anH^Wv5+`&0Ks`HTM21g7VVfQtgdY4!cr1vAXd^1QU9?9T zl=!RS9~~Fn>3zlF&yjM0xtqKl!(NiDmr#3RnVDQzB)$L^z5NQIX<=*Z=2LTT&{9+B z{C@tMUq3pba1)$U^N`dfamlldX8I;VE8^>#Ss^s>!-40wz5QVlOwGfK9b2^2_)V?H z(Mqn~DDYwu>!r|Rt*R_d`3}TbQ@T9N;&$)9u+?O^F&c6^{oYYNitTato3#epolWB% zK;o86BN )VCWsdh+Hs>pWB!e{lV0;OGK+;^_YNnEs&;;pNN!aF0zBcily8j^Hgk z&B{n8$~t2d=7QFby2j0|2knH0!DR4Dkm|QQ&U-hQ#a2s3(*4E`Rn&_f*j|nq<1=O} zQFy$M8D7m<%9v+(=+VAolhHuP@T9yshc+?E&yZ2w=-L?mZf*vOV()w|!I(Cjw3{!i zU)HEbzkv{~+<%uTMKCd6oO@}>v4NmTRELnMLB_<;7<6LS3!5tHW=uTn6NPN$CW5TE zaQTHeScyNeRr?4earK4|2Z$ okvBR!Z98vCTOJAb!`I~y5ZYOUrdb}N;fNMlUX Xv_DVGzm0Ps;6Pt-L!m=UM*z)TN=KnQ8M#CTBZ#DInnDo!kp!IDn z1_oqz-FAvMe%P~W6TQ`pW4NW3;OJ#xo?2je3Ua)s4s+(@aKR_;ovU(G?7l_qu!R;2 z{~lW87F=Yzd76`LMK8*P+O9PS(WhC+kvdZ)x*L&7c;`faLYSXNvtig!>UK1XRoO6l z?ykqCNhLesz5hj{@Q-#XpBz%UZm4bqwW*6rG-Ff8}4oEyb^AqYN%XHax@qDUow%fhUDLKWfoO<%(`nd%h^ z9z?U=EFUyN_P$by3Z0%Z!cUr;AxR_^d@DsFGfy$Yz^!wWUZ7+1>j;}7#b3| z_FE_yc9RHmi^ty-)=J|y*=!H%KKUi=Yvc6z*qScgd;ak%5bYq>U2r&?Xj6aZ1LFU= zvpxfog9P5s6I%I;^%;gxQ`ds?Cep9#R&1X*Ybx!JBpIpWy(Uoo7Kwtw%ksD~R$k=3 zbXo8(T*JmwiNDD& yAM9|?M?>#M?o`KXn>sjR7XZVdJfkVr=v zd!N-&eM%tfD=zZXo*ECZlh=<>;$o0PSss>jB8VobmO^U_2j_N4t)-+fv}1xBVfoL0 zc+)K`_@~q~{}UAkVl=A+m>=aP4BBl3!-cvCrc=K$-(mD^SJ~=kYq$;m>^;aOt}0P~ z6HEsApCK+Rbm9n3>XQhu)@tXg 7&?96IznH#D#;>q1zYmniPB)=?Y(`T{%kmi<2 zb7G2izA*|vHg@@iH7v2p(IQa N zBEYM=lj-Qi%<48UJGRLT_rsKE!3jtOPSXxD@R4ANRk&}=)F@7U{CsGad-+$~?Xi@6 zh~p+j%kJ*i6TWl3+^LV!G-m$9m7ghNp8G*fJi*kh{@v2m+VcA`4sN(@{p;3#D7DKB z%T*5MM-@K9tnX&_d)sdvItYw9_op{inLz%>_bZz6N3Kq)%}`|RvW93Lp2S=8&p&Fm zaZCoSe_--=pNoqF`}?LRMxUNYwu*PsUQay#HCDj9u&s#EDLE==#LIq3fhQnPlNXOC zoA6rNV|4W51h+6;Hra~ia@mkGbK`b5vw`kT2~LP{^Ofx-W8+!(D`=dw z9wNrrxJAk%1VK39(-HKJ(lxPvZ1gYB1Tc?B7 {$zhN7O2T!@=Lnj;D3SkNrR-B`7mg&*str*>AL^+Y z#vj;ybvzH3w-X6MQRJ;kibLZB!a0o;uJ7G_n1rg06TkGkir~btp%vDmD?r>N`hY{` z9L?>juo9OxO-hwTs1xc_lcyi)dE0@4QPQPqOs;3>#m^J^ld%{VM&P{P9`PCGq0PnS z=7=rOp8CBREO-XFAwO&8V}V1V*Bg!_6{`bWRRIchKR-xX=3#HI_Ke|*i`L=om5_Fw z;q`Gu54nQ=%ox5OC!mPoZ!NNvD8XX?S@H^?1 w|^;w7V zsjlfBcA&D`J*M!bFe?~VaN2f)ckdHXwiSrgT zkeo~D+06e`-0Mx=UZ4HuAmevR!P3~qf5%u@)NWIXCYlo&r6uG^CKow5yTvm~gg&Zh zt|U4Fu?h#NW4txSbXsW`UHnljWzR1xf9qT+sj^G5_-DMMhM?@F0hB|;9cXsoSSR{X z3JGDV{k*^XgTNGO##5;Y<^;vusnT71z+hpVFcd70*zz>LcGR;|pFY kZ335f#EO**Mqe_qo zSVF#3MPbZTh$9q!Wcd5A!|OB7dHo``j2nDY31m}RAwEnorj#&R?EPCy@=6sy7d_m+ zq}RM|Q|}4#-nm^uBjzaA(w(Z82dh19C@&3)b%-Ct#!kWf55Pi#FO`A`)w@SyQYc8B z(5hZ|B?3{KJC5W`;{0XYJ7)ZgvX{(=Ja{BhQTinJy#6;i^kB}Y7~LJt?D9n|rC6Bh zcw{NQ8V>TDG)v$5d_?)ZacM1Q3vS2$2nMK|C2&7ahiVgZG%5dAO-*Lui`wb5lbZMp zYWolAkDzwQW$h@Qf%3-E)($A117^tIznVsVb%uw&zm_M3V++V(HZ-*-{(mdOpSjy) zQ&y;QRQ0SR?@8}TbwlHL1m-Ggin>Zj$6G+h+gm5(-RLh{`vi+7t+mXAvu>#1zg~Va zDTm1&BWFh@hr`T}*;vEB$j518vz) flu>v6HDU2&$g2UbztJ zz&=8yUnXT%39)AFG6V!@X+iQxN{I^Yz32!1r6}oV_%)gkE+(bJzBk(VMWB#8ve0Lk z3>rWry2TkZ>qKi|{L*|6TbmhEVS`VdOKuUeOTkdFB(Ze={tWNvt(DbQCh!5Yo9Z z?S8J+kDC;q=&Of^$8`04!;5C!%sE%P%k);I3Y2X6=C0AZRGa+{ctY)$u@6Vpy~Dvp zU`NSdM~SjhSu*wwU8`FN0&h<@CLwe$t7 dl)_v(_ zQ* BV)lWgQXc5zC7)`J%x= Avh@u9$Inyl1h5ze!R7s&*uOg&`Q4Y=Ob_-V{3T#W*7;82%-iuzLVtFEHKyHC1 zohw~(G|1x3x&bG31Xd}#HM_14N&uFCQUs-KT{%2i$ggh3KzuGpj_@rNPI5dOVzCHO zU>2qxo|37uTbVI69SUlN8Dy%BI?q(ej$f2IGf>}OsEIi@7HN^aUdxL$=* 9moEszY{#Y1#rP*0?ZWCSUfwUyNlo3PJ7bD{?4Qc0YOFq{b zt5$UQf3v<`Pr16;n|rptB&++CP%8#H#@{UsDXOGA@dB+-krWAxztidFL6hXvBB;zP z{*Ww*A%lo&wl0X0J2h(T`FeswLhd^?G&KyRiX%kHkHjfCs2}LI^i9_*tUx1b8Z52S zP S!nCuvppKnaaYih5&!j>U>bTfvSUVJ^PsWosxzwXPxBHwVr zsI!GrL1*ocZXF_HA_?CB(EWc_FErzr`)wR6LjB#^NxIHQMe+mV+tY3;K?@7$CMv!U zkJFyoa-mlO n-lQC;< zvBuUwRrrZTz^r0!kb6HPqZ4$1!*t6<`gVWS;^Lw-@tB1>hV9I>m=kvmn}lVgV~6Ve ziWY}tKo%+znpFKgAt}(j7#uW_q-vmQNCOL=*Vi*Bm61UUxIu`ytn <)h4?CpVoyHy51V?GB$)3_Z2(7k(|h zOwMGUdd27u?HEqq>+`qQ2t!NQRtQ^tKWi@0k1KiokTF`WVP2jwIX#BU4lYi{Wt`f0 z)DSCbqI4W&sS`O)?J`p8@ZgZ#0sD!iXpXIps&HI(4R`6N#B(*MAZe9Yqht*oU3Pb8 z4Kmc%msEgOFjVB0YyWVc{J-okBkQcN#ne-gQQ`u`@Y}Fijl@A`GCU&T#WHI#n ^IL&)$e2k@NAl@(VIhvqPM z!!`=Ry{&y1C$9Df)WN=d-DtAg@XhgLmC KhH>?&YvN9E+o( zLKmEqbH=;JA?RcR#kUUG7#kaCe4y4cBK%Dt1B>P*jZ0XrE2}XWSWQ;8w4@RGCaI7h zHl`Mk%@*9b4NAT|(d>mh5$zS0H^hF>Kv7&J4#M6Q%i-=by z4L5K()1PxU!@;b4->-I8lUv3-T!5x9kx3G-1@;#tKL8N$uzX@lVmes>a*lvqSeVN9 z-k}0N0JER={Jc&ITC^oBoYS}^dCZQ&4$=NDJR+?I#aVewD;zE!>l@Spf#?26*FbBj zD$^HTnw98pwFZY-*qzFKgb8-|Nfrr8SU9h}pXsgN|DY&R!Y&2 Y#mfqKo~iT->Nr^Vc_3hiqH8OP!WG(5!2mHZA&5@d8C6j;bkY56Tqe6i(VHw zJM0Xo{i^+M*hgC|KVQ>bTP_@}vf2^RSIFUxc|`O2)~WNS>}}x?wFUqIf%i>2V{zyr z=Tf?@LPn4d#ZQYCAdaKFRO5%1AVtxZ;xbS5D0EZ4?o1!CXwcgTlY)D+T__VbiG@)r z5{UNDhf}lGk=0k=)kqa5<#M9ht*U`DKab?VgzUy-3YO*wf{X+)6z8Fs`rH!Fo~n@) ziDJ~3wl!1#lsG& 0Zb91Q7*<3RDN`SW3KPkXK{|%uR*@rVBM|jMW2UjY8HDASA#Ei8k~~J%3NL*LwJ4 z4HzTJjA@q7{(`HB4N}svo-rp~Y_YT>j;n?yze^ZFXpud;ks9~rYr*uh9){a9(k14L zuCxmiO*yhH0C_rd`8P(}wqCUc4xZIBU!xiKot^{me#DQo;}-nma}#cgz#>GF(KP2E z+iBt;eo>F?StW(`L@H=A@}iK5d@T!n3t|K}#YXWz9_Nlw=q(mW6Y0s*Q>drZfTM%F z+zSTFmG%roD)40^gfQCP*HTLzmx(o+r5={k2qZLy4rN1v3}iBbqZHB;$714_M5bhN zOa>+Oo&4#92AEcTU;-EAk)pcqm#jn!;Lx5h+Tm>G{$beW!s^V|tR$ O3>JN1SfhX4iYfy43Z;NO3t5cSv`3qzUg&yhvtvqAVZ zI#P2|a2QaLp Z4|<8 zXpq_T+Onp3Jgq 4@ZlemF;`Z}*@XFW@N)51&EfS?Hw8wO=F|YA7aat1{C(mNb%U0%Q6B|QC z{E+K0Z#&2l!043d&9aRL8r`m$o3!7 9}pGRv$X}3LsAi%UE z3>~4;AjGHB9L399FWR`Bs3!Hpv{^mQ(S!SmhiU!!sni0;Lh78+tFNbjq*71*4QYvn z rj1+zdIqn2#nr;we)2GPzb?k zL6_B*)|F#NM S{Tyb5aXn(CoiqVYJ$M8$>{kJ{4L>*T9A~@i zk|!!LZbz0wphmT>4#r<*eRF;xGUYd=h64}LR)t8^jRE467Rjnt#fh0t)5?K_MCkD! zW<{CHjmBVKZH7hGlVc-W9$=WBZI3z@Ra-s--$-xoSljl0xd8t`eZh{ctVtHDomNWO zodImtN%yTMYp*N~?6HUqsdVUJHXZjR0S(xj)=iO58G5qm<1$N+iSVVIZ(7$0fp5 znMFy2kqV5#g3RW(i sP$Ub{Kp+hEs#f`35L0mEN@7EO0ej_EtKG*R{v0-$qPcnC zJdc c(e-?^Bzx{?x#~Q*{&pm?mozvb@XzuO5V-wYm2H`2{&zYA;xpS4ir~Ne zbxvKcB#z|iIb<*)VHaabp}kEY>%kce08F}QE^!sE*f4yIA&FM2oydT6gJqIE!Mn#6 z%dE2|YuEE4j|NN-+z2fIDcCoV(_KZZYf3(*6jieel^LM$68R4y6Il{@##+K=P5y$7 zz&MggZyr?CkH`V>gX_=Xzwm{}wt<;XP{U!QSgr^TC&Bgnwn*-$v&RBr3{+?Fqlv}~ zgqN1|s8tMc#!^&B$d~KBWX8&t7J-50=h}K-Zr1fi5h8L-H%l@7PKTpOo5jv1KIH!l z@4i{8u+VNJ??MPT%gfDg+*DoPDutY X8W#{!IxF7H0wH8(T DDqN{FdRZ J&YbMoOf=( h>j+B3JuAG`&?on_bg29Hh9rODPnJySuxU;!ujaySrO)r?^A$;8NV(gS!(T zI6wFMf6qw{a**sx_UxHiYu2)48k;gA#Y)Kg`G}Zm?dg{<_@Q%d38t6*S<|~Q5DEy8 z(Np(7oc`p6HykkDqJ59Pw+v9ME@J%@YiXmfT|=X`6ftj%sm~3ELkNHx#Gu ;694Z$l;kgYICyFSralDqMI<+|X=J~f)t{n&G zpruI1#GSrRc~4gC0%o^ Bpk&+PW>kN_`N)6bF+r2!%u_RQ029Y5QIPw1V62L?XJ& zDe&Iw $->lwV8DlKINl4r}67*>?h+zX{QS|>XD-?GK^5&a#T_aZ6?NH|^wnq7; zkSNW$piqTSN-Nf4BY~PlMZ1u3`i#;eXgcxTCZ)Fw+De-KQy3SYo&z81KTc)S$s*%q zwIS!)FO)1V)1oxSdbRd3M9|Q$XQ3g~QKJ~tkSzoh+CmhDwGs;$te}X= rDkGF|Z$$!s5}jp|RBH|5PCrMX z1U9SvqQYpDp>J(RT(y)I>**;WQ9qK8!BI!KrG_Ts9(W-aftk`IxJ?e{3o`FxkayB{ z_@2S)g0nbZ{h2R~jM9bX_9%OCS7vOxDx+w2`d<%gnPcZKR*JWB #NDqBTz~ 7#ehmiYuF06{l1)Z&lXmO-)METs$h# CziL|3@cM46ln`ra03XYvi)%XmPPoIYedX3K6=uRa^ciY+m0F#Hs{$04>94 z%N&=4ss;gJVP^moOsY~TA|;+99nsJq_~QAV*TDfrjnjXJH3d{`oSAAOB4i#WWfyX$ ztg$sFa46}DbjB!%tIhZd<^6Dl_Y@6;jw9T0L3R>w9pw53Gd)?@(hpFYQAp;@Dazw{ z&;o1Yv`vJ3CPn9QzswnU;ZI@Fr)w &ZT?A($|x3K4h0k%m`ySYg-{d+3QZ8oJ5Jg}W4JHF%7hj#rx9+_h-^No(Ply| zH!DUMpPbf6#sn6=pl0to%?@I0>kLmF!In7W%*&G~)!ct~A>D7U#}8+6%)a@|Qz~EV z-HNe5-JiIrmM?;+0vCZo03|(pDp!or10iA@ruoDh)|$ea_Z4e(F$??ReR$zhAe%w? zg-xA7X >}h_% z?=<%HdN3siPQpSK<`=h(kRZ7-v(g#ONO3#T`(I9X<|YEu VnhClCLP$+r$Cpj#L20}6l?e arvpU-j`|6DA>1%KgBo!*e6rg+(RoG1wc 2&84Et vkD7LK-JMYZu&n>~-zfspmO)Xe`*jOm>b1>Z2Hs&($E`n}KAnw%&?dR?RN{Aa800 zb>o7ma5qe7!R^_rnkF&9^5rf;%H6aOlcx55Qs3K|*x1<0AJuZjYT;yFM@KV-`;8gm z_hkR0fc7AGu_=v|{tf(xnX?|1_`SgZ+nWI!8{ywwN6c?kI|TU>X36N5FlrR#pWmPt z*0h39wZ?+OlNtQ5E#&i{4hsL2YkY~596K+#)zt+jm~q6yGbY*JNLGi1m|4#QE7tQf ziG_(s4J$bi(i$|h9p9tTU~(>c=utY~t}Zw+aoBaz%p(GAS;4_51QmKnP8Vjb)hF(P zyE9-{@SCA{>8C?K#GrFOks+8$BOy6 c_Jr=TUzd$?t0W44r#?l@T>`~*S}1N%L;iJGeQsSG=(4tk ztI=ok55z5?slJTSnqH#`U_q()cIr>6j%?TV$cTZ{M;DkeRqai}i)fIzrpa4F97y@u z2qghCT=Z*Xa8ItqIWNruK#|dCy(IrK_Rn()UT8vhV3+3nD-zcNjo-5V0MeWyzME{0 z!SDB*<~Z`DFLO9_(A2OQ#`PCWpT<*qJRv2X-d$cjfeEmmC4U7{D5K5~&9=fEw3fj` z{ZrZri*i84{%UtX;B-jBMi~Nz7W8?z+U^e*e-{1U1C02@4e~H<-|N3j|GVSNEU>}w zhI1kGNrl-T_kstNi&GN4WIr=xsJn`NhYOTIY-FrYMKZ}P*E)cLJ|tc07+dY6X2<*e zsZ5a8x5R#VnVao7zRJ{<338{D0T*B1@UkY7(;eb1ePJhaiyX0Zyv-S2X5)jEY>uu% z)_d_)c%5`s2+XjE3H37O@p|g1nxW#u-^v~F#BKkX3ITQ>p=^?=xEPwWn|n&JX)!E| z?3x~o+5xQXlM513w>u%(D3f@lqF5$7t98jpwxq`X)v}g6zfF;fO;lkI(9WimmD@*d zU@3E>bvhE|IidB%!t-JG7>}m0zYa6k9y>+l?aE}Enp$IVc2eG}VhgfFeGBbjgCN5u zu+(8FH|mrmkq(`ehyI9vrY31ApMeBjF XC!uS0o|2*Qzjdh0XHS3_Kw4Ah7on mqj%0K zhm>KXb!Ofa56p-Jc>(LutDof?ChWq21WT)yLuQLO10*+j(EZveN>_!M=YkUk5x*$u z+^}xa)!J~ZYEXR993Cj^bV{@?0EcYfw2vGhU<-#8Y zlN1@uUKaU9h%G rdxo$s%^&sJK&J8GMn=N8{nAL>6b{;K%R~Gb52~4=WNd6Zrf} z*Mo%(NM@q?u2B(3Rh$+^=XG`U{Pk-}>2LAvTih;qqzsjM02p*I@Tg${XEE9HA&XuX za*o+W|7@G*fQDOXly-(}InOCm0Ou!zH~m={enVZ|c!jezOO{S|*X>C>Xs%V*1U{x5 z#Qfa|VuDW;u%GDNx4(UrOZ+G`xvm^7wp_+f1s8~@6AA $QT@e#^3Ym{|Lf$$8!gHU}H3CN&DsillqF(c*R0&* R7 zW#!Ib(W4E>w~MpLdYDL6bs|JL`Zq!O6XzFdz_hCjzAgh2>TzEKR=;O|;P_%JMUB#C zwP5Q{ov?oJS2dE0@XJ9t7oAWF$8M;CaluNuHIL`@+MducB7H(11N4pE{$IpSphy^) zU#94L_2OIc6kv =7VWaoSuFE^Ps0I?`-k4xF2CivjHig;`d?w-3S`Wg6RYd!NB zyycMd@iFQ2&k o@@Bj81&+l1YJT^bYp@qavm?QR%^zaP-i!6E*^o`ko(ovk7# z*TqVEX|5VSn-fnNiGBM~AbXI4=SDMiJbE^fVwbiibWZcXqe<;WsV2m~w9~Uk87XEq z=EuR?LP_J=+Q*+Oni~~g#{7W45_lojSA4`wLHTUBEU?Pgm6a6%fvJC_KKP%pE*9RI z-!4nb7d+mi%t+I(Y7*=M#Oee5x9WFsv`UO~v1-Qv1k)nUliXDS%xMBO<*=G@t4S6Q zgv|D_=Mr#H`kRzu7FDenE+MPtMhM3bDsO4E09<=bWNC5J!D4cY2b!=e=ET?ScJ>>v zX12EHcq=(mjKSW?h-E p9h4Mh0Bei*+0A5Z%~X#TIowppmjP_CL#}x z1F0j;cr<2|{vRs%f)Aklv1A8dnn`T!ZX;i+`+4^(7Vz;gRKJ~6uif~x>#B#w_wwTt zHc~=JKEECsn%7i?T-GKuvIaW|<0Dq@2KhP9!Vl{uK1(vG4RBo?9DWFqYK3lBs{CO^ ziUutf6ebx3BtHf`{I??h2xJ?Kj>p*7ra0zhSIml)Y9WZsz5WxSQ8e|7oqP1Q_; zz23r3SpE&6E0ySWAaz&b^N0&8N|J#N6D|YiSnOX*p9=+?N)~GPi?o`@b-YBHf;PVE zi@m<*?^sfZfzU+5+!2pQP3%8>;T``Wn+ntmu}eK5u}qfqvqxV^by>4+o5hGFeFk$; zB7r %?SF 9Pe!;tht=up&Y+z#e)^RpVj>_jW9RT&A45Vr3 z`#OMcDDb$a?oCX*hS>jq6xD#BzPR#(!LYC#*4@%MMpRV(XaEv2|DbYlpWouGRKf%8 zAbTPM)+zl9v%UxAR~HM+LAvo6LV0S7rdA>>1@xJvwXENjO{xUwjCUg(_9a#(C|ybs zvJ6N_s^1%T@tEo{$hJ-6@cRlz3FSEIyA)WHKb3Yj;_EzU!7hywF@I>xI?n59ee%qV zB0l&4R&vFHy+% I 1U9FER3DNI@-w{y81bjD#~gsoAv*Q zuiix6g=pOG&@L-uKZU=B5)Wo;p^$F64g&%y#9_S%{xXO1S=d3DkkmeGx?X6`LT)Z8 zI@I|nfTuzI*i$~*G6}3FGKd(7o _)4?` z^Dj$73Nri8$}DZ|_T0;*>^)S{aay;1V9nPDf9V(kP?Pn?m}Pqm0jtl=UZsK0HPEPE z$-=rulFFP>yW3?oVaHdLF<@5RJVmpM&sQe#sodjVV?4cKj*!?}G6Vl oQpZXa?-oc@D#I+&3ck$MaiHb=?yXjUCI`Iv<%F08S1aKtjT}& zhpV_(c~H I!RP&uBPccVK0iP7EKGRJ0t!g1ruyx~(H{ z^cfOO63!+^=Q{K`#amoV3SWlsPO9qfSZlgo@jAxAXDPb7y1#Ua{IskP#G9f_O8muR zJ#i>V+8+qORD^CB#|A06je*g$hqka;(>4qEuoAN>G8a=!D6igv zhc$}jy7=y_1!P`sMA@=%Tri^+nNX6eVp?tN@`jQpN#4Yv&fWD><_VjS<8@{c3idh2 znII*e1E3+`ZoSrJt?oTnDgL<4`Fnh)g*t2$$Akq@8R}1%Wf3}+(QFYT?|P`R7A-I4 zNv(nxL-#wRHZ20x3!7g*KLk6Rm$o=eE$z&U)~Au+Qowy$nX|WVh5uG30r5nfRu`|% zZLX(JAn!{ Nq86GKPAk3{==1EZ_lm~v zrN(BpIcR%o+_kNaLJV?UfB2{2Pn-*1-0 ~n2@9N8_1d28e0MeV+%F+5$N4fgsjqcC(sz$FN}^(s=a`$66l46zAj-Fa zb=Y$i7_QZ(hix&XA+=9c4y)=jg2Of;iqGgbGA{Sijx8}uVQ)|8-%d+)^Kb;!hFvHu z{e?vgLdcJJI_5X!UiHL1>ml!@&E9_gwHfO}R~||$+$5qZl^>TLna~@>vQK^Y`*>e) zooP 6s=CmmekLu~4hb zgc@_?qz8JcNNnc&nb=gd_Is*qw1a|vV@t5$=&z+sINt|*=?v{B3o&va+f_qwA);^~ z6Ujku-vei~D$37zuGe200#fr&?$Jo7jFKrt;SQ;@qKP4+I-7OQ-8+Oow*^>eFID}E zpZ$Da*`r!evuv`cre2?HDLPx4_2%uBhrUq9V2T924fZDRtQsErnPVE+L18z;4ZSwM zb8Cg>3`FZ{LAMj1$9>Kepn#CwntIpLA~nvyww09~wX`U~1bBiEHr?OzUavT<7hhaP zr~Kc*bg%GAL=Ly>%-sU+AK1zo`Wk~tVE7KGc;snxpMJ49@$M5KU>!s?#b0e$@vFD$ zG3$4*GO7Q?-imT+3C+vxWtN(Xz+RN}MSFqEaSXYVSGVVIGO)p1ID3`V=; p%x<;ZL*dr6l@ z&L~FH_l1J28oduq@%Ko9b$`I^rLaREWa|AY*gci`eXD)2IF`b5ZCjMno6D2s_peb$ zl>3R%$s*JEnDjC4^hJ>J2m{3_?h`vKt!W6$P%y1KYtRsz#9=@tcQ+ZJt0`r8IK-6D z$v-+Wh~1^pihE2OCoDN&^+lp<#GcsJfU>&4t=zt;49Cm@;Q;k_Km^i@n&}`6_+XAG z5%zrsxQx)rlC#Z}^t38m9gXsk)Gh}`$aNx3Yqn#Aq3P>19R!oYWxwVRsX6RFt#0>l zrIIf~y^~<1@rCPQPLwC5ACt^9#sBQHP^fzTvXxJ07f?^xkS(**(zp_?iPCiW KRL4UN{Ne_kq1Nv76j;dZoim%eiGT_~oYji(Hzxw^_fY-goL1 zj;*#i_u2OO;|*M|9d>Q!+cRmqjuCo9?miOMELeOp)0#{$B`TX27SY=>7|ZI$;< z*i4+Oh12jJH~nT7e@zx~ $rI z@2+>#x4k=YFC{(wa=GmPqW9Hypc37X^axj8+T);$cud%UITfrdBS)1j~^@0)6}?r>DNT3XC(C4ju{fF`DpV3O|~0nx)AN^ zZElkvYimHQ{}*VB{d1fujIH%KoECpq;Konf30>>swWOFS=nlJP{K*IWHZ>Rgd()&F zjt3Ds4CGumU7QkbVX! &W*z}e{=cvn@Hvl4&xFNFrS1eBp0b2|~^h*SYksY)< zAbN}``XIxA46w~Ap8LS)d27-{;6z}*P~aB{2nZQr4)7t#fL{MieD$|afA^bR#_n@= zxZ1~<#xJ)<`;*l%IV-)@HcN>87R@cxq2T0 |V&S?UO??;{UcNs`_&JNl2bGWhf&nVz9( Q<{QC3qE 9glPZqQ*XUt=_2FaVHyeu?z78zKe(w0a`Ih||y%=E{7#nVZTtGwd3RkL$&{ z*XVB$?>8P+g<=Z&V@dw5uw0k eL;J$Z{lXC&T?Qe `9UDR+OCigHJxv$gs@#W~ zxR%tq0BcU@=2SOb%dZoG*oROcNgzw{H-eLC1u1sIaq3kptj!SgnJC#^7D9YA1t(bN za>2cW@^PSdku5h&o88lGKwL&(kY$6k5dG~a9LqmZglI(|!XhW;a}T>d`-^!@dyY8z zVf{`xME;UJbW@5bi}71rCTKHynowr_Y^x;Y(=+PoFo4{7d z#S*k~>J@mHwH9n-}GRqMhoX3F KEGtFZ41cPiI!xS6qcHDZb4Dxr>9;ia38q5`Lw>m2N8!nBx zJ5t|p;q}sG{Z#!t7it_HpY^xuwnJE0= %f^$X1gZ! z_uTSBCWp*(GxYq%TK|?Rc$IjLdzRk)h_) ih w4A-%vwa zsl(zu*?>DTSCh+SD!~nqNsaBa?#&+KXUgNWeECbo)MaXUbMt(-zL%S?bZ{r+sW1fb z=e4`Nie&$hoXZWl&KgV>@t~jZ^*OMdsMQy?yQNDaTjnu&k*Q4)Lw2HUI=)OpCG=m5 z3X4UqA=FxJnc8Rmk(TL&1o%z*9N%5`p1DSY#&0vs$sG2 nd|ztpRaXKTf(jP1yi z{NE*a=)y0JzaKvs!^d`?bV0JfzcJP6m{*?1qr>fdwq6p4(6S$To_++xNgHtdJ-R!_ zM?d4fe<~ip2XSB4IF>J&>#_O_FO!41OWx<<50r?~U8If+GK|$~H#{bn1F32={x(u- zud9`l9-hM*`gcA}4AcU8j?J?LZI)%v)2^XHUyVg9>Nq%0eT)l?SlUgy^z9(Q?LyZl zdAWvshmXY&rk5c>W#(ML%i^`mocApH8e#6QUyZY yK)NHU}AltvajP*|Z?2ji( z8!%lnWm*ZfwT=dHM11+pUQ5#U@29QX(oQmLul=-aywmobyV58p?D-08D6oH<*cRTU zxac>VHQ%4a=#5_QPudOrd`2Xfl#YZSSmK0SXG}mZTM7syx)yYry@M;~6tE&k3$;rx zYk6AN_j3LP`fPWfe )8v*(0M0!S-cQ_jx`nD*UFMnnosV-E%NOOPUvFkryQ@HIm4jb@O+E#t$--MH zY8JtX1k94@4;ng+inj=JKgMjHFY7>FWsNyJKlYSlRC&!rRkla9!;0)2Gyn18hvcU4 zo6Vc)*NvyivAnS4KelT;lyK{Js!XkBXWstI-F`b~+=d@MtA& 42P4DPg zp>@b<`|4uu^TJUerEJy^*`h=MuRAn6KIygokusctD7`X%H7?o`wNowK4{Ms>4=s&Q z!}Atx+G#25Bjb2MIKZM0a1h66A`>EY{~)=#_@S{b<94QzS>@@w{}ngO4W^^}=fblR zi%322ElFF`klo)Fxd$0{8ZzS8KNe+Jr9kR=(Mn}BkWFm<-dO vo>0csZVT9fw_Q^)?<>{|Bs;<*}EYvcDl6N3PNFxKhr3P`eIQ_n5lU zA137DL;?#1pt!p$IM&>__2U$AvQ#{lpMyugNO>tUn-AUf*6eb4YkZ_92K;=5VUL#T za+wRIBKLSLu1M!a>2$c=M!nSMwgt^LG1j>)#+t$yW_W>s!Fk$1EI>Z+7wAq?xV0YY zr=!O44*X=5|8~p>m|iVGPfxwg<4N^Z{`V!vEt%s*dR(QsVkYOu9Rk>73bsQc%$c%1 z*0bYBp#Yg ^=WwNJpRVD*#Ukr9ZQSr6VJIr1|1;r)_`_HJn`d$ zr(G5?vRAigxou4D>e(M|>zN7% Efdo@!bFOY?%HpwWqtGk zQhpjJH|O#wDW#`l-r`d{McuBE-ShwQ-HwN@2017ISC`Q4P{U?z>X_BTua%Pn*8Z^6 zi8U?0D&ger)<%<~2%+NmrCah@Zu?zi!|&3ouEZs>sN`Q;AQ8?}3~MiEMaRyd6(~TK zflfCHASyhgWcCzw(!*oBIfJ>z1^^g_0a$o=-=D$beN>`f;B(vuWIVi2#tE4 F-RJv_!ZVowrq_r5>+qx}Mb zyhIvqT4;p$4`H=G285cdyY!zITF~ILl9G7J%tv_fbKrUoCiIgnMN>^zs_#q5Yj4KB z@t t@L+&A3XlD)Cefs!t)j9CL{T qPUk>ndw!S1E^q@uWgm(f&1$HjkO)2ArVUf!fQq z`>R5<$`zgGKI7<3f8WQMcl)h@B}IX vi^&%M^#+nciUw;={(n7x`7;I&9qwYBV~W&^1yJ0B)_bD z_inO=Qlam6=l6`8c2g5$l(10SUq7 SKk%^Gj+cGIC^+ee~-^gtMx|D z&58>EmhBsMB_VGKKh-z$v2SEK*F||ohqFq;U9M`{-MO*eM8euP#}yUbotuqxkR* zZljUk?(80SzJgo|?oQUgQ{8?Jr(x&1+&0R42Nb`)3T $5;oqLjP&UXFw`H=JhXk?qJi zZm*(i@}@gAM;7fX^ID%n#o=!GJYVX93SKq^Irf`MQ)_(QqgA3B8NnN}&ey2ea3pi3 zYoa-M9p