From 2004ccce4e60c4e21433bf015bad38f18fd25f03 Mon Sep 17 00:00:00 2001 From: "mula.liu" Date: Fri, 23 Jan 2026 15:00:03 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E4=BA=86=E5=85=A8=E6=96=87?= =?UTF-8?q?=E6=A3=80=E7=B4=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gemini-clipboard/clipboard-1769082714226.png | Bin 280397 -> 0 bytes .gemini-clipboard/clipboard-1769085744299.png | Bin 0 -> 7034 bytes .gemini-clipboard/clipboard-1769087429425.png | Bin 0 -> 18514 bytes backend/app/api/v1/files.py | 62 +++- backend/app/api/v1/notifications.py | 128 +++---- backend/app/api/v1/projects.py | 31 +- backend/app/api/v1/search.py | 316 +++++++++++++----- backend/app/schemas/notification.py | 12 +- backend/app/services/notification_service.py | 243 +++++++++++--- backend/app/services/search_service.py | 220 ++++++++++++ backend/requirements.txt | 2 + frontend/package.json | 3 + frontend/src/api/search.js | 16 +- .../src/components/MainLayout/AppHeader.jsx | 1 + frontend/src/index.css | 10 +- frontend/src/pages/Dashboard.jsx | 39 ++- frontend/src/pages/Document/DocumentPage.jsx | 248 +++++++++++--- frontend/src/pages/Login/Login.jsx | 6 +- frontend/src/pages/Preview/PreviewPage.jsx | 305 +++++++++++++---- .../src/pages/ProjectList/ProjectList.jsx | 4 +- frontend/vite.config.js | 1 + frontend/yarn.lock | 23 ++ 22 files changed, 1318 insertions(+), 352 deletions(-) delete mode 100644 .gemini-clipboard/clipboard-1769082714226.png create mode 100644 .gemini-clipboard/clipboard-1769085744299.png create mode 100644 .gemini-clipboard/clipboard-1769087429425.png create mode 100644 backend/app/services/search_service.py diff --git a/.gemini-clipboard/clipboard-1769082714226.png b/.gemini-clipboard/clipboard-1769082714226.png deleted file mode 100644 index dc39bd2599a0cce8bd6877ca9738bb8cf71e0254..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 280397 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 aotls3KZ_0B!d+zGj1oi=*ZKZ^(R zomyvP&;^y4lvLAdmECZy>#*e;&4oK8$(Jt@it&>pnwcEYO){WrDHF({f1?$2tu4~N z<7zX3x?m9*u;8o_bqx6=1s-~ob zr?PclT4H)B*BF^AWWLCT<}Gk5EvLk&XsErH%g0vm6D)7)uVA%Pmc$xcfC_}#U8i6I z|GBb|J&-^JiS)3pSG>6Kk5%OVw6EazpcYTsBwKoee&%M#vSn4b0ZQ5(J3A}_>A3|( z{CqOi^^C;)qfEF}1s+OuumfHY^NMF;l|!FW*4-hX7VJO$aNU%rJ7M^gs2F71as4?J zZB2qi(64-_car|JiU%jkblaWtgETD88iL~bLf4hxfd`Y36Ye^^TcYs0u#6q? zAQn2<=3g8mcN&09{i%A-KD{ySo$I zosGM@yE_DTcM0z9PH+wGZr{$FdGgLTXRbMC{+yrmUe}_#x>i@!U3XQxwMf--%|S0| zDtE>LoKf|*>JsB@)7&5NPjw{MuAqEDHb~&@98Xc>T)2@^=o_f)9qct-6k2n2@N4U_ z2FwhFcsMkPo<6GtJBBe}thm=uK$r%cR`7;GJGE#^-M5qoMP)vRmb)}#Is59~Nwp_- zJX2^(282nNv(7?*5g(l1#Lf}MAr@!ae@3d&eCYak8~7cs4mzU2*$#1Wg(w%CVF{`l z0zfazz$fD1$T|PYUh`%kku1hitkOT1b>G0;K=M;YR4Kbs$5W^}PY`&uLCxuQ+lxMe zhgwJDi>BHnYQhu#IZ2&TsC0D=5V-d)U?4X(IzaXXCme-Y>5B~T z*f_nO?U@COhLuofVi+Sj%Z&NO!KX%H3JHGa*4 zsJlBaVy4@VlD8I>Itek``>j^gpg_GN&^`3Ib5ZETp%fxaYyi$mk4<@%p6=z8zBS{H zJ}$A689@J2Vq`H;YOI&0-Xg@VjFxwtZdT|Uur3>sQht0QipEarSB>sGOtU4g!3FGZy%o8t%dvIFU&bC;7!?uccbD6N_ci{kv7^@Ddh^xGzd;%aCqYnc z3pU!AoGyMBm=G0>3#E-f#VKPgKm zlvjlPu&uezmK^lQq^0HGQ(8FOWX4d0?1W$Dxh(zbe8LV%a}_5IsI~GpVGPqJd|4fP zQ9h9i_3Q1czw!hsv}t<0|61ztnX>rxiS+! z&)_EXlkpr$oa}&LuDMmNV&Zdy|#VdcOJ_KwDwDdq5!B4?Q2NP%313R39T{=8%iR)*Gy8yt&T z39|)p{pu!d7*|}c5D7wzaj;T(MADx|3VvTl9|`y|(GzL(c~lP<5a}h@)q5#jhJU3D zA%Mwpnzp1t7J>I2HnazVwM}{B&;`+ri~BuvK6JQ^Pyw8~4|yM2%~D$mpC%L~)9g(B z%xRbteV;;m2%u?P;;OgXK|$R%Up8E7jLO#Q>qzxQDPAPy^!-e`9eo|s_eG4+d9QP@ z5-ZO$M}ghZ#Yb#KO4h{rUa_1rt&T!|8zi-@=PQQH7NtOymg{flGUS{rP81axr>vn~J!{Rvpw1Y=~@T7N%_6WIgm}WC1~{MrDNR?35(7(cw4f_A@J+dTbm? z69(O=1Gl?}2q25+%;uCM<9?8IL5%|2I7i(j=6e=Eu}VkuDcZIsDZ8)S$a=4j4D zzF%n9EYBj{vZl>$d@stjw|iCupg*ciRh_iTH!bYg@?70oPedfck0$@NrM#JFpJz#Z z2@Hh4QlZc+;!dmZzKuNX-WK*%H=6Zst0qVgu*!l&kdh?LfaNSUhKC#9c8hePY@>(} zx-P<4`AI@`MB6t3_p;Pbl7yZp{Va>H)MoTs6ogb*Ha9wQ`$mPmQZP*d?kD_csfO6m z?#vkJ$!SYxQu>x2qMwf2mPUMca&!7zVYZPp{Ulv5FAl0#G@$`h41{DR1%2gB<8fN` zk$_n{x?t@AgCpW-u`;tPgV^c{n?VcSt#TypEI;*deI!!1%A`ql)ZVfl-z1A~s>tMR z7_W+aQ{-})(}CsAcosg?90qxs$}1txD-QpqX$vFh-^ zD(-bF7rdUjzX67pxtO1M{N`9VyhQzeK)Y1IRl3vYGNYkP%?MYzEzOO2)t&ABx~gKC zPYEZ+T%=Tqio+%;>MOa94n*FbUXNj1j>IL~If`6177LdLBkdOtKrcbP*5CpF?#_%S zaS_^@eSw^0u8~8vxqSwBOTgf-A@AcM*d^F#rq0)WI=Pwc?nT47bUalC*J<|ZRZUGb zosZ|GsaAYjJxttmephSFz>-^N5Rq2=;Q<2AuXbN29z!Dbml z;&KJJS+pc8{DC3^-qYYvPtHSq^~3Svs$LX2tLS8L+MO3(7ZGS=h?@|g*Ni5J15RftBF#;%W1W3a3|n&XxwX33$_xeC8K zr|nbrBSMgfVw}nAAMHJQTQ>6@*5`@oie!#Ps35fA#7^WhPZAW2A{ouvv3BRLqyRO( zhj}<9-Zir+QTZ)h^gV|$B5`f77x4}kp19k3J}*$8GeB`t3#IZ=#wnf_3`RAPL>l~= z9jry;6-%Qpo;OS%7TZJDEeiaIvc8ucCF8s9pbc_D7y^EcY%+0QNJ&ZJnfpLP_;W2i zHZQI9ZXQ~P+2xz>owhV$GB6TDL_VMk2jf2332VGhDh@;o(W64DGX3GSC~1JYOy#oP zi_dsBS7O$LF%BiY@qXWI>Z}9;wVG5sqRA4ANsv3GU~{INT8am*1lQ?I%L(O(a=8gB z?eNwbKvowSxuR>+xF{n0WSblmKseA~^!rJKJFht%!Qj9QL>}Iu`PdsS$c$S9ESwE1 z7@`y3Lc4I`ik=bEvQ!+CYNuSm_fjhx=ApWJWG5wtURcj|?!$A?MQ;iz$1UNQ%WTXs z3KwBilh)y9<|1f4*JEC45mG);0W$yctytakVE%;RX}WgxWOC6HhMFVj2}FYQI5x%Lvw)(^simfJKwO}}W%Kd}4%Lf>V8QMvQiL{6E%im8RqUn1s_9vAiI zJk5%x9nKP7C3I4x@{s25n6KXIpF~`KqwtdpcIfu zlyUA!sfX)UpP*Y{NR0?0rACu+rYiKjG)Y``0t9?*6cG$okp*jyK|Rc8c^V@oBL;7`0p}jXVN>HhQq+v7m1Q>k4Z1K*C?uUDmZ-CFW`AZf> zeqc*b7mT_svq$r=?b}H&ESxFL42GX^ZJ_mDK%o13zS;+}Q49DG7MM_W*-$3YwPEOD zr9mu0lP_%$i2r95Ktu5+AW(QJ-EsEYc4g0+0B2-c_nh>$i~~usX*~?RG+<7tzW$;# zMTp(Cw7_zm#JURXmbo}0vVALfcTNMoDlugC*6--koT`tE^U9b`G7M=@Oihjm8bj`v z(d1CiFmvN~wKN;Y=*Zw84STp<-J88tOuX$q;~P|>8GuoLpr3b9g`d;6*mQe}c4k@H z!p$z%$|bS@%DKTL)ydE7d@O6jrqU3z3Y2BaV38FFA;(ovMT^ww7S4W{+4}HOfdLAO zk@bGY{#KtN58cTZ2xWe=RJ+L(o+b6UwkbAiN}CQD-mlB%JSQZbDBwcQPt$+=YEgn`QH|<+$0Z{NZW=L{veQ&Lq#n+HpAe zip}%APa&0dX>_wfT@Y0IO3w}CSH670Xc~00O_v0db_qDH2~Mz1u#bAmnV z$7CGT9$h|Q_ovC0k)s-u?o0>^n5)E`r*dS8qTEfr%-Y+5;RAKtRiD$Dx)F?`*{)g% z0@-L)XsmPUGVp&P@wVO2%*Gzwz7M;9byg?}U3dg#{jwB{vV?Xq))xEY$6B+-(lrpI|wyfbxL_0u5U?0gC5 z2$?B+-hi;z$eF&0soK}WFyz{Wd{hA>Kx_|!=N5Q*Ar}B=@gC?_%85JGm%!HWb#A_$ zKl~Qs(|}bBueb9Sm>VH`rhy3?pY_{C^!oz{p^rZAa8t1-C4)gY;WY(J8b!6a%G(=7 z!@{N!C`N{s)me#@_8I6(~H5dR)UJPsEEA@(|3)5;q8NL! z`8$qZRXZBqj5igGW2OL3F)92gtMq0?XA56$zslEndaQ|3I|mv3NUyN^5-$n|vBvxX zED8RrVSl&?!`IEsI=CpfK(-g{#h(GmeezJ{jcA>hL5}RdL1flh=~arN<;f_#rq>b= zPmd|CqHNQCI-jlI37}>=S*hEIqzYJde}h}l0+6z7+A;OLdTG=GVCorKX@7LI;bNrI zqLS&ry_@)a0q7d>q_my35{PaNJQj^<@;;4f9vnk>_=B)5X)y{%0PDdos^3zf08V>a zyA)jVV9Nf~($tFT<*_EB8@BG;G-RKAq`+d_B z<#kvkcSiZ$wA^7&Gy_GjGofZ2?q1gk*;+W>btrNnC8vAIucJljf|WwQQRh>&gJ-l; z5rXte)xmgnkYdEET>x2{I30Dz;wq`{5StnL>KO}{bp^`{0R|huyXc3@$h8axrPF*V zBnsUafz5wVK_jKIY<|8-7U57zn&f=v1H9az`NYMDM<=|dBsp8<&C-ipf9*!EeHqb; zj4h(p+gO*uUr#WIk1bU|`I<*B748=PMpYP?W7`rqF~smRVGD6ff%>6l{&CRgE0|q& z2v+qgKmWIFNx>m{i&5~nyn6F?*sl&@TrpH#pJeqt%azD9N)>7Q1z}VpH#19obV5<1 z%t6Xn2y{jY*`3JZ{w{Ui%DR5Ni|hHzbW2RpRO7ky4IXZW)?|4Sc=2NDNBA=HUX6!7 zY&b^lk9^goFub2A+#fdTa4Hw`UWw9O1ln1gm`p$E{SiOH>lUo;ZjX+ulCvl99Rtwa z2YtVKH(87V)W-HkS$=gvOnKkebHw9(uPd=q5U}mEY*{JUFQK2i$5iUmAqd^WOw*_I zopEqOcYd_!KY`B8>o=>rwo0=|03p96N~h|f(iDV+td2a`#kb9Ns`*h^kjkrfof%}i zUOSTigFjO5hBM&pmeh@FA{wdNixCRJ=1CMrN3MY|Vi}tO_i0$H3c)VDXa1Aa{E%YP zedvl&D`w_;&h|w;smUHS4O%U8A?zo+QIDSRd=X5GK8Dm!pXAa?RLWvecnvsC;9wifl{Sf+; znQqOEYg90U0~9Jaz`jayYb8j%2-rS5s)DG_>2TZ?XUU3WTVC2z2=OVY``GnW8@TR? zN<3|vC3HA;zAgsrq zlM+v2poT{pBUE)KmE7jGY+F!)DVvsJmPM+PC5U+yTDUc{J4^q2h|pnCo2;st@mAd) z4pw|oQwZISd(89_#j2xrKb9r2Y2WzS8&6RYo@pTTR=^aa+K9d2>S;C+L!K(i(^XQ3 z7s!&RM6JT$gD^PymUw1sF_eL#a^QfgHEJN5ctXMsZ|^KqtYW13amTAj z|3I>DJT=R3bYVDaz0k=TIgvE;v? zq(J`9NwGrxMI&q92^3U<_Tt0|sV)ByfW}8#n69kB074i+TDCo(P70OFhrVsboCMvj z2Z-sZe0Sfc(rsNddKM^Wz{5&UcZDuyK`(VIbVL6JxQu)3|0)-`IQfg%qa~DhOs6>; z3%6mLq=!vi)3vKY-I3>79jpyMb-g!nD+cO@Me$CcMs_0adb)9(rY|xT1_NVdDKWZh zJy5Siozt^|usf7#cwjz_-!90TzrR2oJ?yOG+^M?TPj|)kbu7|DJAMp8=1XQ?NPJ`( zbkeXjAYHF1Y<5HZE!h2)GS@aSHr_&X1bn7MQ#qL}+l+J+aBjlZrY_&)#x{9AF;>|9 zS+mcT0j@Z?PHy)`Z>BxT)Co&r?&O+Ul4HPB$FILq6jvG@0rOoX%Bj9Q`iC<31BbFv zSRS=DtUEia(3N8PO303d40e5UGNG5hx?r3Hl|x77D(~wy0u)R1hbE;t)RhKZFifu6 zFE#2Xa;Z;leS_(4RLeT=4|-+yA` zI*dmk`UX$N?j5>+@z)e zyc&6y?yVf;eo0vR33hdq~ z+*Wqu@n4#Tts?>OIGefa_}TPV-*^f6leM);7ahWqg+q+21On_>ByibCvhVYM9wo+j z@|}UTA_?u+Z3+$)%5Ti6?zy}uG}Ah;LF1$2emo8(e6M3D6Qyq)SEp*Ifs3a$QX7|3 zFM);RC(pb^m1@aEg|)XEPmR&D__j?M!+TOuFV7<6msSYLJ@BNjsi7*2%E)r9!VMY_ z+!OAv21iyPv|YZ8rEd(`*~I&O8O!eE=RQWDP}TM<=2Jxcp0_T-v#x;tfu4FU_6tu#WE4|%Qm0seogD4+I>qTD}pgGEc<+btfhUF7CUPOQ-0>bsSK(9`9;!WrgJ3SON=P87+m;g_~o^K+LbO8`6%J z7dp2DWZfCJ0IQwriX^JPi58eozRbjU-kzFf{h+|fyjP%__$wa6}(``!Lg=WZrbt_Axizf4VKjmZUD1_`g2tk0rH((wEb-M3@a zv0=IE(`khAu>lYQ%daQe=8DlCY$1wv{M;8?+$JT#3+!jK#}vSe1}%75jP(6E zpu^(C>eC9(EQ|vy?aR3^a5#{mzpqDV!6K}@Tz4Z*=O1apCRQrAj6t@(U=|(vjCJKQ zSMsnhl|UQ4*dcbuGSV?cp*MB8n%&$T&>9&K$Ekj-`VmDDF+Lu)x%@jxEeDA`@J}ED z%_pf^`WFCagr=t&hhoYO2mc^6Ia+I^)b+lK(9JBiHRgCh689sba7#iW!`m`z_Ox!S z9vz0qMh9yzwDU-f=?khDrh;juB#CWh+;Xf!F-`EBMZc`Z(AuX|4cnz}2$$`)GY}&@b|v zqoqej;T&>FH)*pmg7+Gc(y3e5l722agb!wVq72fdKs~}znSuP-Ffn?|VUTahq?nWb zpiYnPCDQ}ruY}CRFeVsIon$_$$)Y#C=<2_spKnEx9sd zPF4>K(HLNPlQB;`t7dFfDvBx=HV3k-C7|B{Hjl>MucE0GmbmS(Y-zk`3v=IK{m_5; z7{z4@U`x##R2o0hk3##5eG;>g&_>R{qo6QP4e^~lTqIPKyL$2jLC{*?h^W>uqxcxC zF2nzh_e2MV{&y>~8Xd>^aqBz|d!lpcmz=<~GxyA%K-Bbv1EC{`FptJ^ZL0*Z8{21s ztJ2~u&i>o|IFar=M_cDSUS7_8H*LUTfm1bQX7q{!?O43-%j%Me+68pIE5m|tMzCZN z(39gu?jSNKc|k|Mns)g)_oKvauO#az#Fr>D`(^D=l-QVBi4rID){ucXt79z&2!#v$ z2X~F;j}|s~mR6bmt}dOavUPAo;RCwjCk0O zNcF2Va*H47bZS7sBZC?kWa{$9;U5{GwW;Y?v&m2B$F;#95)luO7c}|F#k_x~zWPeo zq}a3&0l@qwfgviQ@U>m!TP>1Nac-(nr2LXqjUav%xlBXy*C4r%1o<=;RYFvkcLQMW z&mWJGG+a6YY6v7=Qgvy>Xg#On>vx#4Cx{G2&%8>|I~M8aU(*{aQypEyK@^#O<26H@ zPkaFgYew0asS0nHE3wm9$r;$E%VQ?=P<+L>7rph6o7(u?lfyte-9aSV*#f`C0d)eDhZC8&Rl<6JCI)khePU|{g@hIr2H z>RS;%n1Re~lRI3KdP@um&;g;ofS;sSnTOnDb!sq6?eT?eD3bKAReWzpaxoA|b(QM& z&(Y#zstB`4%!a&%$B*(3BB{K>3-nv~L)_$aRZB6vh1zPDJyhj8L@bYTy2Xb7!fE`0 zo?pnGkR!|AA)-i-8O6~StNO6MYezZ3@rL>ljn%@h)YpMi3s#9khpfh3CBHXx|je8xMehj(D371^@H}DGGN*Qd zfmQBM;U0B$=Dy<=yKwi+3_8kroP`Hdk{KniU0A(k_S3j&Rkm?kGe}VtcvDiHi1UYQ zxPY%fF8m~{wd?uUtV@XYQUUy3i$*7B$hTb9I2gii`Zz9K#`B!I-$eyuJ2I)ricXZ6 z;e=bFp723aI)kq0)_X2)%T2U=FQJ9vhhdmsD?lM*a!7x3ijBc^@E z;*w0YRr|4_bWOvWnNWw`TWU>wlB*y&UPeb?LEE~XK+~USmyoeVcl9DIdmdAC#{`5s zq0Q9oDvgBn#)ZN<8*&t@$sLj}WCRy`$vCFY7l`dZuAAAn_Tik@~L z&&n(MgeOn>aVbBpY+iVlyK_X=3{|F0Zbw(e#^1E;?z$1c)eCYgluFKRkl6 z%^9wFS9{jIhykOhpl=C5?CqZHU75Q3x6i!Ff{aUng`JxEMwu~&W7hV}i={D5$EM>m zx#Ug@&YBh(+u&HQH(@w`iNEkne^?v`)pJf3|G+!&@Swq9PxLydVRSd~zI46L??|p2 z#okCJjomqvu5>fVQ@BS%p8C`CvIfc=fsz5!xf_)Y7V*xoP4TV~>3crm3jTg$kMP(u z(9#m}@nZIS6+V&#L`6-3D7lNMNe9rghYU`ZV}iW6L9YF8=PrD=M&a4lc1ZYixCOs< zBm(D-$>X^&da)ZZk&j9wtTnHVig}?eN?4eGbW9^Xfi(M?%d(b;$Mhxfq zW13LDb^J1L$}GmHNkxro2CVemQt&wTNu@ATLpD%pZ9KJ;vm?8xeQlo>tv=G>(H?Tf z6beh-@-r_f#VmkhZ!#@ND`T2t_P6e1F10$b!%q)j7F{Axyt`Z6C0QFm(EK=3)47kF zn+Jvn+95q-(F!x5|2ktZ!Vdbk>=Nf?k!SKt2+BBG@$#A#l1-h5bZFuxpE>??tkrJUyk{e#G*Jmj!A4 zB+(_oW!o*&PRlt#ZA{XMezV?~oNMOXb}|MN8c15)?6>A$P!&&!S=`^jm$HbI7t6qZ z3G%-jHfO?F&~6a6iC}iHeNmv|$yWQAxcVA&WcpM9nvvUd*FwPHu@XAct8MNPU}&2z zls40y(W!Q8{6hLnuHqHPuUUvwl41G`%^u0&1b5QQa!#nrlQ>8q_9eFl>xz^Y^)mI8 zIA8!=GURTT6w^g>={TxkG@mS>%uZv=o|hX;HkCu1-_04k>l-yoYT)_pL)7f_ZPd%|_GzFz=*U8P}2pSU=79;_I zB@9&h&kSzM{mdA83hv8d%_te}HnOIhMgV4-n!)esfp3{hk*$o(-sYpwFFS*7frX3v zYAQ@3=Jctb2qzp-7pcqg#A;; z>9go^=#YWbR+yKfCa;lG39TzUON%XqWDdy@dST9uFTsg-92;Oib9tf{0M@j~pnY7* zd>Zhr=uQ5!y0?j(aILpYw-{=-=hB(`mdG__^WNrsia9!3jsE1O1raDzePdb&jBbF* z%7E4zi%KjdBFRtEInQzY&(6ynOsof8M=~~fvkZ>PH`I9=GO%>P@U|;3D!ba& zhOZ^Vsr@l6=aZynF6sZ|0=9<#;Hz;1UD+FdnJS+lD9?l`wJV`AkG?6^loFuWfdJ_Swq_M=H&pzy1Bk~^>+bvsi{9d?&U`b(R zMNBqRHBh;pW;PL=D8g?ti7P)0*YZt*XN zA4(pR3EgU{vBsvDpl9^bsEPMLvMqUxo{?o-d|kRXri!4uZh=uZGNJ3Ijl-HQEf&U( zADAYEyT+dw-SKrz($EwSTmw5fyi^8r3?-6p6hYcVIpw-j;?_p$P>2!bS~E5#^de?N zf31>A4r%&kHh0z`;b%ZC?ZEd6M-eY2VY1eJuL=_8qWGn;niYr?Uh;!HT$t;XLD6M8 zN%*IQVmU${vcQ3LroLV10(xi^GXpdJyw(QFA!Yy!OLQ^M8Q?VPvh!J7hE%%YjIF=g zHH>-DYS@g@*;PeHFy}f>yzP=88-~z#=4wp5uSftN*nW3>RL_BJdnpY$ehhp~i#s*H z2i58Lu&qY70%0|V{+=*tq~_BTv=Hr}0#U_jN}HpWJmxZ^P^NCd&^^r+RY`NDav=*&~krmx7aA`g9o z&uZ+uQ5%UQVma{=eU(X4j?`a7B1Fwa;;l4mETFN-2~qJYa6A6QGNu|lTSsCz?~pT-}628AUyjk zpNzS8EBc*(;$g+cZJKiL#s?uhf!N1CpwUPkr-jSq2tN?|WX=SnvjU3^`CPTw>$N3T znv)T`rxC2HhzhGdFCWy`Vc_hOt-j#(hz&Plp(zfnx1n3SI823H?VCrTN!6yOQX zuoj1HOIwslaajLWN?!R+AY3GZ?-hNS zLyD(LJsF=eXamVcVj$<3OQ2d}1txh^qO^qX6#oP&Kfm&FwTSFg~6<~;;S2hRxHgf5KU0yD#Kwl7Ec5S@Y zjXPpw<~x7d!tZW|7!b&@wEco^;RP)m+l7)2KrLoF1$ctMR)i&f$q)D~7dj>-B}xU1_r)KVUiG!k8^9e+0QdC(vIPeBvg7p))g?*L4i>E1v_6 zq6y_M$}EwA{{Cet7oJw8Wo|eU16#)Q^#HVrk!pV!H* zD0Tmd8hVR`mLyu^n$1=?{}qtO*DiUs&vNz^#ekW+++RIlw**pj z?$y6TJS!mOq7c(SKVU&qvPPfV)Blv&dMQoHIU%LgssmewxisZ2G1%)1S$z_GJQM`A zv0tj2fD#+YfMv-=4f)+-%ixNZtYUUljCfI=5L2jYcD_5~nD}JT=Y9apI#=%w*wZP#K zrQ^HVC_ZTd>8zVf8Q>QL=Mrl^yp*J)_k>B?b`w?)O54enJEHzD%G)yagQkYa6v@_z zrI+jQQ{RuHi-H8%vUG>J$awW?4W4wkdN(u5^axohgLkgi*!}hyw=2!)5kElat-r9xo)l!MrRfVHEEh#_P+P^v+>|YEpsBJ%#RB zcYF1+?Hgg{b+^!NFwn!%<@yjlzSJ~?Uv%8G4LZMHE1-1w$QbJi;A;xIy7mvyIbT(` z_AYH91q8QV_I_ayiiC_G&QuA|6e(`};q(3kp$wiMHoTO@f=gmF_=g%E*jpe=Tm~d; z#->0^>&jn$7cb6;4Vc2b`pxp1!wA3$Pf8^K<9K9N&HSdJuJ4AkRSeccxHZ`R33Mlx z6c3c@{HW+HQAQ2dIE1)c`nNhnXu<4CS6wWDFWrzm1yf7awzcj#tY3aZ0_JfX$x3&g z&5mq*`4?vCl*p+DY!%1!DxDmz$0chgxlBpo1ntoupzM2P=BWKA;!0%d@Bl4LsQw!S zebH$keSuQQWCA(VNXtjgfpcV@Z*or)EnUoyvrZyJ1VwlHiAnV6dXQQ11(dcbK45I7 z@v2Cu(u6KSo%k!>Fpa;HYsA5w%b)Qixk5w^ugctfl&+KgAYkg(UCtHyL5D@WpO z*C^idX#mEZ_UDCa-j_;>-!*K7Ey+a3k^s91Aq7DaXWXgy-q>XXcVqJ{Zk z#g^a6J|*pGrSRY_wWN(555s1Z0r7p599O@Waf8aM3h=pGZu{K))CmCiN%9=*?F!nl zmm0RD!d=*bSAHP6HhNjulT!BccgW}#(Gwmb(P$19n?MS3c^U)M%!!5Wya#2XYd{r^ zVaxFSsQYv>g-mHhtU$;9S1%Oh1?sdrxrqHk6|zE{x)ILJ-^ac>LFg$an(PojS_vbS zgDkrNVk+;gTKGz_`ofTi+;J|iovcpAuBdL0SaW#2KjzOVMS{~|!;#`H%T$sG#)3ad zKGbG|NQ8!p-x_d-VJ*g>6({N|izDI)Ea0;|j25uw)$VCXaz4V~C-I-h;|TCNQ0Py8 zPaZ@ZNqm-4=j{A9D4rp;4&LMr!LV*%<=fm<8S3^9=B9*M^F^(&jr)9C{D(8d<$nG z82D8~suGjiri75SMsGuA0pT3%`?bGROg?TKS5Io7;s?)8&Hieax-!~^(XSRT=CcXsV#F>z|uasf-n;gQiHocosC4bZ*Mwq`;o#}1l|)vdT?5*ouqq2M7wqboR) z)URah=@-~pv+6v`oQ@Z^midb||5E(TAnvh&f#C!8EN#s{S&zTS$X`?sc$%>@LVF$+ zdy5^cyv_gP4F9jx$q&MsQnH30$(v9A@%jJqCI5L46-b+PMoRCT`Nx<3TUzr^w(oBy z@K1%pKZD)gM8KW*CR*EP`#bhuKKP#pYeIp5WyJJt)c=14|Hr@XvHr*iYn!&~zm?H{ zULK~O$RDpLu*l|LbN|m%`j6}S`&-Q>FbUAM3GMRq&yxTC^j|*zcaZu|bVA7NmH$7S z=bI?7L&KYB%b3kS5ZM3SUg{wM1%sA*g!Mn1=PBDC#? z0tG`WILG#XC;z`|ShfLb+PY0(+v|TThriGNUGx9@Pq5pR`_d0Vt9|8PYXqhgBDD4h zf4KvFj?Isxjjl}*I`iV`WE>v#|4t!?T9G|x(pR=uq*F&H8Lz|C#n~%wh*U1#`qZIFV;LvG( zQ{-#R$79T&$KJ9(p0Za~y>IjJlr>@MJQ429HBsAMAVTU(L5>ILysvcM7Ife4bU*G2 zft_9=v`-D%eCC9dd->jX`8s#LRbM*)sd4Q*Kk2k?3mAWHdmYey9k6*@v;o-vDdT!T z{TTzS)V6U0auY9ZcrWUCPwI=D9*cdRiyzt#dEWWnuVQp}kW*4gmt`U+Up9dP_<0i? z^g6Nm8g;b|EOySO?c#vO111&QbFw;{b&dKs=}5RTe>j#lv1|}OZX@`paaF{zRP?k1 zfsE%ZC_YypSGj4>hOI*A?N`@Z2EyA>c4ti4;K%#LN0pn|HgIyf?Uk6l`h_BZsVL& zL&wGXo6)Twf@k+~-p3^E2K<)s3(|{UxA#<8dbZt^?avL#hx>&{y$kP$Hm5xvb>FnM z&8JBhOx3PEsZJxPyLr3!Yr2owny(JwBx&EO@6;-P{Sj6K8|}g{4!1>i9sjJ(xO{y^ zsay7O6W+ieV>ep!aJDQeZ=r~PTlNh{Ht;7cnDpd0H)G=#Je%eaV{>FoNdECJR5)67 zY+X+ii%~DN6|0LUB_pHAj+!Dkll>Zr15eQ@K5d>9QK0R8a%l$6>h`8K5Uj#m_{70j zDuoGugI(b92LcKfHz&&#MSeCD<9+Mmedr>~&hI8c4%3bMjEGvj^snGmE+RDZt3GTzBN&_vG?eEw+K4>sZ!h zAX(^BS@m-nQ0;ZAn^|Fh*=Kv4xBe+$qdGERdIbiNucdNc$1$(NF|U^hAD6)*>qoLK zpI!ebs`rwM*ODY{88UGg1l6CV)~qY?0=cP==NIqiNz_A!G=!{mtoCXKNLtV{^rg)+ zca*BFqsaKc%+9+N@ME%h47Q=aoP^JsavfyyzG3rGVk_>cF%%X4(hAh^GWg;j?yK4t z&P#=(r@ZffzU~X#5H9k=#%iy#19uSjiCx?WcA0d{QA-@(98G~E^(ps7OMe<7iDX08 z*F~E*74Wg-qhgqIpq^QLJU5mtwlVX0+Bw>neO+ivjFMLFZ#w~dz^VvIDGA7; zi{<*avxOhtpeIJh0&S~h$#EK0dutottzW$K|m_UiRPvT6x;3F z+SJ<`=)8HGP2ADZ)Z4t=TjJOqLM0Envoklw{w}N?v*5W)*UO(GSBw=uQ9T?`i+5Ar zn>5`U7TufILp~p#eNvaGZ}SrY2^<)496nXKd62NzDs0p(Mlw z6Sz2&d)=2t-Te4RAW%45h+BZCjWp{ovxGS^#54en_wNhu~OP z^8!4a-w<58!C9+go^~YU+-EDTou~q)4q6wL(&Z5YPXMg#7L>XM@jKuYL!6#J_3FRh z7p^ttvYuEywgBpefISBWFEiFpO}J`4*Y~snaiF^)pVuMOsLjWyO?Dbj%o{PETQR~1 zXJwn8kvzRMWf)oBQyv?0bCqvdH<^cOq;M_|d$YrOPa)s#Z~TU-EImuUeST~fzRLe; zZj$|0#8nl5Ah7-TZ>kPd%4u2pKw=>Pr@uLDTz!g4>OD$I>$tHV%fh$R2}WUL2*7v3 ziIbn|9FC8(=0) z>uFRKb>mg60x^tj&0{?I_2*KD?CV0c_uWd{Z^Emk_5+qTpk?{s07UpsIFMACFySV| z-KWL4jT`PPoVyNj;U=`vX&e`4d%GjTvd90MmFlH??d5q&$8@`Fl&t>&f6$if39QMv z^5}Z-m=Sl6b&YgoX1dPNi}bz)3M#p|eSbb$J^;2;h1QGU`BVG?t49epj393uKWN`j ztiRJhBd`cNG8;1VDfHe^GoH7CW|C!3(#TCm`1udy+LDcfK6+R`tUm0{OwT72sPC8B z?P2T>9ZQ~T<$RNq+ui3Wp(2>RoA9*Fd(tJ9iS7BmjrYENX5;gMLVoc{wC;%H$Tl`{ zcpX~=io6D&w>d6T&qC$KM4Zn91H4Fc)9cOZ>zO_Xr)GtC6H-$7*wTDiN}cqsKDoUy z_6-d2a#{{0Zpc~m6$HvpzAQbBs5^8+|8}EWP7xA(06bD#^NV3-%RSSIX%5^(hiB)~(m05~UWgx9K z$DkuW)Z%-W!YczuuKqNNQ9>hnXkT5Z3hs>RXHVjLO5jr;K{uyuL)ocL*_li+3=XtuzD$h+4GA*W|%Zzz=S`iDq z!rnEwSoT0XUBRj*d&Ha67|NENhj-PdGZRj=SH*;s%t z4o{VwV`%iD>QFN=TUcfFbX=Hd6Y`RW`^wJ$Yjj0)+?h`2>B0Nrp(4$qjsRQfxFUWU z=x!l@uBc@cn_guOLN_AUzn^ueR5r1(!ob+0%6X+0WH#ZNNdE%*A+vca!y>9icZn*r z_gu(Z$J9D>25h93WBI2HX{J`qM{?5&BAN&2oATUu0=g9b`L=3OpxdvLsv90mgbeXI zQ}$^SMK+M^jWm7+lOdI5$LY!Jbqr#vBD~|Bbn52Sh2HCtc*bfKSHy5ZO9 zros;XSWIs=j9$svhcs=!Jo`zP%4FF!LZSTPDeD4*T(c4-E=`1?w$X_!R*| zD^?yI5z%S71~63(pzG-E4)GT_8ryt?#NhY_jmi6IU*o0c>>`e zXx9McnV)25^6c!s|E>KS2cYTX><5{=(BbmFYyYDgf*%lY9`}J zWF}<8c&tzD!HVBLl=B&z_byw}fatj1lLpq4Vlv>>=Y7a0oY?QjMmTykeyr!EBIA`i z700@zKYs9fuYYlgOZx0EE7dL81S}T}^5D8-tt+8K2^b5=0s91yX}3Jim_0_6*{pDrV_tA=*xC zmFLIU7P=TK2>W$omi-husZaf23-FmaTQe3Oei(^G-n49B?kz6=_5}ox^@pT4+ES2r%tCaa#C-l+A8bTJ z0v~H!4exyUV|p(8-4QDsJjYUwV;|*2r`iOh*$Vapj`WMS*^U?6>y#UJ+B_Un71&8dkua(s$V2iHGE}JxKVe8x%QJ&~%^gY& z0O1clo|UZ4SgQ-e_oN3~)?0lK^x}Yvj4GN(@HV?gs>l4Eyk9#NAA|@AE&~-Y7_f-@ zfx`G&^htxQEVr{FP_0bl>3+BtUu&s~h$+|n2^dIBaHz@P)rK%=RKSh7`(cAuP}7}_ z0=*@R>Xd00EWi9eL43?$^`evYKhZxtH0ZCGKaS3QP0ylHHm+PZ&OungloYP96%+T5 zE&TgKXF9%HA-?_~Bs_sS1Y~7lOK~-M84Ban%GXhCutkzh_0T+WtHtgVaprrCTHT*O z4oL`^JV}!0gH@ZdBZDk<#kGq@JEm2NKLM=|xb|Yg+bGTEn~JpuR@v zsB8=N!IAF+D60D0-wAL)yAVc_`KYZVJ3D##DMW z=+yBj$xSzN|HT4uqK|$2?!=Eg=qWIP>>DY*Bem`7y7t_I_u8Y;fsSY%DLT3M$81|i zjn~N8-ZM>2O67IKCXnSdD1aH94xTl;zIV<|AVl zGf{s`^ zPzeWQ$RunPD@52Z?U+_Eu04QsI73!_ zRFj)*+qP|;I@z3T+qUhRCL1SnGA3J7^X>J+=lxx4{{?%mdtLW_;&EL!0XUM5*1Axl zRN7VBaHi-T(Z1XRrQ6rmX|Zgh6(33U>*(sIyu~*Mb?vlMPMMZPccHu~S6pE_lDHj! zvuCzwvbtx&7Ai#CZ5Ra_$t|Wao{io&%k!ZOY^EK92B8B9=0GUCFJ?qfp5Dy%cjq>Y zX2IF=+Zf?a%iCL;(T2v?DMtXh4Ns0}IN9&?w!sm@V&(SA1-ov}s_4npPrDpiZ4zP= zJuRFWlwA}7HrjTUdjR-ZvOX2(%m@3B>GR+#+x>vAyWd7Ug!W_D~lrkJ*%n>8I>+M3oN2&~&2j$g0R z{`wN}@m{kmijl?}@jxoy#v!P!GOGF;TI(%>!DWZJVT)ULQuL4hKc#=kQF%cOz2r=4oNB%M~-( z&WNHp6$vDU$WF6-WlHPC>PU#y62)fdpJxd0JEvQ>2QS9xS|wd_qAwK;f!sWv+%jtD zk@5+|r=%C3|7*Vd5Vgai^Y&IBUipteaZ&Y{Es1%J6%)DB_@d|ZPkx-v1`(gE22?S0 z644$*Op2UtzfMiSg>@;2$FJ7IPG4rZYV7=TFq%;rD;g{f3Q(h>O+t$W^guv*rFU08HG?m(&%Ygdgg4WkV(Hn z>o>>-d~<}PMS_24Ut#ZRni z<99G0Jn*dXqteJl&sgy%D~6SG3;q~uIg6K^kMPog1*|-ozgH(Qq$tZUW*q~L|L#x2 z6HOQ|8p>$*clOIN#9^>}B7*d?wt+Y!r(vt(oqO z)v<(ag2H#<{&GUeE4KT~N6*UT=uAEPXUvpv_9_+js7t?bQk?GzdIsgNc7FpJo9>7+ zb|^kQl|pL)2xXv?xfzyI4<)+vKZbHw$r9C;NSn7dF^L}cyh4tI4|7n;NQI!AE?c(8 zQ=;p$DP)-%ckm$7B(mwqfoao>1io%4+0%&yE@R*`c$ zhE6t1&SGiZfv3({zdr`u^Q%E?NX4*c3?|v{+6>yx$ag`JAn6`we8Sz!Ua?^vQ986J zJsyL)lEnklEY8?6vMiLh^CA@7VadzqD=KVBBdJb(C(6;FZ=gGDv^= zo5rz;lQFx?jzAICp(#UvkV|LwnVxNxx37$4$#Wjk%v5V_SeAs_r>pY!zqJ4JPnDJb zxi8#M@T=9vf*^?mrTYl90$9#fk?mC&owDS?Joj}VCqYRp4PI+|qyTAK7)Sg?7qKoQ zG<1y?olEhI(;U5yaK<lyz_03-dYqcu8sP;Yy zsp$EKI)1W>p?kiFXmy>HRKM!g6No@m3xAhi*5$_)Q$R3&sVqB}EXHi1tMP_?@y-jEiY<%ujk6 z{(RplRavyok}$a#$A7?^#}un&Qm23&bgJ|#pUG`Gc^1*kdJofbIXI&!Xaq_B9#E^x zZz`Y9+D|29vx?j_x)PH%xS32Nvp)CCOUM3Qg+pxQb*Qv~wfweTzULM(GpvNZ#2KhF zAmV|%LM?wwf9tB?T6qU+(M@&{_0gdiC}r{O<2u}`))hL*KK)>z`Ga5p7F&5Yo|MfV zFC(?J65`u{3l~cy-ZyhYxnWc$+x}niBjYvmt)(lg)X*7k?0CVjoh}R^bIj-8t0ept z&`o^%*;!55bziw&Y|;=3A(n?u(v0;_ic1LRK-~wk#YbEA8K7K;mjpg?^(tHpu^)0@ z$&Xv)GY(A9lO&*`(Tt>dGsCoVBY=4D2U|OhQ~IxDAKLC!JvgVR7GX_I(o&SGwbn{s2I&GSx(3l z(#doD%S06AwCFG8-IRHaUTdstmsltEok=B>YeQX*C%MLxJmE^?aDb==`!2N91?W$S<+}%egI=a=@ds6u~7dd2$NVB}K zo&~w?$W`SIiwmN@4u+p%zg(pqiUCNL6O66xsNbhXc#nd0bKCrQO1u}~HYS;j#S^-ArEkQI$mLX+#=72E)kDB#l*SSz2;>TEEQ^!RDT^w-d1zsVBQrzSq0s?8%gQ z7K5c=dC0F*iDfqtp-G$$=5~h7uI}#-@F1#l3;>j94_9*V&xGc`ZXzRL5bVdYq41OF z^Qq2ptZRf0NYQlguTd63E*9(|VR-ONll<_B#3*78DD{3JQYPJHi6I{1LCrWAHvUxm zj&4N>HwyvF9inTB3rc2HvLc(c{)@v6tXz5D2f0$vIpf@D@iFmUhRvVwFBuI6rpKth zy8Ftm?Pa*hcrEl8w-GM?3x52f;!sgImDLck`Fn~_Z{3@sx6Wpd`7A%6qysnTpR_^^ z;HQ=eihpIr?sARna$3+%=>Xd{p*Wt+yy#nb)Pos#P3TV%Vp%gQ2D29f%B|Rhm_NQN z1}OM=Y+ZAJoSg3y8u<+p_H5jJE~J2@2m=?I0#FqhS4pbQge2BTL0ZyiA7dlm zx;ZpAAR?+PU8*d4s;m{;E4;j!L0nCv*Su=ffs-YWX=(H&#aPsAgf#;fbRwI@ak8$9 zfOlrP+D_Oy-B`p%W86%S2J$j(mc;k4sN1}o&~tu!A*7W&M(c5lw0A;PWm45)Y@5f; zr{=ATPqxjk#aqT2l|iFfQQ^o8!{{0|#&F==g)9>6rNW(=o~MW7jLjJ_M-Uq)Ff6ND z2s^b(RvC$Ub~~}WTONC0gRz+)3O8$QHhFZlV96HD+*<3-7PpZb{9`?qYGqmfT@Gi8 z^bLI2CY*t5`oV##u!#jNro{;lD0SRPOa<=e) zZYrS{bOmD=+_%0|_s+NVYl{Y_6KYodGF|vDaa@BiWQn}v5+SxK2QU#_eIFTYuZ3>! zVTV3=of9}vYTY;g)$17%G!qbGRD$qG`cZBs3iNYw^fe6Y+{S`Ib_{>|h>pd(L|iy! z8ycUg@yYqor^tenhQyGML>79a4CI3+j<$TL!0V;@ZHWHXBEsuYX} zdt&eUy<3qrn7o*?yZ1a0{?1Y%A3~<|etCg4Olyfd2P>JiMJrY*aojf@*rraEsbxN3 z;9E8Y+?4?^S!&o_WrCWgOQq?W8hj_52zIt(Cw0UUREXepX+Q`ouE|JDJ<4CD=dXd~ zdG5yxS3ULx@)P*b=BuWNQdqLbA>YJP_C=;Rpj>{Zr@_i*SRz9;<+TG4;&y(lvr<)O z@tcm+s58Y_YYokj4&}@k(OGnr9`Z3Iyh712KC-XXl4+qToLwGDgbvL zUO`WnR6R^KKXhwMD1O&%ANrDQ{tVZP_Lf_{k445KtA)!j6*p&Bl!i4malvZ8zG*fc zEo}ycm#gE10E1ajPLawAv*<>^(>{SC#sRgIiw!DVmjF&Pyc!2BHA(J^a~erx4>xnM z7MvAukd^e$@bsBKgO$|G?8(qzTT$wWq2_z4O*Gz;s!`N)ajS)m!!5Gw%Z&8`S!B=Uj;+8^j2+zujxB+b|zA!7dMZSv8E%60T9d5 zcrnJ`P$`-D#32)3cEjksbiR|zYVFyjCuMkWCFE00Vx~du1pR~s3Zwzg3wJ6TO~!g! zBYh0CR;!p4fXxZW%-u1}Re7jJBT8R(Lro*JQ0~hS#x`3bflcS$A+=Aaip&oM;%*gT zIwM|OWRwvKC%iZ|q!)7d_?G4BhsqK94lfjF!Ph1gNgp^?Ya`ggSK!7kB$7)anC+hs&a30hu6d?!`!WST7J=G$?Ht zww0=ZO+|o(V)Bo^1JRdVeiKFtBR-#E5#Qw7H5;O8bJ5smva3(;;&iiS+Tr3Y_Nc`plxzM8gjclPfMM*ZGk%5BuH3@ zOr|7RBmh%r53Pw4D#$u;=$u-##G58^AAlVIr0Q%bPIQ;>}(B-=^C) zh$f^ZbfI&a$SMwaKdfxO^8DSaILC<%G_DWVAEcDw`iCfHUSO3s&{(Pk0fg5OBb*x2 ztiP|uAJ?nCRqmBwC2+2z82qz^TrYQ1p?YIX7^(ERYGScUX17ewtAUGo5WtP}m4y80 zyl!N%fxeksn=@mryE)f@Vk=A6^Tcxr&tzYIj#=z4Sf@>_X{{%71Y6h;D3HMT>!ARz z_l#@$z8P}MD%8|N-BGzM4Ob2+RrfsqGomnj$UG`h@>sS;%x_^kQE?YKaZtLAQ8y`J zL6DaeA9;;Q z6)*m~XGVnobgIO4E4x|HWA`To%IGVojk!5E;{rlR%=Odgq(wM=9m^SiWGX10*T0{= zobLFF%sx%P$Ud;-(sM*9_=G9axH_SMLVyH8h|KZJO_ll2zm#%*nECDlQL!Gku?8w5 zZ>Q#f;Yf^rbdy~!c|?w{C~evR{5mdtIooaI>;gC`qO|49EW`^VXXmMVv4Sq&xv7A# zi%ID-lrQ8nf@Wdobm`n~f0X?-pLv`JuEoCo`3xvG{j6JS<(dVQeS4?`Y7WT!t}BVu zn^BfdRdy4;bI7E`3fU_-R0AQl42sN?s-Xs^zO1AGA}{E|SBMcK<@`9)Ae+^y*cZuG zXf~+BKl1CD-y$OJ8^I5Y2~+6U%E&io=`1DM#bG1kvZe#czjC{WmJzb)acb1dv7WB! ztK&$+CJcs@d&t8pJydp_fI0ZA09}r&td7ChewP36z@zG9gL+k6$=x@(`R<@KW6~&J-F7sOXIuNLo|v?yHz%s=AB;-P>PV-&vUqe_^F9EXq!tyZ&?_tN>sB36177Z}8GRTel zk{pCl$+*tuT#j-IhDVFLXY|9D84xUr=<1MQNPbGx{vSBP>Q;roe1_gI7CElh2Br?K!9JXnZg(x zBW9zTnijZkM<+wzJx{lZ;IOmT51*MgV=lwOeYlu$Jx4FUX}iz5*v~ z$9~^zmK3S5GQa!&H>QP&^GW4$Xtj`#m%=|0Qo1`%5^I`YYjlxh(J(H5PKdD(1HQNq zc^D;nH4;ZvifBb`WA{6c6o?fTN0bj+b7s-8#u&uGj+2&15~wolk&4>IIJ}dIWw1_% zVUFWmwdN&l{h$_N!oMk@r#Wz4GUSvvsEkg)Cl6pmVHXt@*mSFOu`rL}`P7C(vVZxm zj3M96W$XgxME=^uFmDw9D)ync28za=@7G1cghPeP<<|qak17~-!ea3XfhLP6RT@GT zKv{cxe)(HB>KAE)*Pta;_wFU>bxBF7;P4?Kq+L2uZK(xJWTSyKDy|l?iK0jTf>~6H zy8L7=itPRTcZc<%kqPsI;CIdOdh%B5uf@Sda$?(GsYsPGU zOyiE~i%u}<028aO{ThB|P3`61^K%l*-rn)(kY)80tbZnPMrLiuY<01TFZi>blHW}D zrc)`Irs2mr7qyFCWh`Qsjo%BlbCcj6>UBF%YFZPNj4kX}(8FDqq2bUa;YP@QXLOG5 zO~7#wS&u8KR^$PJ@^#3O8i~46+Pi$!X{ij&p@(?^#+00Pvp%Y~RH5h2vaxk7 z_cX5bj=?lLUBS@uRkgQQ)Q~JH?a1-O@E2!|l?Fj%l>pZAEqCbicY za@0bf2`39|N>?d>OXz2TCWL31m=w|jVc>Lr!Np!RlsrZ_?V_N3Fm-%p58sqm~3m!!`hZq1FNHL3-tb?;@-O&>>qXjVFfOtHk)G^iGjE z&BBClJJxFz+)~w$X}EgKJDAVwG*Xv{zCitR#kS$e342+}0IpVoI*Dh5slKG-$NK5Y zcUj1trvu3nLOgCyFzP*a#@@s32TPgc%F3D-Jqu8_ye53lWL=5U=#gxJqjq>-2L`|a z$sqieg(Ku~sg9aLfLv@cF9sTDX|HEba*w|hp%MlfX$*>H#LCWcF1kLn;QB$6-29Wc zxd6*av3jejmZ|ABWQSN4F8W;s1M!xDgK(tWNMwZiPC3DHt4t83 zB&G#Cbqi|AV<0^nyg0@b$^|0Vy8XpgN~t#}wNNVKZwhP~$?z-Au$9JHq0@OFxGxB7 znr50I5Rn(2r($quVq3o54O5TE_$9nn6GC1{jLYsg-5T6*i9ag0(z6@hFhZ!ks>-IB zt*N|=N#aY32RFcHy*LCRF*+k<;>9)vL;SB^2`t@QvD^+n-0`_KYCCWqtg1rv<1a}8 zKKNW@A(OozI z{;;Pr!>6u9@SETfOME1=RwKLH6#Q}mHe+s^7{;99=!CxKLsYX3adqsEmWq zRQ^m`FRgpTN|6dor>bD-fnQR_TOMlkiH|HR^;ainXrQyOMIb6iTfNT|F^y>|{L*xz z*$OPev$Uc^A1-72k)BADQ7MC~6mFuRdDe{Wj;Tx!fn2U<&#ZDgwxXO;m;$uT(b25n zh?h)1QY8-4yNoYtV>k6XDa~@A^Iz4JGVBW)5L%EDy8YKdQ7ANhyE4U*7W(hl!FOGl4@c0<6X%O@4oE8xm&CbItz3*+^ zEWmlo;ceos>PL`+>{(lcxbvprArnXT*ybuYEX2BCMvQ@wRoTkp58ESvzIpU8Q_sEjfyxkbiqvFC{Pt z5i8VKx#?(BoLB zI{f-db5ScEO)t}J`8fS0RUKBece5u!UWWIm);4=ZZ4XTMdl%JXuI^F%H9=_#B9Pp< z2(Ws{0NHNu7)&6J%o(H}ApnWwmXAP`A)1qA!AY3JO-B3iH0M8b7JOhzTLH$WF-&L; zJ(R+ZPKaoXHlJf6!@*%)ct^*Y>YE{rq!^ISx4d85mtU(O*jo-qLY<8;Z$RWn$aPBq zzRP^qX-U57PhjxDt7#aF_#8b;qX8o_AS?Bihq0PN@RN*Ut2S;vc5s?G9Uwc6&F__c zL?rJak|Xd5QQ!-f6k-kB@xhWHpFE`HXHgY|vOpdwXE~H2`llA2z={<-ln8AoDcOH= zAQ3i}Yj8xO*_f&-&5pa=Y1_Y3o^*&M7?3rKapNM|w za~SZ(bb|m(r{@i~)h`mWExj!>ZQ$qC(Z{!%>YJ=(u9=TMhx&B65_vgGrYE2w%{|Ux z=nZ-Snq!1a{|qIUhmJ*ZFqp7_s?NlSGwoHM>I4(S5J^EF6LZ&Kui2I;1E4;zihW!S*IOsF9MW{~6^{#Ue8vh7Tbe9m-Y`UawP z3pg8BY?kB}ur`3MPnY|^)LJW5L&51fWDsj!kK5l;gyw0iYNsNdvx!5=X|p#If3M>xNeU6i9F6)31`|LmORpBCof1jO-&wV zoWj58pqT=k1^xu+X{smmQl}ncPmf{&gP1O!ZVREPh2f@`@l4nqN9I@+$6JYNo;MMT zJO^{M{9q~V3APfP_PgT7-z7Op`i3YO6CE$O`+LD8xA18FI>s5?<}OS9Ri=D^_z_`_ zg-UrZJ0PN~tSxT$mav^VZL?x{4fc$5G;;+eY1XE=1ZWuYivYgg2`Nkl3`a|vtTt&G^9ZZ~|B zGCCZmi8I8{#Ha|mdHa4fC}Em`yOy2m54lsR^|_8tfxvsE3ja zycP^kSCJ|E;1#3dmP@ub!zr;rf(z9kAmc+k!<1ummFAG~51K8qw5eN8Sx$Sgi4Jk8 z+NXsz{f*d`Wj8{xX^ZpLu>0sSyr|usI|=QcfW!k&(#-#30kj=C7XZCu+UdtrBO_cLU*lk!Ybj;S@9(w-2tN<4&cSSG*Uvk$)8u<3U<{re}i^M3flc z1bwQv-g-VBxiQ<_6ZJLrSfsabL9|wawldvz@5-l0A$G zf3_uOQeN_fBx6w+dqU)(NRQT5(imn+EkkGTEGV5YYW=d*V#&Q(+GzZP^bJD@Jp943 z&O?MvuDA6hq2cH4iO5z&M6#4O?sAJ`6J7gzM!C{FJ9Kx;im6>6V)p3InB>lhsB!U( zqie6~O56XhGr5OB2wcu3w|=P^ur0mG%IH(_(Da;6bsmptv5OOX1{DSUay!eM^*yRF zAsCPb$kKZcLxDMHgJQ}SVCA?weXbglI4SD#W4q~exHAg_V7(BcHLNj@J4<9x8X zk3UeoOdOzLyW%}rPBAY>#@vLL#qBYDjA)sSA@xX4t9tUyN-n*o*A zB?;^X*FcLj#%FUnLMSv@_)Y|3_+mGhdNP&@9~MK^_HrC-LS?15U57prTBZO+>zq8~0*Gq%7fHX1*Odz+A&ux=L8O+EPJf91SN?(!5d3dr@C%5=T7 zFy}6r=e$O((1q{62GQyTHKsKjo5&KJqLCwN39vXJ{|bvIH`gx$(fP44(syD=^;GJf8xsHy7Yb-=$zLs_SA`K zCOy%6jOdU&y$dW@&<+cT> zbE=ULRv+b8Q05s;EpqvCZ}Z_fHyA{)XvSay*uO;Q(J$h+MObKnk#$E-?XT(GQ6Cfkh!VrS?9mCEeku z6=;g2O$IE3Zyms~*tcL{N@`cD@uD|CZ`9bTr!!D+0H6gzzTn!ejrB zhGs>fA~}03yhutjtT0&Ne-#_NL=w`n1yiKo1-YfwvZv4bjS5T=TyVP~zDYUOcz| zN968v`b^p7aHz{){a?R2#9^fnjI+XW5vPXv+*FUj#gWI_ zLTpIM!Yc5Bib!pOpQTWfNfy1?zuod?i|2P;*v#dtFf2MQNbM}a8Vp9~U2zT>l(dS7 znY8}X+)k#tjn@?8SxCYDhDb*_!~j;RLNl5E`(v&9N%$hGiSchGWfm1}1WqnL4n;~S zjwb9k2=aN>g{A~8Y-pv@Bnq;uEcmcW^n%RZXIkhm3`)up6=ihVpi*rz3vromV_-1< zB3$2l-4R#wrQ2^Gp*NoMpo`TX zEA5j>pxCPn$sKw4lSxh@Dox4KG9LdK1`xdiw(0oSe^`7l>)xR4*rc2!h3?{yoS`gx zdZ=U!kJc<9MKb_Y#%0R=QSLOyk|hzQ4AGn^xQs~=8xshxyOP5fdcLVEz;aF@_?rP> zW>QjiPIgyX=6TgEN*mjHnBv^kvNA?*W^`J}2Rj6DFHuBXlW2|t+Rmv7R1-|iohr9B zo&+fdmmk|3u1_xZ)R;Q}dK;&Q%*=BK|M)Sqp%LvdTjCE^rStICDddRTD?}*VdmLj2 zG=?A&j8C?8kYO=Pt+X++e7FBz?)(RH%a+F4uFOQQUB95sUSN+9GIyrRc}m-AO%dP; z)<%%m{4g7NcNAQUL%J7R^Sh+(ew&kTAGPyDu`j)?KzCtZ3gl;0Y(Pt$@_d@B&GkII z+Pu(k?*;!CLM%YT+5$(CCdG+%n^#A zwMnksF7EuBAIHTpx%LzH#=0%ZaK%&CNT6>AKlVpCe{SQ7bt0Ag^)&k&ZsXtDwT*b6 zVUb_``Isb; zRBAhGIPZfGH#9nRssJ#`hFhKre(Y&yqQ*<#XP-0rNkE5XpRPJZWl7+Hu=|?UaPen^ ze^SyR{(kTt31pFWxI^k{QQw<}=#DcEQtZGVX>|J#8V@;88MLor zYUYf7W!J6n5Uo)@j$cUH&{}IW;8#fDn+_V-1B|b+L5>)$C}Yw3F-H-P?~k>!Mdl) zneAYUYgIwojM6zDt|My`6(&d4M!Is8s2m%!y(?0f)|w%$tutu-9!8)ur(CZ>4cH|vf_MsZ~EV-e2@=UQ{JeJtjsgbtG!kcr-R$cm>o=rFo#+LDwDIPO_(%So|sha|IebYl181X7Zc1*ENlW4KKjvyHL$H`G)|Df#+bdg!Gvqy$=u47Lv2hgpZ+8f{LfSItjp=DOi0g%7 zzknCJOyz%=a_gPC_}a6gPs(jTU&zX7vJ~O%2M-%oZVSExmHti5dQTRrxI?SslYN17 zD^e`A2R5oN_cPHh;$>L+z)$6~b!M18 zIX|14Q4zh2njGuU2uR&>XUvFaL_fP!z#$xoD1sMv!M?JH|ztn4zo)LNIcUF5IIOjNG9?CCI87^lT0v+|wG9B|+f zKNEb)Y^ssmP=ktnyl3#^RhK0Rs?^G!&_9$?EpkA6K~;F{P>}O{xYX#Gxv$Z0YE%?n zAunM1;Y5~s`H~Vb;`#Nf3st6ZRBz-z)6tu?bB7k2AMY7S6vE6YxZSih%73g*_M7)O zbRuvCt;hbWgmhBy)4pJASJ$wUfdJFXbZ@7SQGDg!w`IoBOfDq@kf1MpRWjgJa=RpN z0Wy;QUDO*2=|@Yo8QxeQM-ae7*kt$x8f{N@fXr{M^g>W%J9=-j<*enQ#yR$k&*%_z z{_*@`fPCCy*dLlb8c{C}CJTOZUqURfGd3X~?Ep8Z*Pi3$I};H(t4lxCg;gg$ zA?J_LH$d5Q9|&4egk&3jdCB;2T6UzuR#CnLa(T=_$23rPd|9|=dB_1(Gt*uk5!*DT zr3~aULF13K3}+yXYy@b%;py#ft_!@FM75h%{Be?jS()};W+4x&noLeaR82%qEBHW- zA(*DQ%k;6wB>28mkr|g&rZE-@O@E<^s?|t}#L#vZWcI?z^sH`3JtEP^@W*^Zz;X@Y z=MD_h*trrM5j*k$Nc*!yw-eaNJW_CQk2lxPA`%C zq8=Yt*vc3+;oth@i?^8kl-oaJ6kjZ}Zb*`*p{=5(K->(giu8dq#G0vG^id!8>h#aG z-*0}WzCT)Rf3~fAn*}v!+wPHC6J#5RJ3ecH?wVyke)jim!0Q|ScdUAT*V+D$*{4qd zRWX<3lSggPdpjEM-<~2_Ap$E)D}v0`)ZnGu^V{($M2QRwW866Ouiv^wB6)n!VrvpK zwFIX!P>AA(O5n{9H$`KSbYS@?kGe(=$_7Ou&CINUFSrYTp&!rJ zaMKrPCOFp_s<0&9yZ>i&>M?uM#QUAKPJn_gf2zzvs(Q#>S=-h`w2StxC`8I@)Eg5M zDB3t#ZE&hS?xMdAG3sgmz20Aa6RgPE9>I_ito~`Nq7qh_BP2Y0WntTzpri&b8vLPR z@gh`9djd+t-XJ8GoE!~^n^9s`nZwe_tLiM)Mq#Ah;v%Durbti1Tf)~~GP5L(Xix#D zDOm+^+lPDw@q=8T6@rO3dX!{_PS0WnR|vMRVRa-gUFdgH8XDPWzQj{Wvd0acX9-3@ zog4sK5TKphoEy0miou?&>^wI1E!T`+?QD~SHDr(E_?^3yUQ(1q(9W(7)IuIW_Irm( z`9IcL|Dek`=ZdZY4yy#}nKW1|#`IWlNFp_{VEbUlD|nY`0kD32LN`++MLR`FnTaZG zH^wTRm?XDx8E6s$+hjyD0SMbHh8+}d<@B`RqB2bVy^KNcvH>-yWxU3}-}YPY04^iX zAvhTv{aZg4wnn=ROI*h=9rm`hB=MWIw7G5~G9qI}$d2!#^oNVaiwTYUOS0T~m6R#< z(*h2u$#Ag>Bz7%4s_Yi`&IS@V+_z~2?7k1!D|n2){7VT%;q?pE=(d(!PH#tr^42fQ zzIm2!i}8mEV#Y~m`djy099Z$J%mCmb8n;-ULAEG2wk=k}Gn6-!d_LoV$|(4L%r0f5 z9OOi?sT2*NMj-ROVKJHyh3SD0}zU!WHX@F^QhI(7AwNp1#Xx4>gXsU>yK+) zi<}7;@y8kE*Q|j!8$F6gG%&5rGVPp77wTN98V++fTynj4>U74(JB~V>NWXtrtEi2; z$-t#=HOLuN-9PH|)(wLClaj~b=>h?^ouXmsm z(F(vkSgiOXY+IYc!pP7+{l`uc%qi&Cu}WX~sbFWres;V_x0Zuh@~GQ%*FcALfH{`lh=AYUy!^sP&_?TCy4-RCO2E>rfjX7+T~v%!aMU z({L-;TbZU9Bo-%W)O|8S%Mh5@4LBX7S*!I0W<&+n>{_c8{QX3TEO}QDXQf?-9&78u zTeM)D;MLfU4^6ZX-uG$bM191x&c)@!q7vw|lBuAc+M%=7!5(J+R{TNyfLzADxm|`9 zhf07BG{x-q> zFJ<01nI+fI@!w}_ld^)wKZ+^b--aM~m`20^R>{oZv;YsKAe|hUJ;o{F)2A*mcRyp+ z8%7k@+VS1qN6|;N!*PD?3Z0zh&y9a-1Pt8d=p_1Ld8gJLV-xNgUWpz0BzOi44$N^%{{v}(QzER43?4F8|khW`PLSwZN50SNpsWEkG zyH;K7xT&@}XUT45{pMD(54e23wZk#P*_dU+ZC;34xiIltTn|BbV~XRdR*E78A}$s# zt0`fOR2Ov=M+e4PdmM^)xox$r`M0NM7E;90Sl;3GL{+;fes@Xe{p;Fxqm|}thl&&m zK^lCI@|=5Roz_M5N{!*AO_seV2d9?+Hp;QXmJ1vmDeQ}d-t1BhimbJ+uXI=JScxq- zG^K|v@Pu|9zBhe+7kY=hl#YwRi!`AWD8Q*y-?ateMH+&@>X6T{juyfyM@qZfm;_DNA2b4^e(5_PmUIs}^ycr4jwmf9j?6&=#BEu_Pw&{u_ zV;~FXe;tqS3}!}*jEKD%~u`! zao$cr57aAKG5t1XU0JLfhfO~#^~aKcS6wu5QZlOY-%7u@UUT5&K!1!p5g{0a+Da$4 zh?b0K&Jr2@B&&DYK{s(JvoW@2R!tqY%s|tt`-|?W7GBGKlEZ3^&f~=?$J(L;70&s{ zAAWV-MUJC@&}RVk-i}Tp5+}uxe}!IJ`zsl?$PS+I#vPiG&Oij7`&CBq1;p+KhiR3k zyA~!1&_0k_DufE_`6J7gm9LT%J!iNCyQ4Y4v^2#HcYHcjfv+I zUyFiEOz9`&@RS#h_Z%WeMwRZHQjpB1RYL~$iNqK{wI+$>meMu=?F~J!xameYEoLbz zZ6$S0&)ld)Ene`o)J$rntNR}%iWJ697T8|LGy3HWOX|EEk4o4>NBz@%GfgT^XH_;6 zGnDuV|D0`}rx%rhIe)vx)IeGZ-1X`I`2OA}yb#Ss_cTvrm667z6>(v{qU(F(-E#k_ zbF-n*0D<2QXH0UhRN>z<=*sVK+^DQlHU1%<$Z`V}Z>RmF2wV<%v3ER!+mo)|wy*XT zSbzg7P(NIFCTvadJG3(4)r%8|L*pA6GD|Y7WGr#ucrP-|2_tQNrCD9$b`_zFq{?xx zWB)=U6Jo#%3VbB;S&_D52Y{%4O09b@T*VXp;!Vg#65JyzMoNM=)>3J7m89H|W7 z86dfn^f)kxlBiva^%ED#e}_>^n1S<;y+dO zv&~li)u+TWh4+ypEY#63(PFI<^J$Khi!9X`O%yJIRRvm%x9Hs&;c0qLyRJvsBf!M}eis@gQU_Tm(-x@dUyBUxcEB}68+ZmBQ0|SO>OiK^{Ti9F23pJ#{spW2} z^)91_CcFR^Yu}Tq!Z?fHgeaCQ0Y!=fokp@ozabmZLK+QR5mLE*u3eib>=^W&-Cs{B1OX$xU-sxj^fc}Ul-2!kc$x3DCCmjI+OQ+95#agOq~m3#S_ z-l7_foXIN(A)ailvmAp@C*+lrxqpw#@AGZTo9v*|g*RRsPUT9; z+&q^}mAxQRX_IbUKa4k=ESyJJpseVA^@vk3A~7t)LT7;MbUzq7=e*r~$1twh;2EH9 zkp^<8m<_KcYA~505x_f_;#vQZO|BmvGuMLd$5f1Cm`Q=LhOmN4MdTyw@`k2E-;*w( zBCX6*J?hM^4}&%xY4Ng+F_+};A|rIL3#(>z`+7HINoNg0r2?TKkWJU}SbihtyA2&` zz4RuBNg_#agC5w9w>rf%{gW}5U>K<6Ie?`JlU@bpfH%*Y32u4(j{|c^knibjGO~!i-&W!_`>8*zy;yF+5ne25~OOJ1sS4Mm0*`Omf#Zn&uXYX%eGF2T02qotb!^ zgBg<^p_J~8z7DRgEq=}L6aoor$K%X(MyxkiAO)C_(*9ij8Rwqos*v}7ZuQ-PH@7W) zEmjCjPd-^jEFn@VY`QgZex>*9+f<*S?IjsI_4@hL44mA2ni4wbW2b1m4x3Tt3Zg#! z77AGBfbWBTYBq)mPZ8b=0NUX>t+Af*A$PD`F{;L~+K{xm_gz`h9^Xnq)ssPQvr6@V z8H7?Ww1i_G@Nu_nTX5#AM#?`f)Ci=l!Qjs-CNlMxPhstWJGppm;?F$1QurW=L$;T- z+ISvoH;)+f($w^Rc=Z7rOvU+JL{n4I+!2jU-h@)9@y&NMYPFzTIVO%yc;1v}1qbhB zz3jFgK&_i%26Hz3{(&Xw^4)UIefwr>DR^duL7R2mbRlq+zJ$!LZ(T#f94e~RpG#u- zP$O5vcC=AZCR3Hm08V2I6T;1@VxjiN`MUy&h}mlhiY&}q`j40NX!aj4cHOsC|FWFE zhb1yvY<5_rAyYc+s=I^7t#v6zOqgt6V!KN%4zD78Ok#iJy05$vuK(1MtqyX!F}nF& zB*KXC-#IRdU(&GqKY&6VBh)iqwVv}x^;<@vD}m50w>(4dkz+-tPF*#qQ$-Lf5PR5= zrV)cyUhY0&3M$%o^z8Z@jarjmH@SPnMZ*AL+@Ufte;mZbd~|6p}%Cdl{&}lq8x(r4V#7O%M3|bavm>y5o@3uzjAC;|6WA z4O(6Ag^;I{?%y>C(i*Fj*u5ccbibyL==KdFXfUqB^b;_D!ONTTkT%Usf>xxp8T5t7 zdLL@p_>1(Gzo{tI=&J=+LWg*Kmvxg%F1ytvk%~EHRazYI^5LYnH47`~D5#0F%oV9P zo)jE!W^d!}E`Dl8tm)<8O}nX!`KG0=TqR;k3HG%*H*NQ}K9Je7z5c2p3I1d2ot79< z;>oM7cKF^SpG^EKWcs~`RC3;(mdi*hY z&E=4bDgR1ZqC_(nRKlwcwpH{+E~wzZV}xUm8H@YkfN54EVs2klU1CM*jS-m5X=Onj z{Qro1%doh%E^U_(AV84d4#8atcL?t8?(Po3-QC??f(3W?;O_43c8cBa-u<4_UteGM zuk)|2x>l`PwQA0}#vJ1r&kZ$bJ6JSxbi)|@C~4(M?IYEXsS3!yK$YdLMic0Xe$Pw` z6wdwieH3kya>$jbZ*0$YP=cbqbjT#%!XrLC!FvUIx=?uEHdT*I-M)<^v?z!46ZUqj zBF5xzrW_yN9F^Xc+cVG_8Jo#iax4V?XEV3^_$h^&!{x|PrAWCLu0rYlzUCh~ zTa%J_jXlHSNMTtav%68&K$cCSbb>kQhAogGUR%2vz*1PFQLd3p2gUlRQnV*#AMk0L zM;Q!Sm0Z0=jRv*b&rLXQeW~;4a4vmTX$*4?#=&;3KC3zd)&v-}u*UZT>Vj%yNW|Bx z=O1EeA7lB4#&M*ne`>PgP()cj7P zSqP4|)ZkI2K=1ODKXHU5ZvJDR7xhxSWaajBVI;*pd63H#kss`pMQDhSzRZD7AmoS|#)N41s=KIcCJz$nD_W<* zuZ!p{Q2{4TubPbG75bw@MZmINvL}z)@4do|%v zF7Hx(djc5=0kL${TSscLQs`=y)qB))8*9DToN{i*w+~~aC@qVIv){bZP||l$wLoeo zgie|*@X6G`yF!GfojALYH`+mDO-$x_rU<*5Rd%qf{hbsM$25?m=xpQ^%K9}F;x zk=d``W+DUB*Zfg$4Z$H}B24@A2{nJ&!u&ohA<|=B`;_`zyR9Ja!(`(eA(Pz3mT{_foIZ{xuN&n$n~~OAjX*cO zFIJ#nc7-Qq;`_7oDUp-~NbB<#h)C-Ep?BI%qeTVZ^iS)oL@f-$3+^y$lEvzl`TNgA z<%y*~@!uocZxvvqf7%TRA?BYsCH;+Xy)13NrTJMf#$M?2QbZZfdroe&ijX5xTRqb6 zp$VGo6BARApsL&I(Y?JN+YkwG_PJ<`pnuSYZe%Ha4u8~Tge$+{*4#7o$T0%i)W{jTimX~#_s(|KuFIlt62J) zcGWxWTfg_^yjX=$OSXD3<7$t-rSFD7Xaz%X3+TvcoI6QFEY}#e=A^dSl0OS_XM1 z(M{1!RtZ#NyEoWbCwd|`*lUb%Gq~Vo0i!CHai7g(w3HUp_qXcY+&>;kTMoKWw z&|qiJ^Uh4Cj3yvA%qor9rbZI2(A{yPEEv4tEhO~@##nR6#r#}F50o9fz0WmFFsZeJ zPlOH(2u1F4Qrf5^nfDcWjZoOK4k7V!+g;C*GRb5pT4&ENu}0T*U#KY@92Ydcb$KD* zX+D-k5J!i^9TRTQs=i)~+vNab6{`#0nmQ8fP0Y=Rp}2iuC)#R=7Ft(V&`Yv)JsNQ=R5ZW17$8W3zM# zcU0R;8WU;_uQz)LXEArv8dWX3p{Q=?$EH8*>XZTrcdC8Z%~uIV-7%j978x!v|#fO^?K~|Nysq6gwre;F&m7@Em_@LD&wqEb@ znu>xvHUh38s=W}b{+F?@g>CGR2xs3|`Lw@zNuit8`V}{^yg^s16~!V^*TeitiKx8I zr4zGoDpy8DyhXEaAO{IIvQT1DOZgb1k{YjA9p~L7O z6*BfGf4#Zs4|7~Gx1XHLO>)uO%bs-OwWjG#Ggb(mfC#K6yDTwEQFcMYrIa51;K5(E1kP9sGsMPWqWEo)iUZ-JKBJd?O=CqP>= z#^p`}XE1dr=Gt}kn0!tD)_4L z-k4rNDNSE}&Bm9AB>#C6Ui=VrtEuYmGBoX|aJ{>Puq7lXiR-96A3nb%@^Of77+=qpEu zYc%c^i6uiA@NI9NkK3AbdM7i{Phq)cYDAXVnk4UD+d1EtnnusbGNh*%V2sLk#{3VM_nX6laQ zIvSX?NOOiReL zjE&ZqWGec|QCo%+L^G`5V6nj>zR~Q*lfUGlT+onZ30Tba)^P#C#b^q6zi*j%E-+Q= z%;*VAZ@P&%R8W2U=vBp2Fqu;bX?NvW+;{SDfu8I)eg>~93zvy@Hjd#5wxpQ_Kc`0K zVk|d?=A}+5!1Da5D5BZpItXE~&703IP_&S{$!o$}XT~nkh6Iv1+P>yMnZv-CYg8kA zx#r_3C=stqgir$IxCCLTQ}Ts238mU3%IsYf1$N!S^di5FPP~K*ndr>d%~@A)8Gzb3 zTQJFtRu8s7SY#Rwi5umGiEwq9GsI zxP}k?R4Efb(0D1*JbdoHE*j6FOU}wgR=Vl`I zN9SgXLi@9gd&yc+bSQS#?hgsmPsMh?!Q)-NoIePd$ zboX%OK+LL=jQnr<;AR!UT&}v2{I@+Uc~ecW2KM~WhXY!3Eg&|vy3!L&k&jLSM^oEs zTfZHyaS)$Qt41ca`@tALhd zc6(@R`jt)OCEWA@FyL-(muX*CoK=&%ki=!VQ3`Y2_42xcnNgre<;z_Qn%99ye1Ix)th6SKNVoPn zq`pQO?W4c+f)a;?1&rNrF6s=HuM5Gyq>;~y_^G=Lrz>be-5Ki+-8k^S2CM8=bneJ> zwVotkG|fq|kw-{*VpEa-3Aey4Y3k9DD^TnNQdV(CF`AX1WihD5Iw`ge+-98{mJ76f zh3fa~4}%Bx+<*i|cU21otTJ^_X2=WYL?3qL)_7D;qeR;?x&$4w)1~sw`2_ymRVeg0 zjHOg!*qPmEkU^wO4&sw__9Z=*+UZV)V?*v+W$nOId`+QgJtcWz9vQB$;d5B1i0v(} zgUy-*T6CZaPn1yUHA0}=lJvJjp(bwWgTG9Q zG$;kG50Q*eb%~)o$QwJnEg9(+Kx?AQh)!a`4a*Zz8q?X9|FpG0A&{|4$*`;09yVLU zRPNO7IIb58r<#qlDjHX|3$sMUQAs0{^P?o+zuLnoAWgcbo_R52Nf3t}SFCV{fQ@1` z^lvIUEJNtLNoe^}O|N9yy zTX2hELi0FLAS>Qr#_^s|rxr~|+B4Jr`uLs`&kvyL?B7WvjZ}~-ON+!Aj(Ps&hRG(n z?y6d~$BTcTQNtN*32^234yO4J=4=CkuTz$oQ;e-GA*fS6{nHw+;(6)+m3U&q2E?)4 z*?BfpI{p(8&3=0T5(-Yrl$_93{{F)M{zPO7QPL=fA#b9td3G z=V6XKW&Zx+{~>?o0}?$ReDlxs{trJk4+GReRAJ1#X8+w2`d<+&|Hmsf0>+FP2#3f2 z%a2uJe59foil2Y{E$02dGj;wtaum32;JPK+GzB#y&lUx`|?kM?tga0zyT9~8ZM&!za&Q4jD7gHrT$ojH~W80l>a)i z{y*2R^FdU?h-v@FQu)8X75{#&jnogQ8IxZ#-oI9Z|KT``=nMxAYz6|4)&Kk4`S(+H zGVuei(;UK)r}%$4lQ4h-+xY+22^bCug!o+Ycs>DPIvwx#@7zL44D|$n)sKs@*DGP17&+Aol%9`~4X2brP?__!S5mat{Ey zv1!19-PC;WKU{!3f!D7c7hlm-+My13UW?vufJb|^b<)%37vnwU;C&EU3Z}#8Q$E6; z(Z9|mgStICzDk}nCDq%D?s5=Dw)sH~0(Q%@M`aH4tQQpcIs*&I*9oo|_NLXT1IOC$ zPYQ3q0@pN<{4s&!fxsnV&U0CdOMPnM`~HCUp7&c9#hGze3e@q9_Ilh zDzP&M-X0V9bpHO@@s9SsrTy~pYJR{`g3zW6Kl}3$0q$C2y+8tA3vt0bJc?{l0NVV}o7A>g(4aJ2Tcw2rjA z9BHo}=OUzig+t1|5e?y=$hZr$_47CLkt>YKa!W0F@BnD(8a_T919Yt_1_>lXD%U&kx( zsNUYRp|x$Uwe51I$IA03npa+VO__w^ZVIfhv$aQI@Is;Jd(ceeBfU+6jGG6 z#=Rck-#6p9593BPwC^3YKL{<)@u2U6c#nj!pH|8nQr=LiT>7%!uf5j%9}a;g?9+or z=#ODum$Yj@Hqy_|&$t&KG^_WQtatmKnINx+AReISw70_mQ}8S-4D`=zGVe!ImUR*D}^CG^amj7ZT)6W zyRDG?@b|LSwZP|X>z9a*OFg{T(~0N1S@($eaG+j z?=ywxWhAsNU0*4PFS(eJ6TR~; zDO1^VB24RrpzSRO-os=SFnnN}_r+%(o7P#N8%ilbHaup~ZB2v6GQ)D)g885G zrs<5cx@pn*;k>QP_m}-N~c_9OTSCacs5;}1>3TdJ{~GBTyqLWvVeghNeYeNbp=$3j0Hk;Tk}_)M zj-OM--mbmgCblcaF21;Ten~GWu|}PW`D+5MY(dtUT%lTnygvQ?sO!W9z1w^TP9=GA zWo}=IDvG&I|A)W zdd$B5&!BlHeq&v-BOrQkF9)CT9(cEsW2|IT3o|J)&d>MV$M*$9Jlvd65+C4Se0aPG zh4b;-G(3lk+=m&m9!KqO=BBfj$*mc|>Wo+5n@vj5dsz9jwl9#+V|B4H;YWOJFwY6z z+ks8krr{~w2U)!vrf0TMKP8+8#7EB#o0+N&+9rFwfUW1(tq3s6xDM{q3;_s^Q%D_0 zSMvSm&+X?7tq;IsrfQ_=dNBS8J+Q4~0RolxE< z$HWStz3p;vhkrc+!b$kURKDtHz7GL~jrLj3D?vOjn~XTpRPUg1i=={)F_dq0> zeg(!T{RflG6x^`Dpz9*)ZIY)nb{?dSJtpf`HH%4-=1wEc!A{IZ*?dJ*2L6g>o4a@m z_>}xBG`C>~Mw^+DiokBse}y+zY+xdP2y6*Sw6rtfC1Mul*00n(N8FrA1O3l{^t)?4 zw}<)nC++u&j@t$?iFniHrnoXI(cd)=<&hL!Y@mkDxmLh`>)jB`sAU~1f{1nCr{)M1 z&lMrh)dwW%BtaOcPVQvV^WSFddcOe9I$?7ZQ(uELISN<^)124nAJd}uKhqjq)9Oco zOXPVtA_!p4?OsMgfWp6u*!>bZXY?2+aQ zFQ}&{_r)3?Hgt=!GMuw8glF+&sxAA>J1fnAC208kVZ;|?2$Qg5{racp#B}Bz zqmT=!lKR&!;ipaUemD~gqF)>Z-?sQVGU8!GrHd@KKRM=GI*GM2H>li!g-SoyNvEBJ zLNaOt@lmm9?@c`S`{N22R;2Ww>DM%iaIs6Lg5C57A7t@vWg*l7Cy8$lz%`Hq{t38r zS~(Zc29_hHbumzd>H4Z(qHJ*HL5?TpXLtPV1rXXA?gL_e*Yv!4?rC|1R|hnO0x6=@ zKdDa*T^mhFlt_aMnr~P*+(@O2(^f4W0Muz-XX4sFpEd|1n2lYPWIX|4?|K_q(sU$r zqK5d!`wk8bJ??^nCNM1eG53u?vMgYht0FD(H4fH27S7jB2 zJ9&Nl2l1IDpuOsZiCr>y`!+|rU#c(T(p}aggIB+U1j}T&Xw=aMC9r~2oT+peP(wUw z<*C^xOOcxBo^S~PrNSIE^c!!qRI%?NJy<3>n6H);P?EQPh3W6nHxmdPTNzx`Eq}$FmiYDW9fBh856^c)oV~=6S=4>D9VV&6N zVxDjtClUy<$7Ub&r1o{kMnXtztiFv1Gdo*S0MUMkNqoS9fH%1h%!d<{qmjg>(u{y@ zk*0Xw0EPc)R8QxH#!=i`5#ta=+lCv-6iq1fS>VziS(lbEUzV{SMcq)E1OH~RoU|qm zl79;k3yOh;DkNEaj!*Fc9S_(cy)2sL9lugVK?f1MZ+EPxiAq>1-(%-@;<3p4O9XYo znA|V08uOqac!rIsjfMnM-;mwi2hyOJaY0WtSw3Bk{xlR)nvDVdQO(s$BJUc~MI3cS;dkPe0TqUps*_F6 z3*x;$q1c}xz7<;QkAeq|EYL*Jnac|YmwstyM%~A>iH~5;GVi>^vi{UczKjqJr_Bl) zh@ezqOnrydzKO**7=baVpUTq4H6j~dA)BNZlwd%nZieTeZW&`o5rLsW&v_O(k9wxK zrEBOOYAFScO;{zQg627HpUIHuK7iw#oj#DvbQ0{Nav*1EE5}cqZIifmS^*1Le;2G| zNW2WcBBO8gyN#mt@Tl-CvL))Zp{!-56=u8NzEt_{`v>I7w0NB-tuqBO!2>o~-lf0N zg(GkM{n^WlhJ5&8wxa4WwW=DDZRe;d76<|OYyY=_{jsry`@=5&cVfb(?0a+@Ks^Z2 z0kIgrzm?}YM&`F(%{?KNzRx98)&&$?W4-=LFJy|rc7_M*+?Xj#0#(ghGpD>aLtDP^ zRm7Xc{nzTRV= zNt63Sw#S-^FJ-po)did{vTw8fwk?r<1-2XwS-P=E`W^<;i@_70ROa^cK0pB&se@bX zkE33zdHPS#1&EeH1aQH=v@t1-P(9wPR~N%+n}Pib>^DCB6f)TS`VAm|KA4%H-=@JX zRlkMgQsnGLO7q~)#8d12$xBab5zYvG9&L*wM@)ytPma$ZvqxFWVpqB@t%Ovo&D%M| z&&1QJ>W@)11(ckfbW(45*-~$V*K@O>QICYNw^6|Ej`bFOZIxf&)CIg=wzmGi(UH?e@qJM`D{n?VK1UpXC zrI8f|$%E?mbuctm8zm=Kn-aIad&yGpjcmU<3LM;9B#AuD>(*|jW<0IRp)`~PYC!^c z){mcuGLo#aI^GGrsLY-TfKR?}{17!puu{VPH+$`=Gl*5-fmZ|N@eo>uo9gPTqqJTh z(Ql|k_KS)R+VEB)4@gFt6o03?d6s;C#)#x@cgBrJ83HRM=wH!(oiviq7y_2kaf4hG zheE0brJ=YYoc2ik9Y6ODzd?Spu||O!3#uMZ!FEy5mb0y$zBEgw!WN*N0Gx!l`*Kdo z#XiP#YJN@`#{<~QF(jm$u z55h-_wj&_uer8r=P?JFRY5aqjni`*v=2GioH*)kH=*3`a|*o#O-n&jMZMujhkUc%MLJNcO0HFiB0UM+)mlHpA3uj;V*l}p7!iN ziSltR-FuAVma0*Yye`7+Hj{+t1CB2BCR3rJFcd^Q8I0!!efh-f4FZ{(JJX;eY z3s6&<(QxT&obWg!v?X^!FYLb*u0c1H(_9ir$dqpvNddPe`TC<}jUc(bKi*Pqn(RZP2jv z>9!|j4~k!KXkf3N3B1|GIG9)|!2>O8e7Bc7H&BctAG^tT!`%Xx zhiDv@+C}gq^8W~j-&~N3!!Uv-l><62#lJ?*e?-hG?KG(n~KY1B)B*b=3!6jWJF*nDqJ6`mLY&2 zlfS^TP6^iMPk%%XvD!b&lPG_DSefn-^BfY_k~=I?mEagHDgmR=zC|l(vWk65X#f1L zEnCrdU|Nry%rW)vG~os+pEnI1M(<5`$YX-`8w%)6@KqRNu0F1)svab*QfizrUtx62 z1>)vr=zIQWU&t>DR$xO22A=bZSq=80xg zicn9;nU5{>pCe&}X(@u_PkD1N}Cj*6FCSYn`&Tcv2-fJlhiPD2~HR=zi|kdA?ydqogv;bo=zexB_XJt^pBL~ zb8M?Fw)Y<>4aB)mNj3x@P49MKF$Q^wMm!xT@9Hh@Vm`7PSgMQiTe8<8HqNN{4u2n*z2L^EO_ zOO_3*PHwUZh?#&SKq>l|h!IpxTb1rN=kYuvIeOP}D$qjBsJs{dQIb5`tf2%U?MOJW zLcu9rjq)t(E;7<7t&l#2M1c1q4(&YM{0*hxm<$#9JfOm=LQt~}-8_na=aL*gg5Q^) z+#_SMqB}Vp-2No|wj|*p-mdOT-;7kM4I+_{@k+i$lLC1A*t_~xJ3PH;-fg33P1QGlmR$NBNXN$EDzbmuvGW#AX_eXFXQ41RA;#mOzCUTGTvw$=GP5}Kp z^xO?vlAv3JkK2@}V~xav)U_a2Mr=}C)>1;tqIbFDHNa`uU+8z$Ub+wT%+;eYRxBfLnhp;lr3OeB`$>cYvr6IceOj_#(HI%d~D zC}K2!PG2aR44JpnLBxsxz|Pe-EU8WLSTA9WrBAFu5Q$Ng^nIuy)#>_nWm<#awM(g8 z!W-emSwu&E8-w>4gQr_V#~righb95DmAK4k+7C7e5^t#|7Su_6$g}rTf-N8ciBKPP z;v*5vx{5zK@axHO7_Kf_0_Q5`W@TJ}0E$BGSWUsBt6rf(a2e z?$?RwX^V-mLo;`Y>{1n)Bi-h&`pJ5P_GF!6RAZw^N#)ool$94)$4fu^fdNli?M)T; z!+J-pj^Cwoz2zE=4atNaPMlZmInUp|0)m~jP20(9McjGO<+-7@(l9lHK zV`bheriDh4?B08AiKyHyN* z$si$~gDC!jf~@dHHNpu~bp?&Bb4!FR#ugbRmMH6GAfCbXH!4V*vfu*+C82OX3|`S= z#sV;wnaC>!3W@(HT^R8$pjD6f+LtHaZjR$0j~WX{sLMN<6@YOx zJ}A$Bf<50y2lSh%^cv9&Qs|{NQ4|DWa(-@{6}%C*yQhy#S=7#dtK%HOX^Zo)YmOE* zo8}McYgMuhNJc9y0_(46yJ56DqFNsIT;{iaF8=cVF4defrCBLVq59=t+r;q*V0~pj zu#(|FWu2s;=vC2LM4(QCU{$+Z^;!%4R8}bB5NZG^i&6uW&cUUW>k^bl5?GBiFFkOm zU@W2c>V#bx??L^gwfP^vKVa_wiV!@CoUNuZxoSs3ichiOgFPgwiq0^SrN!#Zo$JcM zQ|U$xA^fh0dsOBOT}C?;DXS7nG5CQ)&Lj}Ih>!xm!z^(O@zMjXcJ}O}$SK2HJl^lU z-r4zT4)&`vkWh;NQ3AB|9M}nKy<2AVhWfJ#f}4K&V5;yaygmbVN%eYUi7Uhgq^YF5 z`1Q1YegOUS+mIjo5~<(V$wT?vFIN&`2H_pJiHDt-=F1Fl8U-L_!pO0H^ib8T%OtKH zQEwT>ud4Soif08HTaYtpp8n{;`Z;`aHub%&fACv`Ufn5V-m%papJpcRpzXG3Rdnq4 zEUj+vLLxgs67uK}>Vsqy%xT0P9g|ufT#x4IPp<0;;fWCYmB_++wPE_(81$er>w42? zDXf{#(57_u`EAZCw!)LmLQ&X?Vf4sGe&}~n_xFb-eg{`&LyjdO(XrQn=;5;2!igf-|4 zHPu$FOab@!2`aKLmJhs<0_057$a)d@SGw>&7wSARab=T?a@88XW z1qz(lL9ZFyzPdIB(GgZ$CEC7+wv_>D)Wd-vR;(dkn! z*!3mZ-9-^P=WK`?wOvh_$IfGqi%GBf`B~Ub-t472$}*Joy1QhOQS7NdHw(4RJ8&0k zX$V~#SHz0aJrSVKMVFI*$}(FK@gmB|8m&Dd7vd2k)tPjaj1(HgW>SlNqTh`XtREW4 zdWtW?tq&JSMlm+}PVwl%b>9zUks(+v)m9EpfrgfbHHt)OvmKtIAAo~_wTtydrTq9Y zfAnnQfX-Y!A27H@<$cQv0&r)LSl+KD(MMO+(!WCQ2xQ`X^LNiaZe&(Bp9TCCQ?LA$ zFtK+Z@C^GWruIc3W2wCdMz(Xg+D}tSp+r_>ss?xIz43$ziWnoMQOF7IkBbwYztvZ) zr;_)m8e%gL(NzJ5r?T7TER{nl34L8N%aU_ zlz{QpTTqS(0u_P0%a;B6{g3VhraVvR9kH*pRs<<14q^nhf%tDlhi3(DS|xHe?&de^}l=@3L`IEw#MdFTWx&t}Z ztGnha%)d2`XrARp8N;OD7L{eTD5W{|#LL2v#H@;U%KmtyK*y`-iA|I%(@Qpo!N07U zgda-H(J8lYpKobn5x`tcFt_TI9fYfla2XquG*4Rb}Y4 z8wW_3&FS;t*j*N5&GL&xnsFKRZ_)QXOYVH}T20}fzGWVf@VEfT3NA?yPCZd4uBSo$ z5iDZ#6dxWtAs8!4k((_dQ$Ow*yD3XJHL8iU0IQ?`y$rQTpUEhybbhkOh>Z*>VxT=K zT3ES`?lPE@xmy_EM&*(a>}h5(XLD8F#Zs&(sb&f@Ml%z-aS@_%y5;ZD^v{)GKbFxB z{iRgOy3LPTy{(>(PD2YCG!@nSJ@C6#t~7>m;S@|bial_oDiZr#+}w4SRXvLtWf8P` zW{CZQD73d^K&c#>ORn|hBxp^X`;Rfn2&(M+v0D0S?f;{zvQh&hIH`RkH5j;$&f_}x z0sj;}@c{GoWN|_$geHHEhc#fDq~eUU;SlrSeOD>I&mb72jGvz_FP3!YbKmj)8uH`P z_%b+wG0w){SZdauvOl=ByMJItZNo?+eqdg`-h9_HG2c`24`4+sh?QtMMdgb><>^D1 zFC-ck8^Wdw2F$LB0YL?4Gb0SAL!H8M`DfqXTTnm#P}9U@v`#=pOU$m41Lc{G5r@hB ztWX0n;RGn{l=|OzVYr}*ikWP*&~mU)zy=f(kN7i_!_$Vr5N$NY-TJ2ZJd$anR_Ria z$icj_%b=0wbev|fHDLCb$CBduw9m9CSA4`HKx%l#VaA_O;UXyQr^Z@YyV?7#C1i{j zuY7o_YZbor$CCz@F!hcqc!)GOV)TsXc-rcv>`NIPZT`%T&#M6Y;pw@PP}S(V7tnA(qiyprKHRxcZ8!Gi87c< z@f*O(LjWZ1*uF5wl4ViTI@RL#0`GDs z!g#D_zt)}pXij(3@XmofKS!bLVu(kek91?XPuYy-_Kz)lGNN?SZklfBL;;is19!}B zk|XI@NCPy%AvHaYw)oK%vc0NVhjWeKkOG62v;vnI~aN6XbvznczUqK_S1ByuJ_Px#pMuu{awd8 zi#Y+i4vP$px1j+8(m=&zD?McTa!t}I21Q6>H8s_ya?OQ3L&Fr%B)w7WV~dQtkCNG< z5#NwlwnF-VL3dFDVu*u;}?Y-;w_?N3?nRpkwVjR@P@lsBcp z?1B@&-HDnhlw)iTe8#{;F%Uo&O)wmBu4Yw^q^FPB8S*p31rlkDYqllBhXnS zyj$}Wl3HpJiK8x$346a8#B1>o)N)eRaLTx_xl_{iz7XNX;_NK&)vsDeEfm%rO+q-A zBj#-u@w^`DiS!GHrXE(vXZ2a*hEiqvC`XcFi^ox}gtzpLtpr9n-}elH%=P=5#P%t0 zNrVe=u>T-_{q$8lY$4;g`%jpT33b*&!3pzR3ywVof{wTc_cmY8;rMf|EIdN<;g2h` zbb0)y0t7p$M)?PaFjpBp2X#HeW`vbwjzmW>r!gAw;?wLO$R+!!nd6Mx<%)v$u@zy? zZW{eynV!nAC7`_+Ybpgc%Dy$HcM5ym^g_=_@hykQ2v|CCm zwWLNn<~X!RHyWleOhM&db^eaO#)6nxtN6!Kuyw-E?IP*83B$?tr(vS@$#!HC7dUsV z>aSZH2ld9t2XrFIF@ocXBQOSoTD2pi?AfzT!C$=txF!>bZ)>W-DrxT&5BhtbH%0SI z#3aDY?8P!-XMfDgyK5fF>wm4DVZ1f}X+ojd^Tp$38&5lAp!1`&pOj4c6<$@UWHh-A z$bV8r_%l@#%v5)#QeC8i3D23EMskpusZT}!Rmak{+GHLEXMt5XaSFpOMgPYQ&M=G7 z%SC-+60X^3RLN6&(DIc&pxO;)Jpl=gUMOd}CE;}=lr)=Oad!?K7YU2B$knX11+V>b zK%&&*7J6p4$HI5{)94Sb1k(Oe^e!zHE%BS$wR1I(;roCL3 z(F#m`|3?j_{G*1V)XVPiPYorGP^U~9UDiPTrW~Uc@r%K|R_+jc5cyt+%_669Fk=^+ zXdajOWj%)sDim7NwUOBJbFxAWO(?Gq$f`BNWeS0KtH_aUVR(boRxGPTWhp*yv%eh5 z1p#E5tYd=kSfV z@SI=l#VRR9;+>>Nk$)l}>0PDszZ5>*>{j@JKok^uXEdxy^h|b3B_5)}=G>T9jI3g5Nzj!CXsj547&7khyC z0^104J?IRh39Ao!H#Y5gUEN_sByI;+!TE>~uw>TyG+QM_^SX2%k4T0EsNz|_>t$~m zCz+^yK+4TB{<%f=4e<0mK_I=7W_wC)UT3_bTh?Cm>m&>lqvx61d`l#4t~?J=ViHE{ zK{#=^4YeoDwwudiXy=#z+aWd=(?p&w@EC{}#ZM>)O)?+V*k5r&_%!y}&^%GNPTG@+ zs+owjd8&~QuP@$HNY1rfJ;3ynRJ`Si$ij_cD%`&|OB%=@f?VWS&Hp4&G$C}(#0J); zrOaemJ_B?CltdXj`oDV3V2lYTBG3%6u5MQ(pQUR8>9SXb61&!Af9dUwAZ@@^>^7B* z;xlCDNiRz9LVv3U4S6Al0Hg)1ti*7e1M@>o9P5wcX|yAd-|5=7P^yZrU-EZOr?p9z z1gfhQ(rScb$79QrL&$%q>a0Jn-8+S)6MR|3&DAg1lm|!>s}_Q47PjGYuqMn0fG@_kIue{!kh! zEcJ(nvd6J8kH*)JNKPOLLTZ`R848FI978M|P^8_9g^jQ!bkcu;rGr}rd}TO@@Yfq= zWFm@Y;_sfW09+jfgyC#%E~=k%4n7<O6oJ-TmzD zc%pkKi1y<%U04JIC>k=Sn!F#S=b%r#if%kL)&YBZteD2$7EaRJaoMT~K#hKtu)f>= zCytX3x=9@pEo~e`PlVES6Z!g{#fHKkb+DX1bh%T11PW`J7z6lcqDpm|lH zMs+4NVN6ob zojyxiXZ8@r@aG&YD|bQ9zbX?!9|GrZ^f>GPZ12?|qY?H;^Dpa3IYc;|q{@az%EmY? z&yr&Y1$Ejm)xT}UDJ_f_T*&-R>u=n)5Az>^s^6{vVDn4o$FH}aR{`eHN$iMglU-E5 zJP=D-r1jt6z=2k|&6Xi9#Hc4^Fn;O{#bW7(0UsVWm6Y*4zf~%M^hY6sxQ~|BC!Sdx z_1`o1p_&jG?TeDL4lFvEB8cC&qxP+s4ZR1->Z-%@TmoeD2b6K|So&4i!CRW^N5W@& zg3Bv~G!Ak=<&;m!zu4rXR^sq(WNM<6F!eqOj?RoC)W1ge- z_YxJy{GBrOJSEsl&GtMVN3>}IHxkNM1|d}Z=qgfc`jX6Nau)Z^iJ6zmCzuehDB8vy zHX3enNGKbu>s;!Da>>o;0vx!PAm{I#=beJR@sNus8BRxnx;k0Z5 z=G!sjOyij$Vu1@nv-1)gAzw3s9Y9(k^6=_$!s|_C1AVTk*dhEw<5P(X%E-o?z{Z?q z(kQZpiNPFqD!gVpfJ4IlbtHMVkVP}cG%qso(_-`eHym+Y-?R9E$vH=>dva+;MOQSx zqc<$_VS`@P0H~W{_0*DL;LwfylD$w7zMs4Uo?}U>7jfxN%IVWy11_}n`B1h<;JGCP zs^>QLuEL}FGOOqFc14>vu$HXl(9u|^U7O6i4K4U|Yc=rq8jJt2#^QTtwEeANZxsFZ z3#;ysVDY9_(Aa@*husq4bX}zQIN)^dgsu8Fpn2Gp(~;#95ZB@8se0(QpUutJvlJ{9 zavU2CsF|5Pv?|Ei$MuE&)PF#9czhP}X*TUa4P&Hu*R2|qROyYKgwo1r2fpwLIb7P~ zNd6dgWGVW-or(fs`Y{)+4YDJ+Km=1k67ix>v#F5Rf9BS)8}>P#BLS+252UT6_{?$2 zlkbTgd9KM162fXYc-1yn+I|$|O8;bT6G`s=SkWXr!sa;QP>6z(Xy}D=3XCk>wnHx#DS@x&m#koS}23RnW&*a{sU4_#sog4n4<9FMb ze(6FRv=7DXd`U>*(BYv%hMIMeXq;Yf#l*yr%J6Lr9z4apw@1cc*iIg@K|W+L_*rF? zIZOh*fQu@;znA&DwSYK)R5fFhJSjz(BNc@=0TVZOci}oZRzXP$N>{J|8mAdn*5<&f z>V`ZLDrguf%4Y~RY?{{I7>23d6a5`}3fQ?WI2ozFrf=bMSC`u*3hyQgtMPOO`E8j9 zu=4`3q8`t=FbJ3hh)$YNkf>mWRNdXH zH);cVSEUlsbrVKAd5ztcgEbhgeB{?d`7a3rC-Z>8ZL5e~QI4t|0u{NwTBR!U@373G z7uWHnGQ9db0y=E!s5JTO(T^EBm`yj88hq|QTMWN;)Ly;Dgr)v^F4pb? z`TfN*4zocTg%84PODDK;Zk6T(3du59`goP>G)8a7+wO%(Pc)D28=x%8V^wA_uzCl1 z;Muy8QIr|Z&6q3OWFt(yT`+hNo1ytNF~eE!NO{Y-*6GuS7=i*Y?0PR1LumGHh2IWI z3R@LV!xhw1o5_1efhwwB2HkKR^R}M+Sn(up!WBiKXj0Kx(uCo6C!y1y!3YbA;T^9v8qFa;O{xXo9P6p zJpPQH8s*&?*8IKUy+yZ?0?tN~v0E`EKd!lvot6Mq3P* z^+D^myuaL6hv!S#ur;Dc!*yvwU+r&eSS4t}<|y2$28Rn+ho9KImD>((j5EZsVyBhL8vUo=A9>|p$#H)$9!AFyn51= zDE3$bqZtcD8s8LF@I%?-%Uwi+$(VylFf%w6AI3l;8phgAjkYMNTcz&(>hh{72S5Cj z@UL+TQdlfCU7Wo$XkhGJSU#3x)DN{}CX-DLJstUruC;$_iQwQrrvA?~9}D3hB?Cym z9pk87s-aZ20vl;F3j|s4p-;K&cvkUZKV4*;s!w|GZY$440#WzVV`w511s$ECd&6Tp z&!R5^PKi)Znij!>Sg2EQizLMKmJTVBY`PMW$HM6&KU`e*HY?hVW{U|fi(7OtzW*Md zEa)|jh_*@i>5_}6sye81ym)G@x5}2Km;F?XT{9$7Q%H8LdnVv?+ll_fa+GCvXfhB#OR!~Vd z19PM|Zjnj!mD9*E0!JS+ygyiZn;M!4YH=1DI+$3EIZ`dZGEzStzQg>x7KI>OCi`@> zUmc?+fz@w~((!J}LL=WpTjRFbCdjcI5MO!2V*{ngRr^$Gz zuMUo#lv@6!y(!KlZu|$|q6w?~UxNU(4T6D&zozgszMF&pZ1T0vrNT6!G0wKtu<^SK zWq&S?5_yjox_gktMZpR7YvI9m`4S1lYH~88VU*f@Wdb27o}~1M#TBDrm!Kee*?08tljbRKZs?K|GUgHHB^oebrummHRo97Sbz8^1Ch&?(NO~q zszUE=4jDJv*T*)O+O)ICBw^>W%LfS&?94X3cn_+~HZtFKXhiv%1)TRwi**gkr=kqQ zx{s6#n4b`;P}9vjILQv^!9ykZNaSd^OhZ(-m`DV4Nccz-CRrObiI+ln;MyLEFqLby zFJqHP7!^J5C$$vH8PfW}d*N~%{2_;YvhdFrLR zkQB_^Lt7SVKA~>vcPgH9Ds$qa!AcI)QmmG!gI0sf!*z^Eco%B&NARv;Q|lO{+b6Py z%_Ri{&Ffb@KkbW)CBI#UXlffsuQD{SgRKrlI$0BAJ3^L=>;8DyYIl@s#UevNU=tV7 zlp!dHZ!UNVL^HCI3>Fu1G5Ovv6zio|6P!#Z#A`ANCCRKrkt7lhE73F?=4kUQ$2RIy zFTRwTD`Lmydg0wldtAm5h^i6oVg-df_)|VZt<0h*E&k`oupf6PX9*@-&C?hs=9~qL z_?;p)m~%S%e4^A()CrBwy6nc*OK0GKf$BaXLJN2WrJm!DmFUBAXUk|_-Qc-MM8cOy zqM6g38iFO9akd&PPzM6sT6Pe{X(W54*4O7jd^m<0O+S(pl2ll}69=X9UdJCGi=)7G z2oCjXkRH)-R@BferWX7%iRMzX3rkUvkzfVG47;r%fGYj8xIerO5rHRcHXL#FZ*h^<0`z91rYizb_@8OE5LxquYN{*rhwaRj<1Ll*C7T|JM_H4#_4#+wGcTw|t9>o~Y96=S8`VM^1ztQ4BBQ z43RH8gA8FQ$o4D)H=;XOgaIW@(j62&Z4g~3As>;@cfn3jVg^vT6T-c3+_)(G$?X)l z!RIi#;iZNF8G8{peX2W+(qO^Tv^4>H+XD4PX1Em^ZV0tlb|vZ-SUM5V;1{*6=$|U^ z0yrY+xacHr8L&%5XFgYpV@hX&sWOLq`L?_DGiA!fCe1=5;grF&?VSB|s!Yw7JF)h8#n zg9Pp3`td$VzGEd%xE?bv-KXC2gF+ui&t~0$C-clu_eJ&qosQ2Df_nY&z=n@&T|jej zrOKwSm}IIWwu!m7*%zj(bUC;OwpGN)Z()G%<>CXhEB;+41U3kv1wSiDWZu`j$`Ar< z`WNIot-JzF*DCf9`ACNGh3pZECT<=~#jClakXh#+f!`rQcGflznAKei_{+MG`7V1E zhG9BpNiI_&6FnRdUC#aS!x!Y>UmP_p@o1KgXce7P&%E4vUGLOI-wUpT52s`7+Bgt4 zYg_zmn?u})^PWcJ3FYT>k+Ujn%u&k+kGI&$>(`rrrg66a)_ho+n50mC!DyATjp<|O zFEE5k07^r&((KU5@SI&~x{zD?ljn_|n%g`-fY&n^xE?fx4%Wl7d4+I^4*517nk?8t zL(vwIa{qcAe)tuL(hx{_8Z}$0~8{;*3$2T`GGNYuu28gw7_vt<=~4D z7}yEaWsrUHwF-*p4ke5w60jj?KW&GCUqYBY7&9@Ks3}6kFtKIiDfM01m3+y6OM{_@4 zkAAsqIxAL96T3la*@o&k9~zq&uB1AL2+-qFZ^Kq`-OeVrQk>^y*YUD-YwC}iJz@%% zaN9n>%*pFAeE4h^TPb^3v7J|=&VwrSKZiO1H7mQP%lRf}Vl)!?Qd>CGNSgP<7~e%4UsoX6g_~A!=0VfK zm6K#mw;DBJgv+;I&p{2A5`0e5E_s>ihTK`9cwc;Mf-ErD{6jlykfFp!twI(dA;j%! z^^0=8nihhyl}uW4;>CIds8UvZr_nVaRvm~OERmL%CJ2Il=D)17d(BMnx8OVQ2l|9) zVyj&~%aEY3fet({L-hu5YB4-}ck$FB`#K&dLS@PX{ zov8TFR9=R7yJQCfoyu5Bi{8YTgr|5dmF`)2HTwGa*n#-HYsnj&fs$d9`Yo*3P?5fL zJo^1h5Qcn}RNXPv>}?bukr3z=9_dm}Yd0RcGkqsr!4iQ|%%xS9*~$FNh;UODp|ly# zvC-VAcFGqi+(j`g$LFc$Cisk6)@h(YpYVv^7|1(=?HkrENpta(@Qp>_$!w1_FS@__R$5^2>s za*mrODoU$IaRwxfv#^HD7+#qFlFrO%)^45}t!K&6b2U`+-5l$@hTc|;3&84{$`ppk z>6y)OsmXNYahaE2M_;x%z=2AWw#M6$p|3uWRG`2iQ-P~1w8w})T?aW0i)^eyei;af z`Aulpn-N=QM#Tn2{ZyUI{LLnSz{q}=1FdhVF}YD-xCx~HQ$R{ctfar3xb3J31BaH3 zF3(`APhH+_PV|=fMTO>p@ofV{ZrYadTBP5cc$@Hb#I!7p5L{D#KWaJIo~@g@yxor) zGcsw%WLoPdh8oIITro@e@XwDhG))$&;iqzbRYLelXG(ib?_AwHyW&xJ6w5};#+)xw zkSB_wG9ra>-z&^8-z1r`$j@z*_e4ty=*n}m6i5oLkwY4Qu*ofVRHRi?mi^ho2W%h* zpjQ~1kJs~mpcf5f@0XBTDn%5C5C>E7mXlLr)VgQhJ zkgAq#{zDmS?*gv2o{V_>`<6SG$uZ)i3PA_EBfOsy2;RM~X!daw7}`{%a*lcU@2Xt@ z;ppqhOLPnn3L@EIYXkTQ$sa!ms3z-x4CK}N4=MMZKmXt{3Xz-m8m-tKM zZ(lB&SXe)UGry}dH)_O|57% z9AxI!Rf>C+ICIYyqFyi-w}28JhRjPKor-0;1fIj7U2tb)s-M130ZOXei7rO%{n+}~ zNym+8!tY;k6QH#2C9$fsUoMl(e=N(2s2FB;H|vU0xUGp@w9-gpj5Ka&22PwmQZ6m^qx!Qt(-)nBw-tdLc)WkMOv zvO5hsfZe{CpCRQiyWqHTD9 zeey5K*R9pow*;af^g@!fr{J#o*;_E*Nb=`;PeMe8Gw_(DgOz+okUP;L$X@m&&f0y^ zBR*Nn(NbNCa3;xp4vUpK?k3!Y$=s5=t=5^oY0XBgq_0V2B9z~*Li zuL67uO44KjdXJ*yF?|Z16#Fs@hWYsv^d9I^d*kkf)P=@0R*fnkFPw^#pDs_H{Zx{v zzX5cG=OiJ81z{$a!&qyw(~p(4Lcdp{Aya%D^9`AzeRdYAPP$@sWAaH;Ghq5AJ8 z+CZQy?7i^cz2w-w8W^Bk-LcgCgdb^E`p)ZaEp8L@aJjpH_Jp%c8@sv){J2vbgRtnZ zgMxbKK z8_o0bMa8o2n-_qU*n1OI7|_6NheDk65p~kmd{@dT)aN<8pIrV#I+ zN)Ke4dIX&3>+evExo}Kh>3ami-Q*j6euY8W)`KjiEk37$nw9HvQQO6Q3RAAo%X0<9 zAdZnMmv;=#PfK)r1v0Eft1Os-U9&jaITUbUGehtp6@qX>*JbjIRQFmQKU{tsg7DOE zc#?3Hwdh$P*W6>w)hY}cB_3lAfjS=29=ueM;T-!9ec+M^0TWto8gDV<2v_4=g-rhl z+DvzRV%p{gKYXiH;g(>=K0!)Wj|ws4W2tm|dI-nM5lG@uR#$j1f)n?*7J#YweuPEX zmW8WS&Cx=n^T5*Z11lQSCpD@0c_}wys5Y#e<{?PN+I;z7!n3zM{f>(#RF+%RO)(xK z7EH5u-vu{;t#GN>j4P49z_ilN8raQTjz2iHl3Fk^_AmPXe0}+iuRo5&T2k(Q3IVh= zD#g!GA+vUo>ZIqYOOQ`sjzlOQy6=`xsJkw7F2b(Pk=0?r(7WYf8(@cTQ_hFu&iq+! z{sM$1jV})W5k+fsM5>%2OD8QR-X+HkZj1)W=*8b1;?#w}#wi%9&q%)BhHBJDSKq(g ztTi7P46q~?M^S}-2+=k9{5_vHjdCYTP%{FvnZwcCHRnu@|i|eW6p+2+_&=Wq?C2D94%PUv_TQ{Tt#5JBy?hv zkKaovqD5{-d&L!%*@@*dljNaIQE@c`&iepmH?AAetTC{Lu=%pRmowE6sZD9a$cNC+ zYB#}AV+VX`m}2XWayYD4j>fz)CbtM2xA6qh1i{!0`KBF*a{Y$Z*^#4K0wBG=OF9}y zOv?HfFzZ}rPM>IEgSMX?x65F#?-*N?Td&E3UL_&%ixv)2bpB$?3?H?vjY^-!Y2)sD zFfKq$j5(9>&&~EZeKev)b4qeFD#8)(H(6nxB_nLoLd}t;-dkIQR4GLsQVB{h zRF}s5UE4?ZHh7^u_GY2^yqOJFUK3dD9}F|45sH@dXmn`0gNnS%*{rR2L zd}Ua%Uwa0*t0V7^YkEKR!s;zVx9kyz>gf+%gWQc7k#R*n_1i~u(KUGxta~zB^MS&R z4veu1b;>f1%~{L8VtCJ4pTO72mRlUx{)ZIfyg+CE z*1^cPmy3l7D-!SbGBJkuG*38CKR$4s29C?g7-Jz37)7WJy){6@2;t0VHlNQ~QA(8z z%|nHN%b;Rua>80~L8ItCnx2*(u+9-%Z8>+?YMq)nPk-E(ZXt{4ga@;zvrX)6EESfm ztzM=mvt|LK0vr6G4nMedqdc%G1$kZS#^gEXm6QexdWm9jeFzQ8wsidaSd$jqBtV1d z4heJ5nk1-T5P@zX&B@YQ6?}R4_S-Y_*Q&o^DIjf$4r$|vS%a6!VU68>iw!bxPI^{` z$@8n_OUs9ZL(z07(8%G7I$r#slCgzMsAieBjp7)QAShH;S87ppw-bT-EAKz}l0h|- z{?Qv?(~6DDfxaV#F z2^YfB;b)AMLjo761}BB~gA_wVjE3!g_|9AU`cd>gh`SWt#uPeF2k#pnR#u)!E3D`LF){2~46s zM>RS2&E)^b`@Wg66W}HxFdGZv{;Pk7`oy08KU4q5teyYQ)c;%qIgsI3T@d);oQ$M@ z&OA&B@O~`gbXvOKGqQYn@ZR?xmqX+iNxecS(zAvuFNNpVGqS%$8*VB7*Avy3A+=MA zX>4};qT_xqEeq?uOK0%)ek5pp%Q~v1E*qSa{Ckq+ekrg~?Y~%b-=m|Lw{a^p@kE`^9fLnmC{p8;Bov}f4fopZ3tyer0H4=O@Vf8) zQgD?CQB8))_k67|KKT3q$Rqp=D)2hYOUiURDmt*~dXEAA>n%Mc&velXAx%8!saZ?_ z2HUslTjz>($Mf~z1mg&`LYCm`^Dl3{yAA)i$R{cG%>bVEqlR_2u(+pFYwyRq?WhG+ z{fNw)p6lPkR23eFlG>>j)kDo(Fb$mBkH0!zx5DV;A5tbf@+%%j?HL}0_EBWHFFdZs zlI}@B>|URL$KAc@aR#ER2iGL!<^MJ7^|5^Syc;78F%EbCJxMz&yq}K+5qOx{HGwY} zOnL6zX}ub6*^cBoczRQNyj`*Wd9U^b?)R#_?2$KcFxsL~n&n=G^Lkms`U4=}NX+pj z0y}uvT9OmR`v8naKJUXd9NX#_>$_$13S65`(3p-H87|Apt`9ey2{_c33!3)Qq%{}k zz7Tkgr}Zn!YK93wq_M4=Q#LPEFw#pESPCq_wcUm`_NQ09p{vo4KQKzA$Vrf z=;K~?$oUBI1s)PLtcIYeYny+syQf^T0<+~}0H5zlocn$!F21~OUR|ureuBqYO;KFi z{j{#*u8(fe0BVY&AYDH3$KF}5j5 zLku3zdl2yL1_`Gobc1le!Kjq*K2mmEFZCt3?q@iEK+VWl_MmMh=DTY2&wOZio^F7j1 z4E>g#sI>1TQcz6E>cpftcH?iRGk1jsgWNP6R)OiKy;CD!tR(@T$}kcuF?0)7(&(HJ~u{FmY6J*9phA_v(F}^*X^c!CeMs8b2o``DeW7M+IE5{&0p}`ahhm z4>%{OPiv@nJV+m=Jn<}z(U9|M5l{sh7Mvy)32%J59AQG) z&piJ%goB)B-R>$}O(Xfp%CmKgw50p$%C}D;79V>mitiavgiF5n#geXR2f6+inisXTRxkc+HhfX6#U9=|AKsZfrJ-a zj;MNHD%Wc@DAv+x{SlmyR%fvo-;bx3a(Dw#ZF471wm*;!LHe&H-tX{cl?Pmhr+-)1a9)7@jyQK^l^Fz*?s$C!=L6-9{xBsbMs{Fb6 zxFU=QOh%cuph`R`g`XgqJg2A)B{@KIi8CrK0TYy}bl&73b9`6P0C7BX2ql7;PTA6lvF7Z zL3fpS_M;3D!Z%W|&ztKKNclDn2X46CWN&!+#=}lo-88TDsdREZh@wOoEX|A5ILq^v zFzC}H;PW)|1_l3cC50$D*-}QVwC+UneSpTZ+7W$%5VL;3oSW*lqDD@G+xyEJ!V-_m z+!TTrp?vY3CwZfKiH^%*Dnq0d&|Gz`+K%&Xn78A!9wtxLALW+(-$HRaX(t{iQc|*M%;}sY zn_A|I_Vba-o6GLUilJ=rIN4tvMtM9csb~j0m#Rk1`k?H$e3zH|efvjyKTdkxs@!je zJR@`++!~dl{O(T11;K-(K=V?R{YSscZd-U-gh!UIOD{gsSb&T<*Z3e<(K`fgdfBf< z{YIT?s8Cyey|>^nw2d2o#D;bEUu_!JZH_wxXex@E)kY~^zt@~!uM7BWquS2{>EiGI z4&MIhZ-BQ$0ABW=fS11lQU?&ndS>gmA1hR5D07--J^H?r$DCG1$pOF{0d!$M9H)X2 zGqD12qte--o`#=Z?f^jO0D>;#{#$5IH7`#Isu^XJ%ta~&V%skpBXzT)JR-kcAQJk% z_W(j_%gww7L&diCM|C=@I>-jXcW)7{5w(Dj*F6%P^*8P5WdhkL0#uC@{n4$Xo7!^W z68ZT-Yt=XanH2e0M9!sImjXOi3%aM8v%$3IY{kjFMFqylsMUELMrd{2nkm1#VIYL;` z62=X0Bjm;(CvhAPz&;};4qVO-qOR&;=s^ngq_!LO2(6J8Au0RbbCcDp_JNF*FMpbR zvI0mW9?>c?{t7t%LGS>RfL22d{fX??wQHUh=S;ZS)vLk;?<4hx<7q}2L)e47{#Ibc zZHETLH{NZ9$+9jPOgTib%)4ClVJxVd(=ZOD0KqdPFT8^0gR^Evrq_e%!|0eNUCT*z z=-9(+)+^uZK!pR4d;hZIS_vgkzx^U!Gh>5Qhb;cR^h@YW!jDqrs$^p?64sv{_NWIE zWI>D9Ob^Uc)V7Po3#Ow@0C*zCpCHF6{;=59U@Ky=;f77TGca=1n%;HL zq$tMUD#CH!`cdo`pTc=WPs96gkfXB$HkB6Ro6??hP+U^3_h2-$DlFnhi8ji*m%N@n%)^|EW+t`0XoUBzTo8ubhggAEd-d z6&gjuhxj|PTT)?P2cU&`6-s1B$MD1yL^Dk#0Q1G3uKiArNGd>NB;H|C03u<;Irw+< z7!;(h>LUP@l4=mRAgO^xtX3cu|6H3YKk|T^e=NXw1UEv_PCfR0GGzz`q`l8}aM%Aj zm^ktdz|;e^$sb9D3U@4Gp~#$hO&ZEbG|-I<4XwW9|BW0z@B#T}mvLbQDTd(UW(d1aF_0E7U1L7XqG~+-$gnX*-T>7GAC z;64Y5THQ_5h@2c)B0(8-7UIhn6w(G0qtA}B?}j3;OmmqpB9RzMoE%P=23AUKPIxsJ z$UB0)D~B0r6=k6DfkJjCcZ6<6c^rE?iqA`pFYstOFB$qKC0IQ1y}a0z%Zvzu%PO)p z$L~zKmQyS2Af4v-)W4uk-^n>N7$5)TQXbNLVlBN<>b?IpsRe^U(AVP$tEg4Vxlij) zCKmFv!pd6D;KM$&0)9pc09y%}SBTp#C(3CYWyoT=E_BjNW6UQ$T#qL;`cBrn(E$q< zA~IHU8YNHi?WF1Y67{Mj7bv01KB2fM8jjQ39<46;t~)U%cwjxw?N_*dHd_G!Y1GB< zgz4I@k-cN0p`dYDR@{wb`7Tjdo~Zy{M2DJ;|5LCczuF*jiED7QY^i>|oN={ayJ66; z*iQW@o^P3<4JJnQ%aREm-PGH;EiVtpOfV-czuKwub@AsN`0|2ClQfaXk~>GJi{6rP zRmebd(~oV5WEWylH8qd!@Hx_89Epf9u=zwwKkgF!hwzkDbpypzjLNTjEty1($$L%N zpU!(yX6&P7dG8GpMSfK8h4aAc89zwWJrG)hWk5Vtu(AC`4$(Ki@%6NqnJWK`ot^xM zg~$03#?l#eRkc^6;nk9H4m1)IY4H{#ovko*t@Qm{m#B-SOV#DD*f@E?b-fVfjh%^b z#1R$9^*YxJP-MwEtrz{ozT}9;+`n3{KIi6Q8}CprZr!&689`xz3-%^==srsQom-Y? zW}F)hk3NcVp{GkIxJ*{|tkFJB^)_8B4YK1T!8uFbr-qRbXR~qY@7K*iW^AdcXjsF^%Du_N(B~)3{wlDY{ zP7Gm;;|R1ZVT?Z(kD;j@VkSeE{tN;g)v7`bq5DNSK%{8y&1+cm0I;AQq4jB2L6$}N z`wFLlj4yIDc`^B-OS05zSPtYX%_o4_akL#AvwUB$p1|>zA@wVR_0E!FzMHVg40UPY z1=i06Y{%=%Be4gV@0KkxDTuYWkMSW8*W#JzHseRc3C$T9s*)^g4cB$;R{M5g=rQ@cPNNrk;RQ*%inz7hmdWtL1$mpUQ-`xZTMzy6VB%epU9s3r*={xhq2wN)n6Jw1>)4EX~Ur|3wt&l#&A^;`~oNy1!t_-#j9K z1bf>H3f-`9*nhBBL%f~V!zHySgf@<%^E&2`lZu%K?$R4A%`SwD#`cAJ&9N=FS=Pur**IS^X%wwRSTX>VNVc(v4tp(EjXTv8Z;>DW|&|- ziIiF@W>of`oiCt&BTEHJzQl!y@#CX)t8JV#Yu8NSDl~)pIC!Sgre*?1jLvU?+@Am@ z0az<9qceb#%MDQ(x($lK61k1H7$T`O77^C6k6@9+KR6i(cthue!aj2x+%9s)YPA7e z)ZLaAIhnGOnI%HD1X-@S00`RelJra2+Do%GYLltlqWBslqWCV6KTmnsBA7M2z*LRN z37yW~roRn9t@`r%sbO$a$Hg>{y-8)u1yCEU*VB@s8KEx{dq7H`*4_s!3^7=tJMsWK zX5FR9ydeXl8(Mop%F#Y4;!02<@&nKf9X|^%5m}Kjng4m@;!SH1UndZ-^2yIw2 zgjE3{ufU07W|=T!>@y=3l^%aaddy*P8x>Ng&%L4hO~W~ME0zsyK-l#g!Zt7U~85=90h?Da+;hIVV| z%$fs*-+Y?|QtrJ_7FH{07uxG~e+c7(MHQPsS`6YD=9d5g_>iP?w9wt4UgJhuJ}RpB?wW-U#1nd>o(3!EGqi6pOGh*3tFmiuMPy!+kdZxNL{t z0C4n@ji+!?1EZpHPe5G=yHrqpT*$-@W<@u zo$rvor8p!PxRlEPoY}6-{(_b}O_-M|p-@o3q%r+L3uJn2UeK)nMI#Lcg5ywD6R{Bl zw$W}s6sd&%@$XXc^ABY0>Dr8Z?JW98K5B#0OLnKE40(V$wjOQWP62zi#vAR zl-lIOnM~60dzx&CDSuEfKq&g(<(-}138LLI%4?@3z=175A0!e+wm4E7(5K_scc4v5ukaytx>CT+l@-9Q~m?HI5I z_qjLLf{9WLzXfmc0Q)ri+_(%@}L2H^bO2+NN6?mC9#@9pBNX;K5YKH^d>81U0(^gwlvU z9w|fyo+RJunPk+Y`$!QL4y+Y<#j;jz!1mFC=XN6HSyL|kD6)2 z&Ws<$axS3l!!VK1?pLR!z?5c1%M^^Q1fNukoO56hu3|f7&T*;@iY@R=$0HjUgii=; z9u5oa^KLkII`MhZ`g9qtL~xU(0A3{GX2<{wT`nK%-D7o5dwk>onpT&Wg0UXy=+4ilUn`oWV}JX+(+-6(zsZfaos!v$xc~K zYug`v3ZW|tCVTAwDkP34P3>|!E=vj(cCz{md{5`1D9C{F&JbfhShLPE^4JYLHZx%T`ECJCI8=F(Ct49%IND+fNUGrK~`8^iq|m=U|yltGTx# zjXTVQiiC59YMLnRaw~PH$}<{V`OXfIgOqS1f@Gq%!-l7dk3|N)@6q|IX+9!v{TNgF z2~c}7d4%v74pE1H~I@U4RuOci@BM|jJC#KMzmDH4+b%$zzyA2;$MM|mqfz)RCPeT<=2 z0knc}^*${m3DnYHH^%IfoC_tK<)EXMe z_{Ct!9gINd;(K0C$;X$)E5o;xHcg3qB-COpuPky<;s|ep8lK~}L`QhOOzH^V17{Wq zg3rUkO8DxY;?2Ru^?rjwgF_hS2Xqa`=WiZ`vm7_G3R7;rAv5&rqY2aOZ*W!42`F#9 z>y|rr^5r`NBJ1!;zYexGWj;_RJ1LMd&i@1H0^|Li6ma$?))DXi)x|Oi0q#}-NUJr} zV(aTX-&A;ioe~Pl;Iepzo2T<9FL>YNAZ)gcKI1R>ywCTFRW==g_ULkWxRNiMu3fc* ztc!dYV-go9#VGFJ=T4iidyA24Z?GZpU95DaF)!18oMVY8tz&D?y%$MT2%eEfOEiW| zz+e#9X%Q5Esgw@{3e2cqZ4nIR zO1Q_TXo4P&SEp$XdqeIO*JR^oWvzPZv!Sm?P%PnMqu@yHlSBhV&+Pz+DXM4eL);<~ zG@rZ&s(ijw^j8!y9FVr@1;hdkhiM}Yn&=6p1Xn{i`G@JPh*20o0gpPg7wF8GcqZ!q zP~)0r^dG`QY6AFFzA%TS{qAZ1(>+-Vc;76EIieciX?v8zc4K55&Fml#l z9nCRf)i%y>#1wRjluJYKO;!2oI5)kOe)GufTZof6a2;-$u@(r0|1}dhmW89Yae~ax zkk^!X516lU1k*9HxyPYelDxFiMY4*i?w{V`=m~MBrae%meX9{nNa{QL0Hs|D_}?qm zd_=P6i{!}Gy!SO^$2#yFJBUZ|#iyk;qBK=!BAIP*79DvN$FXyrJmPS0I8ScZzSbs06U80I!mSu5#94Z4N=}JMS8|Cie$y>>z<)OIbDmubW+#7(%s{2t~XN|~U3&BO4^*4D+tb_u4 z=bJrCyKHEN%b7qq55Vdd0KuIZL(X7t99ZoNz~l@7!+i`RiW3{Rtvb|`wy{|G)LPFGeN>j5JpBin-^i(e(rr1*wK4-vI2-ILCl;ytfJByt0FHfoZ*H;Z z$3Rul@$zse6t*DKZ<_0L_%*=%u<-VkEn&RTpaMuhZ(RCJ0ad#^!V2U&q&SDAnGYW= z_k zM&!ppb{7w4LoE_##QmMvjI^7n87!l;dYICX&jLR<@u>&@h5mY5epvW|#ym9<_)_{@ z$a77e4WD;*X4}gg2FN4=HXA^Aj1#xX4n$wJ8=)Dw59SC?ke8B|f}2W|H-gLedEm_U z-5fFpkt0e5i&lpU8I{KiSWKVShmAn+Fso*#fKY3Gsy+&ia2JTrbD2bz_Y-7A4TcdN zA~Un)gnO&?sipWJVjcP}q3^GKq72kP*QtUmvgpGZ7>w!6VZ^2%si~Gl`M)Jj&tg6i zfRDd;OtES{Jn}`cEhLrD#jdMTMp-|fRgjVHNXJpL@J|iOAc+p@kqa3<$niKTW7qdo zyfNEBjI17|d%w)cH%(R1YDa=-xP-(SU`(6X2Gz5fU}+u_pvKzkffGxU0$$SV0>`OY zJq?rMHT>Y2*$xEGnZ$^0T>maGye;No&NIDT@g-vnLeSruP6nC)JupI4{=TSvl;Mr~ z&=Eu8ryDJbfFXDKJPw0n)$x3L(J*TsW32|!6CWT;)3Rs<G}L>VQj8 z+s%GSs5!^=L(#FcN_|2n0eL5_TSj>F^R2p)VA1YOalA(@k5pAv04Y0@b6I2O{IS6}5KN-PTmcf)K&AvdN#Sgxr61c|$GP7< zS#|Q>M=z^2)Ic)%Kq3gJjp7sH$Yq2?gkNg_QZPkJBR!aCg53cTR5YrKJPp(P4FJAe z^+Sr|bPoOMl>@&Jmc@*1PubpbTK`e`MFIiujZMPj1W%?D3CHwZ9!9wYxR7n@=j9X( zRX9Oj*{}1x8xCoXi}2|-FrQkeS${B-tW)C-g0HtxubOJ+3GrUwskY3p|9^Cy1yGl1 zyT%bwLAtxUyHiTKySuwVQo6fS5CrLvF6mCC5ornORN_2;zx`^@IWxO6&g{(Yf8Y0s z`@XK2pD)l#|1c~rJ26!({vEA9wl z+9(Ma+sZFn>9QEJ05#eIJ!cOp;)f?(D`ZQ{kktzwBYG=hFouw8s)jhLdC(&OY&HRG z(Y2CYuQDzM=aw!K@F-QAHelh%Q(;E&?JAgpg9$aTEVv1Ag5xLsyewQt^tR8Ud3tPj zBmr9>;73k?BK@!dW0+&HWWCT{9V4rE71+UVzj#OF+B9FSr6 z2n5wKz}7X&(dEPSsnSj)yK;cgQ*R(LC|lej>HFG*dAFns&R2l>5c!M3gox{h>6VZC zyn2Np|2)UfMSssUB~wtA<%j?PUTF`jh4<=-$vtQq`lVL!tgg6DjyEL1=M9-rh-}_(flAWbPgsXa&q9l;$c2KH zl2wO_=Ye-@?TVav`Oo1xMf${G-n;Q+Jrg}(bA40SIUK5T?hWvwIxMY_|Ew9760{#% zsqnYqqnpgcl*_D_3dqCG*U76NyR_>{h`OqH;P+{j`9{}hOR5yM5V=ek{462TLgP}8 zOlr{TNV!N(^KRaoeHnXg>KTSDX8og)mk|VI6zcCw>awiiQeXzAh^@WhF5Ph6);fHN z9{UR=ydVym<|!W##{BJZR5WR%-U)Y2+%f%?J)PIX@cR$w18+)_AR<7b|77LEzrqZ9 zthZ^d=KDnaZ|y4Rod^^*>w6`Qxq7KCJ)X5qTVz*V4&j{)Q-k}#@@0o6duDlFuerj} zMm&}L8>SqOCF{NZp_bNzlX)Av9a*Co@{^WHKZh9n`lpaf2z1vMVNi}AJAAb(^E)Q_ zEAmZPwh$6W2@pyNAtpR%zG)!`SPK6(&%c<0ZX?n_l{WyPBk>scrq5ad7^qmOY#5=R zv8U!h*rFt&RZc8Y#fT#nhmQ{wK-ww=Q0) z03F(a?F$^`!GHYJJLaIGIKGcn^HhX)4nS+}6FAh~Xj{8Kntn}8Xb&KQwJF;-bC{J2 z^B%wz&;iCKwzgR!k>^Ya>6>jy+Nfg)Fu=vh`2PeAM980X*x}b^{0EyoCGs5@bZx-e zs1Gz6x=969aWl4o*E$5;8R`Ov6d>eUT9IuV_bF=o&}0dGe!K(P&8ZB1rTD$#YkxlL z40oaPOowWDiv2T)&?+ci*b)8Hwz|Uu;4I?foO4>>)m~I0bpL~E`OlgSvYvu!^B{t2 zKy-)5zZUJ3B@DPIz=s)GdJ%w`J%HVHBjJ*UdpleR;W0W=?Dk%+a`Ouu*7Uk`EsWVE zcUPtv4Jii^dJubk50cqtAQbZT(stWQe4Q4qU-Ac(Bg8RVf~e5{SPTFC8~CWF?017F z+8Y0oDIwP`;P}2n@E(I{9otGwA4XmnVgn#K)-LkUqL(c?d^GHV{RxU&LSPu$ zDaaJg0QF5zbj)(a1J#^ff@T(c*wB#76#$s!DL#+}>z_r%fBZ2B3Fu57up>7AxEufc zlgIvtI*7C%m;of2WZ1k4&lT_2L}YI*TF?6c@|J?XVNni9job^aWxIMHFeDnWuL9_f zT?U!&M*)!T%!3iRB6Y7v_oJ7m2d(4&b`7S zJ1So8yT1ZB5AAw4wh6hvYRdokjsN)Lj}WklsZ%Qc1K~a)hBm~zEvqLHa>7OMu4>u& zIKL;a;B(=>!(McCsRgz(gxPBR66-V$x&I)j)h}%m7D#uY?FNpdn%tiu=n4@O?ch>R zldzuwk6H6*I$H5WT~i-371GYepstp*{8cynuU}+EQDC+l(f`Mz{;RZ5fGe0M0_=qL z8_=>Df=6*ybKd8*8S4oo=GXT?bYwI|N*7Ggog^bpm-smgVG)aakoXUsW~8Z65n4{g zQ%9UL*0Xrq0s3<81WpjEihnBT|Lf)P0Y!cJzfTYj6q4^JU_E$lr)s8|L%5j@+ss*G zAFxLB0l8dw1^_4@us7!Lh0cb^6C;BU0baJ~6FNXJFr3zq`e%y)i1HjFt_~lcoB)t0 zGE3^qp3kzeZn^aT`UQVhcma3{x-%?)xrmVMHANc)9<@ihzDHz1-{KCS6G#l4iLSgi zAi~y#G|tupKQ)4jPhVQ)0~lro_BbvC56f)%=5x?bikf=87VubSHA4F#Mhs&coIjK^ z!1Ghs-Edya{)@Ez$6fRv%NgbgrEVA8e=OluDyQR)Ye?a4&YmNG+MEmg=#jBb`Jx&j zAihuUs>m{aUEs|+eV?q*3dD^Gu#z`p*pb{5(i8y&F0&0>zXRYVktdHpFe+`C-i35* z^=6fnuMVBJJ95B5pULDR{a*{>&)E`0gaWSQCmh-T`h7v9^4~$#$Pd~#85nRdu7E1* zTjjX<=uYl?I0s+AewdE~uA64o99llT!+P2Z^6v-e^eNc-3*ay<>;a8tV4MAW+!KJC z$4)|&S$>ng2(`Dgh#hHtKn0M!UId$p0-6MJ_SmiA-}@fuu4P$dS(E)V{6DunxXD4< z!hW)O@!x?r1Z8MYY*|TEOGxV*hhp{=f66at2Xby3*d34y;YR?FfNp_wsK+}GG@Ntb z#=e`Ee4t2{6WsvFJrW!i^>?5xb5rU@MeMile=Ju3S6INW+58D`ILJ6UYwbWjnFu$0 z1@P>l`YAC}G4_8|3IF{@r+5LTGNG;gZ;=JT9h#@|2;5cD#-L{r01LtbT*PB#6u{u2 z6rUZ_1E`YldFJGnaX4Jcl05h71@Ys}>o2?SK^vmmcn=}xr8Y4}sn4mitjJ~{@L=hr zWFu??1nWpk5}ECP-8i<#;@6AFZ6;5~V)_5x7d`;-ZnRvn`zuWaUU(Q;5V$nS_4Ql) z-%qJ3@D?LMhpXk73_orXKQ;pw-!c@uvyQ@S3+2ok$ok(e`yh$*P+@q}gAG`Nw<&hu zng2K`hh{0uztPRfc$j4TD{G zS>?s_FQE6tjetGPXF3}8Pj}}(cEO)NPO*bZR&djT{$C4$1p^Lz)~TyZ?+R2>8pG=~ zv1|4nE|j|fOJ4yS7bTeeu^A9fKmlr6FoC}_2MXr`NLz4v9?nGla~43f6bi*{-kT#@ z?xJEmp->xR{dse&gdcAw6$LN9fd7Mi#_Iq{f4a&I6i)+>;Yy6+NhWIf`ER9SyO6BH`%?<4 zeV5|O@V`H?zbb_vPlA*ODu_55BmZ4IbWf26=IKaEIJmBZ$bn^1!^W}>Z^g9}KwZhE zB!xPwBPvPP(2O!CSqBN&!R`2N2rVvy(GJc>ZaiMnU+CdxQwpUSM|c&Ia>xauo&Be; z`yXgr4M6V$knNT++S#VKyA)o-yA5n$0RJ4)wypfs+MZKa`Tw1K4Ime`92N7IgZ<}3 zdJKnZ>xE#;kJRPm!N-2bZ*sX`A&z<4oqOZ>*OfgP6fr;3*0qGu7-p%g&62TjJWe zrm6?xyer?bOu;1F34I$_y0`9Q0AasB#os%Ba$O>(k@+Xc0{SUluqH1{@&_6jZj7vl z#L?w1wwVK3YDEprA>uY9lyRWRqii?5TAA0fDG;()+xEg91a&Iz9)2G`4HrwB-#W`> zApG73B+FL_VW46t?s|O&4n-jlyr{4t(+F70I{;xFKajv#_?(L=`&4dn7Ti99Bqzhv z`6oDL&c?_~8d-fN;zYFK-enk$sy=hUl}qSG1EivpW`JARPEl>F<~1s2 zu&_VBC;dJ}9xuQK`qQQ|bTL1m|7n*m-ExQfncXm+WPRCAWee-fJX3vbdK z@Qx0;WVq(uLC@L>#;7hv{&@%gN2(a)J7A@B!K(yG2}#!VL@`Ctiw?-GBK&xF(P{6X zH(F`utxL}>1}&D@4RN)=zu$EmtX6MNN?nW*aA=r=LMa~{*S{hOqp)|_Jz^d}l1Q=J zHH9l?6h{QkNP*_;mvrKD>I@_3sLqRG=C88e4mqGW+lt3wH39YK=u4azd+4ScASjTR znb|E*{F_R0035SC><5t`F_VP@wG03QU<2A)jk!RPz5hHoZ{Q$nB+%klv0hcI9|EW+`6~Ozo&?uCh$=N8zp&FpOAy(G$%xdt?`=<5R|hJFp#Py9I^>{UM6RyZ zH1MXxx4Z-G8uR&^G$C-M`h%EBb?g2|Q0*8_`jj@bu7}~r37kpo2%)7GPP=#kQIDFQy1-9cs3kxJm* z*J}U%=)uBhCUAv4GD1AEsu4H}*`~^?J-EaemXMr@x8FW;)*g0^AQK9JH0shq%1fjzGxchQ;{vAXHFhu+)$i{f)S31>+*TwF%X{IwgXA z*;EK^Nbv@Z)?&?QUtmj_J1-i&RDmUo3A;tbFlL)NbqDEh(k|m&!K3C)I{$L1U?7GX zrRUl;E?UqiY9j_S@Jo`5$+Se#7@azR^}o9Udb$r;p=I(wAEdJcFJ>;+lQno-DFfB2p^~Mk&`G7xEEe;%upqDDQtv5S;jFi z1$#?WEU*ELEVLQ=$_AApip*RNDj;XXIr<&wu5jX+yXp3oe zE9-+Q@MT%*93=&mQooyz9^QOh+^>%8D+b=uUGxkT4#*LGzY{B}jo5REW^DX^zXhJ7 zkqwPu{#jdM`N#(64k!ixWGb457J+g`UtX7Sl$o2kk$9WQS$GCQb@<2DvEq9E$P2oV-A>CSLg~;2NzBhw}`D|+qe>(a9jZU$op?o)71$m?w zkI>bI$l3FdI`Hyt!j(l`t^FmBevzxeuAh!7v?F#Psv7=O%cR}4byW1t|m#$3X>i+wR zc7P6<;BVuG>dIvj@9Di#VYbPCsyJ8VWXn=%@?HoOHQp-{=y$5UcCj~6P)f()$z&G_ z+^cRh(bm-CHn8E%7Imjwo`}(mOjPRwQF~km4Ke}%X3wyCL&8fDE@c$i32-x179~Yi z$$7=sF-OFphXLdgk)_#JqzRGSLH&wrjU7nd&^e+_ckgt-tC@*ndA&D0{gU3=gB=of zksZE*gnEW1x6_4n1uv$=-nSS6u35?SSx#ixlqAkjl^kdtg2SOy)yqG}oEvVcMR{3; zyrEQ8M9#}k{r2mQg=loUrvORub4Ad{CFAV@8v*6WEG4XU?KS{4qTdGNMui9L?JWeO zrU_o#XLaNBVH=mBZ_qO{f|5g{O2-t_I)~nE@vJ?S;LCVj3Ww?=I9w+_kz=Am5qm0b z4S)GUo#WIab3a0gNY8sIme#$|JyOR-MRl@s#IBuuUZ)o$##Hn0GV!Yv%d0`s@GWgow0VoTyPT<*2@0 z9(BK{f>@QEH)1yR{#ir}8fVLg+NyFpsqUCpmx2s~7C<7wIe=g=mrV=se`N%~lQBhm zf`H{a@E(<40}dqJ50^r@js2ANbfWfHz7+Z7${@*D>YSb=Q8*C!hvU55`>1ArDqZ=T zN27J)1j5Q?M&e?e)oN0=O!E*~ zv{9WNP!VK>(Z+mJ8wuE;+!lR=c>4yn9IZR4&78eHC&jPcLKLdS1fyWm<|N|yPg?Ok zRMqC33>nQ9&?vgplJ*r%H!C4F+26SITk-Nir3&&D+#?R;<5zapwGs{p;Viy>OJ0j6 z7L}^~q^Vxs96kUNw5^Lzjr77e$X^3T2Wh|a+PQBfZ zf1(G3!^9tFyR#+G-?pYB1AvOm8r=;NpE%_P8Dgk~ICliD6Nz}bdhq2>Gr8f^y3vnc z2;aQghJM|~Z^R?C^RZy$WQl-_sl-mT%Ro&bS38QHj`U^1y;t=DNSB^>yiJegO2!y> z)-k74x>8jvm~`i{DCz%|qPdrl`waG5@RhWXif!3al4@t+Nmb96UWFHBP7qZwb~HGn zF0)-r{t{%Eg0$l`vF{u<+W{t}>ie0lmj<~kA6+BUQ2KmlAZ9Z9B{NP1wULCfHmRQ7 zur_E{NA7(1taoF^l6V}nBMRikr$eOK`&SPsT$@LETP$gp$r2>tnYnAESUJl-NvEWG zuaTp;nQr^)f=?{<5SXRC)g0!s&H(+~^9&$KLOs29`&(D=D-lY@tp8oR3mZa2YK}&@ z7jH`91#H!5qie=Hu}}Sb3C(Q{64(@M_T>soTc#xxT4Y>8FpWTuOUg?1d$QbMuO4!d ztw5wr%>~_;4P(vDPTo#RWryL=9`;> zjHS{n&84*PzJx8+9Tq4dm;?sO<=;8eYyPJn;#|9A(7de-j$K+w}9p@T*X~%YKv-2 z(6Mm~xyT%XB6%m=p=Bm0JeA^1LiXBYzGfDKZZt@Ug5_t!>;OV4JhPWfN>$KyOG5L$ zL~XC9Hsj1i?+eOL>LJTM$$8uDAkW8fNI@rA9PsuW{jM-6GrachnM6VYT&A}4R&sli zA`Ia-`V&_3Rx?hVNdt`&r55#jtBDRN)Y=(i0u8Jcj=9J&q-S;(DkTb#2dnX zJoyw~gP16ZOZjuMayj1DI{6Tb$GVsOu1GtBJ>)zKjRL|H^O!AW&vUq&@zDhFR ze-?*IM|IkPZ#m-vb(=dWhs8uc-IE*g!J1)3qeE4a>+&WII4VicjXZS-WD|09&(K~Vdqt8Dp`lC_X^<>U zQIFcylzHom-}N4gmY(!RB$D4uu{+p29Kv(Ir{kKiT%OWM2$0{fL$lzKZdl#qis1K> zVctZCW3AxH51Vb+2RmGYnEbPFA{e7PI}@Cn&nO~w&Qf;sQIsi#QRi5E#Ag(hqN!%Y zCJ0BRsi`)xeq0tN;gtu?v7D#Qk-p!zj#|v+dw9~rGpS5i)>IBxLER)~krZfS7xp4& zC?2NoCIz5F{B}1jWD2g#LxU1LE6w!yie%ei7_lpPK8%^CZ{V1J9&({+CE(gn)+dWW z3l&Mv+nP)d7#L1gZ+$P)8y*&8Vl=6>h=YTZDtLqq@eL*Wx^9+5J{+#KBfha>{CFGx z0R{dYorK?;3{slbWybhHU(vbco*+xA^|x($`D%``NXM8zoJt!7woR%}2W(cyDYQiQ z0v11d%fwXDnF$@ku_{n$4CLHW(47Y1yN>+IwD^qGMq1+x7432s3u~WBDWm;?^>jv- znR6$3n5`f}KL-iBRB}2e##$~KBxNmE+iyeOK-Sst3#-9Ok+kSk zAn^^mz}MAxl29h?#H?^3c|pn9KTQ+c#Z#0#)bz|>Tdu7|pUIK%7At6;Gl}u(D8XIK zXcgIbmZ*@qQ1EVUR1TZJi`w_=p*N^|Y&4#WbAKwVX$gQHxg}n=|NUUfgK~I*Ir&tN z0#0}+b0LfV9{Y{2$<;1sWN>5_zOTH*i|>U zgQ|Cm^0DFP9BFODs8gT)5(JW5w~}bsr>y$B%cTBe1Db6!}uHoqh;dU>k>t^ zUdS-rva8FIa=THN9LY=;`U{dEgNPzJWki!#`0(=)MlpDJ{sV49^CYe2+;dVWy3m4c zM=rUR)ZGIm*$!FZiB_B0x@FqJ;sN%0ZzTyVgf4%jeiFA+tQn@tPWfsAP5GQnQ#oL< z+cRebwn1Fq0?qPeTx0DSoY1?~B<)4Gj2x$#?KAJkb#+E)YXXqKnhpk6ENBn3fet5j zHTP!yzg}Q>0!advS-aK4xJJu=4BUTlh0dTTTv_Zzd-B6}9m7xixQJy1Xtpj})P+Xxf| zCCyvU)RuNUOOoQoU}!JM3gwk@9Q{MrAfR8nXv${ zUDY-{(miuNiL-JiMks9b2eaUV{un=*B>Ed!{tfO5Qr~nA$N76XEL;n6c6zuus9Lwc zvLM=O6>))hAB!);%uwN#`)Up_2&T;60O{6s)+tVnK>m#d)i$%!JBU_MS=f53&u~ty zAE_?n3l+6TbU1#!>k)zB+_83+;Sb;(^bZ{vvwO7_L^vEs2=b?c*e8(FF@a>=NoFnl zUoRJw6NFEozYgr!-0-Q1-mW8{3L*0FeHWe%ez%F~3}hhBa$}iB=B_)oxQx_Ba!>w_ zbU71+60=d`B0gQ~Wv?O54QXjqqFTYm5z?I?8V?J~K%($ODk-Co<>G(_^_WZ6=Nrdg zi}(jR9kxlF(Z&x%y~HL5m|tu<-c%ShbXaVCutT$U(6}ivQ(jHTl1S`sc{#5l*#^Xj zbO{`}#PDmtBm&8%ZOl=w$a$dA)f>G?2S!ZN8OFt?s(5Bhd!fst^3&YLp;mGcCTYPF z9BaEpiU>ySwH>Sjdpm>Cuj~!3v*tJ8QNaWGt>K57qtZ(`zP=IQ8E--_p3gDK>5Hgx)9f7JL8{ayO5iUH+M!)5_dUSgwssK%7c6z9_7 zsP8y$YWUfjQWNk)XqXQ&{!o1<0GD`?*JAna=H}1xVL^dm5$*Rd=V4MKTXjFUSl~DY z)`!(wb$DBH8OBa>uW%GxwzJcZ2;p!@L)nhb%(oGh~$da8BXGc~*>i@U8r zzR81a9mSE6NO)p&5L4RDigTFP$1Yw+>2(Qm;h{ZIbW{F0dPZti+fiBLpxHiBN*C*% zxRWxn_$gio{3xmxWBbKPkQW_T2g)!;=FqJ+9vKJItKwZ04$-o48-zL&t0R@DiAHm1 zW+yd!H5)xO2-*>)WREO(p`_+Y@ZMwDp4;Wbrav2Z=}x3aZ-T372*)>e(Jf8G-PVi2 z)`;1l-DT4ar)ZHWkz=iDL5=6^cJw%O4fgjL6EMyaBhyrCM=i~PkKB#(DiBe8vkcQe zXgdRZ|CmxoM9@eiC#zE3)ppW_C3a7bRGb#RWk0@oK;u5~77QfP?0G7Zipg7SHhL&I z6|JEvGU1oHzK*uEigHm)%V1Emozw4=>#K*J^9c0mSajCc=Xky1121cssDF$s@Z^BV zKY8-W1Bm)5V-b>}*NxG9P@p>*dF8g@b3Q} zHd_P(sNG!Q?ZyUPpF<5Zf6*TzCd%e+god-%`5yohxEvwuo^#_qd@)loYG*({Y;>!(C}G z*y7;MmO+yrg6*Q9%%h$F+x3zQt5Ua#HrM83S>0r*G}T*^7JddH0^cFWJGYj$eIRVc zA3V2DJYw@TFD|d4YveYZ;Fy(zOuZ;J-bN8ll0kaKRy$B~TcR6OOFwSc8xQ-k^La0znfh2I!O|u`=FMxNJp8wSF3lN5%6?=oJU=oVvcB+bk zoJX8%z~utpPzfRwmb)#0@4%wO5q=ldfWnQz<`zAw)?_v5r<{%fbZdEqa!#N zMQ5!jTT|sAh}gNJRKW1lycNM>%3Kp-)6W_6qDF_Xc{%PN%e|GR;11YEbLy;}nnzTy=`}tU0nHRh1 zBf)Ju`^l$W+n8v^S!c6C?sJE*A;RC>=lXaaM=ViVKQXcwUvoZ4+QkTriEmB@g{tNv zGqioA_yNYAS(KW&;D}L9Yh_{TtPc8w??CKnFfu}>@qTbF?{7wI3>S0=p`^|Bg;#(H z^U*jD3uoP${l(NsQiK^kX3c=df!<9s3M+F~!TS1VP>FCwy#YZT{=JvWhO6^f;|PY8u8u!L?J(qJRe^Uf$<34rH45q}B?-<)-lZRT5dV`fV)nK(51S3~kViw(H{bK`j zn`m6fz70p3bjr(y;wy%2kth)wdrPgf1(_`HAKKChVh+8Yr80W;X*W``=l|s$Q70Wccj z&_u9t136lg!4I{i7Q?WJC)2Qg?Ije>Qaoz$9SwEHj_Y)uNM6;?t1H~%*fZaM~;ts23 zX%=&xxYp3rY4>+`_!^##3{24gI-!^cy=9TiBZOlPPJ@ce5Qx))cNt?H)N`Ab*o^z# z#idS!x7Rz*b5pUXwIqa2SYZq30dMnG8y#) z8TZa}6p)|MfL3=I5o_=@Km(j!D2f|->vKB07CeT1b}lphhq>rFF{+}N^&BvojoF@{ zZl_|b`aLe1st0Ag|4=%$LBq|%;6>DeT+LCb_K~@+<7hg|+jI!zQA-vS>o0rAvHq1~ zKV|%Y*WB81hV}CLfM3@!%o3;*fRYEpC{>!4qyKwK=zt5fR&E4h1iqDlB~J7*48jVq z=<8i5PEz`h-z6_G%Ow){&?a_AvysH{kNvRE=n?IM~dZ%@cEBa<?{khigdc3iVZo-R5p(((72P;~kLX#GC=q3nCqg5I zWgZ=KEDbimg_+=E0Eg8ukkMhj?Sq%g#v?+r0;CmT1R9OQ;owZjjW;9CLy@n{gL-*w_^qF4I8rBQ;3jB2AZ;333`iGOCR zXC+jia39QFSVbwf-R?Ohe3$QYKQOUuhK9@{3O#oaq6&Mf|M4BJXv;TgPgfb?FIL$j z&IA*j^Li`K4o4A~2_2SXvoF{C=Q*ovfmbu36~U`hs6q^AR_}!jkzym3m?w+bBOI?f zSAo-78uNUG4#U+W)r&nGrs^y0qJ@9o+c>fJ+MNgyWWI}1rq7U8(`SvJFgMvu>`*xQ z+q93~@zF?VM-oddhPb6@unB@{{#QKIN9w$+5W5bbZK@u}VAADaylP-W?Gv-RsQPHE zul&Ojr1A-SH_;a23Ca+>T>#qu^RwGpfYTG$%P`7;NnYNgYXQ@ zBeSB<$`CSjRKy@`?ctM2Qq9jsbl3(}$-(TdCcL81g&~{F@GmygMUl0`VOdcr!l)n< zyw(glTLDh*egRc}b&Rg5_eU)X%2#?Pd$ZDMS&K7UkSm9P>nrPw$7BV zelv(Y0*zFo#oY?w9&j5m1snXYuQbL`nw~jU)B-(r|lui zak{m!n0Z>89PAXjVD=lH^yG^s@yNN$P>I-O^sd3S2#a-`FPb)!KD<+yM zE&*{Yq4Db|#SVp+n2<4_DWVLGonq$9u{)QImpLqAMLsGi>9}bt&E}U>t0SanrWd`6 zR9DbjFWy2&z0V^3G5Q%!q(AmiMAAu{ixn#S2wCA zMLSuHa59P>$Jd!(>Y0MsIa>pR{<{QIBxQPQrp;e5#!7}@o~_>p+3#rIVNBkF88;*oLs#ItGAPH? zzP2vy-uZH`+=oxQT4J<9 z{Gmn>a%vEw0n`g6h!jMs_dPHJ?;40h=^EbHcP4Wgeh_Q1dPv-5_4fyGWnv2tHV zF3kEP;GVRzDgY>K!HsJlMI1Yu(}XchB1KJry@p67C3~#4d<`;MWyOJI$>j<%?-Xyx zP?SotwJw$*ZEc8JgY;^!LXk|AX}&hyoo-J}aP-c;agoY1sJKamN&b2+in75@$Y}45 zZ`~W68Zkfvp}_vIC$_h!yhbnmEq4=1-}iy;`BZ-;+9B&;$_>Rc`>jDVd+kr%(u>60 z6_cq*=LyGX`2vR&L8SPnfp4&1x|LJ)J*~#x?wtN9dw@6&_S>&W5e3&ivA8mHM}>*6 z&6{=tIBk0Bvx;Ko9q`7~WTl6I3&`mGUOPt0UysD^xj+`p#0EItt68XDpL7k7y@uv@ zDoz`L| z-F}rC6t`JJu3eIE8#vUT6S$YG$gy53;ohcsLO~}x>E7xl+O>35QdoY&GBNa~vcjvQ zI|2dW0^KxXcU~!juN$`Qz(iHL1qiSaCGLW^*i+i_IkJ%pNOG6swOsTM6i?mn!GeZH zBk0NvfQ~**m%~yxrImdx%jZv(YxT9r+$&EFxWFnvCkg-Z^UCDE`jnvBOej8}#vc0N zm?d((*inf@$7gD^`>MT2Tty&qbcLO{AZ?1Rt0y>O^B!oY*F)L>vpZl)^@=(frm`x= z^-CXvO!pD-wLTrQ8M5Pf?Gh3Gk{GRdUR+#gEWJ7S1mY{!NQEi0;U{&c(ya*9IHnQd z*u~-BHfx4GR7?Y*0q9@@6UgzLF?|FNCp7UEv5) zu|FK4Z++v;`NZerzaz>~UaG!s_&NfkTs^1ATMIN7ICEv?6zv>wJ4@ftQ&vJQJ1tLB zor~GPJuDN#39BDPQegu4?7j}XbaRfV=SJ0u#D$(U*G}3|T0cT6{(|u)*uWxnus66ul)SlwX?>ed`fS-P~Ylbe13Xh@vft;2R4BBXGa+J9eS- z`X>I!QM!#GUgc=pXG8U0SJMR~6)vWu;aJi|jLX`{Q=Z=yzHhv_ZW?4t=yd!+x^Cfv)F4AF|ypOY=s18%{2p)93y^X9HJ8zp{tqO>mD`& zvP}9{v(g&?_6mhF;LOz<0yPb`p9hh9y)K@;IY=DN-^Z5)YemblJ|T6ELgdZ)94^b@ zgz~(O_{%-W&a{r-_gnY?N!SsXDbw#QlNb@sV=B>Zj9qo%WHK>(^rEYg*S?PR<-{WU z5Sf_A4J~J?DjMPLs!mde*Q~p{vXHhp!_wbJ;xBVqpeedQLLYZ9c(z#}?Q@X?B^-cd zf3gB0unOrtswh$UKP1ugN^G@QN%%B0ADxm!Nx!tOUQyu~2xExKicE=i8;o%U*^-Ny zK@R2?Zn!>SjlvpUQR>_pc!uEcfFd(l=ASj3vVi*$j z2?aOmv@Y@je@VN=O~)FT&+Z6t!H{s%SA{n$<^uUmtV@IBK3BbD)A;QS8<9JhcEDO3S}T9D%q57v&0J9)lk-!Sp0jpz4HOo3 z-B>0#dBl2zqDFQ;GUhPCS%ZyET5o!1DG7Y^Skp& zVNgJMQ3E8DtX;=*!T5#TmYziGtIhdT53SCpTCs~7PGH7!Y@@}7#reAUx|jIdw&dM@ z7ebGp5l0!fm*Q1WMy3KXaQhKzF(`4#^t`VL-7zwsw0uj;SvgMN_@)U&(e%nx(<8u{ zr5m1UxT8sUfBWWz5mcKmvJ*Oo0y=~eV(k0OZT)_H~roRL|<=)K3J}ZhzXe)ScsCk39}>BW3CrvlJIGh zVjMJ)od}^5GgE{h2YovZc>K)+Z!8R%9k=77r^$=WPQJU{`y8dBrp#ANaz*H^28>f& zu>kAk))!*Jx*Iq}6ASfkd_%WCisGB)hq}k)mY%jX}D!v5gtn^tbjtRt!BH zF^DO)?=WP|^`&|}UtG(`pr(q&F&0r4t&;r?rKX${luL8Qidj7zm&D`brm*Me=|$p? z$-)Umb->qGE3&^EFK8=WHTN%fyNOU*qC{cnhkS6MgZTZ5kA>h1Q_43`Mbl(YOdk6q zVrrWW5N{K*te~_*>;lyYLV7>oqI>wisMF~~iWT#Xfo1Rob5n{qQY6jnW^*$>>`@e^ z7M6s-32`XL^b?Rh@6&d&iyaShMG&8exp?w|AR#jq|Fb9ZbqNC_y7(lO5En0x{y5BNX1ELVlfr$9%`*_%fL-fK{}_J#U{um=6%7OKMfz$GrqOs+;Oh;MhGBe%75Y z*uU#UiQ0i_4HT)MG@*MXR54V%f@<&-0vBUlu$p^pgRu6so3Xh?JcbZ2A327|AbV@e$*;Re5~W5vgH=42z7U7Gm> zXJTG#Oc$R*`bKx+z0YqH5Gw8sMQL{9pxX1zoa~+t%MDgqUZT;@D3L8*H$7m@e{?k{ zoT~KZ7Zsi0J4EW-+7c#C^>zh)QL zyT~4hwR84B{+gg&caDBpLiLfl9xceb2>oJ7L!s0gD{u19Fpy&?IoXoAGhV!TTxF*u zoYz3`-oR9eH8N*xF_CL=#S>(IH)2w)bAO>SQw)k+z>E7_Xu_E8 z2n~p|>Y0kmn<*2uU&K3&LUR@pzBiDiMKjWKVaO5Xh@Ci{9j|B6uhWWZ8-9-~hoxoo zgs$d2f_KKjNY*9H4=oz32%2JlN|P6IP@jM(Uf**leDKbp{*kLr=m9%Iv!bM8rhlu-I%h0k1bRF*3D7&T} zSKDqYJSjQ`EK4y0;e*;Y>-38r>5Z3Q2|55(@h27&{olrKfh=e-PJhHDTW&01-8c}PA`bTE#CV+&d;r?il=6fyih-*->N9+@6_1vYy|_NS z#;jK`WU z9e#k2Ws8*h*%W%`qiga~ahlFc`%ehuk=FRv*frvgIT1TrrOHmVX(l=SJ<0@j!nM_0$m=5+$uU3M^kG6D<;_-F4Bpp`{K%530p7V?y z49tx9-Oo+YXZHo(0i9S+pw_L3Z}UyaB%)x-!^kx0TGWZ#XS7&DjOW)ZX1i3)Jg(=~ z?P)cI8W;yo8V(q=n+BQ)2eE>hY`A6vx>Xqc#xIfYrbZkkI@kbZHvQD283 zC6VG?mT)fv=~^IJ**^K{Bp=5|o(e}xqFda}4zk6wK6vVzQmmKsd?-uCSBhk3+Rw%H zR@l1a*c0EeNg^RD67`&_nLUtEIZ-3U>0!4Lx)M-tXnz(6?WHFwq=|Erz4+}m%P^^{ zINRtaPj%F4_Is2*AXA@Jxz1Q%($WA2N0^Z8DLPepISn!JD2bvTtvDDs6)r5&5+#HR z@#fXFak1i0T|7*sKt_WwIu_O;W|Y?SJJWenjut68KP}1{PU0~j6ePY`AYvua)sr$y z2%L|i?qDX85F=)Mt|5q0oX}wP-%&au`6~K*OULE$8JqV969qFC2J+D|Ecp~80}O1j{V&&4}4XlL@-uJ z6h0#sl0LMx$DTxYU*^z@%I>7G2D^S38Ks?^*e<%!*rAd_%MDF0k5Co8XR~_EQN5e8 z>OnuQH};{I3e>$k*EHXpWNsUKcQhaq(54uHShm_@ZvHpf)RgFnI0FH?ZY+MAQ$`p) zCW~^YS#&O{C5BAxz40^2*W#6Z6_MP?Y;=tiGQBBkVytwsth=bZjbKoD{Vt8<%m5i1 z` z9kOJcx!*Nm*p>x9NuiG&u?inb^C}a4y3A)vld8G@ULKv_uH0U!h(1Ms%WSM!3qdS{ zqAL|$g=24vxfHdYm2$H&Ni*nqzJ2XC5W>tv8Q7+*=986P0bYvME%^(0p0GEEqgyCa zxQW@0QvTBWowUA#Ck6d5lW9@nUU3n#Q@t1ld1SLzUwuPy7*)7SJkG$-t9^!TQPHKr z!|Y579MU@5p@D_0(L#k8oF8xptJ3mg2S3Z-ZC^j6eG-0F43kb(!A<3bqAniIw5;>YTmH5`l_|#Uq^%AexJ7pUxNVV?pDtAZv5|xjw^u3{04u& z$-gw1|I{j00DqN3Et*v|!ylS6;8z1fw50xQ;h4?+d;RgsqTFl7k*4So^`uIc=U?Xd zLL;j02!D^y?CPhG81FZ9%-ZU!7>A7i_*g7?IXP=B89kz%C)~!-9m;ek{4n^-?1Mv$ znZh)Z9M$CeujAeu*bCW7H9q)E z*T1M2hH6)pQ&p|llZkS#!1j?)E8+j;zPdm9VUD&mb?0@y2yFVr0eexW6NAgK({Y6k zVmi@Ev3gH-is+%}KE9kq*~E_W?fY8Z94K)yP6@lx;4C?#uexgp>Pr{ZqtkYJ6=%vW z4D-6eu~ETiQ=PlSLw$4Q?H^&_ckO0B4mHiW&+UXq!)N@M6PaR(F1HBO-fTH2qv;%? z`WE|ElV3UDHKMJ`o=h$H=PdoWA&DqhQ7bp*vRcx)tVQn3hc# z3&Q8?nBU*B#bFu9j7q;~trvFG-{NVtE!gZ+2ID?+=u%`f%nVDSKRK>Rm}c2_nzy?c zdiSaraUXT7syREodwquVYQT|VaX%oAZ=dFf6PlXoW5D(~_s4_@`<+s}^Pf406a`hz zTS9Xv`${iTkHtGYvz(Mu_e8}FD}r1UbeJ;9v#wO%9Q(|-A=P^FYNVwyeW=2V@BC@+ z*fwN6jN;k?bGa@yshTQj=0BCfx)lg6uyr(VY7JzRQy7&MF! zgrcP&QW}Pq14at4FsE=`QSB$drCQ@942#$+!R6vDzJ8RPFHpq3f-qs@mE&P*GY52~oPcQyS^+Zs`VTHjPM1!=^#H zq&v2>N_Tg6ci*+Y@0`zb?!CV;_Hb-m`;WEOob%1+eV#Az#(T`aHqP`Z@NZFlFG>tb z0~hB=!o8p3C#^fszs%j!V#c=I-d$*fF79LSjFgW&wq&Wy>KNcS@6B-QE|7a#TY6toAZ1kyOpX?F`?{HmUlvQFEdr8j^lA=`eR^ft3GT_t z@f@7?u1+{!#4tuZ@CIKmMnZm~BepKmPEO^3)x++xp9Yg?x44SM?Qe$&HX49(Z2RX% zGyKc>0EYLL@~@whR9It#m^522Ug^3Z1`7T4vB7yB#4UUBW+*I|1((rHpiJ!XROZ-s zKW15}mIab717`n>`dR8X{-b>>{av}`?EO=}cRmBki}YH5t(AG0h|-YSiR1+4@Rp8D z+!>Fn<|T+E;adW=RLX@j{Z%*9F-0*MN?Nw&IwOJ&?FNsc0uigpn+k`xTTe5dt)Q70 z#6TS_77E`H=3f<>dxjD4=)s=BmY?s8vPV^4nGO8JBEY4BtYHrK_j3Ov&Z%&jQ~tQ7 zf;Di}vc;d1rBep)!_IANo}m&+MhKImo$=ha!2CQuBCxGWNkokwfaH%iI$o#9F39D> zF%Hq>6$c@r=!S9kOpFd6JAcp;iJk()D#ZM9LuplfSDQd-s$d@(M%?{LMDwHa>{qpTy+^F| z6eGryC0NQ#loR^h?iR*KB1|;gi_Rs#eDJ~1&WM4}p6es5=Z#3@m+LNNg0fB>Y!&s{ zJ0Ktu5MJznvs}&&uj$T0O+K$rVxv(&eV$5c==-_WQq7RV_?+CRpIQeF-NKWmoBVrp z-k^|VWz~ZVE_+hef~5-B_GpL`#4YHle1t8|{lQBE zs_$l3-_YKF-;(|i&kPFY$;JDO_KHaLjbGstiicFP+NLjpkBb!(>jdGT!)eU&OVPd$ z;%R6{)*InsEUzS1X1&8K0`vxYG-{j5Q`3Bz|3gY-cm_N*wyyC74$Nus~Uq0u6 zi2}Ts<=yve3YY(7lH^@U$HVPiru{D&z2cWd6c$^WH)d})(6~6<&pN$!=|R?L5qSW% zq79`*wgjKexjTVnCNYdYq`UCgCI~nVZJQX=az}NI6!|rOS?2dS=!L%Jb>n|?0Vq{$ z)RwNu_&(epl{`wnrPA|RcAd4JERHQO9)Mc-%dawqyc`Lb^6%T-he_$ZTD2Q>O;m0k z$L7wig2AZeGw07eUZYy$Xw{5~tSQ|hDYyr$d{&}-Xdnyy^ts}v@{_?rXj7eQGM)gB z>rMXq!ueC4!bI!xECi1F<&9Hg>m#7M$j6#9Rfn1M?wqXrLm8U*M+a*d9nCr=Bu*MD z{#6xE8j74{v#}g;?jV~&%A9^1J4XM5^JqIe3KebO3E#y(<1z)sPLGG1oU(1ZW3<`^<@~rfgB!1>4(HvtHE^DjpaaGY4))%B_`YD~t&)zzWg02) zJQ`$xv(;!`Yh3(um(!%r$G%zB9*(?8f2=Ry2I!Pw^Q|pa9OU&+C)L@dF0sqqyDKP} z079YQ)buycOR^1J zNK#zMpA~Q`c+QUHC-)%z$GyMrd@bp4$2QL(^F@RhR+t#pRrdLq-yE+Qze)*kQ|X_D z$mi161U6}bOMiU~=@2!EN?HV=To6FIYhH@4U)*u&N|A9lzomUs&PDg3i-0FI@{(~D zm<#@57VODzo%>t_X1Z4j$Yqa)^T+bVphIQ{sC50T^$Sxin;ZmV4GbExHP38dsBjs~ zbyLdPPXH~$Ug?U(0tylwYzoCQVD9^TM_-0q+sz@xfO|3_e)-Kk(bEZ0xDCiz|2jV= zB7x@aRH9it^$m&7k>?U`Z@<|e5Ar`(0{zlD>0 zkHPo8V6n!#9kS;!|ZE-Fhfc;`AHNAq*wt%;tpssczb$*@FoPSTtvc`FvPIm>_ zlubvK$Y&&6zh*4`*%-kzLND|9y;IodevRl%2zz3t42o?s z!i7S&p`wi3Lmu*|wRGT?2s50PWw^}K_yUJTDEGq5>#s~MMKYnmvYeZJC7W-S@-{K- zGEcsmBYO91B*E&0q&?(wL3S`8VE;av1UC;g9U}ufFyzk-|NGUa$`HpMY@W(m{__WW zl*j&PUWU{;lP9&R2QFn!1SdY3=ebla?~OdWxqPlWiG1?t^elUl8w!5_w7HC*9ho;! zWmY$aZULg0Mzq{FZcUgSlsdR|6muNi@`L55LuYQ2d)e zKj3A9p zCTIWPr%0zXfOw}~yu1}qo@(v_*lm`0?t#&bmW2bms|5hXF$XNaVvlZ`;Au?MF%{Sy zIF1VKdS~=3|2X#ldd_JWBw%yF*h?2<{bNBG{T(F&hta@AtH#O=2^yTN`1!8t}g7627A2-_Lh_#r*Xb z8t9+S6`tbHtcgrN%%gd4i$EIrJ|qi38xNa+(lLt?n0;?5`RRJjz#bLzKZ4b<2Y?pz z<|TRlezsDtGtouAxj^-ptrmA}xPw0EMh)1nb+Ujr|K}|?=o2~T(lGz|fvfiO zdzGcz$@(U~@LYkL9tH5XpdXtY<;jp`{gs3cX@Rs_EsD6|ZK~~0JGH1DfP5qW*QOSL zgoqpNMe}T*YeH<_CSVJ0zA!qI>@c>T>QrrPHGwSg>bw9Gc9T%*=khph|<%nh($!q>YQYVDkU- zyznF1cZ1(1=nVZl_wy1}^6b4j0bZ8SbIyEv);oC-WYu(hDHDs)#;-^Sx{S zEyl>|xeu($r@mKn-9ws+ri49H&5IYkv7|boP;pZ4@594rp3|LHabfgzY_kxq(0}cx zf9$h^56iN1Im7Yq{%kD32vDUvD}NxSvm=Xuid92}%}b(zU3+N+S8sg;jkH#>tE=_v ztZzeO1s}u{fS>qkaaWs0ey#U*DsIFm5YztABWE}IMduv4;knc#^LL9FjniEy=uL4D2w2J^ zHwOUUfSGySRaIcL2<$r_09dgIm5h4qB<>OBx+)V3bH##mYY(_K@dvJ6= zc;vi!3QKa6jRUcm`~D-kRHV!?p(O1rZHvBqX6fl+sb1KDZU9j=ndo6#qH){@h&=D0 zUH~|yKNQA80meM{n!*ZJC@TlqQ-}m#c0WK+It0*ZwYvAJWQg}H3V3(;AELmRkhw#fPM*ZtB)0MGM7=F^J`r?haE?biOq_>+zYNs>%O z8t>PkcfY^*(TuLW!p7GT`}o%-{0rhSuGi&Kbs|8{Wtm++sX9QqLgMc>Op_kJ=dSp4^1K93C%# z#+E3ddM6bisl+!hanZ5wSyv-T_h4=g1g7%O0CvIqY>e%8=rJ=m4!{}q#+gz5;S#{) z)(8+M_WUDb`Nt^(9#f7S2(K|e<`@2XU;i+AxXv|HdG zEcC7+vG>*rC1z{K(JB)Xcu%7sE*WEr`7(87N96BIi>>E68 z7@(r?95~qJklu!s?2iKsh7USZEt9onE`Uj_rRR07DEtlO5WPE=c6bR8^!oDk){Gxg zn>W$$d@?P2XEU>LCnwVYa2Rv-;xpvTc@|Zq+x?me*Ig&YX&U|#Qp7$!3k{APU)%M4 z6qYn0|01V;AOXyQLBeI&hh{Y(yK3oV?LuE@_7bGxe13}%3O_+}7gcWcm#&!5cy3R3 zi>HKXgO^Wi^pAP^ci2^e36%GEN;Lm*lFQ`%c#9IO!=GymmgpT=bsY5a&CLu_#!XRb z3<9CHT*Qu26iD?Zqj#l7x`J;kdC~LGM0TL217P!otc)L)$=F519U^x*#hNP z8G%(`@|7m$`ZkEGB@6k!TJWw~`qk6v5&_QA_z&kE_Nf=B@0Trs zm)-(SLJ`-GlL$zk znltFde_U=^0Qz0#(@o~V0Z(p$>`KnV8*Doby`1T8Bk3sig)HLIz{s%s@~7K!G6)!7 z<|IL3l^<&MnVwFWa@ZUp6mfB#(BZ;K#@7j@eln)5a|?%@tb_k&wr=(scr{w&D*r94 z{O9fL-@`s$*SGGtECLa)UFP^~-vTt+h-F8rI1s$7jB?S=&Km~YKpj*gqWuC0d-sNg zQj8CQ+SGjVJU`KO8-mYCxWPRTA>9q`ciH%DKyg$$40x#d<4Y8b)$!WW4vCYYefpPG z>5D?E6igmH+a1`-K4o;^AQRpZ<)Q~LegnYsJiZ83`ii0-n4nBF)xHC6Mj+rk{m{8! zWMzy0$b&a{j1AGm#aHLmkC6zwad@e;5hTTjo=Zx7T|f|hDaCpPnMt5g>$y+g5Oq+a zCFU)RQo95gn&l)o`M=a{8xI>Plbf$8X5aEWnUFZ+<~+d)4`XHNuz58mOL*%$@(IHe+-28uePMe-umsvFSvB2%HI!NuXZGM7};$p;kATLki-UMf~;1?jUe znv6JA`d2>z(Zw(q&oFQOjVkpwl=%N8N`_8I_X^({@BbC08|omQS5+aCI6#RU86cDS z6`k;+`CoLp>kzIYQeR5&@hThpp_zl2_Nh^?_Hv^8abF=($x195nYLh}r*N)h7ZMiptfm5kbAFUy{ zjic;S1eAVpfX#8Tb->o{tRk4-#)_u539h=f|D(`R(G2INg9#4FJqu75vEeqM+EyKE zxc}a6W5#{hT!X;33_~cDs=`JAoww=0N?Y{^_e~o6d zKhBQYHZ;{*+acfzFg|o0j!D|(hzmX!Eo@UZN7~khXZ7S`bj@q3f$<1>upE`a*~-0%(3%#GbR{YBDEXxy|31= zmG-Ck3JL|p!9GnI_OU`U!aXGy9H=&{xxy|S$!S=R7mz5>0YX2?`gA4ixm7Gkr$8~{ zbpOsywF)=IVdo>ev2jgbew@`=;cijBCs&$?R=J(DEw<6*4m4*5I2L{6>sMHv4F9tJ zHgEhn^11CNEtUUa^a9)DW&O_RqWH-^!_Ql?i4f7CeiWZ(ptknPMbyNeFu9q~(+G{^ z6Y%go6)3{kjtt7aWCh5~+wtA}+Li;3>mwdNkTmdERrFJfK0q6sMKK(bFK>cKO ze5MTBA|@FJo1-5gP)BwLeOIWEb8$;oBz40Q=NdRtNtrP9p<*C-)Lc^+!Z%_tr+9h| zylUasRnXkdJ6vbpXmTzVGxW8sh_+U@Ylt(IWb+zqE08p^LDO8&Y!~g6DRt&rEqD@D zobP#rJ*`Q#m%$qj`^Q9RwNN#-^}49_!Q~70rd4*nwT(JK)4HWF0koXl%T;AV+hdcN z^CD~Yx^m>`q~d8b@drD7FY=g*g4=x42QGJdoaEF z8}`c@P~n+M?mWHzCAc{EF=pfEDM!L+$K8g7S(~DuP?0oYF>y)+^PLQ?Ac3=zH#^l? z$-awTIKB=JK{I*lk)fqn1|r>j2^GN}5Ft1orGtfZN(&4xA3~mhuvT3{>((2z&;E*HKRvr<23^>n7amyB{CJc61g`!JropBrxSnVVkpi0{vhSu{Z_t)bwh# z-sEQPhuy+aKJN)(JAh|%2rQVoQ}R8)w*N5QEM=ggiCTc)Yin@i0!d{B*Sz3uZ~b8q zQh;3?RbPoK_R#6UhklVOpgJnsqu#8!zQ0$h9W{qy@7{^M*EZnInKTgF>Fral^_YF- zgZ>||zsgZq9dxA&KH$CJVC;O#UgQ?cuY{a?E@O&_S8W$3Rv{UZ~Y_CS0KW({Q6 z-PyOGhf5?XT?%5FHmc7tzL|?~1lyDq$`rLU-plk>_9aXfo;X&o=*O~AO?@1MAN`3C zVKjtl!bD?x=^7oLA2yOLtRA0-Ly&Pl_Qj7x(kDA#diW`yac8`%82e@n|BEFGN>tc8 znSH806g4RfpI^O%gte0XZ)a^}Qix2Nr=m&B6C^vN&?w?u%^-LK$HXS1_PW0%Lv<@b z`R|F%EN#8M?#9|%$94e>{SwcgfNBbN7@8nG7*%2&^AQ5qxT4RZZ4DsCukbgcMk#ev z2PfbEP#~~H@*Fp6>K4536hzFkmX??>ze&2=rp-?UYF*8Aaf2fV)dR4efbxg^;^QwS z&`3CFiun_enw1yv0zX)q0N976`{4}ZIs0Jp6CDWuLd;p4S zK<)wPu29|~ar|+@gcI~jt;`WyxzKDa`<&B69w8-9Dcc5zHFf!pH^HW7E045~3ldhG^v>-0r*-egvrKzX@YAR7SH{iO34ce@HptN0Kmf~^|HaKfb3^`{ z`S+t;V#fy(2N33Rphml~6me-lzj`q|zquRDhmgT66JG1OgJgU+#KQ12aLBjPsWNxQ z&TWwgOXv86($HqSIGa${=h?9`a3G4i6_NARb~JbH?XQETaaN3BMXl97(brSOnG9{{ z3Bg|wIqm_k2qDvn4Y9KKP()#XcIJkHT$#9fvo=yJVHhGl52ZB9nZ0NrBe#-|Tc681 zGeQd(B5bA}3%ODJQku`pN@>EmqV?j^x(;(zu&6el;B8{Teay)ruw^hcEaIjar}_q_ zpnX7H)~rN)M<7K@!55MtRC6&-<)iPzR<=$~x2mo*O2ilYZ5b;cUiaK>8#7Vo`6y2qB{kGqq@W zHjGA3AHVuc6k$(U6!BIAl98;Ci~o27Ks;~k;knJR(;O`w9ifvLtD=G&#OdfByw}X* zWM!;TgWcNTfSje2}Uvjm5Y{Ln2Moas(?x$`EO=^D5yP9@tlKu;7iI4!G1Vfn9 zFSmrXJ}*q7w_j6qO*{P9ERl{oUYTd=%8hZp33?TrTy41ma|w*_%;@d)o`>y+8dYb~ znep1nRvkQ5J9CLuc@KFm<~T9GkPY?%c}SLrD}4Q{f2saF#>Q=uH+2vB-;Ji}2_*VN zbhDjfyuA;jMKDXOeah+ra3!M84=sFD)_O^Lr9%vLUn4dyBnrt$F2A!}PReK1gP+h} zD}bijCFmJKW7aE88l!#C3abEbw{;Dl)4?jP4iec&c>I2xf zh*!J$z_?WFeS!^2N_{|+?1K^A6>3{xzAvo}k%7Q!1Lg0fXEcU>G) z*dau7cI~;&gW;$&VsX=J?Nj8`3U6K)nrqn`9tLEO;|GsOHTLhqbQz@c!11J2f7{$e z_gCZpBrKuoex^iHVgp*=(|m|UfVrnlMqus%<3W~U9n(PXd9xVw+#9Dyi}`h1e5^-9 ze+FqLpFEXJTF?5216?QqulbW-GZe4vO9rbyPH1GpR9Gy^PC4NyC~oh)p+CVgh%7Yi z*f5)`nu^Ol8Go@Iv159$Gi*$)VsB{{6&N|o_n9aBadOQbL-|5=@%KbnOMXEmzBBK` zG-LU?gGW3dcyI|K2P-}T?TDBX|&Mr{iz52H!YDTdOrRIgD)gLNUlTMY&SMu_=}ew%i7pjWP^Go?5GThpD|tjFpMa*)S}mwsg|;#3OmQ5oZjab(Ye zX6G0(KDgW(Yp%R;Z%3;q8_rTfzQGF9(?mYw^uo`la5^Vv8ylT>MlO-~h80tkm$p+D zleVmd{wz7qs0a`u4^jxcpTwTMf;a_9NIAXUD|$9zR@k?CGW&%s0zA1GjPBSZl>9)f zpb^RLX~>@U?PapudzX?>(__Jp1HR2&RTH*%$rL#ta5F4QZOPRaCNKX0qeOVcAAaoB zpzYZo81o`7aw-o$^`n9Sp6j$NStfS?NT-)wp8N*3Scw}_lrEctzxQPksOMJ|X;w*d zdJ5rbu5-=jF-V1c*SVb`dKe+vA)#p}^uVDz*lFlDWh4uhac+DY*7iMtHez7N=aG$T zw)VK6aIt--Q6EUOrks;^%09~Tn|7wzWX}I zuPQz#z4yt#2X&5Nwx~lxdln=kxb;>35 zMqxnjTog}&*yQLluT(Bq*^?k73+=})*J?yA$FdiJ3`ft$szImz9eo74nKPKbn@|aN zo0Y~Tdx0mtt-vR0X|Q}d<{$!o-L7IJ+Q@U_M4uM3?yW+%pj zcVeQvOcI1az-hUn2^V+na6U6s-2s)Vyw}~mSWXu zQOvWtDPoy|#P6IjR2Vq4;m5y>BFQ2a!hJ6K3`=|Vs<(Fh8Hl%DNg5ThmeulV$0}$a zhbB=v|AAL5;%F}IBFFZZ7QELW9}WAs7RuKeLt#JK6QPZFS~$;zn}sK9uXQ?dyPT(n zu}2%F!O=Hg&G|(9fgYS2K3q3@h~0;}dY7@wLkdr)m|PR<#aGmCIOv3%d=p-joBvAR z^|}o#VZ7c|iK*FXP`QbNosh6KHkuv8*2H{YyzYqkz2@hb6MYERfyRQ%TU<8)o3S#I zz3j3wk>;1}%xHOVVZk&~R(!wH)X{lX7CZSOF&S^5ZsD7bjpdv+^F-~`d_dJy zjbz=Z=yuT$0lwPoNm2G11(38Ks&*VaZB?bS<(9rwzITPWVsx`!^3*E4(kfDRpYbzU zh5D7WQ5Ak^{-gH0NEwJ5zk*#!7E~jp-nI7BrCa}_3#oUC;foBAJ?W1-8F2XJZPHKo zX-(S+^J^BxFREOo>L>;)i*z5gHHX4SVZaK7RpW{^bfDz7HXlAt z{{J?RoXLJ-=rRlB^QV}s+X_f{y!cUdOWq2-Xx5XL9-s)eDxf^3Y*{TM93!6y3 zR_UHPfYI`7q&T@`qt|DQGFpcg{@95Jdrrl&@#Ku=v5wt@Eig1W!q}#D?Z&;Pjg9WVW1+Op3bt0^k z_BKMrF2*-Yf)XM7rU@c@1ZoYO+}VvUMNy^w8lQIcWX;78 zF>J3&&khxLMA>d5cQ4lF#!5p`Wmc9+ zQzlmF`O@U6@bP}%A+;_nv?T~9wss8%{+RFh-wv}d-xnoKX1 zcK7`cZ*qTbHKkJ9ExsBv?kn0h38 z@7IwREA5B}MV=BO6mo=~B2JN5w1Kd>=|`Ah@_5(_G9X%=v?p4+=Si;yKpE}KY?iP! z5e57QmKb)@{93aGa`s`s{JTVlN#w3oi%zreo3H*Rdz?G+9`USm0h!Fpn}UEGkiH0! zH(FvN+#~YtH&og+6zcbZn{ojY)j);Qpk%Y_dzpojnk6s+K&@iDU{8{AxQh>w10c@x zo`n5Y`tWK*87G8NPIWEMbz>0P(_*#taTjOaU+S-73*;))P%CA^m_50t%G%Z~&tzt> z{|&=Z1blox#h!bbsS1l@wCn4~MBHXrCKJKMc~1(-?ol3J7c9#h~Oi z(k`3O+?A}rHBFrKkndu;i}-k97> zt`gv)jbRP1nB_@nc?HqRfoO1aI)8QPeZD)*d-;Qd)w2f@i7+RSlM`FS>#Zm3c3ay{ zx;4eQ4f`p8UUh_qw;Drbob0n2CsL)YnJm7@RVCwO1lf{Rc3MV}7ettF^jM{KD~NpJwm zO57Zg+$_nuxkj$`zzD+fFQdsv}83zlDFn^fYSnoxeX6su5 zHOMHj#%xW!@6XJKdqHGIJ7!$iF|PGcVdZ2p<=iMa3MbQxJKL8jkNXyvK9g%03~IFU zNskkKeY~yKN8+OcnsE*bQ(+Kr<$n#rQ^UY2}1{$OThYzF3b`4LkBhPSgK&js!5xKuUSsIYi^SDIg;;+^Y335$h473 z4iVP!#U+gh_?k-T()YOD_*Z)d^C*51!~PZPHlq3!=;i5;eo|>JjC7yjPFVJmdX8^8 zOa3(O*8tCqJCKRX^sdDfl9v({xjNeAD?_=H@=S16C-vUc+Rq2~*Jy*si~}kij55gv z3a5^$Y3v)x=ZAgcBVlw7C8=%7a`)R;GSYi`w4EFAz1ftt=VYxP2SVEyjy_#w-k(#Q z3!;SjzBMSL_}yG$@zH@231ScM2^kH1Ti?)CIkXCWz4LXCVRQmtu@mIMOBxLB;}(C zX}_78)g&^#h6H-Xy`<9cT_+aHV0xlkw_(!O3g55ecgws~+?RbZ zUn|exQhHC|nJ5|_f1cr3PoXSd9+0P_vOA^tyD06We*z)Om--J(y3*yPg&7cQJtVT7 z>YVjeD|K$8`a#_3IhRzmH}8nml@d9oI4)*4CMb;({KW?w!Nk3`Ah8|c2e_?VFCE6p zt`669=g-vn%VYK-EVGSB=oA5rPq7e)Gu|B=dl3XM?R}Fn2zjwcDp9Tug zK?cn?^EC#9M_vP@2}@V~brG;Gne~U?6Ay-MJeqU^Su}#R;4E%dIw2WM&+nBa2q<#T zn0-?Ysea3?#OlDCtgXl*mbmm%$=vNRz8Kw5?B!)pvYDDlaKTa9_{tOZab@fril+O> zUjXmuuJK}T$4~fp*C*dB!sT?#$8yp!zG#-vAE127ez@axN|dHgX@3?@`70bEOlD|A zIE2A^D9N+{>9Uz~^Ke(Q@o*aT0T_E*tz`098h>V-Fzdh^MXvB#Oqy|yk#TzU!rp9~ zSMT3ln5d**G+pfCgU!IQzb+HYDUBSHUR9R;a?&)+`>@>cgYUfKym0+5r`h%f8V15e zJB9rLlKeN-n6`QjHqA>3IodT}e*oYh=x1P9<<~EDEOpBF#~CF$_f}rYyi4f(OJRd$5dhTbU{% ziB+z9YodmeK4UtaBzW`wJ4x_z){E%chx?$PqvxBwD~9!=6lxG$1f0H@_C7h)A(nYhDR=(IO^Z4EL3iR7k>gM2>EB4i$Xo^Li9P2l^ zvUjT0uOwq@CU~Ov^+;Icq|sYu0~#QOCc#;UV+;xwo;46CEN{L4qo18yU|O5+h!h+S z1)H^oNMaXboo>??;tYtsQ5JaqCr02X2Iuda1w&DvvTrjYGL|dfB)F?nbBOEZKNxea zWqp;3h4#GZcX%+W#Vjc=KFv{ljMPqn<8`5_-rALY&XC-)p*A8{Dn9SY75(kA_EKWV zZ?|C;L!`xw6UDq*yM>fESHNmR0?5(yI)iben)y`ov3W(6jBY~OVsG6s2%)65Noj3; zJleTL^dxH3tXkTREh(5le2~o2=TUX&E5~pH#AkgGzz`$_{um3@4iHyuGU(>gzh=cA z0Lse(H37AtBZ2>ornO}qOn%&W5Sk}&}fMVcW_ zp6B9m$jHOw5gNX`-;@!Ky5seEoV`K>mAlI{EJF826*6iQZ)v!|c!GU%Jg{q}H-0Ho zgJ#;Tet=n9Ho12Pz84qO)f3qrg#sSbQ&uOE!!g*or3)OIRbE?+kieQXZ;N;MV31rh z$l)N{>e<#k)^s|0sYc!jQ>3K7Vb<}lt68@#I+7=0-2Q&j#QHkv%QuIDWBk{~?n;R~ z&4ng=9rA7`LwM44U8z6Tz)7~Au?_`OsmqJnGHqatok;Y?2WtF$n&>8%mwHYbCXFh) zh;oUpgENT*<#-=0rF!czcK0bs`G9c;gKA2`rbA_{+H8{&X%Q+hr7B>%Luz^v)gA!Q zNu&>_s{S2`RZkt-{AJg%=$!s+EQWK^82XZkXElOF4HgHR(*3q919NlM!S+nB0}Iz( zdp-?Zb%`fN>j6iCdDCd=gvXbj(v2Q2ncIV~^w*dZ&nM>lvNLd_9BNU};u#Ss#$bt)>Y9_TTN)TW*5dj4>H+=9z6kPufk)lpLM%sfy+kH|uRw4eI?)Up~H(%+fY4LPV zTci70JK?8Lrcb{yVRdh1@rU3fH9B*&au#W#tcvR1 z!NKLJz;`0bjUgP6$f6ZuoOZb+mv{O=5!kS%d%G>J3!I%MjzIpE80#uwEh~Sl6pWYL zwN7OeVM%*JZf*^=E)Tz{CZykm=r0x!lY&!L=}Si@7eVBCJIV*@(+G^xuS{o)BFbLr zL<|@Ud>3!_FVm>1l|BdXKdS;tdNTH4p<1)#QvVBoJbA@!maCk;-83l`zQ!E|HDdFw z7(t^pIQR@nUcmE5q)*5TF0WyV}{oOGU!*$waYBcLxy<=8g9q7!TotdYAReYZD*btv5Y03b5<^=t^$j$)7Z zu@soXF|@o(&_6*WtX9rA;d^n!I8@WAB6Nvo?LBD-7c)ib#U0c_Tu* zL3)vH^RC~%nD^nwJ2LFN2;oNEs>mhRt|P#{NGB|MXvTq8dIvMA)SXZ_DcKk zefGeC!oUK*v@A4(sb)VqTl^%bGigyqk4Tu(S7N6tAQu-I-5tYt`HKvsnP|NHmMfL~ z5*69DI`PB_VTan*0BJN5_Q7&8F;Yb}JSFFaIaf(W$ykM%gPLF3K0u$Pd@}Hg*>16& zA-&MlFUx`?lU+<1ccN>iAck3j6ZV-v4*T^f1$4Zn{>Mcr`-@a;^yV`hiV#NEPks7j ztEu`zp(GQsI0fvV+9BV(EZVG%=p%l;3ud*ND*ZClyEDn_Rb_@Vn>&`+VEse56mVxR z(D)SBNF1Hl_yFD0_l1^$E(m+{$XlmP^{Z*=ljVjRT2YfgxDq}i{ z%D@s<{SEtOTsBu0H7aH)&79jeI&+7{N} z&aC089G}*wxy;Rv>b@LqRm(QmIH`GjXA1evBv`Yv( zV{POnSC#}{S%3FX`Jn{oH7&OT^L`_Ba09Mb|b%*YiO46`cQcH-zZTa^Gp?KqxRy>LX}y6D|%1&5Va@ek?_tfBVu7!h((F} zHL8pz8v~XT$_TE1dSvtXnQjB)>dML2QMW>LFBKD`oa}x7O>U z-oBz$sfhFlIoMraoU{@-^>&y-1|8_I_zi#jQDc~Ek~>Im@6tUwqEqFfFcIMlg>ZbG zN)c9FERVva;QOszn*$1J|801aAH8|cp}@04&ft`QQFxT&K1(*CP67pR4_FQxUf-P5 zlouMf+i*|IF5mxcI>6J4BL@^n!5b7%GA#v$gm;j$jQC+ zX}LSKz_is%*2siKrRYGfIsQV=-gfBXWoZH&8B4>gofw6P#$XCtI; z8&-t`SDInHei;r=q#L@!Fbz@{DP2f+;o_jO?NRX6bkgm@ujAIK2efy8rNo8eG6aB= zFTd@%Z;KG^Mwrq1;gs}XlItr-2iIN+&6EIGV2+mEb}vZ_jU0Ku4|1r>_tLb7DTN90 zYXCMg)U2mgLnEK)tqYv3Y={d9bS8+CvH{d!RrWP1JI261ll1SQkoS7PhU3?(*vkE@ z^zpxaSD}ZP=GaRk&ZofyimCJ;zmTqj4=J@Q5Q?n`R8vaS_*{_qX)dhHrXsa)K72P} zta!!nM1w||ptAy*eNg9l)a&&X#EWg`poHKY2-ZtdbvQ8-DMT9yoyYc^*SktebawK! zTRhSDqpUr&Vh`(7f-AQoEXq0}i`67CNJzpNv?!MYqZ-oBbd(-e-MS^T;I5P3J%X2I z&ETI+sHe0R38idwF2o)%e`Q{-fdQkkI5V=`BNac@g)ZP+-g} zUc1Ugh4u|Kx0f?dLyd=ErLu(SpdD)Zgc%ChglAHZtUS!QDLecucGL=|Raph5%bhC} zCNOnj-|V!cTRMrQ!VF2|Mbm{MIcKKvd!lS%<)~+@I5nFDDW;M zd@9|NM0z0_rJ)?K+A6Xk53`{+uxb0&8S3x$4uK&8Vus@R25Z;f=iH~GZpy*)Cy{RW z>D_CJXl8Q0?+ys;KoSi?)y+Z4d(x>i9ST!e_(OLg6HUFLpZS z$KGBeeZrdaqn!aU_C#vRmOrdFZ;U6xdNx)R_a zA`^S&*fSaZsa%I<-KK{*c=1Fr_JH(jx%axT0p8zS00-84SSCj+NewJ+;W(&6Kg?z+ z;;Hpd3^njue4xEdiu$9f0VuRQmn<9$x2m8U0EDB(ON|~U(h7brs2RD0T+W6|*>t6be!qFIXJCYZHC81X6ZLFOd|gL_-W&{6gFWgZ|`&3xGMfOxg26hL%9ErC}j+eYp5 zB2|Fzoa$CBvTlx5#PmhMAj#hq*Fa#@nZlup?*HB28Z?A$IJ{vfu7SBl^ICqv(PcC2 zG?qA)LwMqa9hK-@Ux=DukKc$9uo~vZ!&~7A051dbyOZ}HuUcC*)9FCI>Xqc9r;jVX zW`TN1rWoI{Gp^>h2t3N46kat0(?jyv%k&&y<(gV%J0a%`K4sX!u1T#%+RFy3n0a84 z14V2LnB|r&UVCg)q2y*-g#kvbYirVaxvIn8?^0f17BtoAQjCOmOcn+Is0c@W0;Xit z80*9#mVqK{`s$<_CGfLp#5?-yvhX6NmHQJ;p`+q@m`~te3ED{1483$5M(){T6bsVa z7M;jRYKp0y-5)j--+4HI4u4OhzSFZW5$Md$rFlm>gUVLAxJwhw)=M<2nu5NHIw+t> zW_)`nnTcl`xv#Ob&ZYZ7qDWN4T)pIF9M#l5{+smQVn|YQ?AZe9YQE<=L_q1q+EFF; zJm!0Ao6z3H1!DR-=rSO3F6Up_q`S%|5Mt9;|@-* z4T+g(GWNPa%6=ZnO=H-`l`2})=SH&GmSkk3DUGRhd%B{~PO_c^zF_kHL8{k1}^ zkW|g88guA34qDoBZHHye(i}y(Bur)QD7MuS>M6fdRqLB|`sQr_buR0)x^}4bVl|Jg z`$Yex#n;9IXN>A?>g3-g6kofxWyy+a9!vWmwtu>=u>(6Cmzsbp%vOOT6$Uhp;LjAQ zZ2EzmZoPFocyt>2jWnTrJ-(Mu26ew*(a_^;W8#+mB!?%9LnPCPb>**c?h8Drf8aXS z^hO!bxuW;q5(~cFSJs=UA=ooMAy0ystL2**OAYJ%Ike^huW<3I_OSHRnQ3M(I>ipm zJ~w-Jz=e(zx4CoieNkg5`41{9!{eAoiC_j8FL=;+#8zTt z{I!T?=IqB<;~c`i85t9`@;%Mys79ApdT^qMVXReT zZ0*^a-6;Ggn45gbW2*Ish#8m#4J?1>zW?OUskK?87slq7Rf&oQ zAf{-jQ6)-32F{W<@v2p7##srY=080ZjnX$o--~r-;|fMvj?MBF9ZaCIGu{&n&!x;S zfW;2XB{#{K1k)?{9!vnT7bDE~EXhTgSCRFil1YP)?6S}Gu2Xx2+sgDf{Km;qv1&;4v^F%hc>~}noLm; z>;ZkiY%nY}j%|H+Pls<}r+W2#ep@eV5m?`}JE_}bt89NnPLt_lIS2>i#d4XDiX}HPeyA{Q!GWXMz zcbMy?%x~A;eKkIeJc!Y8>MGVnlhgxA9yAIUq^MGZ*5~Cc6Ng6lGl+f#t_>!{bnE_b zXlQA!y2<{fYX#{u9MMQ40DD{b7g|MG9a>z)MR;_Dk zcqteMs!k*Xe*z6^hf&?5OW`wH6dXf!@gumrC(0~G=~0buT5*u_VLsxXda!2#Pi&IF zrzT4lQ#d@#(q%}^QF0&@^MW?(K{lI`rJu(xuzq@Hp)_#9EXDie@RT3q+{<7ZmCHR` z#<-*UG2mU_Bc#-PB5w_C?e|O*6ZMI_1Y6(NH|n6{1)K!z(J8`Q5x9-4*kl?s2d=d# z9#9Iq`$f`fv7t|IzUc7@?e)o_ydQV=l`328ap~jM1)OLZ(;NL57{oMVRkM%R`x?xw@zJo2&=(UrZGHbglLVb1JT6vbuq)Cdw5Ke8;J*iGDBQ zD5bm-{R2Kb5H^mbW?6VEl)R6GxNK)LAHR=mFU`FkgeG!$1Nq>#I{>-#f{S_7Dy zp@w0M3RdsMDJ`0KdF&;o$P$kMEQE1Z{p-zm8J3#hx<{%egMV=)UI9s*lW>1?NaPW> zZZ^0oG%>JaS}g zEi(4qHI@ZyVD%6NvS`XkgIThX`r!(r=|fxD_bao!$A>QfWCryPKLE%b_P+HCmtL))j@a8N;To2(==)^WlN z=e@@t-Ii)vuAWVEWWA4Hk}UCPQjr?Klr$OHnhEhzI6>QgA^gC?QvkeTevbV9a@bC?UESEO(Yf@M1rmfqR78_z zd6NEBjgqJeVR9{ONqF~)t@qMDj0G$Von1#*^DUZ7eJk`fsS5hx!(`R^&b@!PGahU< zmUa%Iv4^=%l$tTqlS>SxGdt~6lFk9OP55T1!W9?_2@x8z)oD!We5cho#{@qYk}Wd% zswCAuH%wwmUZ%gCcDfMD(iDnInnNhc!QKZZr3Oa=kxETF#5JJs5HwyrAHM> zsxn>54<9FqYXY=+v-rDtkcVSEo4A=9vV>Fomyx0*bt7&l&$9?EjD&FgA;GVFbCV$9 zPhx(Sl^Uvd+cUZO*(q&gItc#cF}}>-Cl1Ko#*nqtVlWFd@Nel1bp4FIvzw(>VyvF; zwJ*qzx|*~ctnD5mOsvc$t818f=6CO? zUag+!CUBu<=utk9pK7cZYa({=r zlyu?mfF{dCWXc+^PO8xq5>-3$_G2=DAf-*5(S>Sws}R~1#s~+wMd1EkQtY=z_HQ_l zqz~g#u`(afP&#v*de&q=#8);mz&NUFqSk3)t#aLVFv!e4500)$Hq~wt=}5se^QUz} zPgID7@{%DNkqJx*i#;3Pj_TZ(Z}xpAYPz5^8F}%h>enkKzCq-Qj{_NtigC@lzi&5w z)pg@Rczk5i|7xB_5nH9hpi|Tk#-_e0wc@W4HVx0QoM^cIkzB`%H~lX6z}W zRaRVmY7A%u3BB-qkmyV@&&TGw~lt+{U0&JQ`d?a3^E|F*k*by{SGgrENL$qCi`?)#C*zcMT6z*)I)oO!T+ ziz^BL!0Ya)meSrF4WP zIjYR_$gG*Aob%*f!O`IEkUaq;xdKAD9<%Gu$_{H|%*HIgN6|^Zb)!hk$3PjQ)D@AT zd$fOVO0Ku{z|n|>h&5Xd%0=VGY)-NOLZ4Zxw<4EAVz$s|X>XxR^tq^4`C2JEC3)JM zqUh1sw~MR|1iP6e68cam8RBp$#V>sVGVn?j_D2{m#W}Q90^gEBAKM3qFSc|t;Ng_; ziHBr_7$0!!MW2kapwL)7PE{opOe?Wu)c?l@xG&w!8YV;iF*Qr!;k?;sdm6oGSXq-FAlKT%ncfc!0+-(KQ>YS$e4|1{0t`msr2{ zMm`Ez-6285c}ZNC^*dXD6IHv1NV%A4r&0}O+ZT!L-S{frSe%cv*gBWj$%0c#!dyc* zP^EK(cb+0|{F+RO4|PVt7`j~c;W$NwHks{n3Dlmp*fI-=LhVC~X*vD-Ip7_6Q$zY+ z5ufrNa9o@2G@1Gj9sb{_B0Q*C!q*Tb87>Qc5l)2J2j>G>xgW5#0F)IM5UyK^KQR=L z-!|P-Lj6KXIh8B+hQZsJ^l1iaw%_&!tYtUhg6_7VrB3hWE^TPC2?-^#a6`h&D~^MSw9k3 z9*(SPt7UQx_Y74w9BY>|yJzi0CToI|W*c#gkUxYZ{z|`QD~9W5TJ}n1&mQcB`=QG0 zaQB1}Tg!PQgUqRDtg>5e9TrGvBNn!r|3PSEMg5mw`~aG%1_n8)DvMd+p`*#d5$%fY zj?^a-g7Bhch&+gzIi4%)G)O->=K zYTO#Hsi#?qbhmK%`YX|1Wd&gR;U#|(axhax;1^3hmRVo4nyk4U=MX8cGLlh{k~pX_ zU}$=*RZ3N%OpKbztZ?ZS0(izZOazfaR$(6z${O$pxi#O97V)Jz#%sS{E1v%qv~Zfc z(u>7}E7_^E8)U?_0K5v@bW+)9|H~f4ggI19+gMZeWYc+vhv-R)Vmb$eh$ zTlXvq7k7$|U8%tWaCAOzfe=V6XD@P38L+$CI|SL)Nhy~+Rd zhjutX)-y;)BL8(we^o*L3~;FN0Z9il)}t!_G=;y8YlEkRPB!qD8oGa8a|u461(~t# zQ2x^t{yI(zo)TQN{$Kr5|G4HEa6TAQvR&+7p7uZf7!RJ(ThYqDuI(-b_9H0=5T=&( z&)_x<2_6p&+PhkwPtl5=Eb8V6a9-0e03XglvEm;PtAF1h2@>mV32K_2e_uj#Pl!c& zBkPA*YNI)P=x9F2#6bib2HC(5@r2?2_FI?GcU1oye)i|N|Bv^f)C z_;Z?n9{d0NjKPc0Z}M3VmnZ$--B4{M0zk+pH7+*H{Kqx^eGoeYST**cUpD)Hp2FWI z*z^$)_DvJZqc#7H&H5)H`N#O7Hh9(AEJV|PE71G3e-cXmFOzC71#|97?d$A-_r(8dD>%@ARddY2i#Ytpqwx1ZM`G~d$Z1M3ga4}m z^bf1<0I#~kQn>KnXZZgsZ;hRy^Ec=rKxDLjSe(;u{E>+bC&cOb)EX%|S_SQ(*VCq7n(nvi!aeMl&phk-Fa z@xKH}xjkSSr8#>&00Ga_^u{E+13-<_04m7A3dE3hH*7Yu54L3=030OHx%LPGwZ1*E z7n4@{d58O^0nF1r0m!Ie9>?>_$Xdlzswc>r89f^AO)Cg#mL92TE}(`2mN0iYxB zo%%T#s#P!o7SLc<7C`ffo4%toViV(r#JdNmZ|6NU9%o==Xc%7?_G34Yjn&ll&{V}@ z&UAskG&x%grdMm8ZJ4(WTgK&!<^W7mkA)$+8Zwt(ce9mj_Qb zty^I4=Xs%{G@xjpf0N~C5_08*Gprap+ zO0aD)>XSK)E52_F)a)XTJ5iHLt0e08hZzu0fm(uNUcs+9GkXaJOrzG>MaHkiNS1Y;IEj4 zg}}!y1A7vCSKr5FDM2?qHv$}>5zmJ@PX@tjfXwSRv)fJ>#`>EY08{4AtuPLXpSc2L z#xsCx5ueu(**!v`kkdE@yEdWmSA1>o7hzi88w6&ue5aG(AlQ?I4_AT)w$iZz^o;bCPP zl_dYH_1L5J_yn*~r*iE8RN!-9%S=5dChSRkQpDr$CdBIc{k#Q z-BxWhGs6@SAnLuCuqp>L&E228JfDD>0XSy?LgIbfUmC6qj26q!5?72j?}6 z|MIAIw@@BR#xU0l>*T_ChwFX{a5U4l1R^9uhcU{q5Zs3{h|>UwlH(x&(e%W`NL6SG zl{ftg1|-c=aN;`7>43NQ^{9oVUDDPx=8=M$Jb(mUb-*^Z)>_p))yP{v`^C~3V9LxA z@xv+2;|d%KVM%;vJu<76wlEwC-UV=o`f_pEfAIl$l%Q?entAizy#O$c)nX*oEYYPvOhc4Z`c9Hmr*@`X ztav1nk^8m-G0|YF$Y&maRTb%&$mfF#++xatcj^6^7imhm+~>M*905@JfRNZ19k5*Z zzQVephx;%GkUCut*lX0b4bF@_uZ_C0QtyV1OwlY$Kfzx(`Bul;fg#DjtxvF2u`49! z+NS$;#^tyU_)owjq%i3L9c*`4m$4;OC!=_pqb*wi&a2tk7n$Ig)k0x;Z+NOR?ELa{ zb7NiNJT*34WesHZI7hp~y-aI8O55!?=EHbf@oY#kp$?7cpnC?;cSv* z2mborQx0qg$lixwsVHs*;G-~8=xm8B%(uW$NYTERuP?vYZvB!4BTMKGfcl1sC7>x- zh3k1#nma(&R!v0UKh7)^y**HZP&TQ~V&Fbd0ny7E7MGug5@D3me>75m05eMAp5Trw zS~rPl=(3sA;l z9&GC$W3JTjp%CXYlrYuE>MDD|GYHpYBg0X~h$+KFX5lW>(mrdvJ^#TLKrxw>=3;YR zW*{;tY1`usD2C~b9c9dtH#94m3};$lsQ0Jv9xqy&848zdSS*CkCBu@EK@5)9PhvhE4F%I7skv?qCCDhj2H}~oy za;@*V0YYY}iYg}OCO+cbP}`$e(tQg!ry%94Xgs+M5Jz6ZY`#==j?oPo zEYnMit6!R-!N|9%22B7lspK8jR9YqXaO_yu#0E8BqQvmIN{L3%NYYhn*~3(1%T&Rm zF)mE=Nngw3JADOKZSS7fBvvB^4ansA94n=khVg{oDoRZK_eVax*-}#6ZQ)6?C*
9c4$&Bkn-)9fs&i#eUoZz=;xSSN_#8*?Q~-P<)e-l(0DW zvxssFVaDTT6qx-?;NH&))4dsI9Xg#OHnF7E{W$ZDmI1N=U=8}9%ws}tbDL$mMeyv< z?0drbPvg~O5VzIh65pii*3WmbB=3<>-()edGEqH(p~3_RavRu0 zdD!KGS7(NF<)iD)EnS0Iw$bf7deIHWljW7Tfvx}mJv{*2tb$N%qwq0bT%A@|ta93w zt*<&1RhKR5sBYCGrD2^PeqnU*mDtNVQ3>eJq>E(2}G7DYl7-{aL9Kj2!Tem@3^b%1aXmgEMMLZEykJ zOSLB*9C?+IPeSyhVG)sWzTtGSE?bQaD*t=*EjJOWz=leoK$N@@^LvFGrM~wLKdNJH@g9GSfPZ83Q*b!!vmYnU}F6|ciT_Qgjg-M zXQ9*N9Zn(D@64xKA=HXc5aUeE_umV#0TL$nf>~mEJ}DPlWhg2!XUu+;vDG=>8k{Jg zyQ5$B0xgLCZ5CKJBH=B@*8$pKoBM6smzOH0C-(^4#XZH@WL79gItWIbaXFK4re7=5 zU@|#serTI^LsI{`jdGWcpDJ1ITWYo}a5|Ao4~3>ob%+>-Fh&HSR8Rt?hl$%hn&!Im zIG-2c!^#wuwFq6afZQJXWsMTn0`mb>jv}0hCEpfix1G#YNK38PO7C3k>qNzkT-hAw zAM{2-S&hk|#D0*!r#OlgY5I1PXq}1{t%f5><$@11yiJ{=UY!DoY?&IC#+cA5^LvuR z2%^_37E%EWoS~j`J+`e&f&;Z`0Syoy&6!WrrTb;=ZCHwrjAA2hGn0)JaxfF=Jk~x9 zz3FEBH42NCnSK~?!-&#hI?@Z)$o*d1;4;!($`%zI^A?r&$NMD<-}ZrWR0aQ{S{WG= zZ$_HM!9$Yqyl^lYv{gS9DwGFL7g0%z7uPIWCGlZxieXWPpRmNz5jtM(oFVlL4)QEB zo_D8EASZVr=wxAI<9n=VfQY4daxpj7HqN|00~B-cw*gy)#CEu%zQs*GW)5QE18mp% zAj-nijF-~n@dMi)Go%qswtF&qKR!+#c{K;klflHvy8R$zw3dwzXwODEJ-p04#oQ*% zSzzjxycYqQlJ~PJK3{C|E`YkM*UX1sLU4@);lyQWDcnk5YHVGN3pnUH%1WMS5Yv61 zy^-1Oke8DDTwLepB5;MG-Gy(<_BwM}8k>>Se5R~giY4h(Hs68T@WvJC*LhO`<@{Fo z_{uoP_^df{Q~$c#NJ}f$l)GZ(R_cNEYIPPnfX~0{7b0rLVk#e0d3FLyb8=N=mD#2M z2xOhP-bHM7Po<^jailrZHq&RXAT#KX4%Fa4Fw zZ0?`-@=`}|=wzB`0OW5xV&2fX`yIi#;f-f#!TX`6#@41%fO>(r(|ZRO--2DmBw`4i zECZOqTv3!&mj6wif8=}7UK?Q5z zX8L)#?Ht#DhEs;05xY8Emk$vtVuJ!uQ>=FHu8PD7`N8m3Bc;1Y6LhM@%6V0A;dQCGM=CXhGe~%PAz`7jT^D) zE;{aRQw!yDMIyeF=$ibkjPQ^-&T2cWBckirQZ2*ZYGPEM-5x=A)>N)U`|aHfS$R=< z0UrQrk>~^7!7Vc6I>)qe$M|}Bn#@99VKZvD``WTOec>P!*GZO&op@Gd z?l2dL60ZX`%Y8A7Q4YgMi&z)CG*YMoFSCE8$QPz&`fUsuZ09!ZV=k?|t?4$$ZK8rf zs8_|)%~>$5W>VS%Xg1%F#gL74w6FPBV!l%t!J`<&TH5C>k5>0U6ICsdZf$r$I39S{!?*klR9SEg!YOSliT}GYo0gt+<@NQE%0aqQesj|Nheg7p%U< zS5UCaM^TQ`cF5VLsblk)NOZ88VKDg1q9Wh7`5_Tr zapPpRegRM4gCfoxml<*UD`6$qe<}}B^yCZJ{4QEOe=qKJi-)8*yEtE@?n&$mQ&Gr^ zQJkqNAti)-d{VKesl{_OQr>M?&EHx6Au~||7ba0|3vqff)tr%2KmPg}YeiIdQQiu3 z0hHU);ZKUa5RP+jp%-sbIciL$RyERmYyXUK;W}G+{t7)S6>OPf6SMjzyzlDD`95arcGbe=I><=6I?VSvvf_jtzwF?kZV?~Vp_P`tmpBE7 zb*VEy#q8V3_xSSC<2>*Zfp};11kgdKwD8Flu!GP!%3nmhv_sckVX#8mCg{k^>vy-q zMn=6EV8n-~WBkngdE-s~)Y-e3*mJke{W|quEg-hEo1OC~_14v^yN!!EqqLfv`5lMr zqZUoGl4WQ{2%}f8zY0~5Wbi1Pm!?%FhZp9YW-1#oLxi@o3A|DW^x6L*0RK4?Kz(U$wYykt;mi* zo$w;>r_ZS<>crNZ_#%5)Fbv{Ex9^2IUx?zz-CS;Q-)I5($eZIBa#FBr{#P9jGeSmO zyUL9FMjqQnvMv`M{f~*tdLN30!%V1P?i&V$MgcOit$q>>8b8x(Q&!dHaB;^E(zm>2 za%SO*c4TeYU3YkR@N}*q{7F7SZ{45*W&|`$(=f3{+T_=`(frOb<{3)a zeS354NF}rWcb_Oz*N?b&9V7Vc29*#~%KUdseyX^T7}F9OUlbonBz%(E728HR3x{{K zi@qKkC@nCMYOY!S0gK|5{S@};HHy;oXcqNu@CfZde7gjpU{raLNn-_Bvm41MJv3=l zn}Xqu_hKY8Z4Jz;_ER%8+nXjHG`qg?2psgCY1cq~$M1SQ{Wm1AI;|w)!EanOakq+A`TQ-0f6I@T4gMw_bFX+%_>diL z?8e5-JCP*n%JcP^)Hshfo3U;v*TvOdpQ7|YARWX{eu{;vSaN63uieHfilLG-xxU)p zB%77BFxQQki#XBDMTWMU@TGrQoV*rj2yi{us+X1W@bk< z#hAV?x)X{7&>Zv-*NMvf2R*oUb zvab)GzWO=l?@C=uP5V{sO|kU%iHQlxsU;13-nMlGbjK%q(H!7`REZ{(FCJSH@^$UD z!x_|PD&_rcEV0;R_uu&0=TiLhk$nK z%c-vJ@`J;sdqm&sF_49MDr};0;&GuC7!riO&CdJsP1m4;fnU!bm5_rJekgaQd$=^v^K_=Jb()z( z<&@m>NAP6YiP^x&@5?^G9%M-+hi zdb4VJ0K1LjT)N+Hmuk0VXAL^r#am#(=}=fc`T5~=LwE7*Q1G0n#axIbCz%!g6~l6% z;F>t$SoBfCv-|R`U^lR5213Et^VOm99K7sP)I|<%ce}=BgnN?rE59SfE;}5TiL01*sLk|bP68AX#&sekAyYZ zsr4j%{#lstxwW;ENNw&kh19=FzshSj7yNerO^$1_&?UUt=YXED$Y!Sy!554HW7^aO zy1qwDp}ZL^913&F#<-ScV%D?x*i)+6A;tvZix5Vy5Xm6X!dYlP5hVVe0GbWrhpb22 zsL|y!#7pi@=(d4Xo|fa3W#LqpTx@%?oZb%*4H|YxtCZrF(-j&QW1Y z4OC+$`sg~5!!NybTkOoCJSY^u1#&&bYJ3Jn}{Y;=KtvGGQu=luMfQos_n=nU=cV!pw5p~73bisd5h+6H^=(XPn>co z1Up5Z3-#9ztQtsl_p=^U4SS@4y0)jIJHmyW?K4IRHyS|=7nA`)z$>er61wH=Th@T| zj7ou(e6y5_FLa0!O85Pz)U`DWjetMO4k7hy7+XLS^T$?`#Ebww9B6%o;6Sf3gO(j3 zuOAeFy}AX7cR)eJ+*!MAJnGb=BnyNQf>*9NXo>XTEz5ri#y{kvwJx;$U~R8$u}Nqb zoC5K9AX6Rg5+FJ$prQ0s`O=8}RT;7vkD;zG`OVLNK5`TkL7(0x2XE>XbYXcU#6_fs z2lcf8?(ShV=NU|^W;!Ohh?8pCY8&>xF=i5jBv&%kw!$}`#^SlTrn)gV=MSNG1J~oC zBvi%qlWa_aA)1UPt{w<~T?8w;-);xg_AR?qq;`AOCzW8FYveZlfo@C(wHUVV4wqXa zZkc|<;&fb6>9Heb5=tuI-r9xqPu`aqUH9UFO=xrw?H$X!uf$x?&wwxyKDm`~D&C)6 z7!^NIjqY@5ND06Zw&BFe>CIzi;|&t_<)UV5q_bLh6|3s9#$T7VMcu{ickfE0AK+Z3h!w1R6qc*`cW2Ah+ukn&ySZ~m>R?t3Uu;i&Qn2HzL zLC(}CtDI}Ip^TlX$a4mg!5Ij)cIfCcDs`14vSS|x2ItuF)2yU0jJO#u#Ai+TSfeb` zy_4zgVAT35t|N~V+~mU1BI#62+gXyW^l$4DonTnp4Q5>Sn;Ka}vPH(|rRy?>A3qDv_ZDHAq-V4-HI`X*HR596E={+^XiIr{{bPJ2^ZB-Sgz2!E z@I0>9=Q7G0>M7(ZjQ} z^<4#g?JPBCGdY#nO>iXi7CzTG3@IIPQ3zQ+U)nRRN1C@{)%J6$>wk+t)-w_~_hp&` z4R)#pT?g#Ba0e~bd)Wen5xNxf;QccIr@xj06f0i`T6|3J^<}uqlzJbPCEZ8YbUQNt z_lWKykf}*t#YBE@kI9d|o+~!G8%Pp4M&;72^!YO#lJq<%Arh%@k}@ctrd=}hfGB+0EBWOj5MvX0uZ zA4$|J(#zp6Dd(^#g6*!&nn9;vKYNvy9^|WNoE+TL?)?-)tcI4+XE1GM8$?Y?W*cA-Hy|*|WfdPvAbD z^T>Ugot7>oYK9TT>XIP{Ez2P+%EX$UPggEP7O@)QYdvhUz3Q76TpQ@1+udK!yDE`D zp&cz>yFre5RsX>Cgt;IohL@fopl#~CZN{DbQ_}q>r@;Ms*mn0U)nOcd`?qC`QN}NVoMd@FYyTE^J0*_ znCRpep&UrDs5nK9^X#3quQ`Tin?z$b;~VJeM`-#Mgw~%8z=TS@9pn3a7ySF-9<={e zBVf1Tmg879nTR0BsxK^>iXF=Zi^*+O9>S1Sy;%8{WzFZtobTRvJ5IrfbyYu%Hj;1j z+716D%=hI&fb|yKpX*ZMOHIOqG?QN&hCm?=fDiL`rBsTvr&_jDYe}+X+-v(yjho10 zkto1Q@$M5tkqsBudZ7`1FfzJ^cMu!Fy`jZ0o*|9C=Ek$^+o6LHF6vtO{V+jhIFpJj z5MrX@-S`h^dvqou(w1vM)@9bIJD{l8lbi8Vf$=C-Am@35A%aO+Gs>IKSHG>owVE!& zOgNGFn1~B3=QTGCh@iHfTTdRiP2lbyLs70e`QQPC73-B(I&LQ3r+oD{#g@?7&70?% zBj^K3t_aE@{hYGpeN&Asa0I!!adxMn9)YqGQm zV6taMy%?WVLrq1}HOe0`kdNV#hBHmWV_ETO#)UvI3lNV*=~{MG@xkKf?rp>f#?q5pum-Df^$L%Le;Hn6v z+e)61+ex+(XxJqhSkI!VE1!?mN9P5KB`Wgx>ur@JrkiB)6d^s{a*+vdNjM1L3Z3xb z3*-oJ@mmNXiAM~2;d%E9D9DHV1gUeEpkotXvx}sMN?X;4xaA($*X5n!h2PiXw`u++ z*=wfNRJSF3>9TrRk8j5B#B^i`OHbm$HnWJ3yi#dlG8$!5cwWjmvG(V_yV&bQcv)RW(Ud+0}X2z|uw*F1gm?|%Ija%iuT+a*Uf7~hC&$9oNmOG^`CO) zu6bg=HXY9Te?khfhEt5T14sCTa9S=Sy6yf|n*KG;rV*gUi@lDzFIaYa8v z6Boh^k>P(|kx=jkB(Tu=xz^ZGu^z-4#Y-FGjKXV47jR4f0ZyWrB~zkhPF{pio1uXT6^W?XwK_irK{T-+7w$Qir=w^FC{F^N3lXYMX?zn5+NR-fKc24-x^Uw6VAgLgppFi!DrAaHaIau) zr|ui*xc1F_#}KbQ*FnQ}yG`pkY14EpFW3yaCTPJgr;$7}g)q z{Enz`b^?eke-4hyednzhYDk?P?D&i-Z!lv`1T!tj`N%GZEixh`3v;StoRg0*l23S9 z!sZy@{Xr_3l;Y0eY1wiPX#J}S0nJR*D6|+3m&<(o)}ToP6tN^QnK@`L9JaPs3;jur zX7&-|pWf?ciymEyV%qF|(2$xCZk&WNeEOs%&u=b$1>l_w<0i2^@K zB1+pX&HfG3UDYV;@u~euu+|hh98}jB!R{AkwDFHirj!L27+h0wG!eOU@`P0g%1tT> z0a8^RNvn^BaFzzqb~&S^20Lpp=x!Q-sj8FgD>!Xf?RwZ+|3WV^jJu$2m0+PF2yW@7 z7m&4aWX6$5(`kYF2`esM+ivK3XXaxP`YMvaF==mkG%V4N??S#xO(>-;LY+U2k_ct+ zOX~Jf8n>Mqkyt0884cWWziP3x{cQFxWCCRu8`1H6 zCrN`ST0y3guqap#R`Y3;=4=G>b86(XZ>DU_tg+PD<1~gd6o;gJ847X>7z5S68KUlx zhfI_^FpS+9gB&Y+~Ia$oA~iz2%$s2alk z$Uduf5bSg8*B`qm@jjCn#{4SXd>*SANGi*5!5Y+bT6XY~!aC(#T5eUB$35_`sk53& z|0!&ixcfL(Kkdcz%jZU3_Pf;Nyro2pNU9l997ilxbm4DWEBmBSlKA*nYr3r5^BfOH|@<5P&6b?F-ANr9Wki!nrf6|5Z9L#eM5(~B>E|hx( zz4snBLB}TsVuw-Z!bfZyC-GBOpGu9uJC#d3ey-zLxcu5QVss8nws?UmGbmD^i_cSu z?s$C9TltEvyb=g+xDDfjXP%n;!OL^3)Zgt>PpR0YJHd~1Q+7YZzKh?kf>QyYw^`9& zrzX0_H7)h*VlQZF@O2Wy)}gOsb_lZyT??&*zEPkj7!!Q{F1bS?Zn+B=h((*e$a&YYjSZFhzZ_a zK0B6G5o3By`hAnD%{vOVcl(!@>yHms254IN++JOX$E6)^7R;kr$`+}oFEMrOh?H~;-QxXxH$2>+ zQdZ0<(lpGLN(fn$YA;RCdk)*W23yIM@BvCHdQIy-M@!Um^|C;M9%m2DU2{<1W|Z-f z`JDb!%x8a4SU1CJaMta`$% zWU%MnDhP+Hk(d=J3$LlDu&R9CC(tx7RsEUFt#$f{`nYoPqM7I|0A-?Eb*4zgkyq5_ z)~hT@C+9^RD1%3%mJ7Mpl4zthg}5F=*jn+s0TR`T>)Ih;8k~-}dJ4aaM`mM>kD|m& zR>Vn~07sb&Kc_@c7ws1N`&A2>9{1<Uk-+u~aC!`8; zFeJ3TM=}Py?4DVcI{)pB2hPan*N$7Ny=w~~;g0lt^2`hmeP#nU(KZ#9A|&Up5a^6F zXYqFDiW2Vq{_espOIEHCXC*OEbWv;rWBmnnrXKIbz%Z@h!2E3*b~pvEBgP|qnrVv! zS5(mqLdn_pPDO>I#OS7du8!&AZ0jaLl@92hkK|ZgimMdq`9@^VFO{AlX`%*344%S= z1X<8h5dwoVZutB~H2u;quc;YqwWD+3Z!U#l<*+<5lYL5<%nBRVGdgSrhn2gr)PD#T z1kLp>fZNQ6JRffGvIb3JBVJ)G8aUu>pPT8F{0ig#>g-QL?rl~ejEOp9hP^jk=HZZI zj{S}mHjmn^HHOW8@Xmpr;qx))kkP0cbWXg$wfK_rMkqc5oXeo4r%JMzL@viTG!`2K zI+{wih8^Wc;=E&UJBmZ9^T7N>aj~h}N5FCKufaRYYZIq|PzZAapakA1KW)Ifk4wCv zM4oYoFv6zv_3LZE+Fn%A)?)K_$}xCl%2U7{@L<{=2o1}0(r}9CJ>%Wk*e^O_aamYY zIyi@eRC5*XmiNh}W5XqXOQc()!{KKKbZ%@y;?U9stu}A8ps=Pr>*&O8aKuk> zXinP|M4h6xijlHtJN%w%f8Yhnn}O;zRzy+e1>TRNC(57eTOp}wp-4v~I6%U}`wVpo z^oa`Dq0J37qZl6XcYfD`ZA|`T$KP90$j;V6H=_Jq!|u-S56Y}sujA=X`ceqN#)nY5 zW6l3zd{{w4Td0PnJVi?^zZa-Vi@1ZVkICCvtUI|efeL%$#X4NfO`h_~Puu5^7o~uS z{TTY)_dVjcm7`;)EU}=4!l7U+EKRH}ga$&;aQfXH7HDB zQ74<(J40(y%M}zHWZv%yTm-C&o`2E!W?G~BJLkA^duU0zPGKNRVuK@t=fGbuCxg3i zu!QDnS1Tn0$DhPox84kvJJ4czD`S)ap(5K{Wv6Jhy(+!$hEm7t2U03gW`glo66?sQMXhuJ4U) z*w>zv+& z248FCh7Crwb2*Rbd?;a#_%9l_`60v6+?iyPGaTDKoCM5_sj8`Cm@^qC)Kp?RHFYY9 zDYP1$iqxOKX!{;j2z90s-_`Gz2&SF59gD-Hz4jF6iEu!PoCp;AP( z!o|)ExV*XC<@blSECE$cSBYC7nkiMfp!1(og}Wnl z+Y8ZmlmC1^4#0E|#jYl4#DT-rLfhun=I}pd*@NJ>!>j;IbYc}oSopXaTBuQbz%wMc z#z=U2>i?Cq*(G1a1=5(j#rmFjtj(OlX1@r=SJF(*r%ER0?4f{uf*f(j58tysdsEaX zcRlu^g#~2xSqlQ* z5p$a+yO``1`bC&kNY6QfDT!@^oYkuQX*qw7oXG7cVC|@+vsTh)@_^|qGPKUYV;VFP zOtTH$mWkb?XMb_9@Wa0DY14*h=s&M-yskgBFhc;##QC<-SRf3o8C-s;SVnjbx_XLJ z`rp&nGJ&F4iQ7L1>|akt-+*qt#}(_6@iyq}C69S)-AMVx`tOt71hwx6Tq>#;bkXK%0{i~c8$&avcceRho5F5!h9x|*C zx05nND3C9R(T<&E@FEx@V1MN!&MHP1FIoW_!)?8;1hXJ%xfc*!>s=vzWqxK?Ox zC)7;VyN-|c2Pj~{hG4~XY=+0-d!FXLxD+}jM3iXz7~3YZ6f_;DgV^-^`Gmt-j{EH3 zgAt&u+#sTxVC6rL4|QQ(glBfaD^9_Pl*ZDQ=_Z{*<*Gha4uq?2meHFzX+u0~aBS&`pjBOq5!BVCnZKP%JbFV9?5_6d?Yec|c zdHS;>_l~G6inMAO|2?R=d>*$f!5ex_tEn|)@tl81MFtzf_BWfBJ*-<(wQo|pqHnC> z^dOzP#nSOb+sL~2*_06{ibKTv&T|2-^X<6v4HN;9%ev_&e{qH!xx0n=10W!85)RB2 zdDsQzIc(v31`dW4s=!1d2F>E?ZrZ1(+PBafh#QePviQM-qP{QM9@H2PT?-#8-6e7s z&1W|})2;SI3X%B8f#flTLyOq?H?Jdg% z3J=orsyT>Es{tp2-d6JYKoH;cX z*mvhXk&4e`Zqj$>Hlbi%g-6yMoeuViHAY=f5l6%ak=dKer~_W-+wL?DH?*$Ft^3E? zQnbY(PCCA3SZa>4$T>rNE)OA@erHp>WagdgQvG|u4o|R*ikbGq&!u4-MPJZ?j4ai8 z!NiUIljTIZi6mA6gGjO6T9)yIC^7~{A!1^xj%V2XhRGOo$INPYTn5O1u<>!o^#*Ks zxBXjf9UV-6ne~Z<7`$=V)B2;`x1!ENcj}KgTyyy2BbSS`#dedonzVv{9YDlGK0&FA zvAPyFiQz}x$=gnETndGajx6Sm zu+kGPu107zjfUrMh^aJ7ET1VVC+dTVd>wnuHL)p@T~YS&UZ(VpwT0O;_o6+cYP)C% zQxfSNm#m?ydeQZo>X?D;!S1*S41=wXuG(vgyc1a-$!U}x!BSwMG3CniQ-IwAZcDpE zM%p=VY^DFv4Mr~yoto0SDHk2V8f?b_7(~6$Ml{;*I!7p3m;s(L2>=3IRS9bD`>+8y zFuLRr1a7Hb+|}ruo)Gnh&4IrPqwi#Uf4N*1OId3_Y6Ur8yYyEB1*uae9Re`&C7>fR-_ zB)5Pqrr`NdgwlLd>MgzZSZLMjN|kXrr{J8$S5qRYU`qMVFe~yX zMUz7{4b^$Y6uGkIZ@J|KpGz9eZWqMx28XNIBj2ZjIdS}SU|nh(gKXv+y%6R{c4+|D zg|~n8_JSr%Qwr$t;npf_!H7*s2Nz;dE-w=HL4meZ{{`d8*tYR8!3H?#&PHq7dIG}} zd^8M7$<}fKun9@H=RKdm zmt&uG^R|_U8J$!)SSSWO6DVZ25vlHg=#2H#AQP*B>}ts;p~!a^W4+(999_QAOWcQP zpg`g{=+%=Mpgd#!#wsJf()QH_a=iROrduoncKyhQgPoko9S6qUKMnJR=ZeEhv^_8dJG8yCJ7go0{PPUtsGG)ge9aK z!rl($Ot^5G`b~K4HVbB7Lue(TW>;UWWnV06m=q2%v!l@OBK|ov>j5r)pqdY^fi6r) z1v50~UGo{**I(Ns8P<}Zf4UN;7zRqml^&*eOHZ`?%`xWhX=x7>vr##D_)p!8Vrz(= z{96oxEsRD>f!MaO{JZe3#`nt=&E4s%UW68Pl7U}a`=(AU63D~~yUG~|&0c|aMUlQx|8w*)XkK&6Q+l`byj&2Yj`Irb| z=r!cuMi~a=OGvIsMW<>ocAla0y~ImpP#VYsV+QH+{gbcMvpV4hX2i~(8G4Bq+YBB* z6L=7K6mnoCoy2EGrWea|`{-Zv$h&$Nb)(?1?0nMdN zABZoTIT5%N@oNkH#z9&ig|K@f?bS%GzX#3-CvLR%dPv$tVCCr1s8C!)HTw+p3z(`} zu|_V|FIt@VoEs|>>PAzRXnakAPW1243WqaQWh39y{1F7A<1wNfsYp#8$%m&|vh(T8 z5a2ZommFwkGyQqQugpTta&u`^;TOcw7;xwDHqx$cu11--;ORBfHE_V1!z;uk0Da<~ zeJcnK+7+hx_A?`34JtzUjpUBbCSatvv71+g2vADas=2}3!Hg{b>Q{TAJ* z@>`o*^(xiZ_`csi?IpngHVxPWF+hFnqaMS�b!&sq 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 T;c0RV^rNPv{kmS!I{g0tMnK^l diff --git a/.gemini-clipboard/clipboard-1769085744299.png b/.gemini-clipboard/clipboard-1769085744299.png new file mode 100644 index 0000000000000000000000000000000000000000..8c41fecd863787277176af443b4fb3b95eee8bd0 GIT binary patch literal 7034 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 I=@&2m2W5l^YybcN literal 0 HcmV?d00001 diff --git a/.gemini-clipboard/clipboard-1769087429425.png b/.gemini-clipboard/clipboard-1769087429425.png new file mode 100644 index 0000000000000000000000000000000000000000..0d29001f8fb68d2861ebed2a30bd2158df8c8aec GIT binary patch literal 18514 zcmeIaWl&w+wl)X^5(p3+g1fuBy9bBh?(V^Zy9U^Ja0~A4&W7Ob5)z!?){B>O?>%+C z>gqpT{iEwryNb2u9&=0^w#InY4*#SeiTEDpJp=>p2L-cnW5MN?jm$JpMM!O+Cs z$dtju*5QQ!g3p5oxU@BOF(mS^wXt*N@!%)S8JSoZ zSy<=+3VLTxI~PL_dOK&*S0?|(N6ggO*vZnt#nRr6=!LJLk-e)6KMBdpK>z*sI!_l% zv;P^%&iP-<0v5>l@(m+10~6za^9H)|y|nTun>yRuxW2Ggv$J#&VB!0R_&=NfXSCN| zicXfMzt%H-Pv-7{x|9jhi(tonBcd-Zd+R4&b+Rnw)3F!Q< z(f(_K|MwLC;>E}KvR(hSeXnQpPb+XZ0`K`4|NEc?-X|B!OhP~iK}d@Ut9n2lWxh*7 z?_UbhO3rXjqT{BO4ksa@qM|ZGCzTL8`+|W+@kvfYj2S)*l9cAH7;}yo3>=9Tj2QB8 zf|lE}IrUSEkC)jO^W?=vP?q}#a|Kt|{-R{x{j$4K9&%Dr(pUi!BB+W@zrLe|Lgmm$EaD;khm^>0dfgv3?B!DlE4ARwp7A^C^)^V}@69W} z4iX~6i&=+K*4JB9jz`3QI>6pU_y>(^^p=2MZ-GHL|Nk+_4jL3n*gGg%cLs0!qguh^ z8!7@E<0Yn?yRfxchUo08Vsch6!mxli3&=D(B*nSD6eR z;?X}-!KXCflM9(*1$;z{tLp#QR4OY4HPsM=$HC5{1sr68>(1;6ES%Ib33TBONt`v% zzd1w?gAxzYQo9Ecgp-j0y>pzMv7Pm?-A?U13eVPp!woCP_B?Uyr?Ao{iNjx@gXF{~ z@*VVm<#fIj6>&m_>&@&7XsdLk=`N3DRLgYn@BXlTl#ue`1N%+IYR%FR!j~MF?3AGN z-nf_gh>L7Jn%5;sViWmmba|9WIMrbBOjEKlqHb_YsH!%g^TSY4tW8C1^T9Fklw1NUO zuf`P%!^w1MFQe9}ST(?skpy^$FId!TK|95C#qtXL=G@N9pw%aj^oQMHgVeI&me~0ziGmC%2<*VEqv|XraE&5m1dx*vc)RMpSf&Rlp`N`#CADne`lTBn-X5p3 zt}leAq`(mpN~-yw0z3l9C;&m&>eiSS2MD`jfi?Kzsa;CH@JL7n_TqmB``>N+e?dTq zvI%($1a5=6dIj~j6SInO0Xxr31{gD98#N5#077?fbi)tiFH#-AmliQY81U*V|DRkZ zg@rkwmnk{)NVSU{CkCl_NpjFeqC!2GxZu+MNTI+4`gS|Yr*^=($Ui6)zaxobf>vf> zVL>gdwkr06D_?1LSd7UYsBG^w*R=sOwzf=PyHU(J`%-olCBOsFjL7|;O3N=QBm_-D zkyA1h7Ec}cY8m)me8|PGV%t~WjRM??N6BHo(r$qO&B>CKv_*SSQeSv(HZ07f2Gyg>)9W($MOy`@ zVT@`}z_nH~3?>N4NJvP~{ZY{+LAHlhKL%BQnLs+5qakc8Qiz{(jjX$Nd^cOKLrG*f zdP)50jZZWbuPiao?L?8`z)Tq3u zsxUJnDzK`4u-% zkaxU;ONkF)hiF;uM4$Gv{VD_=s6W^J;@;0ljDG+0bboTbJL+YkQ)M7rAoEQsF)a;; zZBgIvk==f+Esfn;y;84Tv)V{_S`4Szd?Kr|^C|61tl-m))J4lwrFNs;#oo9WCXH&b zVQ)x9D|l2sox^se>1Q9C-3phgU#3xk?iyG6*-!1~*F5+C9!yiG6uC9pt;(c)7$qd;=lA)UE3WT*yGxnvUE{nDwwx~fMx#b!vF$OJ z?Q^xbGLkL$9EL&)=J`|JW%APU28qvL%N(4cRc+MY#kM&(ne~p)`*d1SaJAK)QAQd* z5}g{=_o^$Yvg7VIZDpH?ci>w@Dte}X=-bm?BtqXCL+5bSP$Q%1P(r4xN0#{>O3ePG zx2+r+VkjjMPN{XbGSb1ilewMQt`2Ms@zP(H%HQ;AJyuqVIG0EgaaqW2I7@-6Sd{ zC=~Ho*y*=dhzvSM3MCG1HoulJ@AY!m?rM; zjFh6WSqD6=hvJCazg$|)mSRw(v94kG9@WoRw4IOCn2xq=HS4r-O&g{mnW^MSM9VGQ zwi^$|Xw{m5Qe*IWdF)Mjqp%~o>zsCFWQ1J2u8*Tl%v$Smu;bY@4ZD7t^$A$upuwF= zBKawB?2h!Z<+X=t(z43=YX<1q464!=E zS2H|bw{lSO!*T10=9u%EQ!pThu4uhuwx6IX{~pcpoE%?>KDypV zaNl@3C!NM*#IG(wxDEJlb zQzFuu-QAm>)NaIbPy5}UM{sar(rfbNqFxmp;okTD8o-GCqj|rRgDvTEy%Acb?@_jn zv>Rz^UhmoyJFzD(-Tvz)Kp0*lAGQw{@D}J2JE_Jo-Ag${nC*LGAW?r9R_)`5+Y3N( zmO6aydxGK7w93@!i}w2m3H=U_FfB$5*^hH08EQ<^x=2F>DRc_uu#JZ|e=)oMR!u+u z3eQkwsNoNF()sL*%WW}9v}DOxi@-3-~doN*l0O;7EQlzk#d~x58r7yN8Ken5qf86#>dlS3U=W*jNZi&xO68y=p z8xtzm;Tq4f2D)d1%L{61&v&jL(@c%bzrL}2x27j>*TxqZsQx$_0#l50ke&YcYju^t z*$jd8;r6%mt@4HJLQh|TNwWgr@`8z}^xC*$H;@EwAfEa8E&*HfWf0$e!6|&O-hL`y zS_4olM9viIY1e=1s`E|#PyK5D7=8KT-!U~gej z+5DNW^t;_nktaS{sy8lSsp|STD5rORRovXjNxl3ufOgVyUDn-OsPDEaNP5S9k{xZ9 zFF55>4dvcF_q2l<=Uyjn?7Z(NSecO& zT4x!Mc&8tlIWK0a-*r5suucVC?2r3-&4)s5V~|2M0}($a`wf>$jum>S^WcQw^Gd!n zT8~_L^#?KkgTb6cC*f?;MZ0PH&PTK8?{x6t)m5g81gNKI-~FDS%phaGacq}ujfFLb zXxSJ&T~-oJXqj(id@wi3k4?WH3o3|hsF-nH7*<55{^Vj3n_{2t)SsGtd}DomXTAJL zYrnS9iXh5PXD_qXeRT3YpePv=Pu z<-43wkvAonh;jJbTSu9gO+j8JudweWC()`9a&H<-APfeX>W=KV+PV$Y)G<(!8FWvO z{aLF2!+*VE+#}qn_0el9oO0|(Sw+hTx9RVdUP)IB8dW0fRnATbIZQO^RD2lkMEpym zTjW2<>+b=9jg~g+Kwo!I&ARoPA0Wm*p;u}$G3fPOtU4VOG=m;UPkqGZ-Lro>Z;{@w=cQ<} zoNf6W8uBeIc;q;0y~_EK7M}1xr+)oxR*~%KZmw4X+_72jIf2Ay7{&@hjQw+6jmZ1v zas4+~b*IT!kM~370S0Ek3ONuVLiu^$F2qO(&shgjGKN}js2aHw*1{pgdQP1V4Xm!u z-OZ>dZU!4NWJV|Fabkv8u5!3v*}qU)wrZ0n2{Xv9HWm_lS62MsrzI{ zossJ_&OV>v_jG%IeZqO*yn7#7&zhaVZqvKATQt{nldN#PEBkozoTnTt8+&;6FwH6< z_jL44{A8lJX1DVT8`rdH%a5fRo0SC8RO*s@1E-*-pEA)6sx2 z71g!R0>4Ms1&B^hOBiRVwf*kbY~AJCk3UH)soBO3XC)4iR(NbJIxC>StH2L7904 z{WR;PFqlH8)0`BT3xD1^9sD+>ljS&oEgVd5VMMb2C26dY+{yiYRVzb-8I)huu_sW>jrKdBbd*k? zcPhfgnqzs7xynt&*p7{ZoV|pjAvJNjc1-5eJZ=3 zb`BBbxGs!MR&47yvXw7;xW=ntaQ#wOyfm=$#qk)8mBX8>=1*TlKW*y>bBgnvg5On9 ztI{O=XT12_so>|<*6PpUpKs51(l0d%tIkR^c%~C*Q$Jhmui?8Zwi}KM%AOqFsD4A0 zJiJfhqi%E~=s253WTbEN+wZV_v%K1~v%l#L(&yJJv+fmsLjc#&;$k~V7l9t2^OB!} za-+pCOy12ngJ+fH8n$aa;)tRwXWo0WT*rOB@^|Q$VNg80zWkW5OC%F(^dSg7?dhm- zy+JMLAkSi4CNW;eX3$I<>QB4^c5VNXe=P%vbQG59SkO_n5AV7zm+w}MIg;6-mG1XJ zdHfLOGmB-+j~2R*eOP5}&)}Z3N(Nt})0vJU)y`iLbAhzz6Dtp05BZt7cn&LE zu}7Wp0#(RH0~1~p_7dM|mseC9EN;7?IqNzzhu{P`u724&v%|UTKHe}khW{3@u^g&Xsab~3LZ)Qu? zaM`V9wqpgsbR^W=q0K<}7vPruP0cLnCE_`yIk4A0CLR0 z2JSE%1x4g-p##oC4?O7U*VzN8^~&o(EQWsV_qjT!8iU?t1kx8C?N-Lep#_W)?Gfzf z!-Es|ifQAq^3YDr`!DMfSU85x6vZkXzV*5Cg8G-j*=ATqO5FA+Yi)lj?dN@FnwPMJ z)y65Fe2+AOiYj~_=R`p@F3U-@jf4w-KQ*4co4Sg=0UsHuvq+0{p@=vfm1&hqo>9Pg{Zwr>X;q-)t36{?x3WG zE4ng?+l9FKB1J+cVgrjL9S#@ang>Bq2baQNTs0?w(kbDQXBF8B~ znS(Z5nkefijG0fCxdanVszp4ja@82JsvVv8ROT4#mB&64?kPxrPM!9R18?q$AOOip znk@UtO<3Wved~!-|Kn$eRDe-~rmD&LNcgw+_+C2oZX7I3r`s){{KY1FjQ4+^A~e#} z?2Z!3)Y4PNwK@N^C8sR5!OuT`s`i+rT}EtRh7NJ{EHnv_b4ClDu%s3AIVc*uDmv+S zY6`vMXx{krWht9?PF|n?GFbdNek0#%UvJ@@CeLc01K+`Fl{IshiVo^uv7mv(hingX z;knGrea8E+%tlScp4=MdwxxlPJd7M>i3P6jfd^t{@MoIU!OO7~Tdvog$7pZai;_uv-CKaq!)4d~D`wWKt#<3+&NRKQc;W60 zTz}M6YFT#dUp~eyaZ1a^UyKP@>~=Bc~dT@)1Y?%~ltBNqvHk z(d(&Y@j1<{BE0fb@f9WQ8cyfwux{v64fV+hTZQORMY_BFQnR~PcuxV2xFu;by*?xg z*B7Yg%W$5%nuKQPq_JDaT!#U)y*?AYVl%W<=Y~U5E=Yn$yx;Z$!qc@dM=Q>;eCZy8 z(cH(Q`T1_VXderMR-8uZ-O8{fa3zaBK`EQ)GX&xU*S2t&j-c1#L#0pMe&Al~w^GOU zTvbe!f4}r6D8@#kR<<>weNFSKud%E!E#{%gY~Y5Rv{jXVzfQv3(f~fxpgys z^LXA{=&226?eppRTA){43*p>2nSG?pj~l(4{n)~c%jJ1H-l_`I0<^D~+Kt|MWobyQ zC9`>=ig>I|NA2_V9Y3t2NgHk!FDsr;AF`F|@x2-mA95yE^%0hwiJW5#1zvJ9Ce^z= zVG9}}D()OXh?OF(`v@SoFA(n-ok7gTZ{K}V>i_jKPf_sEMMoBvx6u!T_*3hOP|X;L z>tvVt3j4fQcJFYF9TO$GeOLDbW){D8f~g=cz6=9`-cb|SeNKAW$xyDK4hG*yOMc_(eIah^e?@(bwmm?HRbd$~4USG7{a z7*7sdrtk8)44Ty zFs(-2S80_RhXY~T5Pqg@nwX82lO)P&u0YHJDU>04ATLN2XP!He#c3ZQDtj1@U7_uP z#FM?ch}_`tIcjai=X&+fl!EzdA045&6sj8-I)v5J;&)GO&*GFvw?j?18aw7@SmRZO zWUmK2z6f<&W;}+AyG+`}>17V3NIcJO}>Ed`Oam_+E zFOZeOA~kchw>293@33d10=@$i|1@e#=b)FHhR`J4A-UA(!g|rcb4HBMR5icc7FrDV zZtpi^=F(5Cd%H`FH}_$I!wJ!X@j1f%W&x%Ia=cZ>&sV$YzPHEMCDZdhI$Zi^zKDz` zN}WhOZH%^z`>9nA18{k|T!YU-n{haBt%;@`sH< z?yre;Tt;uqMM!O65mGW*V^ga&P1~NzHON9zoG)qL%R8cX@7Zx=gPi%fPO_b`7A^gE zO%j6`ZA`jlFXpuEcWqfXcp=L<=eKe%Dp;dhLl-ePJx&d*?Re0*);%_&VtXBSQD@(> zfmitV9=zMm)aiw1=ru|2cFmIw=>mp^2xZo5`mBpd5*1x^oIc*eQ%9iM zl)c20Pfu`>lI=}Q(}sP%3n0A~hk_cIQP<)rEd9w?U!Q8ne$1ko6I(PYqE~BLPn^nR z_|@@uFK$l z9pY|*m`CRuQ8FF|X3WoU_5qVUT>G}o_V9EQZ=HH*y(QD0E^X$p5~V`0KMQF2J|mmQ z^!FwPckxkGj$S-CiD0t;7ptA?WJoa-gLl8J-C%{A{;h|cxLe7xkKa zJ`$VD5%Um@$4B@&9Ck)<~!Pyd3*0w_1 z%Pq6K+iRAb{EZt~rhbeag{z%3L0qTl5ltf1f88sNmu$DK=jQcsZkF%S_^ z2Qw7DniGwIQc8bZR31L_#+VbnR{@H`hchEw z|3+n}sZMKLuSuLlrt|A@TK$_%!E%jn44OxK4cFN8*t6CTD(gu5Oz~PLibv}vlZ)eb zSR?vm%3Sk}&C7Vg;j&VRBZKiiOO@HG)KfXa!2<;1%+=hE-L&?MUNP6_GgK<~3r>jV zPtWmGY_2llqW$_I#xf(o!h41HMD&21{a+YWsNA%z2FCwq>NmbEMt2Tr~Wpm2N$6! zc+b&>R5GHrRV#d*pAH*Njp+7D~puV~Z+I?hg+`_4OV$C~4O_st(w7|6Dm7Z+!TS z690fFoCsT2xfpD}obS5qt6go(aS<2VuFQ(IBQIaCk}1Zpa=Oh~CXm^%*UNvPz2NKM znoiu-A8m5r$#S!&QmeCiX6|#pICV`?`DOb%Xuh4V^QvIno~J;sQg!eiQBKAuQiuU4 zG>bzDSew~*fVg{mDSvrBz@~CjXGiO}vBX(6I)HmP`z3a9f28qw)=)>(ij1TnITbUw zGgE=sO|=`HwV}>#7@U5=y`?gwz;L|VzqFs*M^p5n_{@A#(SG&$!}>^w3c{e2a+qb- zwYy#O{lyfxXuo+?B10ZuU^{K|`4M}gEpa~$^E!KZOBt=+X_`?*-TUUY(ms!{&!x=m z$&NpDdK1%#csE|12_gvaEqAORv9E zHLO{0!tNHY@A9CQ{lH?`vsFX@a^B{Z9ax*U{mWcX+DbE30K4;|B@-pPa-U6+Zbq-uxzw0~10MS#^7zQy+z)L~ zW1TN8ms|@Ai%P@=*%z}9p)PBtx^aPcXZH@DjmJuydN6srPg+j|jAIjmKO`iijBe2M zfUWg*_UHzA$FlfNrhD3I2RH2MQD?no@Z#DdN>fTLS$*5@oF6bovC4hijz(MO_%ja# zyl9!a4(@%@^d@T!*X=bFef)-@(XIbv(Yt3nI2g#_I@>Ht7&f3$q9m4?fs9pD;PvKA zehs^NsZoQPcjG4pGXK~=@LimMkWN%w3H*DO^g8z*Tj&3dega+hi z41kElV6vCV@AXl?7imw8?>(=oG-v&zDfLs=eN`N4Zb8n+gY4=!Qy$5(O|^W`yBKk) zFd4|UpD8Gyx%pflEze{3<`N}DMdq<4FdgAJ+@OuL^&alIbXKbWcfaj-fmJgq z7X2p|)oba3NId55#W33|qt*mZovp{S-`v?tmePr+`XkFr(F(GPv>N3-XKKqZX8Te< z0w`C;@XV6!BVfnM0B{XA;05wbNAt2_IAY%H!OW#n^Nn+Btz%kI93PTwe~~BppYrNWK+;gA1(&a1Oct_~u_eWcK{p{J}sKjlm&iI+-I3 ze!q|(d=TOe_k;z$q3bQTTqGp~y{S7mtG#xpFXCC7i$31!9ttO}dsku{!t|@cN@0`5 zoSVfo!dif5|0vCV*#N5U{o(*zA}g`dF;MXMZpDx-r-3<7{_U+oT+39dtn%AvpacO_ zv4x1p-LG5j>=BrTI&QY$?}FVWwg;kn9ZNWoQ{UDVIXK3IJ4d>YQH^H{X1gaEmErqD zx5+1cm;}A)`Xk)@@s<8M#769I5fcqRw;+)pi zn9fSc@g=F1x`*e&0zhBn~qm%3MbYmL=MXw1MJ$}Dr(-|ys> z6!0d43t1Ir((|Dn#fU1idGb2Kgl?cmb}NOqv|A`?KmYb@8bX@Uua+{L$GL$W(SLFL>maQgxb5jeBKo=TxcQWEuRGy?!m( zxi>bS`HiJb{Rj*$8{-=3{%_@BX`rByyyFM)+c)c*ms$DRMW9e$6hy=4RgxoP^-LNW z5kM@-@LXIMq>@02*i0rR#g;Y4^g40F%tt&0g>FFh_Ao_ zF*2h4criS7050_pu7C_MXi{t~#Q$Ip;=+JshjUq3)xM$^q<}%g@kwho}BUHzk z8M9YTaR4px&tD<0q$GeBA>S%48Gl72{2zlF%JwO#q`%;hgrG$L+F-G~7nlg}34b}k zu)IQ!SCCc^Q1ylnm*9K_TcE}R4jV;M-WKy8ECZ}Gka0tewtGcPkdXkBCy7a0qI*S5 zyx`!-a8_So4^m>lUJ=06^n*AyhG_p^ztAKL33}U`b|()-$9Teg^tI5gK29f=100lDYgH zz6Mh-m<%*l=l^H{cBn?2h@D+~F^O6lIGY5Qjal25vpJ=OJTkucGejZYd3C(X>v_K8 z(6ZF-b*)?=vzP=FK5zd{D^5>MS~Q4_RaC+_ctnGnl_#nd#+1{D@)DJlxeC*f*AdC0uQBeY3609Q+=` zssESqzoBXxNTEv!o*d2q_=E4|tcGrjONsiAw1VFJEkeHsL$cpM#h!I|Y-acOY#FG+ zgaGvdT&VE^satzG~zO1V@a!Okb3WVWoq1s*xG1Pa+f`Hfo%jV-jc5Vlt|{GvsRCRM8%^l>wS;TDQxcf@c zDWI@U@a5O{g&B;%~sG&}EK z0cjdJ5DVCb%XuT`BeN?|O>B`?RFlBDO_!?Cre}K`FUi6HQ%wi}riv}Wy?H-0f-M=8 z1ROB{q5yy{yP8tgiJKi~KzZ(GZ{Rzmjtej^74}7ls*LX}}}2Dh`>cv^5iGppxu z^ZrZ8tN|v~9e~E%1E*J{koje!E8t>6P_VcGgX&Y4SvZ@&_xXn@DaCNP)(fx{t@0N@ zy~BXjlk^nyIf`unq>{4>HFK@*_BQn|h!q@-e5rUKg%FRyg{SDjS#p74M`4<(7ylg` zksl|eHa;t&8vy`+p##vJp_LTSf3S!XNy1fCT-~2^I;-ZnlEHn(-@jg-k6VKF$fMJ$ z2@0+js;{-Q@%OQ5QYY|xIOCwm=;{V`fD$wnBucb?x=D?Q8WV#P7vbSJf16U@w)RbLDb8&Zw|b$NIm~d>d=mSSNic-6o|@MFL>;^DGx- z&4VN=S}5wvKSe=n2k~lltBMkUK{Ua0z2trit<2a&1h}7%syi1nGARn}n<0G6o=EW% z(iAG!bpy$Ac|SS^QoFv39%TC@gOw8Rulk$J1XWWQ2|E##@2|#H%2Nqj@&x*Tc!WNr zO6}XLO9rD&s+xdV)e!;t20s6V$Rz*AS;k!eri*(*ll@=d!~g6GI3zyf*?)l=MS+=q z>`_;HWyGxrIP8lkwSR#n5dha?1gov~iap%n0|f3r2R-B}wpwfR1dv$R_AKzV^thaM z4|jhmuTRzq&F=CPuYi0y-)YwyzvoAHE^&Mw7YhK^B)m>7l};(2R_AfH)#c=Ic@+eQ zre2|g?Lj-5`U0B*%8E~y^ZK=N*r|Z=gt2cslc2i!yH!80mvcVmkyZKD1LT^iN{?&uIG7Tg1%7CnbkW$!8)1wFt#Ow`4?5|?sr)wkS9uM zJ#L}Z?-+WzpWFiw91W7O1VEV09(=M`8#?cu?(pTyo%^~E;ON>_6uA5Q9ss4Fa;I*u zCjTWxr3@{C7Ix@o_RGnI@*2)&y(3fNl&z1Y>PL5vl&mak&%ks>t2c#0h6S2jw!mX) zSp|Rt`xaddxrWzn)c?K?QjOGUvBq?|P`=h(7xI1QuiVHQN}Gk?TC;H{%$sq}^;5k= zD46%DLwA>dE*h*6(#Ast=YA2R##g8m#jsYwT{zi74Vi4vqqhJcKw!Ba+P;}0;H;Nv zR1POn=A}W`$eqOdXXAg20W2JUJA9hW@0k(^Lg0kCDsMl0?)fQp&I-FxQc{wl<23v; zDX;A{>$bo;v4~R%VAO!;WdIq%R;yeGpr;tZ_m$Yq!FY*XW6TxWjSQa_8f=$Cc2&QN z1iv8p$Rsv-+>dQ~!1iq62jf5t0ZHvN5K6dKV+zl+DHCgGVr;>x9272r(B2zHt>3{{ zs0m^*wZYMVz?Q&z6O4E(dBNlIO9)g!XQ_(TTorf@$gI7BLGvJlW)Z$MuM_@! z+S7NCqJfYAoQ(UTtOvx*Vd#rAp2d$_rV7B4H%iGP0IgCA!tNA5OY#OH8_*$*R?QA+ zET0kX-Bu(c3!^&#QCa%&igt87)^<4TXU=eb(>3$q7R2u_cdZj;xYz&WR zyiBbOlUX*IZWEUtP?L$wMUcELpnU5cKGA%6e>9`P&|oGqVIGqq)Fg$c0$(Cu5lzm9diivh!&ZK%gUeA>A7#TxKJ#aMedF=R!VZfWq4pZiH~maHq; z6}A5&(VJ9EvAdhA+5&(tDZrEC>js-_CxH0pGOFrc0x>tX)P9lQ1@Ss>U40PL;G4?> z5$H{R4CR}ALF=}g${)ry&)6J^Og0YElJ7q-1AHO{qP3G|0J=r}$hQhWVYL-tV1%-!!qHCZV17Vz9MKf}Jte36lgw+uk7}L}$k)0|WxT1xmUHL*3*MK6?Ebp*`DmsJu&LWYB4t$+w$))&veptCwkE|8Ekm(L&^2E! zeZ*abgj4aCfQhF=jrMkb;?2JwK7o$?vEX$VD7L??l_G0IwSioFBIkvtL9XTL~ z6nL$ri5Py-p!H)&v{BTX#3V@!SxJhhw#}$P1hSOkl+}+LbS_=~kaJx3JBf;?qHS9d zwB@D5u48-5ULkT>&R}jnKjzvjpDQgLZibE^%-rB;i*a;wD6~R08WzJn z1bYDAl5Y0**UumT)9g_ja{Y5Nw%z(ok|K^5Hk(kbC7e%nPR4MY9Km&fqW6>#kS9vM z8CuZNF_#F!oKU{065Ee*4?ai<7xs$!HukZavRf>dip`(Nt~hm`BB4W>(aDrS)Tj1q z7{zA9*A63{DVVfA27YhbQ6U6 z(MlzNmmo4;-c-1S5TE4p-FWee6up4W9<<) zsKp(BF!9BbnS$FJ>xH{a@{yP1QWnv}ez(eOCzKfAhJ!o+VA`T=ECj8m#qz5Ax^A6l}blN=jfaO%#>GtIb}fbVpb%`lNs9kvF}doif-E2Kj6TStF(X@qS7v$2n{zg=XZ z|Mfx!WtweoRIkY<7QZ4xn+Vg=0-g6s`?V1qF-Cv{0+LvArUj%K_WGE+A;_>|^F|1B z<@S&TH6}8D({Oxe$M5MP8wk&1XIZ9Q=tTOEc!!tMHmN5DuaXmmJ)l{I&CRCd+PEWw zLMvB&h0@R3g!Frr*xwu0)B(75Sh9+Qx6*kU@yckxB-SvFn6X$UHln(nwZfLt0_(sf$Zxl^shqnkFou1Z)A{G-QM1sU1^x z^q*hpV_4M}QmxD|(K#{Ull38zx+c(_7T3|%>i<;0_F({FmJZ^e5_^cGV60766$7JW zmeE57XKRC2O%Hj1C+i`%Z+|SIAi>~!K2l^F0k@-fXwdesbgVcgg~-xld2yjEyYEVg zhGPI^+9Az*7a4R6X576W*oIe&e1@4JnUWG2#MQELPk(aHJM3zt4%S6VZ6YcLwCuY$n5Y?C3KMy|2|SE_vMYm5h>GEh1zlKevyTn z_SjJf0!Y5fMX0e0bll)jtO<5)gNG!FdWBVEie3m5wc*k4$YZ`z@YjBA zTycsV$7Sp4#n->;(pGqcZIeY1xU;FPZS*)s8#q~45I1s5711$E9!LFXU|kz-LWoO| zC+~0Sc|J@zZJHsTS(}G^fytptSQ}!g4E8c%kB5R3a68mI6kn0Bxeb5>t96sU%}Wmd zbev04ZYOZHU`!WvW=z85b7d5@T`+FFFRt4cm1*ls9=DKF0R)iWthAxxIm!V<{7dD) zC|aZG$1bzH^51a#xn+-x&9<(cgwbWhXP7-Qt^Q3Nq^z4l7vCaQ*N_tkMZJA#jdHkZ zwXRl}R8lz;&my?C$Xo-GrY$9QTxqDjSm*%SuN69bs2GOf;2;#&zsn$m<;ea{0Q~HK z$x-$Wd335V>uAA4&j53~FKmMNp4?$1G|RTA786$j){+CqZ0krx49#?bOzJkzuc*tygOhOhiA zxh{pz0aQVT)ni5qw^3z>WVtg%_XWkFg*RaUL_Wqe;Zwvt#D+g@dI)D69Ss$IX2_8m zN^P@tX~b%1ys6opL3W8F4J*08WbIID(#!RMsL64PBM9%?d2vjjZdJPDx&ufIk6MJm z8wG@en8xo#7KpivV%esdDNx7ZI4R|&@!xMZWga#nqD6B{&!c`296K{`!HnQ)Hfpj~ zOmQzHlM5L5-qm+8GywNin!CZbRoUzW)j95xpa_i!^($HWk^X>@vn}P2p7>4=pJ_F+ zIda1tGr256nfxYR7L=y9{7Kt|0x943n3)$)B;;Q7ObMfbGsooJ7MHaM$B+7O>h~UC9(r63rj6n7B}ad< zo{)lF{sSzf^lFg95?kp&8d}dDUm=UC5?i1vyBF3rYVE>7yQMt{;yBnQ0Jfjo;lh9X z19H*8^3AWele##ujv-nHfA1i}_^EkY*h|?^!XN{lJ;(ZU1k_Nxp!jNx^-D@n*3rsa zfVX6(Zsa}K0#^;{5+8@aYy(?jr%d`D=OLZHd#A8IkX~)mO@~xZloRqPx|!MO`eJev zAXZ((zM%)9i=%KK#6P}C{Xr@j(-*o{2#4UoEBChWI;?v>5L?yk+mGu|$t?#vX2eKZ zL~1R@I_FVzaI$9$rUIM{=}T4xQycGtj7wV3G;~J{o?!Q1{EDNW)NDP<^_w*Z>#u=j}A#;;sy zv9{2|yY^j|R`Tk^PE?f9N3EXvAXBmvW2EW;3l83#adqn=?yt_INLmQ6W@CpS(#^Wb zk0kj!eI=h5pE!06%0ScCZ&rm;k#@YPSBMrXCCVI%4dvtQ6XQb#O8xWCa(OdktM?Z` zU8{qyx{-sZZ5g~7Pw2>G6~esx1dcC`2L&lpFna`!q+6o5E{P!Npz&E6-3TF( z7hBoKWV$NV7o{R7WzI>lJspsL=HXQFnY%I4RJWKErZ9X|dJ1p6-;pepE+)t`b-h*~ zS?-wGJ=BS7c|*>oM^i(BELCJDAm&H7VP6D}`=W0sOEm_IRHr|lCeW9G5coyFgDk(B?GbStiU8eso!nM$owEmvE`eT*WDK#M zIZ;XrxQezG^Z>4xS4Vq=hZPbR0{e}V-VrvS7!3q+759GqW1>yR;jCbgtdS&@4z$v1M;dm={U?;dGNlBWshuPpRY-z=~e%<+Z-%Y~UmSlVtFwa1Th10T~|;AZ+x!_^JC^ z$$@@}r>h`UoL|c`Z9qb&?e(}5;QIo`|ISp(t%1^dhGG*?8rU>zVa(#YT7HK w4SC>o_i;)0*V&;)0jm1H%l!Z3G@swqpG~!J4t}hE`6V7{aRspo5reP)7sgukGynhq literal 0 HcmV?d00001 diff --git a/backend/app/api/v1/files.py b/backend/app/api/v1/files.py index 94e0071..8c826ef 100644 --- a/backend/app/api/v1/files.py +++ b/backend/app/api/v1/files.py @@ -28,6 +28,7 @@ from app.schemas.response import success_response from app.services.storage import storage_service from app.services.log_service import log_service from app.services.notification_service import notification_service +from app.services.search_service import search_service from app.core.enums import OperationType router = APIRouter() @@ -145,6 +146,11 @@ async def save_file( # 写入文件内容 await storage_service.write_file(file_path, file_data.content) + # 更新搜索索引 (仅限 Markdown) + if file_data.path.endswith('.md'): + file_title = Path(file_data.path).stem + await search_service.update_doc(project_id, file_data.path, file_title, file_data.content) + # 记录操作日志 await log_service.log_file_operation( db=db, @@ -188,6 +194,11 @@ async def operate_file( if operation.action == "delete": # 删除文件或文件夹 await storage_service.delete_file(current_path) + + # 删除索引 + if operation.path.endswith('.md'): + await search_service.remove_doc(project_id, operation.path) + # 记录日志 await log_service.log_file_operation( db=db, @@ -216,6 +227,21 @@ async def operate_file( raise HTTPException(status_code=400, detail="缺少新路径参数") new_path = storage_service.get_secure_path(project.storage_key, operation.new_path) await storage_service.rename_file(current_path, new_path) + + # 更新索引 (删除旧的,添加新的 - 如果内容未变也需要重新读取内容吗? + # 优化:Whoosh 更新需要内容。我们可以尝试读取文件内容。 + # 如果是目录重命名,比较复杂,暂时忽略目录重命名的递归索引更新,或者后续实现重建索引功能) + if operation.path.endswith('.md') and operation.new_path.endswith('.md'): + # 简单处理:读取新文件内容并更新索引 + try: + content = await storage_service.read_file(new_path) + file_title = Path(operation.new_path).stem + await search_service.remove_doc(project_id, operation.path) + await search_service.update_doc(project_id, operation.new_path, file_title, content) + except Exception as e: + # 忽略索引更新错误 + pass + # 记录日志 await log_service.log_file_operation( db=db, @@ -245,6 +271,17 @@ async def operate_file( raise HTTPException(status_code=400, detail="缺少目标路径参数") new_path = storage_service.get_secure_path(project.storage_key, operation.new_path) await storage_service.rename_file(current_path, new_path) + + # 更新索引 + if operation.path.endswith('.md') and operation.new_path.endswith('.md'): + try: + content = await storage_service.read_file(new_path) + file_title = Path(operation.new_path).stem + await search_service.remove_doc(project_id, operation.path) + await search_service.update_doc(project_id, operation.new_path, file_title, content) + except Exception: + pass + # 记录日志 await log_service.log_file_operation( db=db, @@ -297,6 +334,12 @@ async def operate_file( # 创建文件 content = operation.content or "" await storage_service.write_file(current_path, content) + + # 更新索引 + if operation.path.endswith('.md'): + file_title = Path(operation.path).stem + await search_service.update_doc(project_id, operation.path, file_title, content) + # 记录日志 await log_service.log_file_operation( db=db, @@ -374,11 +417,6 @@ async def upload_document( ): """ 上传文档文件(PDF等)到项目目录 - - Args: - project_id: 项目ID - file: 上传的文件 - target_dir: 目标目录(相对路径,如 "docs" 或 "docs/manuals",空字符串表示根目录) """ project = await check_project_access(project_id, current_user, db, require_write=True) @@ -421,10 +459,6 @@ async def get_document_file( ): """ 获取文档文件(PDF等)- 支持 HTTP Range 请求 - - Args: - project_id: 项目ID - path: 文件相对路径(如 "manual.pdf" 或 "docs/guide.pdf") """ import re import aiofiles @@ -564,6 +598,14 @@ async def import_documents( # 构建相对路径 relative_path = f"{target_path}/{file.filename}" if target_path else file.filename imported_files.append(relative_path) + + # 更新索引 + try: + text_content = content.decode('utf-8') + file_title = Path(file.filename).stem + await search_service.update_doc(project_id, relative_path, file_title, text_content) + except Exception: + pass # 记录日志 await log_service.log_file_operation( @@ -641,4 +683,4 @@ async def export_directory( headers={ "Content-Disposition": f"attachment; filename={zip_filename}" } - ) + ) \ No newline at end of file diff --git a/backend/app/api/v1/notifications.py b/backend/app/api/v1/notifications.py index 8a36101..4903bdc 100644 --- a/backend/app/api/v1/notifications.py +++ b/backend/app/api/v1/notifications.py @@ -1,21 +1,16 @@ """ -通知管理 API +通知管理 API (Redis版) """ -from fastapi import APIRouter, Depends, HTTPException, Request -from sqlalchemy.ext.asyncio import AsyncSession -from sqlalchemy import select, update, func, desc -from typing import List, Optional +from fastapi import APIRouter, Depends, HTTPException +from typing import List, Union from datetime import datetime from app.core.database import get_db from app.core.deps import get_current_user from app.models.user import User -from app.models.notification import Notification from app.schemas.notification import ( NotificationResponse, - NotificationUpdate, - UnreadCountResponse, - NotificationCreate + NotificationCreate, ) from app.schemas.response import success_response from app.services.notification_service import notification_service @@ -27,97 +22,75 @@ router = APIRouter() async def get_notifications( page: int = 1, page_size: int = 20, - unread_only: bool = False, current_user: User = Depends(get_current_user), - db: AsyncSession = Depends(get_db) ): - """获取当前用户的通知列表""" - query = select(Notification).where(Notification.user_id == current_user.id) - - if unread_only: - query = query.where(Notification.is_read == 0) - - query = query.order_by(desc(Notification.created_at)) - - # 分页 - offset = (page - 1) * page_size - query = query.offset(offset).limit(page_size) - - result = await db.execute(query) - notifications = result.scalars().all() - - # 获取总数 - count_query = select(func.count()).select_from(Notification).where(Notification.user_id == current_user.id) - if unread_only: - count_query = count_query.where(Notification.is_read == 0) - total_result = await db.execute(count_query) - total = total_result.scalar() + """获取当前用户的通知列表 (从 Redis 读取)""" + try: + skip = (page - 1) * page_size + notifications = await notification_service.get_user_notifications( + user_id=current_user.id, + limit=page_size, + skip=skip + ) + + # 获取总数 (ZCARD) + from app.core.redis_client import get_redis + redis = get_redis() + total = 0 + if redis: + key = notification_service._get_order_key(current_user.id) + total = await redis.zcard(key) - data = [NotificationResponse.from_orm(n).dict() for n in notifications] - return { - "code": 200, - "message": "success", - "data": data, - "total": total, - "page": page, - "page_size": page_size - } + return { + "code": 200, + "message": "success", + "data": notifications, + "total": total, + "page": page, + "page_size": page_size + } + except Exception as e: + # 降级处理,防止 500 + print(f"Error fetching notifications: {e}") + return { + "code": 200, + "message": "success", + "data": [], + "total": 0, + "page": page, + "page_size": page_size + } @router.get("/unread-count", response_model=dict) async def get_unread_count( current_user: User = Depends(get_current_user), - db: AsyncSession = Depends(get_db) ): """获取未读通知数量""" - result = await db.execute( - select(func.count()).select_from(Notification).where( - Notification.user_id == current_user.id, - Notification.is_read == 0 - ) - ) - count = result.scalar() - return success_response(data={"unread_count": count}) + try: + count = await notification_service.get_unread_count(current_user.id) + return success_response(data={"unread_count": count}) + except Exception as e: + print(f"Error fetching unread count: {e}") + return success_response(data={"unread_count": 0}) @router.put("/{notification_id}/read", response_model=dict) async def mark_as_read( - notification_id: int, + notification_id: str, current_user: User = Depends(get_current_user), - db: AsyncSession = Depends(get_db) ): """标记单条通知为已读""" - result = await db.execute( - select(Notification).where( - Notification.id == notification_id, - Notification.user_id == current_user.id - ) - ) - notification = result.scalar_one_or_none() - - if not notification: - raise HTTPException(status_code=404, detail="通知不存在") - - if notification.is_read == 0: - notification.is_read = 1 - notification.read_at = datetime.now() - await db.commit() - + await notification_service.mark_read(current_user.id, notification_id) return success_response(message="已标记为已读") @router.put("/read-all", response_model=dict) async def mark_all_as_read( current_user: User = Depends(get_current_user), - db: AsyncSession = Depends(get_db) ): """标记所有通知为已读""" - await db.execute( - update(Notification) - .where(Notification.user_id == current_user.id, Notification.is_read == 0) - .values(is_read=1, read_at=datetime.now()) - ) - await db.commit() + await notification_service.mark_all_read(current_user.id) return success_response(message="全部标记为已读") @@ -125,14 +98,14 @@ async def mark_all_as_read( async def send_system_notification( notification_in: NotificationCreate, current_user: User = Depends(get_current_user), - db: AsyncSession = Depends(get_db) ): """发送系统通知(仅限超级管理员)""" if not current_user.is_superuser: raise HTTPException(status_code=403, detail="只有管理员可以发送系统通知") + # 這裡我们传 db=None 因为 service 已经不需要 db 写操作了 await notification_service.create_notification( - db=db, + db=None, user_id=notification_in.user_id, title=notification_in.title, content=notification_in.content, @@ -140,5 +113,4 @@ async def send_system_notification( category="system", link=notification_in.link ) - await db.commit() return success_response(message="系统通知发送成功") diff --git a/backend/app/api/v1/projects.py b/backend/app/api/v1/projects.py index 3d4cc50..95e5a4d 100644 --- a/backend/app/api/v1/projects.py +++ b/backend/app/api/v1/projects.py @@ -32,6 +32,22 @@ from app.core.enums import OperationType, ResourceType router = APIRouter() +def get_document_count(storage_key: str) -> int: + """计算项目中的文档数量(.md 和 .pdf)""" + try: + project_path = storage_service.get_secure_path(storage_key) + if not project_path.exists(): + return 0 + md_count = len(list(project_path.rglob("*.md"))) + pdf_count = len(list(project_path.rglob("*.pdf"))) + # 排除 _assets 目录下的文件 + assets_md = len(list((project_path / "_assets").rglob("*.md"))) if (project_path / "_assets").exists() else 0 + assets_pdf = len(list((project_path / "_assets").rglob("*.pdf"))) if (project_path / "_assets").exists() else 0 + return md_count + pdf_count - assets_md - assets_pdf + except Exception: + return 0 + + @router.get("/", response_model=dict) async def get_my_projects( current_user: User = Depends(get_current_user), @@ -58,7 +74,11 @@ async def get_my_projects( # 合并结果 all_projects = owned_projects + member_projects - projects_data = [ProjectResponse.from_orm(p).dict() for p in all_projects] + projects_data = [] + for p in all_projects: + p_dict = ProjectResponse.from_orm(p).dict() + p_dict['doc_count'] = get_document_count(p.storage_key) + projects_data.append(p_dict) return success_response(data=projects_data) @@ -73,7 +93,11 @@ async def get_owned_projects( select(Project).where(Project.owner_id == current_user.id, Project.status == 1) ) projects = result.scalars().all() - projects_data = [ProjectResponse.from_orm(p).dict() for p in projects] + projects_data = [] + for p in projects: + p_dict = ProjectResponse.from_orm(p).dict() + p_dict['doc_count'] = get_document_count(p.storage_key) + projects_data.append(p_dict) return success_response(data=projects_data) @@ -101,6 +125,7 @@ async def get_shared_projects( project_dict['owner_name'] = owner.username project_dict['owner_nickname'] = owner.nickname project_dict['user_role'] = member.role # 添加用户角色 + project_dict['doc_count'] = get_document_count(project.storage_key) projects_data.append(project_dict) return success_response(data=projects_data) @@ -188,7 +213,7 @@ async def get_project( if not member and project.is_public != 1: raise HTTPException(status_code=403, detail="无权访问该项目") - # 增加访问次数 + # 增加访问次数 (简单计数) project.visit_count += 1 await db.commit() diff --git a/backend/app/api/v1/search.py b/backend/app/api/v1/search.py index ed23022..264a4ea 100644 --- a/backend/app/api/v1/search.py +++ b/backend/app/api/v1/search.py @@ -1,128 +1,270 @@ """ 文档搜索相关 API """ -from fastapi import APIRouter, Depends, HTTPException, Query +from fastapi import APIRouter, Depends, HTTPException, Query, BackgroundTasks from sqlalchemy.ext.asyncio import AsyncSession from sqlalchemy import select, or_ -import os -import glob +from typing import Optional, List +from pathlib import Path +import logging from app.core.database import get_db from app.core.deps import get_current_user from app.models.user import User from app.models.project import Project, ProjectMember +from app.services.search_service import search_service from app.services.storage import storage_service from app.schemas.response import success_response router = APIRouter() - +logger = logging.getLogger(__name__) @router.get("/documents", response_model=dict) async def search_documents( keyword: str = Query(..., min_length=1, description="搜索关键词"), + project_id: Optional[int] = Query(None, description="限制在指定项目中搜索"), current_user: User = Depends(get_current_user), db: AsyncSession = Depends(get_db) ): """ - 文档搜索(简化版) - 搜索范围:项目名称、项目描述、文件名(支持.md和.pdf) + 文档搜索 (混合模式:Whoosh 全文检索 + 数据库项目搜索 + 文件系统文件名搜索 fallback) """ - if not keyword: - return success_response(data=[]) + try: + if not keyword: + return success_response(data=[]) - keyword_lower = keyword.lower() + # 1. 确定搜索范围 (项目ID列表) + allowed_project_ids = [] + + if project_id: + # 检查指定项目的访问权限 + result = await db.execute(select(Project).where(Project.id == project_id)) + project = result.scalar_one_or_none() + + if not project: + raise HTTPException(status_code=404, detail="项目不存在") + + # 检查权限 + if project.owner_id != current_user.id and project.is_public != 1: + member_result = await db.execute( + select(ProjectMember).where( + ProjectMember.project_id == project_id, + ProjectMember.user_id == current_user.id + ) + ) + if not member_result.scalar_one_or_none(): + raise HTTPException(status_code=403, detail="无权访问该项目") + + allowed_project_ids.append(str(project_id)) + else: + # 获取所有可访问的项目 + # 1. 用户创建的项目 + owned_result = await db.execute( + select(Project.id).where(Project.owner_id == current_user.id, Project.status == 1) + ) + allowed_project_ids.extend([str(pid) for pid in owned_result.scalars().all()]) - # 获取用户有权限访问的项目 - # 1. 用户创建的项目 - owned_projects_result = await db.execute( - select(Project).where(Project.owner_id == current_user.id, Project.status == 1) - ) - owned_projects = owned_projects_result.scalars().all() + # 2. 用户参与的项目 + member_result = await db.execute( + select(ProjectMember.project_id) + .join(Project, ProjectMember.project_id == Project.id) + .where( + ProjectMember.user_id == current_user.id, + Project.status == 1 + ) + ) + allowed_project_ids.extend([str(pid) for pid in member_result.scalars().all()]) + + # 去重 + allowed_project_ids = list(set(allowed_project_ids)) - # 2. 用户参与的项目 - member_projects_result = await db.execute( - select(Project) - .join(ProjectMember, ProjectMember.project_id == Project.id) - .where( - ProjectMember.user_id == current_user.id, - Project.owner_id != current_user.id, - Project.status == 1 - ) - ) - member_projects = member_projects_result.scalars().all() + if not allowed_project_ids: + return success_response(data=[]) - # 合并所有可访问的项目 - all_projects = owned_projects + member_projects + # 2. 执行搜索 + search_results = [] + + # A. 数据库项目搜索 (仅当未指定 project_id 时,或者需要搜项目本身) + # 如果前端指定了 project_id,通常是在项目内搜文件,不需要搜项目本身 + if not project_id: + projects_query = select(Project).where( + Project.id.in_(allowed_project_ids), + or_( + Project.name.ilike(f"%{keyword}%"), + Project.description.ilike(f"%{keyword}%") + ) + ) + project_res = await db.execute(projects_query) + matched_projects = project_res.scalars().all() + + for proj in matched_projects: + search_results.append({ + "type": "project", + "project_id": proj.id, + "project_name": proj.name, + "project_description": proj.description or "", + "match_type": "项目名称/描述", + }) - # 搜索结果列表 - search_results = [] + # B. Whoosh 全文检索 + whoosh_results = [] + try: + if project_id: + whoosh_results = await search_service.search(keyword, str(project_id)) + else: + # 全局搜索 + whoosh_results = await search_service.search(keyword, limit=50) + # 过滤权限 + whoosh_results = [r for r in whoosh_results if str(r['project_id']) in allowed_project_ids] + except Exception as e: + logger.warning(f"Whoosh search failed: {e}") + pass + + # 获取 Whoosh 结果涉及的项目 ID + whoosh_project_ids = set(res['project_id'] for res in whoosh_results if res.get('project_id')) + + # 查询项目名称映射 + project_name_map = {} + if whoosh_project_ids: + p_res = await db.execute(select(Project.id, Project.name).where(Project.id.in_(whoosh_project_ids))) + for pid, pname in p_res.all(): + project_name_map[str(pid)] = pname - # 搜索项目和文件 - for project in all_projects: - # 检查项目名称或描述是否匹配 - project_matched = False - if keyword_lower in project.name.lower(): - project_matched = True - elif project.description and keyword_lower in project.description.lower(): - project_matched = True - - # 如果项目本身匹配,添加到结果 - if project_matched: + # 添加 Whoosh 结果 + for res in whoosh_results: + pid_str = str(res['project_id']) search_results.append({ - "type": "project", - "project_id": project.id, - "project_name": project.name, - "project_description": project.description or "", - "match_type": "项目", + "type": "file", + "project_id": res['project_id'], + "project_name": project_name_map.get(pid_str, "未知项目"), + "file_path": res['path'], + "file_name": res['title'], + "highlights": res.get('highlights'), + "match_type": "全文检索" }) - # 搜索项目中的文件名 - try: - project_path = storage_service.get_secure_path(project.storage_key) + # C. 文件系统文件名搜索 (Fallback / Complementary) + # 为了保证未索引的文件也能通过文件名搜到 + + # 获取需要扫描的项目 + projects_to_scan = [] + if project_id: + # 单项目扫描 + res = await db.execute(select(Project).where(Project.id == project_id)) + p = res.scalar_one_or_none() + if p: projects_to_scan = [p] + elif len(search_results) < 20: + # 全局扫描:仅当结果较少时才进行全盘扫描,避免性能问题 + # 这是一个简单的启发式策略 + res = await db.execute(select(Project).where(Project.id.in_(allowed_project_ids))) + projects_to_scan = res.scalars().all() - if not project_path.exists() or not project_path.is_dir(): + # 已存在的文件路径集合 (用于去重) + existing_paths = set() + for res in search_results: + if res.get('type') == 'file': + # 统一 key 格式 + existing_paths.add(f"{res['project_id']}:{res['file_path']}") + + keyword_lower = keyword.lower() + + for project in projects_to_scan: + try: + project_path = storage_service.get_secure_path(project.storage_key) + if not project_path.exists(): continue + + # 查找文件名匹配 + md_files = list(project_path.rglob("*.md")) + pdf_files = list(project_path.rglob("*.pdf")) + + for file_path in md_files + pdf_files: + if "_assets" in file_path.parts: continue + + if keyword_lower in file_path.name.lower(): + rel_path = str(file_path.relative_to(project_path)) + unique_key = f"{project.id}:{rel_path}" + + if unique_key not in existing_paths: + search_results.append({ + "type": "file", + "project_id": project.id, + "project_name": project.name, + "file_path": rel_path, + "file_name": file_path.name, + "match_type": "文件名匹配" + }) + existing_paths.add(unique_key) + except Exception: continue - # 查找所有 .md 和 .pdf 文件 - md_files = list(project_path.rglob("*.md")) - pdf_files = list(project_path.rglob("*.pdf")) - all_files = md_files + pdf_files + return success_response(data=search_results[:100]) + + except Exception as e: + logger.error(f"Search API error: {e}") + return success_response(data=[], message="搜索服务暂时不可用") - for file_path in all_files: - # 跳过 _assets 目录中的文件 - if "_assets" in file_path.parts: + +async def rebuild_index_task(db: AsyncSession): + """后台任务:重建索引""" + logger.info("Starting index rebuild...") + try: + # 获取所有项目 + result = await db.execute(select(Project).where(Project.status == 1)) + projects = result.scalars().all() + + documents = [] + for project in projects: + try: + # 遍历项目文件 + project_root = storage_service.get_secure_path(project.storage_key) + if not project_root.exists(): continue - - try: - # 获取相对路径 - relative_path = str(file_path.relative_to(project_path)) - - # 获取文件名(PDF保留扩展名,MD去掉扩展名) - if file_path.suffix.lower() == '.pdf': - file_name = file_path.name # PDF保留完整文件名 - else: - file_name = file_path.stem # MD去掉扩展名 - - # 检查关键词是否在文件名或路径中 - if keyword_lower in file_name.lower() or keyword_lower in relative_path.lower(): - search_results.append({ - "type": "file", + + # 查找所有 .md 文件 + md_files = list(project_root.rglob("*.md")) + + for file_path in md_files: + if "_assets" in file_path.parts: + continue + + try: + content = await storage_service.read_file(file_path) + relative_path = str(file_path.relative_to(project_root)) + + documents.append({ "project_id": project.id, - "project_name": project.name, - "file_path": relative_path, - "file_name": file_name, - "match_type": "文件", + "path": relative_path, + "title": file_path.stem, + "content": content }) + except Exception: + continue + except Exception as e: + logger.error(f"Error processing project {project.id}: {e}") + continue + + # 批量写入索引 + import asyncio + loop = asyncio.get_running_loop() + await loop.run_in_executor(None, search_service.rebuild_index_sync, documents) + logger.info(f"Index rebuild completed. Indexed {len(documents)} documents.") + + except Exception as e: + logger.error(f"Index rebuild failed: {e}") - except Exception: - # 忽略无法处理的文件 - continue - except Exception: - # 忽略无法遍历的目录 - continue - - # 限制返回结果数量 - search_results = search_results[:100] - - return success_response(data=search_results, message=f"找到 {len(search_results)} 个结果") +@router.post("/rebuild-index", response_model=dict) +async def rebuild_index( + background_tasks: BackgroundTasks, + current_user: User = Depends(get_current_user), + db: AsyncSession = Depends(get_db) +): + """ + 重建搜索索引 (仅限超级管理员) + """ + if not current_user.is_superuser: + raise HTTPException(status_code=403, detail="权限不足") + + background_tasks.add_task(rebuild_index_task, db) + + return success_response(message="索引重建任务已启动") \ No newline at end of file diff --git a/backend/app/schemas/notification.py b/backend/app/schemas/notification.py index f3acabe..2bdd199 100644 --- a/backend/app/schemas/notification.py +++ b/backend/app/schemas/notification.py @@ -2,7 +2,7 @@ 通知相关的 Pydantic Schema """ from pydantic import BaseModel, Field -from typing import Optional, List +from typing import Optional, List, Union from datetime import datetime @@ -19,14 +19,14 @@ class NotificationCreate(NotificationBase): class NotificationUpdate(BaseModel): - is_read: Optional[int] = None + is_read: Optional[bool] = None class NotificationResponse(NotificationBase): - id: int + id: Union[str, int] user_id: int - is_read: int - created_at: datetime + is_read: bool + created_at: Union[datetime, float] # Redis returns float timestamp read_at: Optional[datetime] = None class Config: @@ -34,4 +34,4 @@ class NotificationResponse(NotificationBase): class UnreadCountResponse(BaseModel): - unread_count: int + unread_count: int \ No newline at end of file diff --git a/backend/app/services/notification_service.py b/backend/app/services/notification_service.py index 0c21536..73982aa 100644 --- a/backend/app/services/notification_service.py +++ b/backend/app/services/notification_service.py @@ -1,13 +1,25 @@ import logging +import json +import time +import uuid from sqlalchemy.ext.asyncio import AsyncSession -from sqlalchemy import select, update, insert -from app.models.notification import Notification +from sqlalchemy import select from app.models.project import ProjectMember -from typing import List, Optional +from app.core.redis_client import get_redis +from typing import List, Optional, Dict, Any logger = logging.getLogger(__name__) class NotificationService: + # 通知过期时间:14天 (秒) + EXPIRATION_SECONDS = 14 * 24 * 60 * 60 + + def _get_order_key(self, user_id: int) -> str: + return f"notifications:order:{user_id}" + + def _get_content_key(self, user_id: int) -> str: + return f"notifications:content:{user_id}" + async def create_notification( self, db: AsyncSession, @@ -17,19 +29,41 @@ class NotificationService: type: str = "info", category: str = "system", link: str = None - ) -> Notification: - """创建单条通知""" - db_notification = Notification( - user_id=user_id, - title=title, - content=content, - type=type, - category=category, - link=link - ) - db.add(db_notification) - await db.flush() - return db_notification + ) -> Dict[str, Any]: + """创建单条通知 (写入 Redis)""" + redis = get_redis() + if not redis: + return None + + timestamp = time.time() + notification_id = str(uuid.uuid4()) + + notification_data = { + "id": notification_id, + "user_id": user_id, + "title": title, + "content": content, + "type": type, + "category": category, + "link": link, + "is_read": False, + "created_at": timestamp + } + + json_data = json.dumps(notification_data, ensure_ascii=False) + order_key = self._get_order_key(user_id) + content_key = self._get_content_key(user_id) + + async with redis.pipeline() as pipe: + pipe.hset(content_key, notification_id, json_data) + pipe.zadd(order_key, {notification_id: timestamp}) + min_score = timestamp - self.EXPIRATION_SECONDS + pipe.zremrangebyscore(order_key, "-inf", min_score) + pipe.expire(order_key, self.EXPIRATION_SECONDS + 86400) + pipe.expire(content_key, self.EXPIRATION_SECONDS + 86400) + await pipe.execute() + + return notification_data async def broadcast_system_notification( self, @@ -40,17 +74,37 @@ class NotificationService: link: str = None ): """向指定多个用户发送系统通知""" - for uid in user_ids: - db_notification = Notification( - user_id=uid, - title=title, - content=content, - type="info", - category="system", - link=link - ) - db.add(db_notification) - await db.flush() + redis = get_redis() + if not redis: + return + + timestamp = time.time() + + async with redis.pipeline() as pipe: + for uid in user_ids: + notification_id = str(uuid.uuid4()) + notification_data = { + "id": notification_id, + "user_id": uid, + "title": title, + "content": content, + "type": "info", + "category": "system", + "link": link, + "is_read": False, + "created_at": timestamp + } + json_data = json.dumps(notification_data, ensure_ascii=False) + + order_key = self._get_order_key(uid) + content_key = self._get_content_key(uid) + + pipe.hset(content_key, notification_id, json_data) + pipe.zadd(order_key, {notification_id: timestamp}) + pipe.expire(order_key, self.EXPIRATION_SECONDS + 86400) + pipe.expire(content_key, self.EXPIRATION_SECONDS + 86400) + + await pipe.execute() async def notify_project_members( self, @@ -62,7 +116,6 @@ class NotificationService: link: str = None, category: str = "project" ): - """通知项目中除指定用户外的所有成员""" result = await db.execute( select(ProjectMember.user_id).where( ProjectMember.project_id == project_id, @@ -71,20 +124,126 @@ class NotificationService: ) member_ids = result.scalars().all() - logger.info(f"Notifying members of project {project_id}. Found {len(member_ids)} members to notify (excluding user {exclude_user_id}).") - if member_ids: - for uid in member_ids: - db_notification = Notification( - user_id=uid, - title=title, - content=content, - type="info", - category=category, - link=link - ) - db.add(db_notification) - await db.flush() + await self.broadcast_system_notification( + db, + title=title, + content=content, + user_ids=member_ids, + link=link + ) + async def get_user_notifications( + self, + user_id: int, + limit: int = 50, + skip: int = 0 + ) -> List[Dict[str, Any]]: + """获取用户通知列表""" + redis = get_redis() + if not redis: + return [] + + order_key = self._get_order_key(user_id) + content_key = self._get_content_key(user_id) + + ids = await redis.zrevrange(order_key, skip, skip + limit - 1) + if not ids: + return [] + + json_strings = await redis.hmget(content_key, ids) + + notifications = [] + ids_to_remove = [] + + for i, json_str in enumerate(json_strings): + if json_str: + try: + notifications.append(json.loads(json_str)) + except: + continue + else: + ids_to_remove.append(ids[i]) + + if ids_to_remove: + await redis.zrem(order_key, *ids_to_remove) + + return notifications -notification_service = NotificationService() + async def get_unread_count(self, user_id: int) -> int: + """获取未读通知数量""" + redis = get_redis() + if not redis: + return 0 + + content_key = self._get_content_key(user_id) + all_jsons = await redis.hvals(content_key) + count = 0 + for js in all_jsons: + try: + if js: + data = json.loads(js) + if not data.get('is_read'): + count += 1 + except: + pass + return count + + async def mark_read(self, user_id: int, notification_id: str): + """标记已读""" + redis = get_redis() + if not redis: + return + + content_key = self._get_content_key(user_id) + + json_str = await redis.hget(content_key, notification_id) + if json_str: + try: + data = json.loads(json_str) + data['is_read'] = True + await redis.hset(content_key, notification_id, json.dumps(data, ensure_ascii=False)) + except: + pass + + async def mark_all_read(self, user_id: int): + """标记所有已读""" + redis = get_redis() + if not redis: + return + + order_key = self._get_order_key(user_id) + content_key = self._get_content_key(user_id) + + ids = await redis.zrange(order_key, 0, -1) + if not ids: + return + + json_strings = await redis.hmget(content_key, ids) + + updates = {} + for i, json_str in enumerate(json_strings): + if json_str: + try: + data = json.loads(json_str) + if not data.get('is_read'): + data['is_read'] = True + updates[ids[i]] = json.dumps(data, ensure_ascii=False) + except: + pass + + if updates: + await redis.hset(content_key, mapping=updates) + + async def delete_notification(self, user_id: int, notification_id: str): + redis = get_redis() + if not redis: + return + + order_key = self._get_order_key(user_id) + content_key = self._get_content_key(user_id) + + await redis.zrem(order_key, notification_id) + await redis.hdel(content_key, notification_id) + +notification_service = NotificationService() \ No newline at end of file diff --git a/backend/app/services/search_service.py b/backend/app/services/search_service.py new file mode 100644 index 0000000..b864439 --- /dev/null +++ b/backend/app/services/search_service.py @@ -0,0 +1,220 @@ +import os +import shutil +import asyncio +import logging +from pathlib import Path +from typing import List, Dict, Any, Optional +from whoosh import index +from whoosh.fields import Schema, TEXT, ID, DATETIME +from whoosh.qparser import QueryParser, MultifieldParser +from whoosh.analysis import Tokenizer, Token +from whoosh.highlight import HtmlFormatter +import jieba + +from app.core.config import settings + +logger = logging.getLogger(__name__) + +# 定义中文分词器 +class ChineseTokenizer(Tokenizer): + def __call__(self, value, positions=False, chars=False, keeporiginal=False, removestops=True, start_pos=0, start_char=0, mode='', **kwargs): + t = Token(positions, chars, removestops=removestops, mode=mode, **kwargs) + # cut_for_search returns generator, need to list if iterating repeatedly? + # Tokenizer expects yield Token. + try: + seglist = jieba.cut_for_search(value) + for w in seglist: + t.original = t.text = w + t.boost = 1.0 + if positions: + t.pos = start_pos + start_pos += 1 + if chars: + t.startchar = start_char + t.endchar = start_char + len(w) + start_char += len(w) + yield t + except Exception as e: + logger.error(f"Jieba tokenization error: {e}") + +def ChineseAnalyzer(): + return ChineseTokenizer() + +class SearchService: + def __init__(self): + # 索引存储路径 (使用配置文件中的存储根目录) + storage_root = Path(settings.STORAGE_ROOT) + # 如果是相对路径,转换为绝对路径 (相对于 backend 根目录,这里假设 settings 已经处理好或者我们手动处理) + # settings.STORAGE_ROOT 默认为 /data/... + # 本地开发时可能是 ./storage + if not storage_root.is_absolute(): + backend_dir = Path(__file__).parent.parent.parent + storage_root = (backend_dir / storage_root).resolve() + + self.index_dir = storage_root / "search_index" + + try: + self.index_dir.mkdir(parents=True, exist_ok=True) + except Exception as e: + logger.error(f"Failed to create search index directory: {e}") + + self.schema = Schema( + project_id=ID(stored=True), + path=ID(unique=True, stored=True), + title=TEXT(stored=True, analyzer=ChineseAnalyzer()), + content=TEXT(stored=True, analyzer=ChineseAnalyzer()) + ) + + self.ix = None + try: + self._load_or_create_index() + except Exception as e: + logger.error(f"Failed to initialize search index: {e}") + + def _load_or_create_index(self): + # 检查是否包含索引文件 + if index.exists_in(str(self.index_dir)): + try: + self.ix = index.open_dir(str(self.index_dir)) + except Exception as e: + logger.warning(f"Failed to open index, trying to recreate: {e}") + # 如果打开失败(例如损坏),尝试重建 + shutil.rmtree(str(self.index_dir)) + self.index_dir.mkdir(parents=True, exist_ok=True) + self.ix = index.create_in(str(self.index_dir), self.schema) + else: + self.ix = index.create_in(str(self.index_dir), self.schema) + + def _add_document_sync(self, project_id: str, path: str, title: str, content: str): + if not self.ix: + return + try: + writer = self.ix.writer() + writer.update_document( + project_id=str(project_id), + path=path, + title=title, + content=content + ) + writer.commit() + except Exception as e: + logger.error(f"Failed to add document to index: {e}") + # 如果是 LockError,可能需要清理锁? 暂时忽略 + + async def add_document(self, project_id: str, path: str, title: str, content: str): + """添加或更新文档索引 (Async)""" + loop = asyncio.get_running_loop() + await loop.run_in_executor(None, self._add_document_sync, project_id, path, title, content) + + def _delete_document_sync(self, unique_path: str): + if not self.ix: + return + try: + writer = self.ix.writer() + writer.delete_by_term('path', unique_path) + writer.commit() + except Exception as e: + logger.error(f"Failed to delete document from index: {e}") + + async def delete_document(self, project_id: str, path: str): + """删除文档索引 (Async)""" + unique_path = f"{project_id}:{path}" + loop = asyncio.get_running_loop() + await loop.run_in_executor(None, self._delete_document_sync, unique_path) + + def _delete_project_documents_sync(self, project_id: str): + if not self.ix: + return + try: + writer = self.ix.writer() + writer.delete_by_term('project_id', str(project_id)) + writer.commit() + except Exception as e: + logger.error(f"Failed to delete project documents: {e}") + + async def delete_project_documents(self, project_id: str): + """删除项目下的所有文档索引 (Async)""" + loop = asyncio.get_running_loop() + await loop.run_in_executor(None, self._delete_project_documents_sync, project_id) + + def _search_sync(self, keyword: str, project_id: Optional[str] = None, limit: int = 20): + if not keyword or not self.ix: + return [] + + try: + with self.ix.searcher() as searcher: + parser = MultifieldParser(["title", "content"], schema=self.ix.schema) + query = parser.parse(keyword) + + filter_query = None + if project_id: + filter_parser = QueryParser("project_id", schema=self.ix.schema) + filter_query = filter_parser.parse(str(project_id)) + + results = searcher.search(query, filter=filter_query, limit=limit) + results.formatter = HtmlFormatter(tagname="mark", classname="search-highlight", termclass="search-term") + + search_results = [] + for hit in results: + # 提取原始路径 (去掉 project_id 前缀) + full_path = hit.get("path", "") + if ":" in full_path: + _, real_path = full_path.split(":", 1) + else: + real_path = full_path + + # 安全获取高亮 + try: + highlights = hit.highlights("content") or hit.highlights("title") or hit.get("title", "") + except: + highlights = hit.get("title", "") + + search_results.append({ + "project_id": hit.get("project_id"), + "path": real_path, + "title": hit.get("title"), + "highlights": highlights, + "score": hit.score + }) + + return search_results + except Exception as e: + logger.error(f"Search failed: {e}") + # 返回空列表而不是抛出异常 + return [] + + async def search(self, keyword: str, project_id: Optional[str] = None, limit: int = 20): + """搜索文档 (Async)""" + loop = asyncio.get_running_loop() + return await loop.run_in_executor(None, self._search_sync, keyword, project_id, limit) + + async def update_doc(self, project_id: int, path: str, title: str, content: str): + """添加或更新文档 (对外接口)""" + unique_path = f"{project_id}:{path}" + await self.add_document(str(project_id), unique_path, title, content) + + async def remove_doc(self, project_id: int, path: str): + """删除文档 (对外接口)""" + await self.delete_document(str(project_id), path) + + def rebuild_index_sync(self, documents: List[Dict]): + """同步重建索引""" + if not self.ix: + return + + try: + writer = self.ix.writer() + # 这里的 documents 必须包含 project_id, path, title, content + for doc in documents: + unique_path = f"{doc['project_id']}:{doc['path']}" + writer.update_document( + project_id=str(doc['project_id']), + path=unique_path, + title=doc['title'], + content=doc['content'] + ) + writer.commit() + except Exception as e: + logger.error(f"Rebuild index failed: {e}") + +search_service = SearchService() diff --git a/backend/requirements.txt b/backend/requirements.txt index cdc45e7..5c21ed7 100644 --- a/backend/requirements.txt +++ b/backend/requirements.txt @@ -18,6 +18,7 @@ greenlet==3.2.4 h11==0.16.0 httptools==0.7.1 idna==3.11 +jieba==0.42.1 loguru==0.7.2 Mako==1.3.10 MarkupSafe==3.0.3 @@ -43,3 +44,4 @@ uvicorn==0.27.0 uvloop==0.22.1 watchfiles==1.1.1 websockets==15.0.1 +Whoosh==2.7.4 \ No newline at end of file diff --git a/frontend/package.json b/frontend/package.json index c2aa77e..70ee76d 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -22,9 +22,12 @@ "axios": "^1.6.2", "bytemd": "^1.22.0", "dayjs": "^1.11.10", + "github-slugger": "^2.0.0", + "mark.js": "^8.11.1", "pdfjs-dist": "5.4.296", "react": "^18.2.0", "react-dom": "^18.2.0", + "react-highlight-words": "^0.21.0", "react-markdown": "^9.0.1", "react-pdf": "^10.2.0", "react-router-dom": "^6.20.1", diff --git a/frontend/src/api/search.js b/frontend/src/api/search.js index 894b99e..7aeb037 100644 --- a/frontend/src/api/search.js +++ b/frontend/src/api/search.js @@ -5,11 +5,23 @@ import request from '@/utils/request' /** * 搜索文档 + * @param {string} keyword - 搜索关键词 + * @param {string} project_id - 项目ID (可选,限制搜索范围) */ -export function searchDocuments(keyword) { +export function searchDocuments(keyword, project_id) { return request({ url: '/search/documents', method: 'get', - params: { keyword }, + params: { keyword, project_id }, + }) +} + +/** + * 重建搜索索引 (仅管理员) + */ +export function rebuildIndex() { + return request({ + url: '/search/rebuild-index', + method: 'post', }) } diff --git a/frontend/src/components/MainLayout/AppHeader.jsx b/frontend/src/components/MainLayout/AppHeader.jsx index 48bfefe..3c22038 100644 --- a/frontend/src/components/MainLayout/AppHeader.jsx +++ b/frontend/src/components/MainLayout/AppHeader.jsx @@ -208,6 +208,7 @@ function AppHeader({ collapsed, onToggle }) {

{/* Logo 区域 */}
+ logo

NexDocus

diff --git a/frontend/src/index.css b/frontend/src/index.css index b5c61c9..b0435a7 100644 --- a/frontend/src/index.css +++ b/frontend/src/index.css @@ -1,3 +1,7 @@ -@tailwind base; -@tailwind components; -@tailwind utilities; +.search-highlight { + background-color: #ffd54f !important; + color: black !important; + font-weight: bold; + padding: 0 2px; + border-radius: 2px; +} \ No newline at end of file diff --git a/frontend/src/pages/Dashboard.jsx b/frontend/src/pages/Dashboard.jsx index 2e7b0c1..34eea89 100644 --- a/frontend/src/pages/Dashboard.jsx +++ b/frontend/src/pages/Dashboard.jsx @@ -1,11 +1,13 @@ import { useState, useEffect } from 'react' -import { Card, Row, Col, Statistic, Table, Spin } from 'antd' -import { UserOutlined, ProjectOutlined, FileTextOutlined } from '@ant-design/icons' +import { Card, Row, Col, Statistic, Table, Spin, Button, Tooltip, message } from 'antd' +import { UserOutlined, ProjectOutlined, FileTextOutlined, SyncOutlined } from '@ant-design/icons' import { getDashboardStats } from '@/api/dashboard' +import { rebuildIndex } from '@/api/search' import Toast from '@/components/Toast/Toast' function Dashboard() { const [loading, setLoading] = useState(true) + const [rebuilding, setRebuilding] = useState(false) const [stats, setStats] = useState({ user_count: 0, project_count: 0, @@ -34,6 +36,19 @@ function Dashboard() { } } + const handleRebuildIndex = async () => { + setRebuilding(true) + try { + await rebuildIndex() + message.success('索引重建任务已启动,请稍后搜索尝试') + } catch (error) { + console.error('Rebuild index error:', error) + message.error('重建索引失败: ' + (error.response?.data?.detail || error.message)) + } finally { + setRebuilding(false) + } + } + const userColumns = [ { title: '用户名', @@ -117,7 +132,23 @@ function Dashboard() { + 文档总数 + + + +
+ } value={stats.document_count} prefix={} valueStyle={{ color: '#cf1322' }} @@ -150,4 +181,4 @@ function Dashboard() { ) } -export default Dashboard +export default Dashboard \ No newline at end of file diff --git a/frontend/src/pages/Document/DocumentPage.jsx b/frontend/src/pages/Document/DocumentPage.jsx index 190d505..f353826 100644 --- a/frontend/src/pages/Document/DocumentPage.jsx +++ b/frontend/src/pages/Document/DocumentPage.jsx @@ -1,22 +1,38 @@ -import { useState, useEffect, useRef } from 'react' +import { useState, useEffect, useRef, useMemo } from 'react' import { useParams, useNavigate, useSearchParams } from 'react-router-dom' -import { Layout, Menu, Spin, FloatButton, Button, Tooltip, message, Anchor, Modal, Input, Switch, Space, Dropdown } from 'antd' -import { EditOutlined, VerticalAlignTopOutlined, ShareAltOutlined, MenuFoldOutlined, MenuUnfoldOutlined, FileTextOutlined, FolderOutlined, FilePdfOutlined, CopyOutlined, LockOutlined, CloudDownloadOutlined, CloudUploadOutlined, DownOutlined } from '@ant-design/icons' +import { Layout, Menu, Spin, FloatButton, Button, Tooltip, message, Anchor, Modal, Input, Switch, Space, Dropdown, Empty } from 'antd' +import { EditOutlined, VerticalAlignTopOutlined, ShareAltOutlined, MenuFoldOutlined, MenuUnfoldOutlined, FileTextOutlined, FolderOutlined, FilePdfOutlined, CopyOutlined, LockOutlined, CloudDownloadOutlined, CloudUploadOutlined, DownOutlined, SearchOutlined } from '@ant-design/icons' import ReactMarkdown from 'react-markdown' import remarkGfm from 'remark-gfm' import rehypeRaw from 'rehype-raw' import rehypeSlug from 'rehype-slug' import rehypeHighlight from 'rehype-highlight' import 'highlight.js/styles/github.css' +import Highlighter from 'react-highlight-words' +import GithubSlugger from 'github-slugger' import { getProjectTree, getFileContent, getDocumentUrl } from '@/api/file' import { gitPull, gitPush, getGitRepos } from '@/api/project' import { getProjectShareInfo, updateShareSettings } from '@/api/share' +import { searchDocuments } from '@/api/search' import VirtualPDFViewer from '@/components/PDFViewer/VirtualPDFViewer' import Toast from '@/components/Toast/Toast' import './DocumentPage.css' const { Sider, Content } = Layout +// 高亮渲染组件 +const HighlightText = ({ text, keyword }) => { + if (!keyword || !text) return text; + return ( + + ) +} + function DocumentPage() { const { projectId } = useParams() const navigate = useNavigate() @@ -32,13 +48,19 @@ function DocumentPage() { const [shareInfo, setShareInfo] = useState(null) const [hasPassword, setHasPassword] = useState(false) const [password, setPassword] = useState('') - const [userRole, setUserRole] = useState('viewer') // 用户角色:owner/admin/editor/viewer + const [userRole, setUserRole] = useState('viewer') const [pdfViewerVisible, setPdfViewerVisible] = useState(false) const [pdfUrl, setPdfUrl] = useState('') const [pdfFilename, setPdfFilename] = useState('') - const [viewMode, setViewMode] = useState('markdown') // 'markdown' or 'pdf' + const [viewMode, setViewMode] = useState('markdown') const [gitRepos, setGitRepos] = useState([]) const [projectName, setProjectName] = useState('') + + // 搜索相关状态 + const [searchKeyword, setSearchKeyword] = useState('') + const [matchedFilePaths, setMatchedFilePaths] = useState(new Set()) + const [isSearching, setIsSearching] = useState(false) + const contentRef = useRef(null) useEffect(() => { @@ -51,6 +73,64 @@ function DocumentPage() { } }, [projectId, userRole]) + // 处理搜索 + const handleSearch = async (value) => { + setSearchKeyword(value) + if (!value.trim()) { + setMatchedFilePaths(new Set()) + return + } + + setIsSearching(true) + try { + const res = await searchDocuments(value, projectId) + const paths = new Set(res.data.map(item => item.file_path)) + setMatchedFilePaths(paths) + + // 自动展开匹配的节点 + const keysToExpand = new Set(openKeys) + res.data.forEach(item => { + const parts = item.file_path.split('/') + let currentPath = '' + for (let i = 0; i < parts.length - 1; i++) { + currentPath = currentPath ? `${currentPath}/${parts[i]}` : parts[i] + keysToExpand.add(currentPath) + } + }) + setOpenKeys(Array.from(keysToExpand)) + } catch (error) { + console.error('Search error:', error) + } finally { + setIsSearching(false) + } + } + + // 过滤文件树 + const filteredTreeData = useMemo(() => { + if (!searchKeyword.trim()) return fileTree + + const loop = (data) => { + const result = [] + for (const node of data) { + const titleMatch = node.title.toLowerCase().includes(searchKeyword.toLowerCase()) + const contentMatch = matchedFilePaths.has(node.key) + + if (node.children) { + const children = loop(node.children) + if (children.length > 0 || titleMatch) { + result.push({ ...node, children }) + } + } else { + if (titleMatch || contentMatch) { + result.push(node) + } + } + } + return result + } + return loop(fileTree) + }, [fileTree, searchKeyword, matchedFilePaths]) + const loadGitRepos = async () => { try { const res = await getGitRepos(projectId) @@ -75,6 +155,12 @@ function DocumentPage() { // 检查 URL 是否指定了文件 const fileParam = searchParams.get('file') + const keywordParam = searchParams.get('keyword') + + if (keywordParam) { + handleSearch(keywordParam) + } + if (fileParam) { setSelectedFile(fileParam) @@ -131,6 +217,9 @@ function DocumentPage() { // 转换文件树为菜单项 const convertTreeToMenuItems = (nodes) => { return nodes.map((node) => { + // 标题高亮处理 - 取消高亮,仅显示原始标题 + const titleNode = node.title.replace('.md', '') + if (!node.isLeaf) { // 目录 return { @@ -143,7 +232,7 @@ function DocumentPage() { // Markdown 文件 return { key: node.key, - label: node.title.replace('.md', ''), + label: titleNode, icon: , } } else if (node.title && node.title.endsWith('.pdf')) { @@ -181,6 +270,7 @@ function DocumentPage() { // 提取 markdown 标题生成目录 useEffect(() => { if (markdownContent) { + const slugger = new GithubSlugger() const headings = [] const lines = markdownContent.split('\n') @@ -189,15 +279,8 @@ function DocumentPage() { if (match) { const level = match[1].length const title = match[2] - // 模拟 rehype-slug/github-slugger 的 ID 生成规则 - const key = title - .toLowerCase() - .trim() - .replace(/\s+/g, '-') // 空格转连字符 - .replace(/[^\w\-\u4e00-\u9fa5]+/g, '') // 移除非单词字符(保留中文、数字、字母、下划线、连字符) - .replace(/\-\-+/g, '-') // 合并重复连字符 - .replace(/^-+/, '') // 去除头部连字符 - .replace(/-+$/, '') // 去除尾部连字符 + // 使用标准的 github-slugger 生成 ID,确保与 rehype-slug 一致 + const key = slugger.slug(title) headings.push({ key: `#${key}`, @@ -586,7 +669,81 @@ function DocumentPage() { } } - const menuItems = convertTreeToMenuItems(fileTree) + const menuItems = convertTreeToMenuItems(filteredTreeData) + + // Markdown 内容高亮处理 + // 使用 components 替换文本节点,但这只对直接文本子节点有效 + // 对于深层嵌套,我们需要递归或使用 rehype 插件 + // 这里使用简单组件替换 + const markdownComponents = useMemo(() => { + if (!searchKeyword) { + return { + a: ({ node, href, children, ...props }) => { + const isExternal = href && (href.startsWith('http') || href.startsWith('//')); + return ( +
handleMarkdownLink(e, href)} + target={isExternal ? '_blank' : undefined} + rel={isExternal ? 'noopener noreferrer' : undefined} + {...props} + > + {children} + + ); + }, + } + } + + // 搜索模式下,尝试高亮 + // 注意:这可能不完美,但比没有好 + const highlightRenderer = (Tag) => ({ node, children, ...props }) => { + // 如果 children 是字符串,高亮 + if (typeof children === 'string') { + return + } + // 如果是数组,遍历 + if (Array.isArray(children)) { + const newChildren = children.map((child, idx) => { + if (typeof child === 'string') { + return + } + return child + }) + return {newChildren} + } + return {children} + } + + return { + a: ({ node, href, children, ...props }) => { + const isExternal = href && (href.startsWith('http') || href.startsWith('//')); + return ( + handleMarkdownLink(e, href)} + target={isExternal ? '_blank' : undefined} + rel={isExternal ? 'noopener noreferrer' : undefined} + {...props} + > + {typeof children === 'string' ? : children} + + ); + }, + p: highlightRenderer('p'), + li: highlightRenderer('li'), + h1: highlightRenderer('h1'), + h2: highlightRenderer('h2'), + h3: highlightRenderer('h3'), + h4: highlightRenderer('h4'), + h5: highlightRenderer('h5'), + h6: highlightRenderer('h6'), + span: highlightRenderer('span'), + td: highlightRenderer('td'), + th: highlightRenderer('th'), + div: highlightRenderer('div'), + } + }, [searchKeyword]) return (
@@ -623,15 +780,34 @@ function DocumentPage() {
- + {/* 搜索框 */} +
+ setSearchKeyword(e.target.value)} + onSearch={handleSearch} + loading={isSearching} + enterButton + /> +
+ + {filteredTreeData.length > 0 ? ( + + ) : ( +
+ +
+ )} {/* 右侧内容区 */} @@ -654,22 +830,7 @@ function DocumentPage() { { - const isExternal = href && (href.startsWith('http') || href.startsWith('//')); - return ( - handleMarkdownLink(e, href)} - target={isExternal ? '_blank' : undefined} - rel={isExternal ? 'noopener noreferrer' : undefined} - {...props} - > - {children} - - ); - }, - }} + components={markdownComponents} > {markdownContent} @@ -716,7 +877,7 @@ function DocumentPage() { title: (
- {item.title} +
), }))} @@ -743,6 +904,7 @@ function DocumentPage() { {/* 分享模态框 */} + {/* ... keeping the modal ... */}

- 团队协作 -
- 文档管理平台 + 团队协作 文档管理平台

- 全流程文档共享,提升团队协作效率的新一代解决方案。 + 全流程文档协作共享,让每一份文档都产生价值。

diff --git a/frontend/src/pages/Preview/PreviewPage.jsx b/frontend/src/pages/Preview/PreviewPage.jsx index 4b51759..c20149a 100644 --- a/frontend/src/pages/Preview/PreviewPage.jsx +++ b/frontend/src/pages/Preview/PreviewPage.jsx @@ -1,7 +1,7 @@ import { useState, useEffect, useRef, useMemo } from 'react' -import { useParams } from 'react-router-dom' -import { Layout, Menu, Spin, FloatButton, Button, Modal, Input, message, Drawer, Anchor } from 'antd' -import { VerticalAlignTopOutlined, MenuOutlined, MenuFoldOutlined, MenuUnfoldOutlined, FileTextOutlined, FolderOutlined, FilePdfOutlined, LockOutlined } from '@ant-design/icons' +import { useParams, useSearchParams } from 'react-router-dom' +import { Layout, Menu, Spin, FloatButton, Button, Modal, Input, message, Drawer, Anchor, Empty } from 'antd' +import { VerticalAlignTopOutlined, MenuOutlined, MenuFoldOutlined, MenuUnfoldOutlined, FileTextOutlined, FolderOutlined, FilePdfOutlined, LockOutlined, SearchOutlined } from '@ant-design/icons' import { Viewer } from '@bytemd/react' import gfm from '@bytemd/plugin-gfm' import highlight from '@bytemd/plugin-highlight' @@ -11,14 +11,32 @@ import gemoji from '@bytemd/plugin-gemoji' import 'bytemd/dist/index.css' import rehypeSlug from 'rehype-slug' import 'highlight.js/styles/github.css' +import Mark from 'mark.js' +import Highlighter from 'react-highlight-words' +import GithubSlugger from 'github-slugger' import { getPreviewInfo, getPreviewTree, getPreviewFile, verifyAccessPassword, getPreviewDocumentUrl } from '@/api/share' +import { searchDocuments } from '@/api/search' import VirtualPDFViewer from '@/components/PDFViewer/VirtualPDFViewer' import './PreviewPage.css' const { Sider, Content } = Layout +// 高亮组件 (用于 Tree) +const HighlightText = ({ text, keyword }) => { + if (!keyword || !text) return text; + return ( + + ) +} + function PreviewPage() { const { projectId } = useParams() + const [searchParams] = useSearchParams() const [projectInfo, setProjectInfo] = useState(null) const [fileTree, setFileTree] = useState([]) const [selectedFile, setSelectedFile] = useState('') @@ -29,15 +47,22 @@ function PreviewPage() { const [tocItems, setTocItems] = useState([]) const [passwordModalVisible, setPasswordModalVisible] = useState(false) const [password, setPassword] = useState('') - const [accessPassword, setAccessPassword] = useState(null) // 已验证的密码 + const [accessPassword, setAccessPassword] = useState(null) const [siderCollapsed, setSiderCollapsed] = useState(false) const [mobileDrawerVisible, setMobileDrawerVisible] = useState(false) const [isMobile, setIsMobile] = useState(false) const [pdfViewerVisible, setPdfViewerVisible] = useState(false) const [pdfUrl, setPdfUrl] = useState('') const [pdfFilename, setPdfFilename] = useState('') - const [viewMode, setViewMode] = useState('markdown') // 'markdown' or 'pdf' + const [viewMode, setViewMode] = useState('markdown') + + // 搜索相关 + const [searchKeyword, setSearchKeyword] = useState('') + const [matchedFilePaths, setMatchedFilePaths] = useState(new Set()) + const [isSearching, setIsSearching] = useState(false) + const contentRef = useRef(null) + const viewerRef = useRef(null) // ByteMD 插件配置 const plugins = useMemo(() => [ @@ -51,6 +76,22 @@ function PreviewPage() { } ], []) + // mark.js 高亮 + useEffect(() => { + if (viewerRef.current && viewMode === 'markdown') { + const instance = new Mark(viewerRef.current) + instance.unmark() + + if (searchKeyword.trim()) { + instance.mark(searchKeyword, { + element: 'span', + className: 'search-highlight', + exclude: ['pre', 'code', '.toc-content'] + }) + } + } + }, [markdownContent, searchKeyword, viewMode]) + // 检测是否为移动设备 useEffect(() => { const checkMobile = () => { @@ -73,10 +114,8 @@ function PreviewPage() { setProjectInfo(info) if (info.has_password) { - // 需要密码验证 setPasswordModalVisible(true) } else { - // 无需密码,直接加载文档树 loadFileTree() } } catch (error) { @@ -110,9 +149,52 @@ function PreviewPage() { const tree = res.data || [] setFileTree(tree) - // 默认打开 README.md const readmeNode = findReadme(tree) - if (readmeNode) { + + // Check query params + const fileParam = searchParams.get('file') + const keywordParam = searchParams.get('keyword') + + if (keywordParam) { + handleSearch(keywordParam) + } + + if (fileParam) { + // Deep link to file + if (fileParam.toLowerCase().endsWith('.pdf')) { + let url = getPreviewDocumentUrl(projectId, fileParam) + // ... params logic repeated from handleMenuClick ... + // Simplify: just call logic or set state + // Since we need token/password logic, let's reuse handleMenuClick logic if possible or copy it. + // For simplicity, just set selection and let user click? No, auto load. + + // Copy logic for PDF url construction + const params = [] + if (pwd || accessPassword) params.push(`access_pass=${encodeURIComponent(pwd || accessPassword)}`) + const token = localStorage.getItem('access_token') + if (token) params.push(`token=${encodeURIComponent(token)}`) + if (params.length > 0) url += `?${params.join('&')}` + + setSelectedFile(fileParam) + setPdfUrl(url) + setPdfFilename(fileParam.split('/').pop()) + setViewMode('pdf') + } else { + setSelectedFile(fileParam) + loadMarkdown(fileParam, pwd || accessPassword) + } + + // Expand tree to file + const parts = fileParam.split('/') + const allParentPaths = [] + let currentPath = '' + for (let i = 0; i < parts.length - 1; i++) { + currentPath = currentPath ? `${currentPath}/${parts[i]}` : parts[i] + allParentPaths.push(currentPath) + } + setOpenKeys(prev => [...new Set([...prev, ...allParentPaths])]) + + } else if (readmeNode) { setSelectedFile(readmeNode.key) loadMarkdown(readmeNode.key, pwd || accessPassword) } @@ -125,7 +207,64 @@ function PreviewPage() { } } - // 查找根目录的 README.md + // 搜索处理 + const handleSearch = async (value) => { + setSearchKeyword(value) + if (!value.trim()) { + setMatchedFilePaths(new Set()) + return + } + + setIsSearching(true) + try { + const res = await searchDocuments(value, projectId) + const paths = new Set(res.data.map(item => item.file_path)) + setMatchedFilePaths(paths) + + // 自动展开匹配的节点 (Assuming this comment might be there or not, better context: keysToExpand) + const keysToExpand = new Set(openKeys) + res.data.forEach(item => { + const parts = item.file_path.split('/') + let currentPath = '' + for (let i = 0; i < parts.length - 1; i++) { + currentPath = currentPath ? `${currentPath}/${parts[i]}` : parts[i] + keysToExpand.add(currentPath) + } + }) + setOpenKeys(Array.from(keysToExpand)) + } catch (error) { + console.error('Search error:', error) + } finally { + setIsSearching(false) + } + } + + // 过滤树 + const filteredTreeData = useMemo(() => { + if (!searchKeyword.trim()) return fileTree + + const loop = (data) => { + const result = [] + for (const node of data) { + const titleMatch = node.title.toLowerCase().includes(searchKeyword.toLowerCase()) + const contentMatch = matchedFilePaths.has(node.key) + + if (node.children) { + const children = loop(node.children) + if (children.length > 0 || titleMatch) { + result.push({ ...node, children }) + } + } else { + if (titleMatch || contentMatch) { + result.push(node) + } + } + } + return result + } + return loop(fileTree) + }, [fileTree, searchKeyword, matchedFilePaths]) + const findReadme = (nodes) => { for (const node of nodes) { if (node.title === 'README.md' && node.isLeaf) { @@ -135,9 +274,10 @@ function PreviewPage() { return null } - // 转换文件树为菜单项 const convertTreeToMenuItems = (nodes) => { return nodes.map((node) => { + const labelNode = node.title.replace('.md', '') + if (!node.isLeaf) { return { key: node.key, @@ -148,7 +288,7 @@ function PreviewPage() { } else if (node.title && node.title.endsWith('.md')) { return { key: node.key, - label: node.title.replace('.md', ''), + label: labelNode, icon: , } } else if (node.title && node.title.endsWith('.pdf')) { @@ -162,7 +302,6 @@ function PreviewPage() { }).filter(Boolean) } - // 加载 markdown 文件 const loadMarkdown = async (filePath, pwd = null) => { setLoading(true) setTocItems([]) @@ -170,12 +309,10 @@ function PreviewPage() { const res = await getPreviewFile(projectId, filePath, pwd || accessPassword) setMarkdownContent(res.data?.content || '') - // 移动端自动关闭侧边栏 if (isMobile) { setMobileDrawerVisible(false) } - // 滚动到顶部 if (contentRef.current) { contentRef.current.scrollTo({ top: 0, behavior: 'smooth' }) } @@ -192,9 +329,9 @@ function PreviewPage() { } } - // 提取 markdown 标题生成目录 useEffect(() => { if (markdownContent) { + const slugger = new GithubSlugger() const headings = [] const lines = markdownContent.split('\n') @@ -203,7 +340,8 @@ function PreviewPage() { if (match) { const level = match[1].length const title = match[2] - const key = title.toLowerCase().replace(/[^a-z0-9\u4e00-\u9fa5]+/g, '-') + // 使用标准的 github-slugger 生成 ID,确保与 rehype-slug 一致 + const key = slugger.slug(title) headings.push({ key: `#${key}`, @@ -217,7 +355,7 @@ function PreviewPage() { setTocItems(headings) } }, [markdownContent]) - // 解析相对路径 + const resolveRelativePath = (currentPath, relativePath) => { if (relativePath.startsWith('/')) { return relativePath.substring(1) @@ -240,7 +378,6 @@ function PreviewPage() { return dirParts.join('/') } - // 处理 markdown 内部链接点击 const handleMarkdownLink = (e, href) => { if (!href || href.startsWith('http') || href.startsWith('//') || href.startsWith('#')) { return @@ -257,7 +394,6 @@ function PreviewPage() { try { decodedHref = decodeURIComponent(href) } catch (err) { - // ignore } const targetPath = resolveRelativePath(selectedFile, decodedHref) @@ -278,7 +414,6 @@ function PreviewPage() { handleMenuClick({ key: targetPath }) } - // 处理内容区域点击(委托处理链接点击) const handleContentClick = (e) => { const target = e.target.closest('a') if (target) { @@ -289,22 +424,17 @@ function PreviewPage() { } } - // 处理菜单点击 const handleMenuClick = ({ key }) => { setSelectedFile(key) - // 检查是否是PDF文件 if (key.toLowerCase().endsWith('.pdf')) { - // 显示PDF - 使用预览API,添加必要的参数 let url = getPreviewDocumentUrl(projectId, key) const params = [] - // 如果有密码,添加密码参数 if (accessPassword) { params.push(`access_pass=${encodeURIComponent(accessPassword)}`) } - // 如果用户已登录(私密项目需要),添加token参数 const token = localStorage.getItem('access_token') if (token) { params.push(`token=${encodeURIComponent(token)}`) @@ -318,39 +448,16 @@ function PreviewPage() { setPdfFilename(key.split('/').pop()) setViewMode('pdf') } else { - // 加载Markdown文件 setViewMode('markdown') loadMarkdown(key) } } - const menuItems = convertTreeToMenuItems(fileTree) - - // 侧边栏内容 - const SiderContent = () => ( - <> -
-

{projectInfo?.name || '项目预览'}

- {projectInfo?.description && ( -

{projectInfo.description}

- )} -
- - - ) + const menuItems = convertTreeToMenuItems(filteredTreeData) return (
- {/* 移动端使用 Drawer,桌面端使用 Sider */} {isMobile ? ( <>
+ } placement="left" onClose={() => setMobileDrawerVisible(false)} open={mobileDrawerVisible} width="80%" > - +
+ {projectInfo?.description && ( +

{projectInfo.description}

+ )} +
+ + {/* 搜索框 */} +
+ setSearchKeyword(e.target.value)} + onSearch={handleSearch} + loading={isSearching} + enterButton + /> +
+ + {filteredTreeData.length > 0 ? ( + + ) : ( +
+ +
+ )} ) : ( @@ -387,11 +524,47 @@ function PreviewPage() { collapsed={siderCollapsed} collapsedWidth={0} > - +
+
+ logo +

{projectInfo?.name || '项目预览'}

+
+ {projectInfo?.description && ( +

{projectInfo.description}

+ )} +
+ + {/* 搜索框 */} +
+ setSearchKeyword(e.target.value)} + onSearch={handleSearch} + loading={isSearching} + enterButton + /> +
+ + {filteredTreeData.length > 0 ? ( + + ) : ( +
+ +
+ )} )} - {/* 右侧内容区 */}
@@ -407,7 +580,7 @@ function PreviewPage() { filename={pdfFilename} /> ) : ( -
+
- {/* 返回顶部按钮 - 仅在markdown模式显示 */} {viewMode === 'markdown' && ( } @@ -431,7 +603,6 @@ function PreviewPage() { )} - {/* 右侧TOC面板(仅桌面端且markdown模式显示) */} {!isMobile && viewMode === 'markdown' && !tocCollapsed && (
@@ -455,7 +626,7 @@ function PreviewPage() { title: (
- {item.title} +
), }))} @@ -468,7 +639,6 @@ function PreviewPage() { )} - {/* TOC展开按钮(仅桌面端) */} {!isMobile && tocCollapsed && (