From bd64cdd8deb356e3192a568476b9e1aa0cc41486 Mon Sep 17 00:00:00 2001 From: huty Date: Wed, 26 Nov 2025 23:52:23 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E8=87=B3=20v0.7.0=5F20251126?= =?UTF-8?q?=20=E7=89=88=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- components/ErrorBoundary.tsx | 11 +- releases/HTY1024-APP-SKR-0.7.0_20251126.zip | Bin 0 -> 93421 bytes services/geminiService.ts | 11 +- types.ts | 1 + utils/localization.ts | 14 +- views/ListeningView.tsx | 145 +++++++++++++++++--- views/OCRView.tsx | 64 +++++++-- views/ReadingView.tsx | 75 ++++++++-- 8 files changed, 265 insertions(+), 56 deletions(-) create mode 100644 releases/HTY1024-APP-SKR-0.7.0_20251126.zip diff --git a/components/ErrorBoundary.tsx b/components/ErrorBoundary.tsx index 0e8c77a..98590f8 100644 --- a/components/ErrorBoundary.tsx +++ b/components/ErrorBoundary.tsx @@ -11,13 +11,10 @@ interface State { } export class ErrorBoundary extends Component { - constructor(props: Props) { - super(props); - this.state = { - hasError: false, - error: null - }; - } + public state: State = { + hasError: false, + error: null + }; public static getDerivedStateFromError(error: Error): State { return { hasError: true, error }; diff --git a/releases/HTY1024-APP-SKR-0.7.0_20251126.zip b/releases/HTY1024-APP-SKR-0.7.0_20251126.zip new file mode 100644 index 0000000000000000000000000000000000000000..dfdd161012222094321f02579f1a70732b507914 GIT binary patch literal 93421 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

wicw^|-S0lI_~iKKY5e}a z*irrBpC$XlH^%qx8qz@lHbq~d;NjyFj0UIu3+nXS&D|9AeF=MUz4%pEzex`X&!PYg zb+Ns!VH$#?B1QFbGVjaR8*dHNvEK{!UxA0S>h$|R_8bsfi5(pZ007T$005T%Zl|!Z zGd8rb^fYv~w6p!sy<)^i(+OKV^|s4bRMVk|RDRsq`K^aOGo71o3cJfx(|F-ECq4a~ z0!S2z79qbuqLiE~5MUT|+buFmL=lOSjz}OPxjpIk1V|Mimxccz*NLghQ4o-XwUZYv z3_``s)HIi8%1zD}fKC^x#ZAN*^5|b8u30gwWvkX&bQd7C(WsE(k)4<{&8Dr6t;IXf z!iM1p{qIqU^lIHQKSInfvRGA$J@;6QA5(4U2gX{@0$-M?f23z+ux%^!(sej zqyVM@{ZG zP|$Air8khL*1E&`b*X6wMxUaz zVt|yYNc>4o1B0$0?COFqHnoFAQOZI`RK*)v0u9upF7||?T#pe~|b&NJ9L_>B-U^PedGHbXB}nXLVoGBN3im1$ncp6E`>A#%a!%LjYe5~uuf zAKcKUE>S2}+NY8(2)TAYwsfBYGR3EP4&10_?OOj+U#`U1Va9ZN~G zh8)$jze30?DR?>Tu@-9&c?CQRbNif`=Jv*fkoCs3idfDgc4X=K;~2}z4!&j7YAbuE z$7T+H>x0$&VO~G<>4J-irUsY8%Yd5G14l!}!)qrO3y_-T&*0_fY@N|8b^T5@bI+aD zE^^|Q24Ro>I1ib6IGC;;ra(fe8Wg4bq%w;_^ICHq)?)GXcF~h$HK)~RV1YzcU3>Pz z%;DeYBwUJ~Ea1Dtt7G)f-Mg6OrzaLM!k^H((CMytu$qfD@zRB>+!~`K?|7BWZkG2_ z)x^|Fsg*?OnnvuKUS1d?;5f;6W<5Xs4_X`4w@<+%730&ozd!gT@t@jTW6%|^@6Eg| zCh%@)i(jwv%OgjY7YxeVepd9=Xm4l)^{J=a0aA)n-=#G$qMl!U=^ z=a$nr2M}%k$V+F;z$*>Fhrg%XI^fh}FPjyIwqK68A)w$Ba+}22Z2ZVe74h1zIPZsL z{lXS}%S?q8I6v~X_LpLr4Kl=J&3_yMoXAbXkO%=zg?9#l z7ShtDnx-e@BgUl%csa1~%z}bgvWVWfh++TDa+sV`<3RY+#>d#pdZ#UB&H`Bl6&$EG zA1-$PCz|#w?}zOgni&mf`k?^|jQ#LU!Ad{WNDY8{gdd>HJp+gSJ2--sKX&qyOZU+3m;}AlE;u*Iq5FSFNS2GBRXKw4hW#J>%Q1*g-T z@x-Q;D5CtKKe{Dol#JWk)ScO8?9`pMWR3!*ZUOe;(S~ z*h?DhMnjEeEQ{YV)Nm#umra-BNd-C z{Fsn4keWm2{%>DU>egxk|PH{>r? zA2Sv)?!@qkwG}ygv=Bdi;osSJzKr{eEtHthqj|(%HgUg|tbszo9?AB!o;AHPfvk*v zuOx)o?0sKhwP|aq@k{#+)!6cL1lVB(Z-j2*#Xk9ILMu zBG+Ksc=dzxUt~Q9%u!-mLJh7q26f%3`KYZ(97psQA#S`tbRe~b zD|_vC(Po4|)M!zMLcN21_2mLgXib57PU0v$lzqQ&Ua)T1dm1+eY@69wfMDCtr#E16 z?umWw{`t^GxK}W{1SsUk_j5)I`|n13gLGoXIcFH*ok{8e=kOK_7RGInfJdi3W*BcF z*?|k-3HHk{g&-f&nwR;4kYq02q|1P;ODhTvDHGk2shsJy>(T9zPbuzYbjW!DekJB^ z&Wl0ZTqo9q)Z?{-QS!rso6{IIFu#@R*jp1`dZm3<%1Lw16$e)coCx2>I)6U-W%E2| z%+6EYD7-$zirg5eVG!uPCxS=$GjPp@BdciJbe}#MZAU8Y|lW8XvrkDn~+Hz6~e34n8w?Q3Iw#z13n-}y#2||xcAiR!z;fN|8UpzuaKFA z4gLv5fZm22QrRpt9RIY8C4fSnrwC{Y1#8f_KSGSIv+{#j^*5!gvW+D}u0@()PmCrk z5JiUWgoA!^>LiGu`sX=RSB1d7Wj;CB764;IFpM995I;&}3N8X?Am4)!I= zy%y*OjU8+k-p?A@Q;X&x(;BYJ8I9xL9<++VUKwdG?>^tP%^&M$h?s<-R80O33{^3x zmS94H=y(V)M4Q0Zz?JoOKsl^|E2^N)wD}`#;RyV7`z@Q8s-N}|Vj|({# zZQwdo#dPW@e2>daA_zf^A=OU1mr=8S)*DFu=)+%7B}h2{yb0?`-b@2V2*@MGTp${W z&L4sT6LX}@4VJvej-j8Aw`UneR=A@37eM##JOCYeZa6706qlqc0f|!0$CO4ha5kYb z?>!09sXZ=>lUptD3W95K3hUnSok>?s*x2~n-)V31=3n5Xh%cGu-70=fjM{0h{Tjkz z>3{_w2N$EAX~&b1K?(p$`v!QS1BO$%aDtSVd8E7edWXTB8GCUgrGfShxLI z0wd9#$(rjRf!^I7S&b;UVVZQz75DzC5r8a~AoWP`t)oYuW;q9A7$IEv1IQ^Bf~GbC z%k$y0OaNtq??#RdsQIDDao~oTF2q(N$VZXmsddo?KLeYGVe-hvD3S`P4N?ig3`~o! z>8Cd@;z2?3tesgs8hFv~K@Z?#SPI_oI1Rs+YJ(=s_Apd4W&j@zv>hZltptA**#>w* z%LxtdB|cKB3|uz{SqizPAOwuwlo?8Yx?nMbUS;fooZK{BWalm<@U_?mAsT!f-T-qp zJIF1z)*}`*Vo#@$ zeJ)3_)R?)@Jk>`2=yDhM3|w!#-b&dHX=Aq!8KoM8jHjd z-9WW#e+JnH9YX3a!7SRB{`7^sLE(9kM-F28?nkrF_0b^run5y;<0)3gH8 z1cN{pRw4ia8OJO-UAbmov*LGmj zm)PoIEyU=ypLiV8Pb}E;Z6XoS`4g`C(O?wG4u~dl#HW3Hiq(u?I3hEO`7R?hlAd|n zN&C4^CyHH3CfK@uJc2Lz8* zB^f~>7a2}z!+?Sq6LWiIT`X-zeI1$Xv(%kAoT^GM&S+lO=tI4!HRWn2{St5A%zAre zfK?|TN1!r*@@b~gr_~?;0q>GtXs9E~KU66LGQO^LPbBq-)f=fWAo{2vgp*L-M##Y4 zDp2sM(iiY&HKY&&rf*`8F9huJ@JHdTHhHGrwKj_&l@wM_9vnIw=dnq^#@zSB%8A93 z-WPTlS#q?(2-RQ}r3^V{mE_z~M|_k9_M<_#<}>rAUM;s^-r6r+!fB}ru8&NCzB->e zp>7*GRLP7L(P&iI0bX{I#7-PpO(&(AybV4)`+=nQ=6Un3@h$NtBLX^PEH;#`gYAy6vT>aC~8mpf+gg}N0`LlZUbVxeNO_sg}8E!U-)W4 zKP}YrDxxm#QCbCPi~zpY;Vkb^elKJdfHuUx82Va};qpjwZRac$i%^UO zvYp@Rdqv1Y?=>+-CK6rV@c8%U{^E(0LY0xof4RUe%6OVZ!{Xhe0pypP02}wnOwl(W z^P8KrD$tT@>ME!4nkY}>C#+bm%G#bW-sIG3k_R<BD3rbXRshs~)(Iq?rj(z?znd z-BA95_AFs}B<$5NVWzWy8NyV;gbis;5N-@4>tj=y74&M{9)SMCa?jodTHv)}J^!_# z+0|`Cpdk&PFF--lAofJT%dEeJ#1Q2!I5N%`P_-rn@q9Vm$$ReQv34yRR<>B%`MJ1# zYkT4D?fU@cpN;o!-(}5(F{nPaMydKIh<5K^rSzt+$Uon~=&%bF7L@fi6F;9z1z)k< zwq&t=ob0}A(BOY_o}%7GRyh;bc5jkIUIQNn9hgBOFLc3$eTIY&{bPkH7z&|D9OArsdrK`#mzzdp zY*)J?Z+^$+%k*dsnk~RmO!I~bO z9%QgMFOIfhVyIasz+eOxs2mhEmQshlc<3!c`;j6CKUK9gyICkeK3pZprH+*g=yV=N zF6nsx&U&&U%gye_=NiMk>PqMX(Ue++_I+OQe4XD-rvw*gYHa>R-DKpFZ7Lkx&wE!n z*#x-a_$daBso_n}bM1+00p<{I5eHQ^5OJj*m7m2JU1BRROuZUA9y5f#a)? zxhhaphq8Df)L9pgSJ(z`n%W*2Q0dO`dSzK* z+yLMJpfc{9&|=f|nUdlbsqC~p$NM(l2d~N^7gP+DVcN~>LsbPwezhNy4=aI=(psMA zD)2IORaZ$sm`QT^$c&4&7)^F!?lFv8C%JoIg%`K;v#B{=nWlTMoypV8Ol+mCoYOKM zjrTbkK>DbS{gT0(Pd{?Bw0Lag(Nfj@S46O5_|CyBH77*fGfDiO(nL+-_-ui6`aT43zY(DRn6_zJiCs+pxdu>RC#7ji);%$Ww$gTa{D$W z>S}qK#iC62q88o~F`z?!-+w7cJHSU722+YS&_<4xJFsJRYaa>HFpp5Q9J_MeNd+aH ziw+lbJZ@ZQy^=n}Hof=oUnabZ-o!OwQaEOv&`3JAJC$ag>zZJ_J`nWQgO);;#Ry*l zTMayljf_QXxU7ydwYgaA`^67G?VLdFb!5IpW*dILkkwi+XS1h#+Q2 zFTKIalnd(osavr)9+9I>b1R!x3U(ppawn>@wOV$?n4%*-1OUDb-&4lxoxeL|erJ@N z&AcQl^L+6*i31tkyX$ZF4)#R)-r)Sb8Lp?J=b1f59f42FJ7~=GK<;nWhtof>2&|-# zx-K*QUZ79fa`w#6i5>>I!p19@1?|8J|0yj)CU4Ed`@D?Wmu)~`jen!WbLrLyJW@1P zjLuhef542&ByCa?R@^p@ROeh0Stf1HoTU?k;})tug}pS=GvirIMt8rQ-{hsi<6Z2d zB9WLc?O54(J>aNb8h^Qzdn5#D?w--xY%uTp&>4@X$QMQ;DR9Qe=C|CQhRP?~WW#|Obs)KE+nWY_Of$n^pRKR34H{kDlkpe z<14^_pH2^`JFBM4aK^U6SEXMg{JRrmjl7n>`dWl1~8B-+WnoV#@t1T4`B3kX9>BN?o zR-70ojzH{?q#%&51fD}l_LcXqfdVip`af|P&kiAa$+VLQViNQ7PpFK}!lsTIs;?Si zL@%O%LZqw^#wyMS!dQk^yQdUu!6UjSgTMl|llDzM0|>}2=qij~ANg>9mD-A4cz-i? zz^Ntii)C?1L-iTPy%J6q!h1kH>!S-%!!SjvCdqV!=+_V>dc>i4>cz>Jz46lBOy|gw z0<)U^T*i+_di_+(`#@pNFbG@DutB4FrXRdEwQFx)FI0W2*U8|Hs9 zatI&mHSNb)W>nCNEkK&m86-BbB{((O2~>?RB!vJ;4JZq-PSmkFKDbBrVldHqFs{T{ zrz_Do#tg2pq@aMZC1_Y0NHTe@&Th8=G7MJZG9>YfL&}&|qRInM&I;<(n8Y$-?rb-R z@9v|M=0juq7e|#m_-5{3_Lf2{5_Z}VkvOe1(+HkcZd8DpE7NUT+OXD?hlgm|F5=Y^ zV8j|7a8nZc87{xmdRSAx;O5Z>#n5WgDt7eiznZ#m*f=iql7+xh`vfI+X&sB=@Kom8 z!ATtLrgbRJAGRrKgsz|?LjJ7g8xWf)CyCT{xtrWp-oP=b)wXN~FNTwUJtl9CcG_8A zBlT<$UKC1O04u-;OQ_K~?LvJE)c|iKX;3RsDyrXYMqPfy_1E)&6hv8W+ik?TGCQOs+)hjIhD zG6SZmG}=IGLZ~Q|gm$71Nd_=!6oM=kopkQL{$nZ4=W(MkiFR0V2;0fDUa#NnT55KgL$zXxsFpWEO(Mi2c!543ZHjnV zE=!8AYLSu<*Ef-Cxyck#zbRNwBlJU{T8h{xxxQ2ATg?EuW7aoGXQ#~i7kD<>`T=sP z=jydT`N;@SCpEbVv7nykUW?E2#C!0vNK1|a zWl&>Bkqnlh&pfZ%uttk=SE5;Lm1d)M+NwCvNAIsESxu1v2h|t~2*=zZSK|y%*2y>& z@3h!lK8G538FNG|!0b&AuL>m@`AfWfEG^bq!?XRw?cUgaS-1|ra~+W&7d`kfi!>oW zRBKUr_hI7bhHNh@6+adUY=5#{_cz$zo3f`VM#(L2j0Ba|z}c_i$YRg0Xbx+kZwfeg z>7*)`i-hlo3c;`De+xc5=76!JRWeZqc?E8~B#)%+Fo1m3I>uuzWwYcR-dw{K+%R=V zC5u!XT&e4Qw1UOovugv)V&Pu@y;IzBb>1P}*zJ{!JqN_RW}=O@l~S$61Pl^Gj~aj} z$TU6XxzUaMwD*1tvr6~0*~=@(-z!J;$=$0ifQ!cV-{y999li{JV?r~oE+he8L?4`MU$aKD!1Gz?e3s<(0+|LE_oE6fq2?18O zMLf(PxRi+vM?IB!{%p#KJ+m$lP;mjX#1euQy4SFTTpQ3F!Npij%D+{yu0g@3@+1XH%r-AwOY7W?h zn&pEP3~nA(91<=1FdII1$5qiQ7I(ddvV1b5y}5@2p`II{`>)@Ulv`D;tRJ(Qrwl^M z5BIu0uS8{Zr|c)f^ckHHvXd@xZ4hmoK3$tRNX84kgo}_d4HWDZ(V`@9fkxH1DrT+% zYO@E6UqynVj2Pq&rxi`SBSrE)Y=yt!U3Ltd=lZ5y>YCfNJlNE@vI1v^2Ta&$kgrD9 zLa!??vqz>~cG9mqzTHBvE_)&*AcT%}J}lZin-!ASCiLtt8v{aUX>q=&Tk8wPf`n>^exoMfiwxZ}igE;PSi zARlY1$%%gs+VZ@F((n%+zOH*cctT73i(mJX4CH~F0+L7Y@M-$417b$@S^-)-Hh`s% z`|Jmbd-(l}`>?8eis-@*s*8?)NqhB5sIOqE2fC@_@*J2I3I$;&^&Z|Sf4;$tFFAdT zXN!2YSZG?~clt%|$T{n|WdpAwE-`!{JonG2bt%Ky<*5ANl<)}dLsS9eN)~b#kFDoJ zJ&SqjvnH>H4)ywO<9X0>t9`v~i~>It??iU`i)HOigxS z@$T!!^fgQsF&dww-Vk~@yy30{Y;|#ga+rHBWODuK0h`tc!e(=U?+G_*d-aPYm~Rm4Q;p?B<3$c-*bxVa+A)i93^Hbq2g=XYC%j0far7(XERIMOx9V zlcyx*eis&<-b`eBmyR3R=G3oEFiw<09VkTD7}Q)1VP*So$>tQtEh9mTO6nC~B{qV5 z$1R5i>tOtkSe3sQHYINJnCW66WV%&>p=bNmjNG7*n_=Lr7S>q3m4%gz6%;(Ium6bU z)7%ilNsDHXv*sQ`_-dFJ!lxdMmnFoacmE1 z>XQtIF%hEB+vX1a0#X6sTvE>n+6RIJFZZjbhPqxSV7BP>AJt3TAc!)cba}RkI-wuY zmBTwZ??1-%^#=8lK2CUc+(O^$A~?0VU;nZ>!9sL8IgR|#U>9cdQ`W#OAA6&|!BNi@ zJJ&_tsBTWD!hvWW$yBZlOg$;~l(~qcc)nlo zz2mV3dUo}==uFZMSPOKyXlU)TMSW4Hphk31y=%(30zK=p(p(S&-qwut080SON$pfY zXue8q9+@=Ypdgb=V8yY`j*TX^N^@nIXw<=BON-^87Z?d9AAZ22@^VP*dg{!|1Ns*; zM1Z-F6-{PH3kS}i*#n}bs8v)+7FRmYq{w^Ou{3sg_RWhPSODD8p0N?mn9LS!x7^Tl z*9hhsy_S>|`@XKQ*KMG`h0`D#Z1h%9K~CmV;0v zavc}HUdYgX9eED>ekjezoA?E6)Lzk~!!>A+J3J4dwhCH!$)riLX{fos&*I^x{zyFB z*F$*VexzXqld(~@a!530KrI{7dZ>-u8mg(%cEjI~N$F0+c@OiHs)yD}av1Sy+`WnW z>_1D@h1sWxqg@wNyoo1&Cp6qE4I0$(vM5KX4)0eg&__tBWbP$R9rMNi6Jhg(S(q&2 zWxPi60_Cbch2EEa>&XV*mK&vlcqFu!C52`;h{qR5h?ORV&LV%96e4JQtL6l$Qe&>0 zYG(4ohws#CM%Kw%!dD{BS5olX;sQmmtJEt+u$zmRxTPN+)GH<2_(4?|#t@3;C$#hQ zmLF9EXa;o~_qprtYW6Z{i}T(pu5)cRXtHXH$6l`3;O41q@M)xF2IpvrkuiwDzEKXdYfjkRt?^73sN1 zav78_s?N@9Dt{sIg2O2FNL6P)K3ZCuG$rSZu;Fg3aCSid}+u^0S zx#oA}+*L%=OK<7FMfCvasCG6we>OoWCa0WQFR5vC%zI6aY*1P4Xqih(Ws{YU<|+P|v*KT7KaDhR>VYHGD4m+D!JT-Mcr4k9vI0SpNn)fEB%C~W?{*Ep$=`bS5@MS# zs1&Qrsy!t|)3`8p<%YlG{z?Og}0xKL;!6*2>?%m@jeK5|6J~#QA@U=ToTo9@1LdUJi-?oGA zC|FDoN9Uj82}7~Rd^YP*wn&^61>Id8E{w2dG#berZK-{ny=rVFzGx9XQJPDNDbH+G zQ4Ah;ni}iN#}RE{H$3f$-n@w9HpwjmeRxcejS9H`%HwcgJcsWCCDkLZ8~%}K0uME{ z_OGTVrokE4(<9~cXNP>P68#sF()ss9l%+eSOzDV2`mu`Ld%BXwr4>|=;j$!Cl(0s* zyf1{1rz}1cw#C^A#XW20F;o|!*C9)}wuxSLm>wX@l#5cbD8gx$A=BgFKKpAs7AtL` zz4`ITTRjVYev3exxuDLx%{8Dy0*N2|`L%LtF=qxpF$qdOEK2;>e5OudthARJ8(_}Iq>35!Vvp0AEfu+>&Vdl^_3%mm>L(JfLKu7q9X^1 zo@)x2I+W%YR{pYH^SnxVqFH#OxIk`O+ZaqoFykhXywv{8LthLFRPmJX%9yMx(EZ*JTXa`CiIa2(OfhE0HM4bi$hqsnB5u3R4Fe*`%ERa^bRBwT<4l`cuCoKEVgWh< zNO+!@VVNAq!LdC|ARZz&cSUq_=ls%{z+qQWQ3sogT2U?sVA?sOd>Y=nsJ%GdeZ3s~ zkhk)}SOJ*J_ttRSa)&_CxHGv-?l5GL4*JFj)-~|TM~{lB!3Qpnbd*pG)L}wBg)&K- zV%v%trVJC>Y4BW8Q6Meo6g7l7o^OJQ1(DH-#p$l&fq-oW(v)dsRdcpY+E4tV*NNOwpoTMqn^w61_T4Ny5vqDB8Gm zJ^X5?LUx9HQmY601e8lMM4$sr=A=ZWI@=S{T#0cIC1bQ@qiF3~_VO8tTdp!4F4(3u z|0u?UJnI&uY1~Xq;U6Uov`UoTK1s25<*)kpjqCpv%Ei8n*90qx^$Mi2;q55g_jvwm zP-8XwV}^f=4J7c1)Qx}Uw!%W&_nQ<}XTcdsek1y)oTGNK4{SC-2vL ztNsl<4Xu|H%FW6IKu6V0v4WloPpsuG;AaOQ=jdPlo*e>=+$B)Q^h$~0qp$6vGkI08L1MmJ4IUq9d!FKDFS z04fD2bzQN=ez+6VU<}rh2M`E9ey64; zw=gJH-XIxKafw}y=68>YI-AQqH)1c{} zuT@0+us*u8#*)^PtoyZ{s15*!2kC7e#Glhy%!2F(dqWpr3~pxr!bhJ_Jvsdzmgm%4bM0)1P_!ire}0FU0S@(xBZ45(E}MW{ z!5<-KDQLWiEftLdG9!TtfXbY#-BU;LlZxwNZfZ7Lu1{~r*M^uJs{J2%OpE9+(B{i5 zz3M~SuFlHl#L(E@h&e&n9yM9e)1H6H732%{zrBl=AHa0sEG_&{S0Rzl*qj7lQlFjp z1H&bCq|-9u1BV39GODlOG7rD~pvSLat6k>0mtH8y|)ueG=&Y}TXIMlc9h^yqHpd`BQg zkKfNIz}cSo^mCmUt}uplh^243%_XKBLqt;_I44C}Y^SbJz7?6(9o(LbV!y<|?!;=1 zJWz(5O!%lm92}(erisx>6G+*UMG5UB!8NOe!HS(ud?=agnlS2Th2GKJc;D7Y!n<(oKws1oPxn#Ph-OM%nUv$*Zlepj~jfC|}rwmhA@_mV^iRvGL&7*#~ zH4f@whfFBk|9wE;>=M+sX>g;8qJQ^fgz6zoRU5IkPcyIp%Q=eoYk-2X!#wjlqRDAr zT??x7W2R837WTzA*p5~8KWyqk0n2Fsb(PO38i(&Js@=av!d)i8)PoextnPk$GQmNz`lqfnhHRL{5?C{HI|U1&@XkKpP-xM+kC9dp9u7PYKh{{xQ!;E43NpOgB!a26$a1I0#~qNPNI(-jQFg zrk&b%dOAd0*M|daOYqSxh7bJotfL&+WOBZ8H%)NP#3i~r=($7|?kbUYly7oKpRS+s zi3jgK)VoU|^B~xMjAaMGR!3{K6-_jPKl6GohEIhf#AP;UrI`!eJ)a_xmNLWR`epOw zeH|^DOHdNwz=j9*5N<&!^`P&@WZqS!sjlbgwYyJ()-`zTgTNd0R35qaXArJt@@sI`O)y zR`>XXGWJN-?TpdF#S_+2Cm4=@UmwS>r&nOEZ$(M_eOzt;Zc;XPrJ6*kVXm=ru3YfN z0jU`xTDYAZg^q~P2FF34HOGk#N5ZOc6XKNfC-<$UNA*k!6dIW>OAg=E!Xm3`{g!5Pdt??K55urD-sHR=)uwDE=y-Gc_!m(< zGqAw32TMF7$75q01x>W5)ck}4u7fH}&IJcNi|UBDGJ8y?gW6BXECBv{AFq9I>Iq&? z1fG4AFr4`>FmmAUEyEN5mH`{+o!OBrsGE<$WjBeiE5JDBB)!fb|Mdn;$Z3R=+3>>! zv{ZcP(YV=oG-fGd-6@;fKNr*oMoYTD66?{-GD3NpK#aF_tEOanm)FZ?#>|tBj(Fc< z@Ml|f=$}9~S_s(&i2yv>*e1v_E(ekJW`={UoI5pw)PA)J)CfR%Ow9}$) z*t{EDLyZ*u9QzaS246!SPY@DL>hPT6T4FwDr1>_HsTTQ}dKF~RfK3Q8J)m-+c2f@U zFi--jK^#CF(A@V~IG?A-J*WPoaxFl0YNP0gSq&HC_%guw-@rNQR@i4T^)IP4c;7VZ zCg#?F)$<^8ooPX``@p(JR()xcO1c0bKv>di3{32?@Bu_NLkoPGEDO~E3`dE1d|X`= znL=ps+!&+jTnH4^ctsFQOJLE@2#HcMTO<1D%DL3WaB)Gl0PiyfpxNW-&=GqFA~+-% z3|?2>eQk!UXitBL_OLDkqEnfi_HZ|^+dLDIwrf}L zn9#7giY@$9;lO07KbH**%xU7SyBf_%L7P-U`sYUlIvcRwU2^5G+t3-!Pv zNZncDIj@>vHvhO2Sz;;?S#&;95?reu=x(km+Rvd5ll9sKK+d8Jw~@lMf-trSPf`--aU7k61zT)@iv>&!jBWme`41HOEeEpmoZ2v$phI}Cy2T@JaM+p4-)9MOa z1edWW%~C5aAOjq%ECt&;iNnm65KhkicsHld{Tz4Q+o$z^U1n5-E1f@AhpSXf6cM^h&@P;feCWeXJ)@>93+^e>r~-*l zSeKd1__dnTH&;%dPmoYny94UR>i5kRez&UbVO%L}HBz!}YMu{T%~aK&XlU??BCNLG)RO{nimwi$ z^V_Zk)+j_NwPfK(w5bxRw*UUwKlohAO1+(Zt&y4O^x!;({JK@kyZ-YMf5V8q9$OGJ z^L*6|%^x7Q>oC`>I@at_`>3o*eHBx^|3%f&TNsN z@(@hLk&S64uunffwNq7fuVn(_KmZsnCinnx8qz@ycSoeXAZFbgYO!kp8bg^NY`^Z^ z+EmI+#V@UqrXP{edox8^T1dOyXzwSFPI1)nIq+ohxK8b5rK+h4CiuZRNv{mY3_qV- zAI?8+j4p1DKmPDlWbNqe;aSY68FkTEN*~P2tOV1AiW3@drSI_b);-)RS(`*Mtb9h6 zRTukwMU@2(N>pi-J9K(Qn~L%ru$N<~VMc3-@+{zMJRkyi7SQPH60Y#HgBWfcuYE zjW_OPq$K33MH*aTeA5i5+`nnZUStU&?aKWv6A<(6HEug~_gVv$uNRkH zIZiZE^vil75*#WXrR>r%GWEI=d{kvMx`gw(>&B$zO2~kVMvX_JsCXL)D6`e?1>oXK zD10=E>u4jjM;EESvZ{tD^hV;^b6V!_Cz4u}=HsAaV86@r|uO5TIsHJ8Zov-U(perIktNCc@4o{JlK(9#v-^Kxc#4(&fA0 z8CLHW^9E2URvU$1OqZqh^sz%!tlSoi_pOwsMFc*~7y| zi{5%#?999-LmqLWLZ5x3taNOai=r!1Nn|o%GYEs=Z)5$lm&>4M?P+VOQM0&ahEk?k zII^j%Wh+@rbKQnU&2g?u;~F(|Yv!B>i!??e7ZwOTZI%TewXDFj^g4GTz8Zzgf$i2nriMrI^T$2rmakE z`7<>rc_tyR@d(9A^du6{Ko|9bU6uGX?`01)gHZewwG`PV9t#t-Vx3CSFltsij~UZNG?Hpw$xn> zj)}o1bO)J9*!z}+T?#zg0RRat7Xwb493O?)%*Q3Mtx95L?E#;Fx@HZw#s%0Y#Na%% zBEMqev{uk0>3$DbhvyCo6{!H#iDij+4N~y~Tv3e*6?kVOfCR95ee2gAnLIu|2P|Sh z>QHl)2@t`|e4}@4Vi-d;)$gi^$(wrSCGTt)sBa)&;YIj9C|<=cTK5IyrBm4G+s<~@ z61XxVcmxohv_Zx9?#+*WsKW)HM95WRzPX~#Gdo*W0in(Gh7>DsTC}EmGX!a|oM<@d zIP@Xt$iZk?uHrWRHq4n9NeG|)+#p;|aA4=yQCt<%F_hny#-)#CtYl%Uo~u3cWeo7a z58Q(>gD8g|oy^i`81-y+Pl9pJN@JB0?90$_Jye}#bynrYzZ<`gyS`mV0~yuF>h5~7 zj=fZaYO;m58S4r{sI4htIN}tQv=*ySlEI`8cvNL&eGN{CXWkVmQBvkB=4WHRJ( zQkG)ynUN&Xsj5msUNDi<7zmab0Tv&|5}wW+4TMM^nVuD@S7CwUlZHmb`)!)7J{sH# zhru71UEGIKQSMLX>Tn7p(%4y&Z_xJ};8kp9c@NT+@bz^+REoghQ@e($VSX-t28f_% zYdQoJYtx+Pu;#CiXwzcWfo_F}()`m8fmgfD6~bR$ilpV*$g8{D^(?V^K>DrOYmoBn>c?SKwUCyQMWhEoU%Vxtx4j(OLIldc)oAMqQ2OG_!z8-D1r}(Tn3P#N%lAKt;j=>}3mt%9&j1TRwl(y%rC4 z$UI;*qMlmta0ysAh;1Js1A?7UM^VXq@gm01q#Y${eHl+7uit1ej{F;>bmp8@u_Zp$#BFqxm{HVH&X z9I~P&yyn8(T=_sMBm&Niikx4U^h%!Z`(Pe2AIIR9q_Q))UBKYF`Q8ALN7(_AK3#4Z=0PFQe-sQS3QgigFjQx21_pnY-_-)+f7c! z0*IVmd&()BsCXd$Vn@j037JwldRp4PU&DMg9Z~-{1-Gqm<8HdM-a{+mq?+>f^pdKY zl9k@Z{JnoJELHXG{CO+?Hrx1;k){a)YoLcooKO9D=Af9+XLP8QAEae;ne#W!pa{c= z8x-&3twC?`4aBo}M~|iyGzBvdX?l#DDjaNdSQZxrgzg-rZZ*Tn;wjUn-?9?j86I^t zJuN*tdN?axlw9bBsz-~adu94s&SP?5g*`;!lFPkQnnSDHNW2(GwKv&7a%#z8jeDfv z{`f}Yq&LG^JRDuXF6CbBDO6FFs9rBjcYO4?-EA*89v5{677FUoB9bqp>gSsxQmiYI zxU>&ZS*Rw&8UVT^6S!BP^wy(gdp*{4AEv5*{YC%p#|H$!CbNg;a-dw<5HtY5&Oc`Z z>;LX+`2Wue2jhRP1{Y&Rr~gvC{Kw0pSwr1%lMU&g-lfm1)qvetAvE@REJ2ao#6=I=nt4)g$1yUR%5hN1Cnmyv@(*^hs#9ds{QVpIJqG_%!{t{v&QV!HZyhjfk33h_% zQ{o*6_pmMgd4Sb8(J>;sjQ#NavwXe2U<#7~{io0(_=#folrwlb)&$rJl;h>*n5M#k z@x`QO?r7-|FLmBm($~#!|65Ymeysgi_g+$0U@uc}zHE5vPAJo&YH&NeXBL?LZI@g6 zAt;#i0Y!d#yI7GJ$J3AD_SNNsRjvrPF2l&IQCN>zYml#; zgeWMZFSwVK7WQHP%pSt9#EXhe5T*2gmBGL-3!7_vO-uEV6VQW{$=wv$m6%|3lclYs z1#0-=RHmd%o)lTMV2SX&I5zmfOr9U+*fBl%oNjQzIDrsDo^)bP@)=|&Xe_bWc+TE5 z;$8lsfZ!+VtRtXqFO{~>r`Flq-SK%{0jznoGi#4sC@!X=-y(YHeWbN>W7&Gyj}0CO zedvW>@$-IAtb(6$Nb&M9#d3Xv@ebMrt?*Q}gQ_tS*!L%4eZ%{QTY{h{+m=Of?fLc=po77 zE)l>K>nvTe3`IEjfSDo=%wlY(n;zhimElm0O?%`Nj-zuJ4FC5qYAvHC&g(5B#%LoDE;-ZTwkOTg;qI z)j6{NUxI-B0 z7p;1SA;-KAFDlc6$`r69Z;6!o`Z4ZL-UWHupBdEoE^Pu!kaz7Mf(f$GNl-E!n0-JK z^t}Lr51n!S?~E}`&e$2yG^r*PPWsQznK7F%Dc)0=gjoh$&)qc?1L|U<;=9X+5uvH>$v6JnuO`WMH?WZwQWF z3N$J(NgN238(5VU+`*v+C+KmtJJ%(Yn-WMKh}2dK-MDszViG)C8)v_O5E5HP2u z44MsqXNA;va>=9wjL37;+;U5jX&%cn_%@VNhJeA6I6?WQH~8)0J7vJ^{n3)C7_ATL zsLYs}n=nQo&HXoy2e??osZ_N`WB*sOmKrt6Mbki2=!8pnR{ob#jA-u=CeR7+Y$H^a z+D~t*`rcmfkObVeY<3as*m}v+aV*9G#59L3taFe1?suLY8(8}ed`+_??u5_D4g{Po zrPvkn5P+SIybx6Bvo3^9K7#E!4~4O~z4+NyE`PBXP!!0bfT>e%C$TqoabdJz86A#M&2&{^E-6#;Pi zMb@w^jVqlc|LUwF$~W}tD9LwX$;x!>cxA(oy?KIvYPFdjc3IR2m`-)pW2FY$MzRcm zHKuHK&}57hY8=%kMaWY2@SPf=hb5E)3l58x(4{YA5ox!~PbafqZnUxwpOtMZ-y@^( ze1cIqZ{w>?IC_NoE$W)+EQ%Z8y|CQrV=sUqUr?WPEnNKbEaV?F@HxdtIP>OUN*HJ! za7+n#c8L!Y6BqqSJd~+Lt5E3cj-PoN(B9N&PiZauQd^8flHr{GrrY00SX zR*Pkuu9N1W?pJaGqf6s0m}IY`-Eh#qzQJuWKAc1!&;~<8^m*xa%D$)B+NA3b>xgWn zVzhs7by_v>yXe5RD?B?;)y#1@MJvQhHRipyE#pP6?NUf5u#43#FH~cz)Rr+R-@v74 z+j31&XUav@QDUdTf!iZ-FYp*?6_L5n2_wsqAJZzn{uYPXTl7&f{h`=zfGf-f5~K9W zVCDolDXku-oEGGv><{$DaTCdmPBy*b5@>U%)Yxoq&_1NO(Ww=Aa?_+L`#Niyu~}%< z#j2ai3}x#35uEqyqxeNS#Pl*QlYAt0B()Vxo8Fe;)_+UL;VN{gzs|ERoKh zw@hx?T%iTa5FG8VZ*JMB*aIp{%x4qSOqBNPH7^DREiUDD@GixbA9-F+bR5;**DTkI zzwvCb;lg=`ap22eGW;o1Sw;yR2ND5q1u8wJ)C)_a5J6aia?Q~=)4G!-wnV*4-{&al zU79J?Nl7z!+W}o|l6vIAB(>uDEQCba4b%pu?*anHSUbM@d2P* zx_9?MX;9zjV8ahzh6zKM?G2Jn;_8Y#qtOYO{SAaB80VCSLdA9Gat1f+2c&$)j-qRB zL|NsBV1sDYB^N03YkL~`DCu!OO0J%Zr4N-Wdoy;8b7ewde3I8IC6YS+0srN=+IcRP zL0!vU<*J8uO<1n9iFw?^{XDG0K2uG{1OJGE{Z{NWD!6HQH6oEJMhzs9rSRtH-eWB` z;OC3nKLvEvKw64F<$3I+ivA)|La(9#HD3URfqfbM)q)D>g5ba0^rPO_|6-7O8_Ibe z+gi#IH62my%uA~WQflPlR`Y{;t5?CNA*|Wx(1Y7Pc)yKjX#-CJ&MbB0;Z_-Thv{!$vu+X zuw1CK{ruvP=gCul*VjDpR@eKzsO^6B$QWB?)NdV!gVMW_@vP*~Z6Uk06(yNS$uOtO(^Nqbnc@gXJRVb<&zg0AcUF+uBVZPJxJh;B1Lg9*%c*Mp7F zLu^KlHY3r~%Nnwj(2s?I?dB;{0prTLrZHn^q5moL-`dsO<@IJ3M zM+<+S)2Aba_Z0eUU{Du!jn}M`=Y#e?F9h}Vo+}F?0D!b6005T%>xCd??&xG}V{T*m zKbWR%ZcEoqmXzH`Dg;|o>S>LKP3hz{_V7a)M;39;@Xd6`E*?k{exy;9@wg;o)n(sZ z&wC<(0NVBIDL9jhus=EIuhGzZ;k>bhe~9tRStne^BB&KUC>|L)0(*HDAU|IX81f6F zs>c6>pBQoWPi@ZThBZ(<%s`hy+d>8Jyqk*%@@DlEnqvhAqvM~GON?-??O^Ei+>;^u zHbFFe;yUm=HoV4#FF(>l?bW(kjoKC%V+ie}DHo|WjC~PoKi@sizA4iF0K-t{2op-{ zU&*DBf^!}r!|G3=zb1XZ+cWIjt^05Bd)<%`<6ON*?U2gw5f#~v_Y7uk)F2r76tMnsH_j=ob zKO^a$MCm&QhXl-m7m9eCN4f|<@RY}1k{+BShsqmYle7WKpkxD$jOQ)s2C6X%M=$YD zeV0!|^T!e*roHnu&V5t}!>UCe)aQHrDun0>W|~^q{$fONKM2K?Cfx};X?u;7P30x| zH>SCaECA$R4IJD$yMG-e=(RVpR%tnf9Gu&w>4Eu8@aO`RQd%UJnw1m3Ifnn(z&mQ_ zw{K!R3w%N1E`NE6jU}i2xEVD=7|Dwl$0V7jLG$=Ap17_3fJTVo0hlTA;1O>u577(C zl^dmJ!tfI9i)D8+_xtk&DuurnUiHTA=O7lC`jB2VJ4SJSC&l?itloHncoTG&Q7a;U zrN~#2WO90S%8Zg2RmylDkmRCI^oYbrivynYjCN7lAb3lBB;7h^S`91J1Rob>KhjMh zSS<6}{(<4q%F`8{@I!ugsDDIq_``6|C<26g)sdp^T%Sk+ZQ;}QbjqY*gv*2NF2m!8 z>rmI)N+wY?Y=@LVlMv^m#7rB4^Kk)6nq}kb&>*nauf%^LLIr=9Y zZ9gr>vp=c7Clo})Q`FPb2yJ`8h%PHa_46V*h?N4-gDSAr|SWiK*ZkHDT&MMgNe?S1KYz1z!`*H3?~@!oLu`D4#)$TMB4Np8DY+uy_@-4QvKRGOToeSmcJKXug3s7VmDQszWM# z8gy97onF2$6oCfyqx}{`M_t9Td@9 z&*tRH+u+zWEmVObCpW{Zu9{|7S_X3LA8yj=7*)W%DE%`)p*W_e<#(578CzWw;b70b z?LT~Xvi@8P0|5P;AVdDH{i@SUFQ8e*(S{Nrqy=P7+%w zP<4)*M3NUrbn-_@U||6f@}8_H5&i8kcULS_jHnnfoK+f zv1_9TJ;p>n;A!p}3wMTdn*4_8){{4qr=H@*>GSS(>#F&RJ>>$NDa(Y>LF6SO85&hZ zlvwk58aY?;GqNV(qW9VY6{;c1poc!X@SonN<~Dj%D)N*eg*4lmc?&Uf=^FRdsL}$~ zO7WT039jM>xMBtoHS8~XH^-z>nKdEaOu#rI3DH^N{!D)ry0^jhdY*7lbsb#}#2OV~ zQ9bbi63qKhRr7t`zd9vZ>5$~@AmTYpcTx_{KBxIrevGHT$f)Et-m>^?fd^nxX-b^E z|1g@+N7#9S6UcLh!a3_Z-iK7zUC*ZO!hUq_d3#3%)n%6`NpwFofFMa}X{iyXc2S=4 zfL?3okfw(Zzfy$&WEs2TM*K@<639C4z=HNkdyeB62#JZwv|0_dHJ(e|LXA9&F$R$F zzNBxG+*!|G*X1?$o*s*cUpiiaXhH^^DvPKN-7y%rN+>4`0Hr)Qe;6yQBz~*I0%a_K zETan5VzC*=&9DsNMRPuqb4aFU2)S|-b_dk>1wGqKGSX*;Y$>Yh*zr4vyK{!J(n2ct zW;%+?5ycrlotJhY`ZjQmdk%HpC^o|dwva*w$@1mST$0xmD`Rcn={V{Af_(MC&IWMh1d-DeHR$E*9aFk*)w*lMnHd%L0(C3%<`d?3rKo#S?x4L}a$AO4LKR`-I6V zH%!0FCA!PXpgb)!&80Lg@QkxG!v~sxxs?bjR><@egu0vJQDPNEi?)oC8UWEG`P-}C zJZ2?1d>KH)1huu_HjH!Rm(oXfq({SVcvu98UY$nxRaH!t#aTm)&O8-0$BCZ}q<9vp zMtTiAAI-^VtxDN!9m}<@5i-oO+#f<85qZ&_ru`fHQ zb^*IbB)=(Z9tbP#SDHGu+ljopt4oVd@HR>wgqzet{lLBE?>LZv;eeIwvD4W^;!+;d zOy6ox5p=||NlSU4rY?BAB|hB4fCi3?qvt`E&vWVk@+Tz(Pk}A-vU5rEP9no-{msCf zif&QK7|+4Nj+>N^j5*P{av(2RVf_%`(hz|6lrf2Q)1klS>g2tYAvUjX$6K0j*&#-R z<{0KmL`p;WGc&jlBl;G*7x$3FPKKoN^?C{wbhM=$xd6tHYDdq=*N_w`@~r~ZAC zwbC75v>OlMi(;hyXW{yn@nLZ0uzG`*^EJDuo% z!>nZFRM7xnn0s}Fq4Z;^puWMV%Xw?G3aSXvHfL>G;}OUnkA zUr{#cfZ8tWZLUHg1Q+HD*c15fd+8AZoI9J`JB}b}-^fKtyzRHJ<}F1`O<0DoGjP#8 z18E+E5Exl#GcVUUl{PRsoOVlN7ReVCVShbUqC_QaZnt9`;Y+$C{tPr7#f_Q;obG-~;Kyz0l#z zZ%;4OcdvnZ)s2ncPw?xTUq%1x%esoy^(GQ%38MoS~{2wN3*N z%Pj}s_+}-#gC+GigP{nV+Pl!&Pt(&$#gr>+A7P21D~VzlM)b-d14hc7YRCMf%&fq6 z^J??E*GaD&w^KVcWC5=EK=K$&=r?~bNEZlKJrcHTjEiUO`7)Ti{zb?_sxD@d@UR~e zSmU44i#w%RHgx322z*c$cW%K9O`HnV=CP2X9cN)M8#zU}4Jidq+i^Pa*MLXv($*gJ zTO~~Mk_Rd?Ga{85DlGHj+4)=T`8^E#1hvs*=L&fZ?B0iud*jvhDWLbXfLZ3w+D$oc zl*gO&twQv>{G;RLD(w*76lRza#Z^}@1n`aEw8fDU&Y0}UzJ7!XY@w_B^?V%)kB)CY z!-HcByoQascxb0SFG$_-t?%0z!OA#c4Py#6>J8N4ZM$A+kYgNdO~O~2lX0Pz+(;Y< zV-2ehx6}k7im{GJ){RV10_6dSQ6BzdV;jpqsl?O*$au*a96oJzvVsm3xR#B(%r`SF zH_bJjPgRH2?uv{N2ml2gz>nZZfq}IYVjir|ZFc0umK3xfShC8wg(!5N$uzL?yl!t9 zGUnq9%d$hQk;iU7hyAJO1VH5Tmw`jhb_G?7JCr@R}f4sL3 zwPUf3W(m6bnwgOz{MHe33(EQ*+9!UI_YOUkieLqTc7duf<*&w#Z|Hv5@T2b2P>aJM zT^Hk5iMHOwAQYl}scL$*;1}f1zSf4W(YE_8>lgVpp-2uZug8rgN7%U=o$|yzIsL-n3QoG7(ly@?r_JLJA9uvgjv;8Yd0xT^QWwyf(udw_Ew; zg@V%j2=}!Bm47jb*FPf`K&v;Rvw(#$&@YL*zBQH0?Ra9=liKwNBP%{Dg|fluD&|-$Jp<@^)8nt}6hk(BgCSK#p7r29BWH34;U_<+|Xmx!l8B6jU@i zI26OG2R0?OqenuVkJ%S3y427??^?SQZ@+^X$zq zXQo|ITDi-+yo7%wI@kpIm^HQ!n|73Ezu>|8&XB3+R&G4xLk4b>%B@2)98){6ie?AK z1QdS3g!&={t{@rBJm1XB5H>OC3*TA{ASNaUQ#y6ew`!$bn2$Y?vu0^3T7P`z7{J>+ zY}sXZG4Dy+)ZWp~d4}C&3f16koizaQrC?ysN86k_4UN$NDh^Mu=0C%_M?a8UGSzvs z#Mm{d#C!^;BWDvl+HI1Fw~9INBZwjn0MHb`0uy_6U`|S_`Z3tLtsq$&X*8VXY+sK_odrz;&<76fLDY|Wqy{_E; z<1(`=wQIm;p5~2)i$K1Jwkyd=P)JFJe3q2(FfTs9rCaBP)bs9fI7^a8jC%=u2DeOs zkxUoj1vPNZu$QY=>1Sucaa#}|vtg?T<)aS%CDe3l2UR9rPou2Ui=v@OTY`-S3P!H6 zWfL8ZR{7MHU9rg!sUmJE#2F3j-k`PJb{F(=4Ls*M54>yiGn5YU%k~g(i1>Uq=Aq8+ ze0{FRpkIuvs>m8AnEiRE&XVd;T>GoQ85Ah@D1|q3z+oYwD+viS5P+s`LV(&)y_i;v zew?QLGaA4vq+f=okVNo7zSZO~Z^f}IH)XZcTY)Y)^?Mub@j{ zdX(|NDF2Vz;Y%%93e*wp`;t*`d*_OI@aJcm==8BQm1E1Y+h)MI-?vObu@hLzJ8ttI z?^xi_-TJQcW%Oy>yiWXTG{;HpcVge+<$hZg%91eKZ()ZGk^2DD22=uhe+=b!D7ntP zv<)+i<-=`LVQ|CZ<6Y{zqdqO*YDU8CeRL`spqx=#4p)vlT1(M1X=7@zew_$m!x7q- zSJ;-~HVNcnO-@_c1g~bQ+mTI*>sW&vn z^R#yLt46sg(+vnAH34>_sPie{KS)a?wRN%$gX=~ByL-;tcHXEV>uXph9>H#SmP zBDct-PsD9?hsMX>Xb~y5`1&m?7*RLL4exDsJv%c3I0@g9`EIllnzC;b` zrjIlok@xd09T>hNS5J&A>P5&FiK~~#pE#@6$CX6cqotxvB+aejYrUqg)VuTVF;@7A zah1(*U9>1_(xyiPF_?|K%RlR)H^!ZzwXEYWg&evMFeBBtD+tFYV$Epo78&ebIpq4t z?449&)fvRaX1a}}cIK9HLu@1q3NAMoash%In{O>{9~<9p9tq79a}&?&8e0c{R(Cls zbW&@8S#(>ewdt)4WZ3tfv7*8#u)+F3l^!+f+V~0$T-A(#A^EaHe1jT^cDe16-3)i3 zJruvtLl!aV*&o*@dGK$)&l%vegIez;Wi81VpJ!-el?vfI7(KC z>0$Z3&6T4>C`YBa*8vV%^FHFVA0l)A-f3BGz>L)FOo#e8ia_WRC*~DQETc0YkcgB` z-NnW%Kg-vpjGD#M!4o-l_%te%(qbm)*KPqO*9neza#1e3RN$ddl$Js<#SADp7UI7_ zep}u=tM(Ma<9% zT;ra{FysvQ6q`uGL8U(tgZBP1e~^&s{zenf=pp) zWI4G#%aAG{Ai*yrDZ>gqVET44WZ4}XoN+>M!SY-Lu#}2sJm}+5;HnhUftzz;DkgTg zWR-@g7kIXY@#RM4PTl}i9De+2egx&*#%+i-eJ>nsaPBl|TSg4g#KqKC_5ca4&v5KA zrG2}UksoZK+_p&6)LE7>X%%YquKrS=*iLkbWUcvg1K;P!h`76P{{xE=-7zZE;l+Pa z%-7HQbo;}W*&q31ZyCRAldqUuu_3(gw2h}6knR8P zSY)BJx%kZ>GRFh}d*xgw#{pKHcl@LAHw`Ikd_qU*Va6pND{UjlQqN*`2G3?#ucFBa z>faDTCf}nF>mQb@Kc@L&cg(|3Ev>?JfCyfR3qkq zUIl^Wo(Z}8Ke$_KN*#G$0-XkmkwjJO5@%F>Qa9U`n=iKkI*Zc07Aryov0NdP-s8Y~ z|7t75Eq#Z49m{yT!u?F5?q(2g=K56J2>^Jjtr|^O7~{3chOJqw8#q8GYnU(0 zZ8PMsEHrW78aEvJ@a-=TOc45p-~f)d<=z5c^^~6?az_Y0gJdg2-|jHJ=QWcqX2tJ| z@?kgCJ4L?p%$o?5w(kMC5$ZXv~>FcOuVsE(I`&Bekp^9DN(F1YZnwf^GnIH zPD24l!I&K?v{3p31z8*6sN(vg{b8~axmphH0z#cW?tzbr_}x+8&O zb+=paAQq9IrN6(yCZDUx_FvVjeT%pQ(^O;U$ECL>1jxBa^t)>3tT?t8^J!|wRfnfd|o>TY=%sDs!rG- zU08vA1_`1^tm@(Nq`xSyhNxV^!P|{2W2*<1S)q}=_EMm(Z{kbejmxWFm6L43B5naL z0k+}7P_fi}c7$sF9M>PR6QKo+;Kn~sEGotN!FJQKo6#A39pwD5rK121?>k4H*|~1J z(JiG#h-#6I_wqc*M3=06#qTK4mJOSDV??LfecR(`>Mcp};islDutuX9gY( z#5VpEm3HJT*`f>U8f%(n4B~3I{D@i8L4mtq&z8(5Ka%&LOPa1-oKLjXA{MW{ykyh? zOUg7yo7{U>DhH%gL>=0Z$vpxfvXudK;o_z?c<={(@?z{MWV|77#!uCSeZm|Dy`+Sr zw`Nrmacy0qJutcQKKkifGCuCeDrz|+Yv^NxR_E6?f!eV~BrmDEE*1y!CjDs8PVo?Z zFXLn<`=*%wa$yBqIRAdenfIU&h@-^s#l$pcPrLVK)`B;|Vwj{_`~{+IH*Foa#v#kX z*Ucm3M&f5gTmpN<6*I?!Epn%{R2kbK!~l-V#{zup5C%xu>Xg?|q&l*3?N|oH*3=ZI zvcFNu4^;bT-zM~#1Z6AS#coGRt6knDXu(Vzj%yFx^sY*x!cq@zzJo?y8UY@iuvvF0 z{E|A;!IKF7Y^eSOoq7{E>%Y0z`P_q$GIxmuM53CP%*_tG-iE(Rpw9gY#<{INJx|U4 zdVKXk*y9m`kv?L@YIg0kIwQ4kAK~E?brMWfGWWDfkRL~+f#o-$|0P+N$yJR? z%%W<4wP5BXBdG2{pr8W31ohJl=Vh0j^el-&eX_*$^P}5*a0g)IdLH(umHMvI5%Jc5 zX^7%@5xiw!fl1weQn*BKwj2zK}Sl~Vpr_e(XLSC z(M})g5$6y!UQBSyfcsviBl<(Uv^VXfC*|xxr}V=~K9Gi&w?7qADFF7aEGq!5BmH^x z2I&-w!<#qmp|1EOAr&pW5p4u#>B)$=F7jeECzUC@Q=%_LUfBarD^-QwLO0&4n?M1|~rJO-*?f(JLc z#0K`etfs{#|M0k~V>fUyklQ}UYeDlN>6B_xQOxw4R`8s)@#7Wnj?C z3cq2WB3f2mkn$q>l0tQQB?o4N2Rr}~yNA048#{zrkJax~cjfJB0CKcBdW6;50+9t5 z!NJ(MP;o#$D9T3tiU1w{4Ll;wH)!BGu_l1L-19}Ge@d8lV<>qV&S68_`!VM{M9rz( z(Qj|VJ4b+a?@RJ2YL!vb9g()IiN$1comQqR@Nu!c%cjf^5M7t|#MbeJbVPiqaUYSc zbDlcNIBAe0b2%M>E@uAk-%L0K$_SQ+(kbLNQ)xhJ7ab{h=0xJFJR_7G(EOlirD$_i zvn-U6Lvht+g_MeD_|(_ZlV6^FSmwg-a1zSeoXKaoW{*lGf>2L@AQTX37bQ<{oa(|0 zV{KRyilIeC*J`P4-OMbPD*#?;2?H+&;VB^BY3cgHu-F#NU(c{OW0gp%(x8tE*X6`!XnA0$${3UK)6%dT3tL z_KmhZYwTm$*90LG2dHYQ@-S*};s$E4tXrx@&SxweOzXVosxjsW`u&gq&Nn@-2W0%K zr_0XV6KSNu0`aLlf}8!tpqKOH?Tog!Jgj)O!_@4~s*F7IpMM>~S_fDKT4OlSJ-6UV zI-g*iig#NmaBN#z&)J7Su-9QC44sqA-Oj3eE$8g6{Hw`I*<)+Gh`q?ZqX<^_L^sL9 zA*D*g5FMqsupitxAoMcNt!5yAWn0WSn}=pl#d1#3l~PYk7x?N=wl|u`;L8%rS*TpM zJP+qc4e@jSW<6(K&Y#6*wlp+vL?mGoP~K3YuD;V4l9TWQKYAc~ErAZFo2?`RE~tX} z+G-tM--n=`Vflo3`fRsI0>gee6xCIq`}2qQ#9!e5#8?25WsY>Q0073k008LzuNaH0 zpu+zESf;f-{}Jv9zr49XhZEIB-10u8sb*J23^Aq&9aB;>FILydv(5SBY6oexBovb| zBD>!m|3$E%92+%EX4wBh0>F+Id9B5UJrl<;HP=aSyZ}Frs~RiFLoe1{AoSrVWxd*M z%*4h@GLp7=U?T0tfqw1rCAz2?1LsYr`NCBCcz*hlJ`jZ$R)ZNo-=g&`5$?~)DnVpT+UV|%RSddp`;{?oB=(ac5}9Uj`K$HjKK!*v2X9BcGf$qF zD|`C%S2hv;32f|(K8l=7?Zs7WXH+in4fOYpM{FMyJw1078D-F`z030SS@7Pog6!H17qV4&KCfZDV`0$k^I$sQ;8r2w& zl(DdmH(RH~M_vFj>4g3qH4=cNO!S9m>aWCjD1B~W zA--&^^Gp{JSy8V-7p8;{j5QccH6EO{Hx}i_c*cBy*Qrs`9g+8k*0`!p>;l1W52b6y zhQf=o$a)-Z#!t0rG40AS! zmMoh5Q$?)rvx-2{MJ#(aaE}8}6Sjz@R~{BN6lM0P_(D>ic*@J(#fS3m#fHs^cLI&X zGT5g{UBN1&hnyb85;-b-Gv~Dw3^XB#mSf$-Ms~==-R{lbclK<*9)i@LpgJIen>h&D{(CG@LYt#5&fGWM&9ocnB9;{Xtc&3)^$ZxvycqX!L&a3oR5bcG}&qSyZQpr;vMu9Llq$TPkY_Ca~B5;T*xpT2WBTBX5P0vUUD^ z*|V))=tZ1p(X5i=E^sVNaV>ajlERYd<^o7m?}o89Att1RMTdAYq26G0sn4izsoZV^ z9g1BlXY1zzS09Gp@!F80_Qj}1$A9x7A@8{W6>R14eUj)Fd9q^+QYGgOOo@R|t|abm z!K_8PsK1lCW3CsQ5KP2(E3;4>!(;|dB)7P&B4sjqG3d&P#JrFv<}t{obaN2ZVaCXh zMFs9kCFoKUAAyKp*q2KZ5%n|V1>;p&iK<4kHfgXS6vI^!%L>d%C*RMBA7q{EB=1&9 z>%EIiYI$j~08m-m{h{!B5M~08KC;e#^?!ur6L2EO6h4l=*ae~9Z^J~=4Al%?I~Wd zOX2Lq&ZGEo&p4b@#`6Nuey41a0tk5kgA?jYMJ~iP();_D5|gjur(Fn1wOj}sg8v1} z-~mL#^{78_?yu`;SL;??%*LgtMqfnyR+}pDpePp`39vPZmDaDrq1=~UAsO+TLE5LU zq@F^c=#$KOV{aOB5<+|n-wqS#FdkH)Y!_Y z{-l-G?@?E{v~tpBvX-*&s02}bSO-%~oF^D2ZJTJt?^RSdGF6UBbBq*gW;jofY8RX% zApS8^A_VKzaaAFmmN4?xW+a3%(RhPjZayCu(<+%P>KuZ=UXD-c#Mm$a;7Klv@1RxV zCmy`v#}sd(^9UO&8plSW`lIAL?!+@bJ`S0L+thEvvVqm1#%pe7C0DC?E5nw2v1x3N znd=iLH)!l)8n&b-N6R1)*d8sooOjP+B{+GPaJ<w$yV-pL3>Ec`c-fbU}SfY%i=*3&i{{!#8_j~W8tRDVscE0P)utR=Y z;^~wzIvUK3qqVp%vRKwlVM9wlq86=D2cV7pI}1c6kkRD=Ls0uGD-UE^BoB(39C2f@ zQ&dF&h8yW!iV#T%sL*ej7XU6$?4p02Zi}1NCJCBkjIhq^TZbvSHjL+PYIM?k_qZ!G z&(5(U+{LIu(%rX!aMF$_+&@kqweJO{HfwVWvoNoXDs#6$e(hP4w<@DO=` z&Rasp$%@!b_BIN=5H{6~o#!uQvg3f4;&hsP(Wy=Q7&8X)g_+@r{0<13;_>O}xd!n2 zU}gKdj%S(6=V`wWijrC|ew!ycmE z2l<&@^(e4MeREg){}?-mE}_p z?Qn9_k)?j(j|9`*|BPQ`c?fXxF&=v2eFS;@y@j02725$F8{d^;@EuvS2jT~z2=A9Q zowHfV8T9zISW6ICDRepU1aLAI%TensPcLwM|4ueJ-f{Mb(jd-i57e0)AI|y6Ols2t z#e1J$C>#a8%DC41`>4o`Q(d$i;cEdgTAlk7ej-*z<5Z*V8p|tWs|Q7J3d@w-wXZou zlWS*%hGAd(SS4bZex(r)8#H!!0K?9xyIXwNr?ZV`pVwRbg>AUOS}Nx+3X31|1hN3T z)o-}LqeCwEpsG3Oo&n|_gF2JHyYbn#3}^JV!VbKwY zN3*Mbdai#r7ay@QgRcG=^n!@OXhl{NdHV)TWFqHDmxM-=83Y$Spg4}j{j!W z`|zZOHapLBJF1CD%r3=Fz+B_UZDU11rEAR7Y5f5`W9Mb89Tx!$~)?iV%nv$Xps#1sRIhuud0D-evG5 zd)`m|0=enTtdEc!OFzb$yO2J%B5{Rj+qav@#>ritgviCm#zx(X3+G~i37e&D;**8H z!dJ({Wk=u-F{FIffu~yrk?Zp7++ji?Gv&Ay?vRV4a5klR*W6j6M~r>O3U{x87-plv zTEH!s3(_>dt|AjpU`=w)F3;qTT79~V0Db37v>5~<6M`mHJP~ zaYHI>^HRHr%&XYHO*3rbX2t~@YUsO<06JWNIuSm>;tK(QOhCsW%#h$4gn$`rO{jo& z7J+|^I2H}3pjxDVpq{)*(1}9dhfpi@Sf=4vx=1R!g)87!HlS88+148Rtvcs3j`x%H z@RAOIhA>OKpP&86&kJd!TtZW(sS%cc`~aYyr{No0>g@H%jp`fZ#S<4wH302r%iPMu zF$b1Y#3`rZG1!e@WkPQlQSYqd7y)@O!r=mO+AAS)q|IsX@jJIbK@F6YqaIZgCB3knaQ}4ZH@HUwV_v?B8BfzGa znN4nLMVJx2e#)iY(w6$MeCF-V_IdAM#gXeh@{Ygn4sQicasvhTHJ(@L+451e&$`Xp zy!r>FM&ahc6huu{)xsB3HcknPt$(zS#q$gu0-CyQ9++#Ft6`e5w=W2$r_@qw0||u1 z1f(qHwx=#zVH?jF_abGk&U1yYx|nuSa&BN61=C7WaBej!40aWkQ~KcLr!Fm`Wzr2J zrQd7tFXy{D^+YCpj`wt&U!h+mGe92ay}M$TM(+hZ=xUE2jQ777QK4;=`2ajm!-W79 z*qTNreWljfAS0&ZB!mnvTv~JS?s;R&&fU35_yPJ4bzU_Lk!zE9mggq{Xh<$cp2NWp z$lBwvAXNj?uQ4!H%l0oPbgez|c#7dv$9=O%TO^P}g>en3^YS}-ZS3(*HS6V#XqH}A$MCpA#7i-w%r%d7XUs5R=`)&8;PJC9 zJW9%H%Dle&H-@}{`*--ffx9=i_X>N!9QEZ=Ks=kC29T(zF$(r5r0l?let{nKnt0)2SHSLkq$r>H68KISx zE=Xi)@?ePLtvgz?F4X(Oa`(C0`SoqbgEc3!VHIU&kD;MJI_hD{;_>m$&P`(t6TGK! z7q#c?dN|GG*_Md?x}4ZnR5s$&g?v+&<+w4~z6nN$>x#v?bMCH7l5#uij{k;gvp=Gcf+ z7OB3tU`3&@w7DvVpQ2c=CQxEsY5~2bj_AljT~r!{&ce@X$QVKUAQe&ZMOq|A{f}fo z%S*rW^NIR)J6dP~rDhw{y$DVJ3WKhn2=wqep+@F+yj^N|1k}}Gls(@3>63YQQ zDfm9gsJ9R?IN+OCKO1!@Y!g%V=alwbdo1NSuCDsj6%@oRu#e`MT3Zl6gKpD zsCqnS%`4mDe7DFbDgR9>%T`77pG$yH3OE6)s^dv)oPI$=8Ia9FJ;->Q9XnB?4!daq z^}&#KnMNa=R!y*wV0)?gS_V(8_Q+f^$#onITV0e?>{oki!?C#r9N2MEpA7oHYtN;ke8ycpF`gwz4atcvZ>AjPZrm~l98dFL zL!wxK^~Y^E*0G`Y9z~BW-SC~JIOzPI(|nr!dW}3KbDqq%E!i%cBRzhNZY{#4e*$3> zk0=Y)3K8DPUlCNTWxVF9ZlhM;!#KO4wnmF)%;l^f>u8|3>91uV^GcEK!ks1yxEVhW%qC!o~TXj9@ z@UXVXTich^y``^HXm_&7N{gmlJQD6rsXSPTk=Yc?on--hI$Qm(RJ3Vl#1q59g$+k zz?@hae_^j4+6h?J$nD{cv>hZEd2xxqFlSp*nB9 z*Q#eyL*8K+ipM@|7n95PkzJG;8Kj_J1Q5|y5qQIGlyOjB{d1@DBI3uNmQ3amY?rz? zT3#cAkTgCEPNbc5MMtBuq5)_KPBhK0nqhfW_R@(^!E6_RCCo3wtI~=I3)57~$*Unp zb7WAeRcf)U!f6kmVBgXB0Z6#=k>{BCD~)H@ugxqWn)jDIicJvmDqp0r&o_0Y)9U9l z;2JeH52BWW@_=*L=NjEcFxk~=K@Jmqqu}BZHFgMAyUBFe2Qs5+! z494dAFh;Y_SCcCG12huLkEMzj+BXCd3{uuo{JOjNwSZ&VO1G+a?_Fpa(lkS6<$>QK z=3k)k)L4RU^;v!Wqh@9)*1=Xz57?^|%b@bLq8FcPX?Nf;0p1c14@>J=!eReY(DTV6>*eBs8sc#1H`$ zDQW+LKDjSFipm;W%{)TgI;6EIn=u$Te9rwTeoo$fe~)%BM2qkHd-MzVpRH94mwbK= z4gkPG8~^~*f7@Cq80#DT|EAZ+-2YD}QE?TQfl|JCIG3Q^P%Ncn$f+YaK9!=v3>JZA~d(mtLL_QXK7<@qeNq@D1p!%nYIT^ZSv(K1Kl>Sdb0NV;hmUQVYYmPkB4?2Al0IBqvA0jJz z;uDwU5nQS|?Vj$nSys@RYy#OeD{Jt}q&}p7@Lq-A9q*11^xhI0>pPU|@!Trz@F^&v zzjK>UG5yjq1{(cM?T{{2itjCJ`{(`BkuJM``txsS@9rXUY*( ziXCZGIWP$ljJ{ij#|Mn2uUP7bf3k@&4G%OD_GP>~{ja2;$FKuBpBzthNb~h|SAH?t zbMB|7@R3w;L>mNldvx&x2B-OPYNj}kb!#z4&$kjm{I>ixtx`nyXTAd%jwKVPO{?8`2r06Wy7KBnaPc^*d~Y)GN}veXB$; z{n&TCjRCOc18vw>1sI}-*&Xw2@Q{uX&qdofpdF8Jj)f-;YV~3kU+@FkKWcIt_0bVz zCYSwS)k#~F=F?L*JQ?;8TQ|%1rT~A!=Z|*;H(dGXi-ZM4BtO{5WI(*I?NOjLyruCg z6=%r`;^&a*n!=-L$kPMa8O^s0UWWe^W+^?1ocvob-gV|^l|=jw(lWL)GZRx*kGME) zMn7w?pgN5m&Hl6u+y%egfAr#}KI3VOoED^$2`jqvV7|tqDA^Mb4uca6qOzX|GLedu6~CJlAcYK1icA4I-D7Sugg$|Q zOu(b-sO;xiwZT7dn@sd`gRJ`~jnsAw0SS!=&c}bFlUC&;X>H6*h>`XQJd~3Y%jlCC zgCAwcSKaW_d3}1GC6w?M)-ML&w5gE3S7fY33_b{p;+rYaVCmqMIy1VJ>SoK~zHkK8 zO9}L;RI-n9{qdRZP|#C31#~6KPsGAfYR$6>;1|$W7a+Mf$Uf2H=npzU8eLB3knX>m zGmlJTSJj@9pnSLT#Agmsl<4mcU3Vs~UpM!c_rdk^_wnQO9pSj&j0ur4v8*Q~;dOV3-U!bo@C~wEmj#2i7B1#M!|+XT0Bw!HlU!=!}zr zPb~=6$MpG%xHRYK<3=NUb%RW1SA8DKtn*MKXo^fN4@1ue1W#aEwM@LDZ2C6b20b{i zRmu~9wVg{I-+^KVCSP}V{Z_1_JNW5z#Ny*XmL#7)-QZ+kC_>8*{Eo{>sh^Nj!S}m> z6ICCim-`%kreK?#whV<;T5(BBG;*9ORdCahly|pv_-yxfu$ABVn{_HV00R1nZqz3cjcNRD7=D$l(E6=X9xh-GdBfd{62x+@Rs`{lvCM>KWB;gh61_OnCeq@E!_;3JX z%tLEk{*bzz6>jrVn=5r9b|pCbnob-OLt*jYBP(q)Ft@ttP^ipg2H$SMT!?^PsXK2M zOu+tCy0w-kP>zR0>l;Q2=8Zp=%UCF`XSC>-Y20{r!ynI0wsm*IkP*lpv`y8OM@NVt z$c{QVa|Y!o-8x*4@jS6`T@k-@rGZ!1OXf0bNKAL@Q*@MG&$U zidrMZA=ujxisGR;@<;_aPaoJj2*;b1)6KeTz+_T1Y8#Sj`rEeEpbqSADHO3kyR&N! zVM5)k0T@e3+eL&Dcb11bh(BX|4Bzcj#zRX8$Mk06CcTql}6H;!j{H#!{Eo~*^xBwwbxi)P|EY}9pE2c=ck!t*-As3|`(ts9P(p@hS##?FaLjp+w zUHg+pl7Jp+$rt9ys!RkY9t@OiZcGvyxG)aMg<6f=QWa3Mr&6#7e{n6036^hJ(_5nw z##*9Eg*qBfK;I_1`F9qA57|FNxm0m63zQnsD!3S&=v%oDN@z@BqWI(3lQ7`fkyqWmK@RbX>bhF9Zl@j47g99VT%Ht@(lBH3Ic@SZ0wURX@<=JBGhK`i~7+4E-EsTFn{|rS3gGh5lKgmMwzQjrf zT?(njGor;GzDPQ;1vJ#=^VT1VT*2C*NIaHMD2^WH(5Cg(ql}X}rA{DU5WY#erO8uv zG3?wAZtI{ai;Bvq3W@>~(}9et@`ni^k`6(y?~^v5Uebs9iwOKA{y!Inwhn`s*>v6# z=xF4tEy(s!-B~?seWna1vHKH@L9IO%d5zsbF&R;IevzKWa~n%$C^(IA!4%fjUFLxs z11i%U?1AV@!K{PgBK~qu5MdYLsaO>?Z*Y&qP3VP#;nMHO7|EauRU~!@AbWt;5Mybz z{wj?Q0nKX1#nw&8R?={Vrp{j#qXQBYl?45EA}X^~sDjTO=9oB`!Wfbm*rZ_HPtSkT zG`8*FjW_jj9NT|Q-e_r`4dRXo05m%kh=)`A2TXJ$qOYk5(@{e&2#TE;kRq*;@y{?X z+gHk%SvF1PC3`+7-X26a0Nb_?w)ipz{`bX_HhlgHzJ`%=8}yhVrJGXAbPGl$9|rhs zF%_5Rh_xBXPJtl3M?2SCk3ZxpB0ulb4NN{NgTbz^!*l5-ZidB&?O5C_3Ps|Hy*S#K zeu+iqnK;)?>yR@E$g3bt3^Le9>VgFgj%eX3<8{%Km8f zQxNKOt`q1&%0DZL8sdT|+TC;B^`r%b!RPy~c^NkZ8<{l<)|gA?U>nYYk6DLvUI_rGrTFYR9QCs&lBx(Tr=%`1bt z+KzlnY!BX+9+*-)Gl6rdKJ`<}?SL1Vc8=PC@nlZp+7gxH`nUmK=Wwtrq4B9Nghx5F zyHthvKnBbNZ;DdZ&&G~#wM1c`-M`_U4rC>LNCz}CXc@M1=$NKdkLf4mOGVzGoCK@4 z&HbDO#|@$-MpOiKBpt@_ObY_NLg4SR4VNVlkrX{FutWZhHqcr>HH65(05GT~uVp2H z)Z3_r(*?O2+sUv?nfg3{Y$2!i@p>^bzTzWJC)=RnECk(L5(x$?Nco6b2lVM`#cb%7 zJOnQUj(kOxw2t*LUwbmM0tV-@Z{UylV^(&+1z}O8fx}c}XCdjUMyt}`;6~6B5hj84 zU-Boqy>)RXQ!D#?+DdM;ucin#!Ub+?%dZyP#JSY_FCh?ODnPz34_)oKTH7LMho2 zRg8))6^mW7>_m(gmg-Iy^H9$ai#H8)Vb&34(Cz3lb)yu15`5?6Rxi!xHEmlzjQZr= zLQ`=&rF4RP!@x*)Sx95Kt=r3#cJp5I7GJvnibt^~{+|oXeqdUcXVr{Y&)5B>V47Re?%HQIB>7p!EBK5IG|yUOke-) zr_HtkuzRD$l>E}x++c_V3!B{Hgf7z1bzmpt1dl#EkgRCa3}brbY)zdCpm;{zEbE;m z@nTZte9_-3KNL{e)i2f7d|}uRl?N=|jWdWJmCy{R-bRdp`+tphF1^Wys6yTziLiGBnUe!6PjQrHOK4``{_#7lPI%L(amO42LG?t><7;zc4T^e1@oaBK6WXZcjp(q7_Z=u zO`;oh_hr_JS48*hfE?1>|RtW&dwX$PZBEk%{mE~xbe%!5c z>jusZS24^@*ff(kk>)CtE_bX5|I{Fg%TbB6ERD2K7ry99jlru44|xvUG7FF6t$nHn zbAMz@86T-nHAEGOFCpmT;vcjn`_g6QqwT=2P2gBleG$a`>C}kgm;G)BIAT|2Y+hPe zg0JktX^@^M#0qKsln^>0CX@S+<|`k&6P-N9*MXNk3M$gm5Jy|*vjR`tK!1E3^qGtd zCl0vB7CkJix-COm2rJ*(czv~GSe3tNAS}oT=2AKR(kJWkYpI-ENs168|Fk96rYSGP zX-S?{&0ahyFh0T3=7h>4LpoLB(1@(8d5nPCz;dZPaYT*d9eEMAxGR|0q2os>VuYI* z+ah*JKHLC44p2UWdI)b>1?*XA``@^k;9~VQ9MGhF!HXu%e`&R*_tiGeRQ6|}PWhs@ z@XwS4ZA|4&I=1>ZO9k)hN}JFdL^#_7+=}t{+`#&ZFrW>~wp}W1#{h82hKFM$@+vBD zo6BaU8PZP)ou2wg=4_glLGRU?2B@Nz4BMT@yYzfivWAxEh^P`9oH@3K`WNj6cJQVl zjm0dqUFu5Mrh#(z@Rm~8KiYrFy0&e#+UjeKe=B&3PS}t~!ZO=;atsG>uOscZB z14xk(Yy(V2!mx06aa+=FY9{|g4+M2U%6wZyHsEczjOjkraq1VCq^=>B4kOuVceu*M zyQXy3g}Cl@TyTM{E=Ru~H4kYQyE0AH0${9edz#01tfk`I*tM?N_&Fm?Xb0%Jk*hGa z2DZR0!8zDsEBv~dU%?Mw(S936zJy?JJo#5DZU?CpDXL%W6`7i;j1L9u^h=`kJ~5L; z4jy}n6z?wER654uN-Y2@RKC0z>(boMSLJVxTa*uC;wadsrAXqRn!`(iFFioN4LEYv zT;2Rh&k1TRd}uK)&davOT+2IAPBp%pPM%@rY8fpstr^qM)~hCNK$Q`_a!sK!+N-4* zDbr?{VYATbY3R`Lncs5dUNU=D^Vpzxd4r-6@M%;s7w|eo;C%#ff?^p%jTQnnP@d2 zSuk*2h1ZZMaiXtiPJAGmWF37}udcEBU>aMi782;79(9=lR-`QBf^`OU3aj*SXF7l* zkb+A_5IAx4Tl~vHRyGz)7%SPEp}Ocl`pg)vhRGz=XpS%mDzqm|FXyOksOm_^e_a3E z`ne&*S{Pch0;HpS*wwJ?uFZ-$_24;W;?9?-H1+pEnU4OI@g@-2*C`|I8ZxYa14$O>%gx=EnNG0hE#}pw*U9gZt~;zm9NI0 z>8t~N#GMNzLUSvaG0#p7|!#d}^4D zTn>x~>Z0}DiWE(p5P4eIp`m(EouLl!`Tf05<2my$bS$fo$O`9BlT+hR`hdtEVN%-3 zvv}L0)6U2FafQwmjSLE5F-P_kRYF$ch^Y*~cL>-i?Kp6^g}RMQ;g9|xjDh_@lgj-E z2=P4YqVGXt{>s;0^e&LlOJa#gP~FBrT`A1H-fWP7LphD?e5({sgA@FRyA7CN9}!jR zOE8=&*kzs4BYYiG7z-4Wr}iS@lp=yw-(OUx_uImJzb2>4UMTM$PKshudH&cX*56wv z3Dp&iT-u~UJ)EgcUz_Zm&3@ZCf{BG|n#)=gQJ<{q6_QBJwK8obU+22j0CL2bm*Aj{ zXbakj$HB>1N~Z>)j$=7KhT1slCAI}?^~DE zZ~ot-6Y80J?T=+08ibr^2UKjZ`VP30YYaErR{QKIh6padM}xi;ZpRKg8Bhj+%E4{j0788Vb$1YlOS!b4tzV|c~r&!iaL>^do@ zaI98(_M~_QIT=&6gVWLAmL~4{8GAb43c90Ow4*E$@TX-8=K?v+^bklw#D=9=CjHUL z|KK*k4^hobg@M8+#oCQB7sYv=u~A!~*vPmLe|g}!nxe=7{Nv&Ha}E<~;eWLav|!Rb zyZA0G+=R(lZUR(bI1wV7Os){;9#}3FI&c%iH<%J$is{iUSC0r*{Oen-1`*ttR|}MI zm9uSZH}{R5bV_}iT{e|$OMN)5C=!J$uh3*rCh=cx%5B5Ft%=95TQk)q^c-C3@y!_} zDDj-K3?h4MoAuWq1s~@oamRw$U`@A&%N>f<4{=6RnZFcIh?tG#s=7lR2ICisH^Iqx z)I**Jk$9_9{o6)Q=1R7Xh{Zo;^nYPw5xO=B`a9SI zqBT#o(I(-cFdQqc!2n;0qO&h%5`K;69C9`utn*uCJq3PPKQ6FjrJJ?pW!jxK_e4Tsi91q`y$o zE)HMAC$Y-vg$d;4+NR7XBEGj>0B47Otay&UeR9S)iCh*sWngWZZ*TPAirY;mYH?1y zk3G|VYS2!$R5h~zcCz3KFEd$C_w=K47tpzy%sA5>;?j5R(%Yt``}*p-i2ih?qlbH&X=u^bwGi_SsvhS+-OZ^^%K{qmnss4Cy}TJ; zwobUT&_6gXLa;HFS#4!pE?Yq*iEUuLuV`d%O<#APo4)$$rkZ@7lIYryk~DjQw3h6` z)&GYqz*69DezXa)Z_k2V$5%sdV)GJm-CpuX;n3SYz;MFl)$rwR?)%V|b##`8vt;^o zwhu|!Xr`6B^+F@@BJCIV**p$PE&jnDbkSB=FEh&?c>tnwSKI@{xspTOC)BXK=*>$# z-!t%O0Ohr}=DRnvX5Y+S=l*O#f~AI9=elhFJ%%2q2@^Fs!~$lkjHb0DwXsoa)aQTf zD8@_sfx6U-wcW;YN}Hw*LZh%D9P~b|Yv`Rpj9pHwm(rhPg}HKu_rp=n{YdltcFp(~ zoo>?kTieXvVsj(?w1mA+C(B?jSrlg(Z8)koo{LyMiP3v8qgz}}09HR@?CAZB&2GqM|PH$o9x~4pb`>WJn#I*TwgC-r$Wb+S|Emr<=!vuPra@g5J4d6yvA2?Y3&CcdAQU z8d|J#YBuu+R3Lp`Hew6R^=3^J6iIztiCZ?9*B|cIfG?>|NdgvP%T7j1PZwP}bG?J! zuf3uU{M2vdB5`^!?@QJKlR2)w+{k^I3yQ}rG%$C~b#@!fCV3lB!xf_BYP{PfJ^InL z{4zlAtuIryM#p_XL3;#hVHs`NX5ZqOrg+ZlQkt5EjpR`h&)w{V4?BHsw&(m)<>8(H z!wLagp;>El^?LIiGf{VMqRvb|4KIMuudw6#3HYEfMMKbMDM&-dT8(KWzx^F!!kxK* zODJgac)#lq>2d5;!a2^0xUSSm_OH`VGt@p`n+!EXQqF8~3Y`xoXLm}SXS@)=SITU2 zn^x^`)D(SUjjjbP6W(l}02M2gJ)IyD;x_-9iWzYuE2OZ_E!b_I%!-}_)UZNyHFe2? z8XPhKN~6{$gHf#2I1q&l;+GG};l^9<+KGiZZr-e(`khNuVCMMFW9IbsF=9+E^omlb zm7dl_e~w_;m!4`*Gy;B>GWAj?Btaj!dd$bJRq-}Dz6(1ORZHgH{x#; zHj)8Cv`&nC>E;Dp{A5aK=-Se|spEchP^u)}!OuVZRg>xU=@cwXlyV-X?TTpWbj{9IWF_{zJQcyG<_ zz1E8q@?@gm2he&*4gIyJZb>kN7r^1yg|s6Zfda;*HrOYIMJI&nFOIdeKRrP{RH2LZ ziJ|fF57{XdS1Fqfi$p4*lYC!p{005bB6yF$Pe2F>0H9C`0D$|yErJ#8jP))5HNkQY z`i4&ChQ|MA%h;`TX@kX{@{?Pt2emF{QD&sxQ?(h7U6hR@p0^Is~)~cK#KAaG-$posM$nyuZ^P8 zCYt+W$THZ3j?24`v5}84uDC?fN~)e5wuu}`vGtAXv{Y15xQK`Cqj#N zXb$&HEt^7)`!aV8#4Bi;d+-ia^yY$+0P#bVrqoKGPLj5q#xoAr8{p(|cAB+9Or-1G z$LN++d7eM}?vi68`==vQjTHdtsL!^@ibGL5atrx|smi9(x#p^7!V0P8n z7?j(Vkiep^!?@Cuqu5l7uxw~qv+xY?BQb+HA^41PB1PO`F~7I-ndk=1Uj5i;@Z+7) zmxW_3feR2n1;u~-RW5in`K3JP1xvl7)3@z>i}%cM3b{rf9@4=OxfIjw6g#!o?%OcY zk7w5s)T1|BJuPX?A|nW^?B)G2+p6Nv3#;@%gMr2mrMTK6oQ8irCJn^x)1+|Ehn8f_ zv$JUmjz$nN!YW$}bobalGDB8g?;gq(B65Mcj9iB70SIn!8zEv1oxlE)*p$ci3C6aw zMbhX1N9>M;?%HM03f&SZbfZ8ck#4@5ish6Ope%Y*&xHJ2)+mC+Ap=b1Iglu{)|>`= zpp57_nm~}tn!dr>vs^Wiwluq*wGakUMP;#Dj|z$EWqm$-1qT+WImLYYE`iFB$pBM9 zcEGOqMt6tSS;$!-98GD&;1OXT;>mhtFwS!5=jc1A|%0>CtQ?@~nIPew} zSu`uPWpIF^!sj_WzLlRJG4VV*I_~=bgA{Gj&LkY=0Xk6?@d<${xtu z+6HW+kO8a3>)N{`@|q`&?HHEqY>$J5bSl6ZA;^&es*enh9!QIBsIpT@AQ`(W%emZu z&FZ^Zt20g&^;`nm9aY9dxaeE`swj#A+c=0+bud z(?<(`Ag7PJl34&|+}QMLx_EKlKAWE0d<%bsYZUS9@HY}d8&XLXexTGnUmAU+pl72e z3?bp^^5xdpMi;5x7qt*sNyHzKXl!QG-tH|RF?-%g)$E&^-aol`&D2P|AgYoH=fj-W z7%I=IX$O~g{&$`4}FKI8V5$JxV{3v;!CqY<>kg{Aq z&DESxoz6y6H-&TmSi44_5pL&f8@B$&a?NmD|4wXd$!AIojRLIpNKwqzgsP`m_2>*ePf#;G(FmizY!%$P`ZIuwwl-X}`uY6k|mO~Na zAb>hld(pmqP_>qHwZFYI{}dPDfcDQSwY_5I{R8q+uY`dIq)Egf%K0v&FlE1PnFa~g zfQ%(pW)m@r2)+Tw(?#Dy&lI>$PBJ36juDjsSxqtZjb;RfOj3X|q6yBWTERa_ zZ97Qy*K!>GjUO7#xM1y!UeS!GWuVFY16fb@#=-%Y2)RtrINM0qQ{j~xYj2?>W10!B zmOC9WRa>PtkY?;idSUCD(Aj&6jd)+Dc7M*91%S3UwPbG4lCe#uEXK=1@D;O!Tu!h> zgI_*XNaiD=cqe|WJAfRk8L0;rDJX0gzHrt7Ap=h43x);YFI)#nrZs1TJ6C+LXJF?* zZ?;WVwB}vB&!GmIdI?f&xuR5gS;n0o7_6SP&||6}6vzgZ5fYN}LOvQz?!GM&?8(~_rT59(s>)PSy0h#bwI(7tmHdYx2l z+a{x?dh9^pNg3sw(+aeb) z0k_04U|E8LQwS<$*ic0w=aXrgN7{v9d#Ogc!EAA~PW@I=daq(9!%a|i*lE()utDV3 zwH*Nip42<2XHZkFYltMwTd>%#mzol5wrW)~UKNhs$EG}NswL=(Ad0ZY?RR5=AjlkCU#Q^=K(Tbr#D+OpVYXNHoRsr8-QF}C8nyFh}83g0A>Bs1~nCI z%Inozc0?4Rzgx|l2!xdFq4+DvX|1h5kr<>I@RztB<*R1zHI=UlA6@~d6|h<+TDehl z0^_1Nu%T&A+>sbOwS?sXsu`vcL=UhtH3e``y>h*<5=l;ejpjqrx>xI{ZpTB;w%QlK z2DI}hmUu|BG5TxFnIbsrEAkc}%cpEm<6px%}OShLC6`0F8W z5@b<934rA{uW(p>5JZCUvc68x@cPO#A3e3i!0&xR98yJ*T55g2k(<$C<7fl*F_t`g zgk6Fz59f+2covf_ge6Xffm*Oz*TOz!2tzF$OeBIiO3ezW#MGc0%|Kw|f%qs*VSIgM zVToAv)sY>Y$#?>P3;wj;%pk17ZLL?3@EaRA`5ujKqBNCrke<{J)ev<;M;^O9?t00E zc%56$+4qr4*N~Zs#{!QH2gypRcu@TZRNzO`ov*m9q>8{&Y-RkrB2M00*SeQ`A=ZvV*PrajC68|i7l<81yD{yOg^w4p$o(c zI=&Pso#hFTiG4zpCPA`;q`aj6f)g-+EJnVUNl3qz$e@JSk3k{=+&jxWjy9A-9`)B& zIe%d<6etF)3rk<78S>l1O(WePOD7A)wu-QYE%b_ss|xCV(n6@DaNZ=*iC36igXPqU zQ4}e!z+601l+F3ix0^xuCT7LH5V>zb9y5TAKuL)z565w_)zlpm>mdMS!Bd3&-x80= zJpKR>@C>9mjE?OjkbUGty6`mK`Ri;sy>2pa_t9mNwz~)JKW|vA+>Z^|dK9Wo4XUB# z5YDYKguE2Fry;NuEeH@S4~u!YW1{&bS8JHktA{JY#!%9%U$hvlGqoB_z$v`?nu+e` zz9aI@=&dzHEsgh)aVwVYU$5n%xIdJp4XfM_FSi1I)cE*8e5QemJZ!^+SjUYRX}I%$ zK+6X4e1veyr@s@h$o)3d)IxJs&qhL+Y%K1$F9WG?@Uc9m=$EJp=Sd$Wb3|3 z_2UK>RS`w%9ZXH8iuk2f`EN1~2O(KxN~c0PE#h74Sa&~u9&s6%n^pKe+G3j3B-y6L7!Y8AlI!{^(+pa`B&(sbG6xgf{X@f2VH znNVYD+1dX{Gw90)h|(QplF54Sizb{tY8z4rP@}Ksin zZoqfmU7&2dc5}gW@&iZmg#o69M+&!bPwu4O87WHTdXl-Aqz}c3Pc2H=E6UVeZ-{(< z`UziYxsmn-Mea!fLb_Fk<7-?y%}F7;y~;?9mdiFVh9Lb#_>Nqe{{4CVg+SrgY!T6g z&l#%m?}!0eJ2OgObM9QaW3l8o&_UoRVT(u=Fx&Fdb;uXjgk|7VWzZz$F{8AmOyP_3 zF5>H)D-n*sUd)qt`V(%M9sRe{^3lCD-yLfnxZKbxin6nqz+U7!f|$H-?$W=FNmxTl zyEI@ZF=h2}qcC3rY(-pf`tx1@+@E{G$Q((J{OVS(G3(Qf=9S(^z}Bj8k^u)$iV`7^ z$ol7efVqC7&&^aG`?QeffFkPbc}Z|j9(A_2_r@v$IGDm<^*V_+@M@6(oaROreE37Z zmXotOzaNg}NpLLN@$=;>e}z{$z3mTv&BV;iHC#npB);fp5q>t@^_H|`E1UJb{cU850 ziM(rUC8jq>kwc{mi<2BQOEjbE(D}ew&NK?rmg&tK;6AsSZ6D4cl1!upp`rq~%pYdf za_>Uiz5O=C6X}SC7{L3tJRaN9mFau zBUzp)kg_zxKVa@CWm;v%U?G7YW}y#4?6TakV2U4%SFl!TH;5VStB)O|5Ygu}!bG%x zXEYN8)740${?QI$t=8mGz1Y1s?u?dq6z%c!AFchbMjQ(&8H%ntgc!eAjOdx1m2qU2 zE?eOAF-;L)*zq^l9QY5eAW>~%c9e{tOM-ZBFWAA@6k<$soXSD62D{h}K_`e|`m4@J zXsZMzTZ0*mtkgIZ)mUG=$z9OT#wpe&Yaxa#>DWo}m|{V@NWGl#UZh@fcG#uJ?zEuT zJ5Zh-w5)-Yb$8IVvK?+z zQ7rqs>mg-6(P9+E3BlywvCuv-Gr;y5dXV$q;Thq~EWD7YG%fwlU@*;X1cB z>ZvB1tyb%BV<47Q%;z-T1l1yn%ftR7hstS5S$CfN`pA?)-(TZn>Y=0vH@YN zw6DOOP*Ql>*LzpRb~$0`nkr?OY=IN2PQ5PlfKB;MVRSt9*vfg{Vt5?3NN;Y>GGB^j zC1yfc|7`>OhkcveKD>dqsa^)Os(yVj%JXhUx?|EkWbA2KB$Ng}=fXz53|<7id(v;(!6-99_ijfC1V}2%9abNbAv-cnLAAQYM)*Cv33~*kPuP1= zMf-i}OWNN;*L*OC03`z)u>xwS>vn`YLa#VM@YtBJqYcFnndZ)JjkAg=sU2*KSU` z5Tvrfu5@kcnM|ob>v`h-=iO=_ZFF1o}d5{Q5>%ut8>i ztOe`$kqt(W(Jq(1EtcU<18Y5|0fn<;jAv@ef{m$!(Pwm zN0*c4Gs*PJ`=icJ3`+E{`unBw(?$h3b)P8zIr{qZ1Lgd8Ikc0S@zs^-1Jic-cZ7hZ z;I=#$&E&buZpmiDEjFDyDVmG*D(UrMX&(!z#BV3BLU#$TcHa;M^@@74Ft$A#PkK=Z z21$}aYgL^z#hfqOwap7?-T7OTZc~&wXbi4+{+VbzKNbaqk}O@fHXt`6gv#7R`6?=) zPJzko8z_(at0yjFeA2|GxVqQxuMHk1@gEDEBBcTfN=OP4BArS}D(`XK-@6yCEAHVsz+d0bbH@{>o_oG8pXP~|#PqtwMd~>3 zd<}UH_=xWIIQlG`0toNoC<4?ZFP+p+wODYz+Y`vFP?#b_+W?SN+`=WD$HuJ1t{3pZuYaa$E zMiiFVioxL#714Fr=h03(m0S&upYQayMCU}WRE#deGYgh?-uUY_<%ztXM5KgpqKDa?hd-}6fass>0nVM0&>~O!4(XDk?=r5btHxDy0 z56kr#KJfJ6Zm!+BLp-2n!&U(dWy#DbSV^U{~EJv}WKh&vCSVW)+sYI_(5rr{M>lC7rGBd*Qi=q1Pa zbMXq%hu3`5t9FG=+txSbzZS=xHL^FN*t^{5)&pgb&B(X8FTwd759eru3pm!jl+H|SD+V7HID>_&L^p`isef&Bd<<%BgiN?YIDvFi(QE074= z&H?kB&4SIW$;v0?FrX^ih>1;$!X`Njyr)hOySEN}UL=RzTuTyJ@WP=WV%x1@EeFj! z+91Or$QPBrFiYf8L%-*mgbY)AH{2l`6|Pz(rImU&&r{s&=oPwF-csdrJL}o5cB~f8 zn|S+oyd+(a8PU^x96+r*^S9O12m8bmyLwa0d#`|^N%F>$#b94N+gqjiSr@?h?BX~+ zt{A1<3b#BNd{-?ahGFYRoB>gR*1=9U~6$!+?)xw-#w;I!2=}kNYuqA#h*n^i@Un**x9N)8&JAtG_Y6Gy=~qx8xUn zAi;Y2peK^a8LT@|M1KZi$^Bb*s%Bi-XaE|Q+ z1x*qfJLLT}F%O-AdHt7RgREi$%flsYl2wV*g;#r$`*sMGM?$r|yRZI{uPHxQz5c@A zsfxGHH`jmeXS#TbTrH+ofE?5?#C>eA~%q7!dmzk>CRFNo&YhG>ykG8Vd3 z&GhszRl4vL<@0zbyzkRaBn4hSm$~RnmUkf$a#PK1f1gpOW^td_*Wv}E5K$o|j8ZzU z+FQ8(ZL@4y4GWs_Tpvp{Q*!JnsMx7{i%>U`k;I!;Pbq}D{5+MBOozfNijK_>DNM;K z&$;kWmMdE3(SyDfj^^S?FtJAXua3uwikf&BZy07T`4wq)TM(oj= ztCa$^a2FNJ1rEBwFJjL^NBqjqse^Pf(~4jqT~yQ`T5UI8roU=J)UxSmjTwpP9&T1D z2=3JFpbtoeUcbB>0+bznlVTvp*_KRmB%OMYotMKFRf$-dpK{DlAMEBDzc=^D!5JbF zY+5ZhHg49A}Tzbj`V#sHR3cf35kl1nI%pBRK#};p<_Opdl zyb5dD=G`m48?JQyOuB6K=SV>qhw*JfbRd^yOD#d8fOdrm?O?Q|t_;yhTR5U`%+(h)!)kulU%I zrMaeCWJly<3-Gz`B??jvs(@VXG? zXi5^vM*2#8d2^zzutr8%Cs<1(HN9Qe)uU3k|ATn~s68qzxQesj{tjMprA9d-kOM83 zP-jGmoxOhVh7EKO*}H1@n%g-}R_HmD1PYGp?~6;waK0z-JV%xG*-&wKZ+7A&p0CTs z^Ti|GJ8L$qsz9~*ro;~V*8HN%z3~f%AE^}U?XTB=M#&}KSGg+)hGe_uoVV3)BBByF zowiv~W4sR&3d35)!B5+_<#M?XT7+uZ#ueh`;=hr%;Vl97U%CQWp6-YxAm_Skbl&34 zyLhrKX4R>o2_@4}S#9GKr#!yIc_XDySnnuJoR3^aRQGZ3ah18ksdfzl_~`?nq?wdGBz|CI)k9&C@)8n4CI=^L~moV_pF+ zs?F)-*M=+J$6HSJ+|aVLp8cf(#)ibxM5y4kifx$GX1hhtxCNz*rGuKm9NE`Lb)PMC zrdLMZzNBqLF_DCs%Oc(lB+ktdJk_DL*kvGS_$GwSfOKN-7ptRPD1%FBE3^6WMh9 zxs(!D*XHJ3i=6_mOW_URQ!&R*1Q8}uB{ZHd8ZF9I-{>BytYNfh$A4m6sZX5JuSrSy zM7x*jQ}zg0+1W<#?Sc?t+Eq`ADwX0H!krnvHNi(n{au>wgn{gjQC`eC3(Gnb;vZqA=@c;NFi{F`^*PqjGWlrMq<|F zuHq+;-+DVIg+B@IGb)A@Nxd=nMxSdlAy zIbZ^#dZo+7aBUtnqMX1vp`~^%lQ#XfjfIQ9_AhzOb%Qk6 zgETFA0ENsZZ@lVhqEl2+;eNL}`LR}G0p10zUEDx{z~stDnrTDKu8WhP%gn(N4GmMU zQYru2Ha&BGVyFBSV%_dFfvDbP4hv%y67_|+A$JlBu_E;324m*%vWL5CnN0`{nSd{y zb%KffUk5D@_vt9?aSzfK8<|^(=}R86gG6YykXgVM4f_h4X9;V^Zj3{z&Z}g$t8%Ak z((6u9FUIp#s+AK4zrw`hZrf#Tx{qh_OfT>Z+*e4Vv76Vs70fy>nb+DGa!uSRy>~9K zLWFG*yU1|OXXtr5^14$^!&FrEB#i0WT-EbKQ^t~T>4|ykH~j>+E?Uo!S7?_!P%>EW zEDTz9M$Il3*$KGDaYfy`VLm8f_T>zheqV_Sf!2FLUw*zTxLH!pwZY5V8S^V5ykBtd z&NgPsm=KwChc11pV={d#9o;x+inUpDxs9*H7%8_llm2Wv|4Pf+>pp+e?U(&=WJk!X z(BgC{%z}7bP?**1IKE=*#JZ+uc59ng)hW(|BWoK%;-RC8TiM3IUZVPr^4CwvzM8)4 z(-d`>tPbVQ&4MW(64o@dut~`lHJ=l*2zz;JpQ7Xx~NXodyYPD5l=6QTYh1WlpROA9~cIw_990Bov(x2YVE<0^o#>8tlnc&bjH<{q3 zC&>P6h-6x|V~Ru;N?x}Aq|$eAFhG5%W}!D=LQ^GNTQR^b8a2#&y#quy_Bzy1am8u? zr8y<`K&6Jgv&Maec4ug7?Q&-4_3=yKDo&9q6k|xjo$LYKtE`^OG5sSQYQ`mW+A58V ze2bDftazfl+UF{5qt+!@{O|*f$}q_hT*JDVT(2@rILjELm<%1BBsi}~ALt6;1y6#F zAO|;ZC>8o}N)yAM2wpgNP7$kB3ssPTa7)xNihpH6D75@5VNl6b7TIkk7qr--wI$X;+$ z6qioXnsW8c4W`X7?s{0Gz0%|4zJfdkCiV7cmUBPXKU5XWklryB)Bj_DrG}*`73AA^ap0@s!IKP#Vj&bUq)h!eFqgKyh_vFn}xpdRH@F{51qIF7-tku z2QhkEVmEA}`!0YQ+1>C~(b)>gj+MiWEVFz%%5%Xp@#Elwz%TbMnYZDu#)QOr_uj%~ zS~cdEPRUwc2eHjst@QR`47oOCV!6x1&zPVRvi9wzwuc^PQ3=s-j4KCC^gg^|R#Y~A zRGnAv$E(iZ-oDA(R@qwR;WhWsX42?6I_;1~X>F9<2pg%|MC3P|eXzOz z?8Cger}T5ROI1~)vk%M4`4cn7WBerB$35|Od?C%;{$UzlXa>4Ic^^eeJFNG+H@X$| zCFwUFcsFIeU-ulCFzOBvKD)CPjvUnWr??hiT{5Lwd%9j;RvBw!j3`BL+lQ#7zUF8)^eP zd|UX{Uhs>kHSxk>VBVc=6zE?rw$#_#m7~YHoz3j-~T}0&PG~xgk?~ zw>4za9*?kS**|;T<@wz6=!rxMZE*}Grbmu-=WXDppzF8p4@uX5E~_~plP>QXV!5u! zA6v@&4QW&A8DQUr;B_s>HqdKBTZy zF}UYxStjqR`KwGbJ!;b3YO0r>`BVhywK<>fq`Cd#eIiMafpy6`3?U>Kh)Uc;RcAaH z=4^>RoVdl?fqNEe93Y&;pl`=JF<7~u(;s=2l;PRqCZu0i?%z`0gW%fdFd}zAd`SY4LDCw6>vbf zBOFj@4E$g9nR$}VgffFbJOLmO*D-xCfH^^5(bW}5Q15>gUvu5>bq8c@07o5f{Hb#% zimRYu&Tx!90{QQa$HQ(;Sck#~S~F^+bI=RYesoRRI^fpEUoU5#>1+(KUe+ zusC60-$<7fp4{(C|YNcxz8VXFTL_iZr5 zxM-p6pvYeWc?z2Aft~0<1SCItbU@?3097#pEk|j|AI3>L*3keNgC<#=r;!_ zvvfap-VoyxNeGl3+*`oW-39rR-t~QCTNlkte+J}U5@5~o&MRR3oBF>RdzM2bX{LZ+ zkOJw)cg#@`=!xBAYlIXW zH(En}}(D{C1&G)|H*VevV2(=qlhJKrv z4ZmT2Zp8N};Gs0eEiQsUzJTnvT?)S)Ku~}qCGt0oK%!w#B*OR4XW&0ao#Zc_niEl; z2)NfT{6#3H;crL}0$l-y@8e0E{=3@WmKFbag#Y7`crZk#uoal!Cjgg89CMdu_ix&u zjDZ8L@`UTVe+v-cuzz2}nvOKBI9&jNlB+==@nbaS(ch$9MYy@cQ9s*K@<-Ettg`kk z2fk+l7#IppSdD)V&(CVE{fPN-Tg<;P3ukeD5A$!EWd4Zy@x!aXQR`yAi8}E!tRI;_ zzC`jjGez?^nZJ6aV06&(%6^@=24zNfP6@iJs nq{P9Zws2u#TRW&QOc*R-FCi&qFC`@@Apx_q6NQP2i9`Pn1L#+t literal 0 HcmV?d00001 diff --git a/services/geminiService.ts b/services/geminiService.ts index 6028d3a..18bec9d 100644 --- a/services/geminiService.ts +++ b/services/geminiService.ts @@ -1,4 +1,5 @@ + import { GoogleGenAI, Modality, Type } from "@google/genai"; import { PronunciationFeedback, Language, ReadingLesson, ReadingDifficulty, OCRAnalysis, ListeningLesson } from "../types"; import { base64ToUint8Array, uint8ArrayToBase64 } from "../utils/audioUtils"; @@ -425,7 +426,7 @@ class GeminiService { const ai = this.getAi(); const targetLangName = LANGUAGE_MAP[language]; // Prompt asks for a conversation or monologue suitable for listening practice - const prompt = `Create a Japanese listening practice script on "${topic}", level ${difficulty}. It should be a conversation or monologue. + const prompt = `Create a Japanese listening practice script on "${topic}", level ${difficulty}. Output JSON with: - title - script (The full Japanese text of the conversation/monologue) @@ -433,6 +434,7 @@ class GeminiService { - vocabulary (Key words with meanings in ${targetLangName}) - questions (3 multiple choice comprehension questions in ${targetLangName}) - Each question needs: question, options (array of 3 strings), correctIndex (0-2), explanation (in ${targetLangName}). + - grammarPoints (explanations in ${targetLangName}). `; return this.retryOperation(async () => { @@ -461,9 +463,10 @@ class GeminiService { }, required: ["question", "options", "correctIndex", "explanation"] } - } + }, + grammarPoints: { type: Type.ARRAY, items: { type: Type.OBJECT, properties: { point: { type: Type.STRING }, explanation: { type: Type.STRING } } } } }, - required: ["title", "script", "translation", "vocabulary", "questions"] + required: ["title", "script", "translation", "vocabulary", "questions", "grammarPoints"] } } }); @@ -558,4 +561,4 @@ class GeminiService { } } -export const geminiService = new GeminiService(); +export const geminiService = new GeminiService(); \ No newline at end of file diff --git a/types.ts b/types.ts index 80963f2..65a9cef 100644 --- a/types.ts +++ b/types.ts @@ -123,6 +123,7 @@ export interface ListeningLesson { translation: string; vocabulary: { word: string; reading: string; meaning: string }[]; questions: QuizQuestion[]; + grammarPoints?: { point: string; explanation: string }[]; } export interface ListeningLessonRecord extends ListeningLesson { diff --git a/utils/localization.ts b/utils/localization.ts index bc12ef4..0db96fc 100644 --- a/utils/localization.ts +++ b/utils/localization.ts @@ -107,7 +107,7 @@ export const getScenarios = (language: Language): Scenario[] => { title: '登机手续', icon: '✈️', description: '练习登机口的对话。', - initialMessage: 'ご搭乗ありがとうございます。パスポートと搭乗券を拝見します。', + initialMessage: 'ご搭乗ありがとうございます。パスポートと搭乗券を拝见します。', initialTranslation: '感谢您的搭乘。请出示护照和登机牌。', role: '地勤人员' } @@ -341,7 +341,9 @@ export const translations = { emptyHistory: "No practice logs", qaWelcome: "I've generated a listening exercise. Listen to the audio first, try the quiz, then ask me anything!", noScript: "No script available to play.", - scriptMissing: "No script generated. Please try generating again." + scriptMissing: "No script generated. Please try generating again.", + vocabTitle: "Vocabulary", + grammarHeader: "Grammar" }, ocr: { title: "Text Scanner 🔍", @@ -593,7 +595,9 @@ export const translations = { emptyHistory: "練習ログなし", qaWelcome: "リスニング練習を作成しました。まず音声を聞いてクイズに挑戦し、その後何でも質問してください!", noScript: "再生できるスクリプトがありません。", - scriptMissing: "スクリプトが生成されませんでした。もう一度試してください。" + scriptMissing: "スクリプトが生成されませんでした。もう一度試してください。", + vocabTitle: "語彙", + grammarHeader: "文法" }, ocr: { title: "テキストスキャナー 🔍", @@ -845,7 +849,9 @@ export const translations = { emptyHistory: "暂无练习记录", qaWelcome: "我已生成听力练习。先听音频,尝试测验,然后尽管问我任何问题!", noScript: "暂无脚本可播放。", - scriptMissing: "未生成脚本。请重试。" + scriptMissing: "未生成脚本。请重试。", + vocabTitle: "词汇", + grammarHeader: "语法" }, ocr: { title: "文本扫描仪 🔍", diff --git a/views/ListeningView.tsx b/views/ListeningView.tsx index 9ceab7d..d790308 100644 --- a/views/ListeningView.tsx +++ b/views/ListeningView.tsx @@ -1,8 +1,9 @@ + import React, { useState, useRef, useEffect } from 'react'; import { Language, ListeningLesson, ListeningLessonRecord, ReadingDifficulty, ChatMessage, Role, MessageType } from '../types'; import { geminiService, decodeAudioData } from '../services/geminiService'; import { processAndDownloadAudio } from '../utils/audioUtils'; -import { Headphones, Loader2, Send, Eye, EyeOff, List, HelpCircle, ChevronLeft, History, Trash2, X, PanelRightClose, PanelRightOpen, Volume2, Square, Play, Pause, CheckCircle, AlertCircle, FileText, MessageCircle, Download, RotateCcw, Copy, Check } from 'lucide-react'; +import { Headphones, Loader2, Send, Eye, EyeOff, List, HelpCircle, ChevronLeft, History, Trash2, X, PanelRightClose, PanelRightOpen, Volume2, Square, Play, Pause, CheckCircle, AlertCircle, FileText, MessageCircle, Download, RotateCcw, Copy, Check, PenTool, Sparkles } from 'lucide-react'; import { translations } from '../utils/localization'; import ChatBubble from '../components/ChatBubble'; @@ -61,6 +62,8 @@ const ListeningView: React.FC = ({ language, history, onSave const [isTTSLoading, setIsTTSLoading] = useState(false); const [isPlaying, setIsPlaying] = useState(false); const [audioCache, setAudioCache] = useState(null); + const [playingVocabWord, setPlayingVocabWord] = useState(null); + const audioContextRef = useRef(null); const audioSourceRef = useRef(null); @@ -70,10 +73,32 @@ const ListeningView: React.FC = ({ language, history, onSave const [isChatLoading, setIsChatLoading] = useState(false); const chatEndRef = useRef(null); + // Selection State + const [selectedText, setSelectedText] = useState(null); + const scriptRef = useRef(null); + // Cleanup audio when leaving lesson useEffect(() => { return () => stopAudio(); }, [lesson]); + + // Handle Selection + useEffect(() => { + const handleSelectionChange = () => { + const selection = window.getSelection(); + if (selection && !selection.isCollapsed && scriptRef.current && scriptRef.current.contains(selection.anchorNode)) { + const text = selection.toString().trim(); + if (text.length > 0) { + setSelectedText(text); + return; + } + } + setSelectedText(null); + }; + + document.addEventListener('selectionchange', handleSelectionChange); + return () => document.removeEventListener('selectionchange', handleSelectionChange); + }, [lesson, showScript]); const stopAudio = () => { if (audioSourceRef.current) { @@ -81,9 +106,10 @@ const ListeningView: React.FC = ({ language, history, onSave audioSourceRef.current = null; } setIsPlaying(false); + setPlayingVocabWord(null); }; - const playAudioData = async (base64Data: string) => { + const playAudioData = async (base64Data: string, onEnded?: () => void) => { stopAudio(); if (!audioContextRef.current) { audioContextRef.current = new (window.AudioContext || (window as any).webkitAudioContext)(); @@ -95,7 +121,7 @@ const ListeningView: React.FC = ({ language, history, onSave const source = ctx.createBufferSource(); source.buffer = buffer; source.connect(ctx.destination); - source.onended = () => setIsPlaying(false); + source.onended = onEnded || (() => setIsPlaying(false)); source.start(); audioSourceRef.current = source; }; @@ -108,7 +134,7 @@ const ListeningView: React.FC = ({ language, history, onSave if (audioCache) { setIsPlaying(true); - await playAudioData(audioCache); + await playAudioData(audioCache, () => setIsPlaying(false)); return; } @@ -124,7 +150,7 @@ const ListeningView: React.FC = ({ language, history, onSave setAudioCache(audioBase64); setIsPlaying(true); - await playAudioData(audioBase64); + await playAudioData(audioBase64, () => setIsPlaying(false)); } catch (e) { console.error("TTS Playback failed", e); setIsPlaying(false); @@ -157,6 +183,25 @@ const ListeningView: React.FC = ({ language, history, onSave } }; + const playVocab = async (word: string) => { + if (playingVocabWord === word) { + stopAudio(); + return; + } + + setPlayingVocabWord(word); + try { + const audioBase64 = await geminiService.generateSpeech(word); + if (audioBase64) { + await playAudioData(audioBase64, () => setPlayingVocabWord(null)); + } else { + setPlayingVocabWord(null); + } + } catch (e) { + setPlayingVocabWord(null); + } + }; + const generateLesson = async () => { if (!topic.trim()) return; setIsGenerating(true); @@ -239,11 +284,21 @@ const ListeningView: React.FC = ({ language, history, onSave } }; - const handleAskTutor = async () => { - if (!chatInput.trim() || !lesson) return; + const handleAskTutor = async (customQuestion?: string) => { + const question = customQuestion || chatInput; + if (!question.trim() || !lesson) return; - const question = chatInput; - setChatInput(''); + setMobileTab('tutor'); + + if (!customQuestion) { + setChatInput(''); + } else { + if (window.getSelection) { + window.getSelection()?.removeAllRanges(); + } + setSelectedText(null); + } + setIsChatLoading(true); // Add User Message @@ -433,9 +488,9 @@ const ListeningView: React.FC = ({ language, history, onSave {lesson && (

{/* Left: Content */} -
+
-
+
@@ -475,7 +530,7 @@ const ListeningView: React.FC = ({ language, history, onSave
-
+
{/* Audio Player Section - Modern Card Design */}
@@ -622,7 +677,7 @@ const ListeningView: React.FC = ({ language, history, onSave {/* Script Reveal */} {showScript && ( -
+

{t.scriptTitle}

@@ -642,22 +697,68 @@ const ListeningView: React.FC = ({ language, history, onSave
{/* Vocabulary List */} -
+

- {translations[language].reading.vocabTitle} + {t.vocabTitle}

{lesson.vocabulary?.map((v, i) => ( -
-
- {v.word} - ({v.reading}) +
+
+
+ {v.word} + {v.reading && ({v.reading})} +
+

{v.meaning}

))}
+ + {/* Grammar Section */} + {lesson.grammarPoints && lesson.grammarPoints.length > 0 && ( +
+

+ {t.grammarHeader} +

+
+ {lesson.grammarPoints.map((g, i) => ( +
+
{g.point}
+

{g.explanation}

+
+ ))} +
+
+ )} + + {/* Floating Ask Button */} + {selectedText && ( +
+ +
+ )}
)}
@@ -694,7 +795,7 @@ const ListeningView: React.FC = ({ language, history, onSave onKeyDown={(e) => e.key === 'Enter' && handleAskTutor()} />
- {/* Sidebar History (Desktop) */} + {/* Sidebar History (Desktop - Collapsible) */} {/* Content Scroll Area */} -
+
{/* 1. Image & Extracted Text */}
@@ -421,7 +454,7 @@ const OCRView: React.FC = ({ language, history, onSaveToHistory, o
{analysis?.vocabulary?.map((v, i) => ( v ? ( -
+
{v.word || ''} @@ -448,7 +481,7 @@ const OCRView: React.FC = ({ language, history, onSaveToHistory, o
{analysis.grammarPoints.map((g, i) => ( g ? ( -
+
{g.point || ''}

{g.explanation || ''}

@@ -457,6 +490,19 @@ const OCRView: React.FC = ({ language, history, onSaveToHistory, o
)} + + {/* Floating Ask Button */} + {selectedText && ( +
+ +
+ )}
@@ -491,7 +537,7 @@ const OCRView: React.FC = ({ language, history, onSaveToHistory, o onKeyDown={(e) => e.key === 'Enter' && handleAskTutor()} />
-
-
+
+

{lesson.japaneseContent || {t.contentMissing}} @@ -566,7 +600,11 @@ const ReadingView: React.FC = ({ language, history, onSaveToHi

{lesson.vocabulary?.map((v, i) => ( -
+
{v.word} @@ -593,7 +631,11 @@ const ReadingView: React.FC = ({ language, history, onSaveToHi
{lesson.grammarPoints.map((g, i) => ( -
+
{g.point}

{g.explanation}

@@ -602,6 +644,19 @@ const ReadingView: React.FC = ({ language, history, onSaveToHi
)}
+ + {/* Floating Ask Button */} + {selectedText && ( +
+ +
+ )}
@@ -639,7 +694,7 @@ const ReadingView: React.FC = ({ language, history, onSaveToHi onKeyDown={(e) => e.key === 'Enter' && handleAskTutor()} />