From 0c6d69d83050133e4c9d4c0937ce664b8b5db128 Mon Sep 17 00:00:00 2001 From: ParthK1509 <118538801+ParthK1509@users.noreply.github.com> Date: Fri, 21 Mar 2025 23:54:39 +0530 Subject: [PATCH] parser --- parsing.cpp | 47 +++++++++++++++++++++ parsing.exe | Bin 0 -> 199737 bytes src/App.jsx | 91 ++++++++++++++++++++++++++++++++++++++-- src/MCQQuizPage.jsx | 100 ++++++++++++++++++++++++++++++++++++++++++++ src/RoadmapPage.jsx | 50 ++++++++++++++++++++++ 5 files changed, 284 insertions(+), 4 deletions(-) create mode 100644 parsing.cpp create mode 100644 parsing.exe create mode 100644 src/MCQQuizPage.jsx create mode 100644 src/RoadmapPage.jsx diff --git a/parsing.cpp b/parsing.cpp new file mode 100644 index 0000000..4d29476 --- /dev/null +++ b/parsing.cpp @@ -0,0 +1,47 @@ +#include +using namespace std; + +int main() +{ + string s; + cin>>s; + int n = s.length(); + int i = 0; + pair, vector> parsed; + while(s[i] != ':') + { + i++; + } + vector prereq; + vector subtopics; + cout<<"Prereq: "<Y)`oWgz{|J&2{ zD)!%=R^Q&?wRn1a+In4GmS$IXcaP7~J?pByCfw2iTpCxKE3)o69^}}gEn+|B^kxCT;XQYv_yyMC2&>fH` zRh%N2E%v$leF*3;#)A~1yho-Bv=M)cTU$ zf-8rM_?05&VvpeCc|=~B5pI116TGFw*Dv_4C!Gf1h;IX2#IKb2n!H{j4Um4rBqEdAzJgz>@}dDO|*_l=v!Y>xtAzk5M?vZ!cWLuax+FojhGCIyMeRd{m$jzf$7s z_4YP{#_RSlJd~f!a1p;!%15uevj>d4t|t&k@~(_vg0~bUde%}&cAU=(~7z#_niUnx&_8K>Nu4R9FYa{z0n;9ItW z^BLm_AQNa`%rgbwiUQ8}C(5T856Z{3Dfo(oes8BE+ycHCfM1@1uSBH#47H_F@KOEV zGzDK_;Sz+fn<=OfeE4H`9nVKRU;IA*64>9`y4W;#2N!IbTgq&MZ{^tn`kT?{3ZFQ@ zs3L&g0yKntGZOiB6%SG6 z20LJ~!M|pa;PiijBQVWx4n8gL->Nu`1CUS+@q@*R&rvvP8+E^K`9iW)z4uAsL$=^p> z!K73K3)!Z*l}N1Lhp44stPBhUd0gwxQHs0>wANviPciiBLtOii{*P$swxRUrIY>SP z5MX}&J%k4Iso<#$7;QuPZxg{^nPUllClkFQa#Fls>QPqTaKVN;NVV7k**(auEs#HO zBXpW{+XA{=YLvEs$9Qz6s&~obrX6i4golD!jM)ES^B_RNz61K{(1XfP2HWA^IceJA286z@S^^A`d`Z^A(TAzB3ZIx9 z585zxpuAiVJ(>RE*9l4gIWZ3<|N5VklQzF5_?_7(%L3F{Ap6;?7#q4mu{BTH#@^7{ z{2v7mBhVhm{V4)${@?6;(R9NaN^$UQW8sTcfuyY9gR@AON3r?e3EmIpD*ptEE1OjX z(z0y+G27sNWAJj&Z6&Yt{m!PmZ98CqZV;Bg2{MCwfkFSDo=?f>%Rvex+bOXCv-?Te z6~xtqGy};Q@cQ*L@Z9-?X~*MK80n0#XMH}@i{;`=otw%o+25+R2^8rO$bA%%WwGtN z`?JZ(hp2lFzMT;w{v1T4^fGu+RF4A$w<1>u;;0l+$UDCc1{m5`v`4-UUr2s%I=BM* zofujolMl5?$o!Fzc_YAqIMO3H7jcfPATh%>|A8a_37>x~xByhLPinuvai|S8_$^e? zFxgxlYz~R=@ZCHdvRH82apA$|XOcF@l*~~cZ8+kGI;WB3$aB0Ym9qU2VdQP7vu%H? zn5uW^o}2-aKMNzQZOB@HiVXe@ql)nFgOUR^z(DN}QOAOd^r)YmcOl||o%i5LKbt>D zY~Mc}jovWG$x46&Tl2Uo`U(g!J-}A2G~GP9W3=xO=!YrRnP>7ON69~z`}M|kB$G5q zks8F21~9aMK8aKI1#bf7$aJ0$>!mjT&JpN=QXFcy6oN;p{75(biSu}@;NC?%39v!` zdEh&`_&D`mLTiP3rbkHO5#rnj%84>_pWt4V-*@(Ll5Uh?MZWnWY;Y8fEmRI(8N9$} z*h|K8RKFKbwqw+^vki47Qm4F6!z_>V&>(`yyO~q=1#ctDP{W8?gtwhRxRq<2g|OpP znuL*4*`GkA!!mdZmA(tpJ#n4>P(}>bseVHhX-oRoR+DcmcpjL9{tiyr7d!;YktdL8 zDD6bu(HxG~os)7Q>Mohf84G^8P-PnndMs1dokge-QFqj;PgHmBqSUD{@`WM(RFoWP zJYp9b50hDOYx^#z>r991_&$SvMKNdyDm-vuOQM+f zT;)GVac?+_%Wae`=oMrT>Hr-J-U0tFQ7}Z{Y0k^z{=*bFgZ!e^T_NJ|<~tXu`VSo$ zqFDa@h{#R81byM~(G`L+LeW12!_oPIfC_*-&XN|v@*J^XbRa3CTpwX%hsl2{{31~3 z@FAkB%v_OMxCV!aH;@Wtwm(K)&c&Pd4^QU)3F-|4J}KeD65cK0ww@G-JgcnJ8o`fqUTqxlz2@@pz zI3UyKFf?9?{yld&N=1z2^Z2}GavTO|BI=OCXbY4YZT@sdD4#db;D8~i5=%Ooi(mvv zpH7`yK;s`9JT~bo+4+Re;y*ZeM6nHJ?XxX7XdCkFJ4W-b$?3MiqeffFKlpprwhC2IYv^2<7)bqav#1AN&Nv zV^m1={5m#2T)%!(sxPP1lzL^3qtcXGnbSB}5@-6#Z&3&V6nOe2YoJN9?ix(4Cl9Oh zz@h9?OtasuG?~jR@0!e8Gw}G5*%tVcQOvTvXcq{Dw1O%>M#JG|0O5cq13r8Ul8lY7BQ6N+v520F)-V#nX9)gZu8^&Ki_z^EEi?1JsvP%$t zq&bW$gx8T}3}x4me=Sw4{Jr>Ebp7)3D7N{ZvJF+{Y~)$7`Rj8w+A)1@wEOKj?KF|j z3*KaAtZXmlgzRB57T8`bL|36h_yIy}0bfp@D2K}l_5X?Ic_MgkGG-*lKpK|%i^;dc z*1YUmFEKu~^8?cjGa(Yqr5_Y);S;vO(TtFN*)gXq+21?e7H}8?wZk;iO`Cl)rQly@tn$BL^VgXt z)6NJ`cK!Q;Ef}b&ehWW1avD`-Kz|XU1}?zzCOHEv_CRGuM(`YP zQDF}y|Fr^nIt%D<)B=+=lwDA^p{${-UKG5|Hq@C@S{caIL7H{vUwt!eLvAB0Z`B%UUu$0;Xa6o?_ z;?U2w;4!i%j2-$rK(b?4S#St5T*H@#1L(kxC7QmbMV$wolII`Uph-Z~@t z3DeFSX^bA+pJXpNY8u>tGO!1heTJNuJqrKiQMc&N20t>Ic07+H2R|~Kb~+Hp^x%r^ zua1J!3e)mGO{TT|ceL4RTkyDD`Q6TE`=;5pf5rwTC$DtFLz}QyUqZ_!7bfPd{uQA# ze-9Y}Ez}8Ip|dL!rU#z12aI;*!@-X%rX5L;yZM^Ik4jBDU*y)i!vA}b!1ljT;-;PD zMBe#9|4(dww0r-PRsLhBryQ!MuY4L>7h|EkvmKl$0RO(kI-_aldsL^$_mMwSZJHjC zxhdU&+{`DL$PEf0lp7Oe0x4d7t8MVJfh)g`tWfmejYy>Qx)oG>*DON>QC@-c6c4Sw zOgCsLoxrkh3}V&!qHXA^Pi4QWf2RkDD2FNoFpyDSGFl$mh7BhB(c~Y?1|Ng9@6W3| zJNI$0T{(W_S12{ueL$+Y^MkFvDn8GlTC&IgIizQnz2q~~*WRX7_af+O3b$c(eZxyc zLizvY6D+G%9Jvx`xDTg*g9xx8q=^`1C7O27dhAFg9zt(P_kHu|{k&fc@x4rZZ>W6S znvBpH*0iS_wWFW?-0%ZB&uz78LDmkW28Tn{81_V zkHJq}D#pi+Xq><4hP|26{y<|^E=GnOIRmH?be|U65IxYP=9yCKa|$pDROXaUj?)5h zBaMIlWIy5_(IwIBVt80?O{4}i=o|fG+y8=6vTXmTqGBzK?or5Gjk(z9mbI%f3mM() z(qkMrcko!e=_}tr7)G5eC>k+#vBGB`G9o0n1Fe;on5G@)kPT5|Q^*t0FGTXBb|1P> zC}p|WHhDN){;Ty!$FyTNWNdC;4N;@MMXR#``W}O59f@8L68#M608u~U0h8mf3##hL zqq9T(`3L1XwCxo{{44L@MtPd(I(Hy4vWFHtVA|P24Ah^h`aec}JL$iZ_KNrzBr^76 z1RVWlNIv+X4h!BS`F#s1uRGEZi3d!M^IfSBKNkXGeMl;g-hk*w!YT25mJyA1r6N+# z2Q7HlF<97i1fc%H`%CtrTvHeIeSeuu|KMsW>g-oKseE4aEyt$Q^Z_ER{wqSL90G~7 zxAger^XM{s$rushZGj3*8sDLbU#;IcwzA^6We6&Uc{A~Spj_jvi;B4{C`B; z1ir&Ydn@}N#+C^an|KdVKaK?eDrkw#@4-m2teYZX^nYhEy^gD>UqveV-?90#i@2`> zW0V6yNADRtIC=C(a()-kXHm?jkXDM=&BNS9w8NognL@;5I^!afk6cc2* zZD>wVU^eCl0j1=SEl_6eJ8Hw^a*oYkZVqO19ih%k*gA`l44w4fhn%A?M-6YKjJFp| zE=@arhKz10fF$fmeHpA&?T>(VK;H=rwjP=$S}qRnH(_qu_XhSoc?93f!BuGSNBLo&);VFGJe+9nilf zeUs@gV@7eL6DAY9{Da9!b^Z#)g1<9DI_E;GxO|tvP>?QkpjanNf;!pM_(xl5?a_4gJiJrgcV6rEerVKJj=khG+t4NE40z&NQFG-(<g_VqgQaP<1;4Kvs$>~fAaT5OmX-}Upj+CFD4p@VuziT~*=H{q zL-}B(SMvMbdm_sR9c&e)|HPD=_VNCMa=su*=~ zZC@E(&#l|HQJGGd9xSJdEvJgrh>BgLs*b7cI4YLg#RsKlSbXu+EPrjIWhScBRenj+wxnw11&W}ye%g1rW-HAc)b@J5!?v2WY#?sDFhUkd#eAliYlXKbv~%Zwvha!EPxw?EFHv|n))0Jc zh=<_duUaT4SS`}}4GYHN;1wc{Ek=H93x242wbfYC#FqtDiuCHHPEX9|{7(gciRe2=`Q9*E$$l~G;qB{*VoZ68 znNLT16-NT#i)ev7zW*t)wl*QGjBhTuS5RL#7VN@s_0S~jGT4l;VaOYNYwG&pQ?lqP zI*fSG!xq`%X}QIiHyCnQWH^CM`$OSE z|KsCR1Iwdb5erm?Yk>J%0rCEej5I*GrX9TCjU2_+2Kpv!Z;ji=jv-&zdkrg#qQLvO z6UjR*THZ7%58GKckA?(=^yS(^o?8AQe^F^s$w!7$Ajb#aDvhYK4AOonPYs3dZ#ZW2 zTPKh!f^}wr05W8WQdd;3!2iYMrd;aDj!oLc2L9;>#^Qx zD&;|Nko-is6M28l)sdnGllF>ebVU!RUhclk4~QSncx%b$1IUaNc}l~@RjNG;?YOB zHdBNiYylm`29ChSXv+fGKVf`o<3}@9_G@Ss0U?*A0S;QtqFtSB&FFiXrU6n+RQXXG z8@wum`4$KvypA%2xixT;E8B~T;9~!wMYkkhmO`3Zz*1gmg#98bk%FjhBJEbycNzv@ z(rXI)Rr@1e5L_0?n2;uqJpPde&j>B3Cd4l)e^K$rf+LiLm}s&3qj6Y7nNS;v%?hfG zvQiBv%16FOyoK^|d}g4Ml#hsNpDg-iswofI33af3>_H7(+3U-!Z>#j zju)vs74Z9LrF&d$M)!9%v6at794MvbA(DW&1Enxs6d)-S$`219vdZ(X`9ty5_9(|d zt~Ydapbbx1ek#ArTYm)K6yrmv{|qz~P*Ht^R*NL^kQY?*STLTpB(Px;>Q&pR@4z$= zVgLMxP$4u5McD_XuhvjxABC8_poD=)n=2PR60Bk@7#E?j+7hDLL&*NPeUqYNhxPoN z0E`3zl3zW(Xt)5WA2KTJSH?%GXqSAm5EZXQ=beF}!t}r>c5&!@iEmaY&_ID+eehXq zjRs%G16hGpQ}ScMA>dRcYIhQ|+mwZ~GYNJR-BM(E96#QR z`rHH&V&V{wS0+?6v~NK@IF;7WMzVZf-EXFZf?q*!R84_@Wrqzo$L_AvVt{gE($ z9GNRh1yODm(J?%T6!j6olGLlF5LL`l9|yOWuzg_0!ZRR7hGW#51E1jCX^0CwsNZ@B zy$YP@g+8NdL`%T?Iys0&JV9m(fg)hXl>z*9f70tet{akWZuJZVMHzb9Z0AP zXy7Ofg_~r?$AT_o4)2deLXTmGjH+~F#9W6gM!pH${?;hN&q7PUZ{=zMGx;G>}vv$il~9=QE=}C_g><@U2ucm zum?N{Yq$&HBeuXMz&|}?K{kUwq-ys+UiK>t^N@{D#B8FN)GXf#9(WlwF>E_v9Y;7Z z@a(*U6BX3!4v9S6NO_tK0qc&x`mpzob;~BIxY&T zj0Jyvlotv3#)4yfnE}(O=Gl?;@DzF)>PYB-L)j(Kg-!hltxqGyPbgqU9x_PaD5_8n zE3$ULFJ2h5Q|UFLl8`c$-lhUkC^%n61y6m=ko6f^C=;@<2%>Y$#`9!3KmX{t#X>nKrNBBRldIUR0(WqN10J8;o0oQgp@H1Pj7^`+05`yzP$@A%oYlC^H?Gi0LxMbj&k_Wd$EVl<;s7PT)?W%Mtip zIRZCEwV4Kf;Hn_1z#}G%7D~UJq@ceDoAISY8N4cw;nv5Hemt8h1@-wy;u971-rGD* z9?qvatKozu}4-AYO!k9 zWJ69Phu30COG`5y(KWS0&!cl=Iw38Ogz6m&7R#jRg>`Hf!|hAj7U^{y&dW2T9LldD zkIEBsxME};%8msO^6`h-I=AVEI2xKt-OY!khTd zy0VOf{(|cg@&kpZvT7_Epq&jvXH)+&rs2w2CyZ%&l?9)2H*EIPt6ZT zM4@Q^iXTiCY`(olnSaJL6f=HPJqmw5L${p+1lY(N`D1dXJlLoM?S6%(*Mn zLb*9z%27Vt(IH;cW!41MIUnx$9!seIfh~)Iqq&aU{G#?5IUkY*i+9E*wU8n5`@fG+ zGg98Ln!j*;W>A?%{*D}dicB)}gTnk*YGb9a+t5#?hX`MI{;wzj&%dZAs<%i*(KSW= zV#7xkM%Vjj4DR{52=AA$ago4BBxGj_yg=du5;seD&>_N~mT+7`vb6yZV}F(SVF?|T z^~_OM&&*QZgp?DNiT{TYN3Xlr{iT%_#=Lz^z8+6UvzHLo9`t9X;Ka*4~~jOLt#qrv)E-pf5aZc6D~Nu+8pfUr+DKmCkBsuiMp$+w;zjZm+x7 z#}xcdRK$m8iTXTIIPUWEe#9tY=di$wNB>1UDX^@!t*^`7?X$G>bh+>i3U_aBPp>7f zvZlJMYW)Hh3icwOeVwk}4&PQwUR~8%gz;a^W_NFEXU`T(udBPwtwyieV69zaueo3W zbGUka9j;DGXOGuw>1nliJKDNCT08LVi)Oba&tb2rtK*XDdweJ4st<87R^N`#Ww^b4 zojxjEUr&$4+l9h}kAFzR?Li>2<8HC!HLR~xwP@(Ryt`+M%pKR;+2!)JBeQu6R$6ks z^!1HgZ(eTOB1>-D0*fWD*X={Ctpu zAMx;Ybh$09u8z*WUiV5w#ILNS1sZuRxgJZqi_F2&(dBA$=X+rdFcxO9Z0P9q^|?CF z?{oKV<&mL#E9xM(#nQCZ=k{7$K8q_Pg$u{i_g{D=JuiF5VXj$wZq-nLI^5^+Dab;dsIax9+{ksb)H8BZ4V&%*TJdf zqSk`29UYECZc*~vWAK(3yfFr6G5BZ}cE(!@stoVx=Xo*1frCk)^z^1Kmc`R!eo=g>^;r9iGe3au!$$mn<$? zTp()b3;r+4=L>uIqP=|4Kb%^BsE%_qp~YCq%q@(S!jEwjA2Jhu`2Oeoa5P1MV*|(w z;Nnz#`U(C5z^!me@DBiv<0w}e`~?3KE(iVzz+{}ps)XMRm;=`We*xesxK8*>0n6Y# z@H+sX$zbdy_{Z@foCJKZqdvJF6M*#1DbHKj`@D;dv__1bSuGx%T z0>1~)3)c=m#!A+og>=aeI0&}`{$aq6;I4z8VXwLgbEKQ#r@7K^PeVHJj{~O6!<`)X z&45{Oqwre*Up}3&$KXE<=*VI0Y4`~~3ilHHqkv_(*oP!KVEKH;-XlNYm2jWJKL9um z$F3Ey>kO1L{2sswI5YeN&&WeL!(RY+2V4gHdjS6imqk2)Td|_Bz&`-EW+BQQeyqFM zBXD`}W6jOpg)4v`>uIKiD~2CyXtoV*75rFNvp3=F@MBHPQWl{+i3czjt_6Oq!P%v7 z?eJrr&TfYDz>l>$`y*UG{D%Q&ZA;I-t3tqueJ7H$CaalqM2 zP%p#}=!Uz5@&fpMI3M!62k;Qw2;v?FELsZNh7P5Gx5Bl9e+2MlxSQZV47g+&${zkw zz;3t#@OuEi3zrA~2;hBicKG)IJ`Z;t#RZ&%y9a5}_Z%*U+Y8+q0e=cN0DVRQ--Yvm z&TtU^GPqTU>jAt1t{5^000VFn;2#DYgWCh1aX@P^W4plP033mP3~3R325ubwalkx$ z-tHx;Yrp_p0pbn=J`I;cb0@T+k3@DBq%0LQ>H3OIHSJ_QGv zD{wcF{($3fPeUfbV{ofLXJw4N50?fyeGBnU zI0xu-@0RXCCy|W-o&%SKv`PWj!`a|>0NxKbG6>xO3oAh*9>CY&eg*#o-~ub!Jp2WK z@51eZpRHkR8QfclTMD=i&NqPgfLFlTpu+&*kKt|ueGlLxa2Dt}3ivy?+aYHh@Xv6K zkaHOD?{GoTCjdW#`z!d_TC`=j+u=6@&VhRjehc8aa5>;F1#E*m1iAHR;`cwY1Qckk=Ab*_@A53*c)&(HWG{te-AW6ng}Ntl22*z^fY>%R&gl07--b$ zjYSkfaby_LY9%c){NM0rrs{X5YU7nNn5KYaj%Uzk7nHM?=wCFle*IHM_6ud^eMa^V zMISVlJwp(M*O0lQ!W-Su3LvvJ-Dp^!UEt?~qT( zPSoWlYU9c&$6VLg@>I)J)pv^YdAy&+)I&_XsQQt*M$u|T{LFOYZ_>5NN(KvS&hzx` z)0Fh37oo$}=-<<7hxPM*re~viln*TADk>%TR2?JoB+DZyAC+O(*Rghrq3V{XTZX(h z{mZ<^@=0BfD?61QQATQ7naOePWUXCHu#_Fl+poXh3QP+pEdo{M~G9%IwHkGNQoU89tu1@eP>{bOPLfsAj zspS?`$Eth@GfjqEv@x~ki)>@Y3jKMkInvhDJ~K|scx!7EiHZJA_NTF7Gve8d>*AQX zU(XWTb&TgojYqs>xr7^Z%y1*GagUOoU`^MWuSqIMY)tUPj~d4HhqV(5`c9 z();4~-(La~BjGgn?!lb!4&dJp)7}Fu2-?O7TGCH3_uIvoCxTW9+D6cBi=efGHUQdP z5wu~@hCv&RpdAD4F3=o52&cRBXPD#f#@sT3b_r-6&_*I?!=POU+QA6g()%%o25qX} z=$+Bj=Oq4?gt{M!@H7bvB(zD`Dq**TS4wz;gsSxKO8mYU`XdtmorH%ZJRHOKW(@wB z#An>4rXZk2;)^9*CEBz#Xo_9KywS;8U-S4vnep{kW# z;+IO;E#Z|C-Xh`8Bvj-5O5%^l(8neIX9?eu@K_9=?rtH;CgJrGjz}1ku;9mnZ$QGQ zCCs=-(Ay=vN5c0cTzanv_er=%!nY*MyHA9-NH`$jh=ijO1|@t?LiQ68uT;V-CH$*| zcC*QI4b&3@yCwgPaY=>s8+h=!qeO5Xg!q|=4s&2%@sg`ZW$(YdE z-LB2Yk=af9I=8Q(yWQ2@(&=uo_BXpdbOvD!-pIOp*)Dxur`zpe2le%xUL>}GP64nF z_3~_lJmY{}YL&uIOVF&y>GU|A?(WSUy*Nz4Gy>nE5;B<6>-IUj-CLaWk5yPELw5Q9 zt(e7Hd)+9F*^G{l^fc2yesB_VACBb6vmw~o0jQTkZ0-=*Wm^Vam@MNOGOGG#- zri)oc3A#KUr*Esr&DIILqnjUUa(Z0&Pc|^6-f-D$WUi(joNBs|2`$?go%wNfirR8f zK011uoUMJ`&1!u$_jK{lPR`>h>;%Ls^|}*u{^@*WKLZVeyFB;@aBT(bkTVNCZZQcDD6&gFlI|ZQaNa_Cp!G zFb8TcYjnWABk&+(f3vqS{==`>*|&`S<@-XTLQi4pi^h4 z^cZXY-;hP!h^$WJ5}*7zWm$EwX3th984N12*|Dy(u0h%)^1+=b=-RQ9@OS zBZ)q@wRS6I?$J||gIcSpTk6Dq`YFdpokPHrryPGXJA7(!D+|#I-Z-_m9sMx;qo)?v zW4AW5+tQsEp$|d#;%ld|pvl$Z^DSxaKyUeb?qAxBLwoF5;df)$o~om>)MNYJ>rUJ+ z!pe|JeWBBeE|d-Mbb8ToAFrh7$s^L~h|VR_`FE3HH_mci)Y9qLOl|Bo_`A1kWj~lj zgNn=9hOmlTOucz20-(16CNky-;*mR!j}DVZGBU<~4!%ei6Ne@*Q85mJ|Npdu?IF+2XP%kA zTs0x&}xv0#BbHP{avAp7pvzLE-sj7ad+e528Mvu^BU^cIU5hst&a-s6aO1}9^=%NhJVavWBv>q~aAnEstLkp;`8S0vnMctO5w}3iC zH;w4V6E@X|g>LACxh>v4j|bZy{0h$nVCmW7#T6gaq$NK;BuX;5Tks!$t6EmiyTV;m zP*}Kh*^2zaWlNXmFJ02SEZ?=P)tz5ZP~75nyO*>qX)U-aqIgbSmlY?~W683@CB;o8 zuKZ;!CD5a_sU^SIUDT5ADq6aff9cYt zh51dclIHxDY^<*5xafH?LTpUtHiW%wJlxq$Iy&SyNMf z@sgH;*5xe)Ev^+@6ANz{u)tHVn!@M{UZY-*NqI1+%_^Ya@WY7k-a0MBjY27MuH=FYuw1$*+3}l@EsF(uwCX|mR$wA zN_RPSHSY548rU_wYh>4+U8B3kcOBj}v5W0C@3!nN*j>8YvAc1%XZOJF;oT#<`McUt z+KtA)l^(H-6pxgS!28ATzo7)EzBN1@qexB8_j4k~@<=rV|E=@IKLE#>I(a|vnMkGx zKaSl){xL+8@*~2?E5bi6I#IYt?<-5xaNG&t>kVy;92FJvjLTGhm99b|@5WHLx_;TO zGQ>b3??RkLKAHZnoiJRacPUOSi}>n&zGE@zsHot-sXWA=_3z~O%nFrXm7_u-@7JMl z+=bxfNB>7>s-NIDUaZQ)y$H^4pNbhYQ9l3Nr1HnI33)p&Rl{*+l*{||REteS7W}Q) zr4!|aI~Sb4Nf>FYc$t0)wwz8@Kl@G?F4DVkn;IW?Hh6j;oWQ_Dep|k#^2aJ99pGBK@*kRsL8eA@8-@L*ep!2QyAke&0Y#*5kw= z$thX8zQIyaQX(&mTJpPa?K>Y6@2=G@pASA?A7<)p?rwK)M>7TVHn*?t#trLkO#a#| z`87qBd~A%YZtLzVDPc*pl;FQ9x)h@lM=uE2>07{&K$oqZKBhZ;5z2uXjRq_U+Hj>F zkG^htyXJ1eY}AJkeK>>&34M5ae0Vd(bnAHJge~Gt6%MOqybfWfkCQ}=!P`!g)@W%u zJr}AILdmZub@ZQ56rCZ4Stu1vRE!~p;ZvQ_r-*txe`+gF(b0DmBxJ1N*@p7SnRB*SzmA6SkK0F zW<&0W=>HW*p{)lm3sVirTe+H!B92cJxKVK|;rMicn-#}Wj;9GcLvbwQc)GwXieov) zX9zq`sp!G`_3VF4=;$Uz{5 ztWY51K#EwAKn?*}!j=f+Fp#BesX&52ma%05nNVswJZ!l@j-CBdJWbY=qzyP&(bHRt zt$i$wds&Sk(L^(CZMq1c>h106WDXH;M3-LaZt81O$>$65UAlBSdr^*WCp5R$_fSH$ zB4kfw$Qpcggu?1X*j^D9YEL3!y$BqQ2~^`Yh~R@dmQa3Sy_M+$nX6&{2^UZs)n7mB zbts=uDX^jJJZg119lrkILeD@4&Q}@mQlhh`iNCyZbz(!nh4U0Fu|9=&8A_b&t9V~v z)aXU0!#k=5d(HZ_PDgz$iz{4Ay_`sA`BE0QkK=KU4K-DjOp~ajQk#q;ex_NVq-j)4 zP~KB=??v=DE>Mu(SA>L!Zl|W9zG}UdX`az6_!|_@A^mi5aMYFPsMpZx(CE33#W|*k z`K-obK?MC%;9c#kE-Wf8!v#^zBl^5LkQF=L(LAb8-HTAB*l^kahxg5Q0yDC+1oN2Q zkPFV!i2X}&Cd#!z;M-N)#AZ-W^K}(>vIHl#gK&%lUAmzt^9}^)@5198UcyFQOHW@@ zr<)ngIzAFeRR0uM&P~95pg9_#msL1q(>5&Z{eF}(1 zjn27-Y@l#C_dAEoFL7R z-LpZ&%Mhru+U32R83ipXnHQJZEqGbHA<>0mwIzd642fhGBk5|Um$F1d0$Ik0 z!p@2<-6Vs)7&THlqL?)+4Ktob50q?kyKtC-ooz4@%98EwHdpgjv{GXzxdOJ@U?dA1 zp~MT>IRe{5SP?r{V55XBVWk2aCu}Jz6WC$Gma%eyO(X$Z&ME|k9uVjXRw+<3M~j(N zpcamnur&fL;3)d!wE`~{cpXZxDbo%OWaE%ok$VP#}qB)_26Uu)As#%Db3w|yl6J3KkE6{8( zq)?YJqYaI`Oyx*naS?ronCxhp5)CvDit1KmP)p+6&4{Zf0g>}0M@zApx2z6Akn~!1eUVtxCliD3-Y%k=c2v z1%wxy;~toeT?Mdq)B*N6!-KyGy^eX={##*h5< zvh}H1)Wc?~hv;eq&T<=5uP44W9hjq0%VVxoBlWE*DfQ)<^nBrWIvjtVTG51)S0A20n?NIaZ)!; zYpQ|c4wcZBntmSm^b7DPI{XRg zSpy8Ds=92g)md3n=d@YN@X0M!`qAvP%_*n{H@>ok<0|aq*-11xB|>vkr-ywaa1G%e z_Nl;hg!OhdvwsRaj)%H>+gp0sXM$t|sjCC09q7R3q@X1b&DAexEQ=?U1e({&6oI7> z=3yFvnSnLqBrMYkd>U{}n{)z8-#f(`= zl;bQ4c6Z@xZ}B2LM-s5QUPT8YJH`(XQh3|gzBkwHMe)*BxHxs zl*xrtO{+X1>}8jU5Dd*Yc!0+0M!UkP%FDC(LQSX0mQvqSx3#OOr?cKglaWplY7C3x zfnL@n0+N(EEO2XDYxt31SEn4exYiciK#@$(IpHWuj$zpY>c&E?=T?aH_Ka|-~6NnL_xhu=C7edrD zYWP~V%&wN_;d`>uUP$HTN!EX#EKSX|XaYaUN}{QZM)Nw5Jp$2ct^o2=nW*N+Kz=3= zqsENh;C_K5X=uj%bAgyObHVltfut$a+10f2-tz%L%g}rY3=awA*X=t$6FOX8Cf-{3cK&9qBu>D3LYcyjBd0epBG<2TqfI#e; zZvr_e5QpYDAWsOSUh_5tJSmWkny&(RN+6eL&IjAmSy@yyjcf*)!4Y_Q6ElSxPE2KD z;;Q*=mL+i-+D{fX;7?HJSf@<9l9l#LJ3%+IV9s6g8#!EX!ai)j@_)(WGamHKn1x>*#p94`=z=jBL4Ig=-CN*^AB0&ZNFor^NJb8QF8m zT5#`M_SjM4HJRD7uZD2F7LVgOm?kg#G)i0zs<+oUE6VKl^0JC`Omm@S)))d${~k$r z9FKw*@es>enn{Uet^P2GIW*wBO`$JPn@n)j*EpPZ>jtYmVwVmbEGD1Km^zc>B-l^N zG%c6JRr*|Q6_~VE)t8smS(!mc)0+63Q#|RI)r13_)eZLgs(Krih?Uk#C{VNk%fWiI9f%>(?rES(b|c7~w9H<;`wXC+b>_Rr1&YX63?PQ;T^Ys|W{JE9KOd zRjM3el9fm#O66HYgo-t6Er<3xZ0^{|i%-YaVQUyMWpY*1C?*i0$)t(!4SYbyl8g{h z63oIGFRZn$!9tk)C`N1T2C}OGLaXd{>snOWf-N(jd(A+!LIthk8P z!Zd6xNlCg^--h`4Bn10$=$bk0Zb)6IR4he#o(mS>n69EafhaTbTZ8-IGRYf1s z(^d@eyXk>BOAKh@`km}>auzp`f8>$a8=Jx6CnwmK5q*?Y3#(CoMtymSI7{KV?dRO z@EKEvd;5B1_)H$YPE7!yt?M=lAdfDO#^N2|U>WkJnz?iu;q-Mr9kmvgC$A?OW@-4o_qQm7N0}$D z6Q)*J?EI#kVTWRQh=O@PlR>7yl6Y@!?#h#qaTOJmMT}&y=ewboqqtN(+WjkG6-ZpV3GN~)$ z4;0EvCR^M!op$xCH;Bf!mNM|-!tJB-K!ftKq%Y4T*4cO~t(#6YMSZ$>5M4(BOiv9W zPyLWMOUYDtq*WA&9!x(E%4DksgyN07TbgpOv6VRK!St8o$zMWjBN~srfa-yF3Q0Y@ z5*P5BrZ~jK2Owo(3TY;YqVF^OB7;as5i!HvPSOn-<0O@5z8c*>T|zbdNHGz?oFjsAQ=6o7N7%b!b226K0+>_0Qmef~sb#FDrB9rdbUQsBm@)c1 zY`vVLBrASMn(k^QWIm-e-L;wgONnlFZAL39RT8PcGk3rWl{l^s46RT8+h zV#wpiqbxFImckpV!YmNv!8Vkfcq>^-`W}o7W{<^DsYDb!tdnth<3N!|xSjaB2SmZ zkHGUQIMmG+Ddv83+X2Xc<_h+Uuax8wkQ1+$NPv*rB|@V|>cbJSpOCQ&*&LlLiZbw! z4Kmyb6%$lB)`!l=sBdgGsRqflf?~?;m!VZy-2F6Lp#K=bHWkrpVx`tX0|q}lbLk9D zIp5NXJrL#;*hWhy?JGCVpj`mvLW@Uzr^#IAM<7`9bqm|*thbi43)lN9`g(iuoq~FI z6ZLO%zJesRdP;bavx;8BP#?=bA%QnZZEp45%pc+m)Zsn{zUlQCHerq0Kg2EJxcHm| z&{ASy`bj*agjLY3fnGOWCq>CTC}dK%JG~M;HD(7qkJ^KAE4g56KlY}f1Oug-WKSna zZXDHUA<`zE+#)Ca!wd+L=$=5L=!qG zp@}&uaVfH%q=`7wKz?ziA?{>v`=iLi`=Cnuh^v{AMMg{h+R5@v`fb! zcIgOKV3&@d*rg+%*rnsN&@LTea+i*?@Lf9cg?8x(3GLDm656FBgm&pT2kp`c4|eH< z2fK8f1-o>DfL%IHpj|pap1v9AT1`NKw0VM4(+d4#h4V zd5_V_CK6N{CHU7tqU;0eR{k!#Mvbx8D!8>EDxNLRdULJkukO$2n=Y#mg-CvVSRw zx=cjF0Go}DJ)s-<@v?dEgZd`~KL?l4!A>XqUHJbFm$pfb3fbv2vr+r&n3P(0N@;57 z%1}xdBPFAU%}65;CZ7&D`P5SZvd{3K0cMQ2KHmZ6ada;C!8Ia@Qy5TAdH9Iik9_@i zj3HBx9)^<*2V(Rf1r>}QIsY?8kNDWpgBS44DVO|<(ZisQ9>lN3=1|Z&^sPN{y!N#66V5G4LY(z-4632bV$l^uU$Y1jSu{_OC$jUhK41Q6y3FY zGUGTBf(hf4uU)P?vv|r-{?^5x*^j^^U(bW}S3^eP%y?~@?9}z&CD9<5RRY~_N}d<5RsWxx{$dbP%<{MXg;77khJV z0?H|Jy`!9Py`#jgca$ktH;TvyKxlQN#H?PCrJ*N|VVYqX)AW+hb_Mft}Tg>pN)R$9X=pT9MjP|$QHY7M3un$QbY#h|~2n}Yfu z{Zv!f4-Lo^l5rq++UIKu_d%0e;9@U54nVV0Fa>S+_LXMcqN|acf7>{W^m6IcEM&S- z%kMrgZASLTkfObyYJE8^mb6zV(*#y4kU>71)r#93+9A#wGA^xM+_unuGu48YcQRWO ziShN1u5dABQYYf#q6Wp)*>L(4$5g*3(eS+tT+85Paw20j@_FvmCY%1RCsPL9n@~oN z>C_A8p5spzL0ycWlqqI0ep24>V*I3R(Tj1NJO~tZmIp_9K8E^9ln3J^9y8L=aq7QM z{b4md$j4^NBT5uCbl4HEG4k{mThg9KggE~4LY{W4X{~i_;b#Rev82+rBMyppw;UI^ zNdy|>LLpV%c-6};6?Ai$UV&HN<#_e&Wlj;65hqS`UgYlW!C9zI)@Vs4Z7p%JXE|LW zAcyJ1xz*SlG+7Lk;i*DdpXGGQThjY@XvHywxU`HTNXIw>{fS1tnyw)LO2=X>oD##lpIm3zfPtNLk48(kS ziUg-Vd(bxfeKL0KfJ{bc*382WJ7YpO|VYQe-+sA@6 z^k)4&$=PxO&hR_-pGeL|$(gBcNy7}9L+2?n&Gfb?37xS1C-4ZnZ-I~DBY0{#&^nhX z*Ws07xc@#2Ec8=uzY38PR-kAyNCF*fjfYF9#$zEFCe7ex6QvxFvq^R#Jo#`b{~;IJ zFJWL{v++8xv)A1wQtMKvNboQAC{YG06O)IFTAx7Q958vjtS0$xN@xxxb69G(U8Iey8vXz>?LVFiXLuP% z4?JyzyaD7^c)kW_eg}y8Gd$*!9JBg=bXCupszAH47bq#lLm4MIpd^;w_5v6Kdx1TV3?Gqc!DsB@ z7C=1(ot8>S0S#}-!W{+3+gPF?=S7g|$W)RbvncX5mMq9-NoGZ8GgS10DEiNNm+4O^ z@_lfzACySIv@v4$UrzAjwVyG^I2XhVA$tax6o^3n$zNWtzJ~^Yn}gzF3R9R@yUopjmOY;+8(s=JC)B zp!6nCyMUuv3jgvkN!Bjp6bqvFwc-;8_&=PSkfY$pg{PHgLc55|%wq|(+s(9RWqupF zC92;6*DlnUD9an6p?(uRZb5Jo(~-&sqGCXe{^YpUJ(K7=i1`i5OG@Yjj|L}rNLsAP zD7P2DPE8(h&Ji2Ua|oXgXMr>GvR9JLRBAR5R>7sdEIT{;F2@9%mcPQC7AHS1LLI)A zUO^vn$-x8X7rY={h*Jz&yn)v4p1B1uPrEyVV1agbChAYO3~4ZWJ4mhOI$S&ZoV!lC z`*<}Rj#@;GX$Ps*gindZ$Hg*WiFkul>ldHDTFWs=%z?AOp+ky2S83FL6=`GE6VtP= zohb_HHE49k=i9T>jas_J68pWFi$IUVVY2SNX6I&?vy<*6YBI8^Z1RlZH@RxiouC_J zAGCmwI5k8wcNR5REb{rcKeVSWqPd3Qgc}it*o}y|@QYXN#?#-T$Wv}j7{t~DKxk_s zo~sqpX&I*4pD@JkPb@TwoA)>^mrWC^ICb@@yE-|SaQD+$S|RY;XJ(@5 z#m~XxOcZ?N7K$Nq3q|CDFKhLMi>c`2>Z&fXI_sJK8)ux2*rw1bml81XFAd;p1dD(e zLMvKBbkA*w*nT0u*nXLFvZbkbF|eBQfR$`Nx|Wl^-c?t!CuNFR$)1!qyplaBTl7jc z-C1p|#&tW~Jguw3^_lf+YHD$C7pMAJ!AI#UF^$#G*=_am-N)(4^vZx~%IIPzKVrd; zc7G!1#t6FlpFloMPo`=%Yj9}Ahktg_(_PiVK1)v;0WnQOm*{)C`BgqPBZa2a85%5r zaqwN4!Q)vpsvwOZDHlXgFUu0HA)H^9B}_+{yevz291jg$mL-xABy^NmMTyI@L`xuA z#AR8cC4nX`%MzAC7{4q_m>HOQS(fl=z{O=*!qRvs!(~~*W&jIcmL*CCDC%Wd!e;@O zmt`r(Srn{ZmZk6Fa0YV)g-@?P3ARM-V)`ObR8#!YOoF$Q0NOr^3HSK zj_fwfHZ|+%zlZG1PPzv2nWnnK+sypg@pF-eQ4@3L^sCw27Lzn2KD;Lr5M-FPxOI*% zx5(X^>qSUfM2K5$FkUt!LNmglcAUBD=AS@ifOV>cxU6{tO;y){6yEd>#+Y07?s@_yruzLR8#u zrv*{`LQb(Dx>yj!pUDY1`tX7%ei4_M$Kv>cDE_QWY7w};P}{JcuIxD-b=HQ;8sybp zQ=y)GDNMc-I-Zoty1o)eWQtVA@cpVKnbehL8dvpV60LW&w9v+=vYOAbn4T^u;LM_O z4#)8?Th)6S9d4&?vZKG64;62p_8#pxi_9>G)6tP3NaIL(j=ZK_woHk zvmW2C7WeU(@{{<-U@#eaT)}E*%AQObLoBR-l2d-FtwL(keeD>L-T3Um{nP#oJYIX7 zT;;@*GSe}fhrZ76^CU9AcKVKShYA7Hf$I9)BND%XIjlR`kw5yn7~boC{~9;f8jX#Y!`*ctuYi+PQKk zFX$yFxt#R6qIl+rHS{LT1L>#S{#BgZUAhIg?Zgi78_En(U&FG#mUW?gU_D0^0|nfR zh(CrqjpDs8rD@tB>U~AK6tvmjr^ip|L3hcQQ&7S|_{eZa7jI>aefThw17T3%{O`MVH!doh!mLs^@>P_a%T;RoB|*+%w!M zBS|1(Oh}j%LO@Ye#DEinLzpxuZ9oW+$`F$H34NFBy^RFa(A$LaubewI8nigY-7(O)b(y zB-aw3#784Al@SupLEr>j$z>|z6p@7PdQ~Xh=>QB{{9ZLz;Ugwd=7nIffIOMODF`fQ zgc-CWa3(IHJI%q?0nJJadJ!b6rSP%R`RGzj1ZFKsg`FTUl@aopgTM*6lDDLls!iHL?luKybL@qN zE}G;QCrQ&WlD`Thi==Hj2~KVwKnCr~{^}(^!~DBxoen;Uw~@FQIWNF<;0K6U>$j{; zKBCY|&{x~o!sIts#rLQVi~XrliMc>gB z4!753tL@ykY@eh3#+l((&c<8`NxMtU_8jx`EE44lw&NubdX+K(k^6 zLvZcYY8+%1u$MoGJzUOm<79L2sR&i&;Ddc`i8q@Gj)8<=h{d<~a;pfRMwEygF*0CS zr|VtgDG9>h!r4chbDKD4OO*``;v`Cbx3Ros4L16y+X5B_;a;Mctu6Br9>%e)fJaqE z%`w}VD^ApC#S={|*Ks7s!luRroC9#5Lktfl+uNWf<0COn48nwj^AY1?ITtw?o`+A? z_(BBXhRM9gH2O&s;N}~D<_22GU?I^x133Dhi;7*1tLP+n2;xqSwSMc`ev6I!#nfaQ zQtrmpugQ2oWc_DEKEgGAm*QL}85?hu01K-0CQ84~T>&opY|@XH>a_94&P<5%H&Ke$Qh!Q3zso6v*tC9*NI zAEzBXQTiUZYKt&+ZZ@t+{uG#z_4T7+Xqdh53U`mS2{|m?sa4vc#|#or0&1t`*^8ay@}L^bcuB^{)l)|q#n{m#PhA2 z3z-m$h-Y-_5gj9=4fTXBqMp#DJfKT1oCU9h_>_Awe3}|&yw{CjV&95e4xeBB907+n z!{&<-6#gVyKIPttc9BOGqZjWg*81J#Qpf@9@f<-$V z3=hF&3GL;KruM#r_-w-FjWTi$Sp}@+h@C7Tqm7&?gq(xeT3m%KtxGU}&&?+gUmd!5 zHz=P35xWLM0MTH&#PgTA@`KOTL`v=wTclMe1QHI_2?{t=CtbQjb;A0(VTbBBL(%0f z+>fU?RA=>c=IBBThw7}MPSYsK;830Js{40Jhw9g&xw*=X3>>O6iuVvahw5H-!l61X zp_7>lhw6-NWlT6!XKWi|`_Q2}V>=iV4%Hdk#h7rY&e(1TG2u|1F?0lo3Ww^97Ko^D zsLp7)hzf`5jMj)Kx+XYOXS`O%g+q15>ttLwRA+pyj0=bAj5o`;aH!6ByNnBm>Wp`o z(!|+C36nRC0m`8|`=(yLLv`9HqP|0Q0?JRrtw6Hi3R18rGh&`Yb@)?%22HppKS#~M z)J-7d8L^N*b+}U(?<)pRX^`&J;Z2>B#U#mtvjoo>I=rc$hcq$p!5#MH z0O1oAqmooIKyKb^u}ELyZ%2cb@nL1Z^D{fRJ@<6f1QgGq6u8`lG+`iU^{qj(~G zHI}XsJgie6k1{A-4=_a61L7}S5AZKt4~V~TJ;1+oJ;1-x^#DWC^?-nRt_K)Xt_K8) za6P~fWRVU+8Sz{XFygr$V1%v*1O{CX$N*dq$N*dq2o$&;kN~(I5CFO!kPx~aU`V z2c8Hs>OT<<#JnfMgaw}n!<9fYw*VU!!V9DktLYI(cZEGa`OGNn7IAC;pTO?p);6`e ztMcEc9FRMRa~^Cv#>SP>piS(3Z5?FB12J+x6jBev1@AQUE4Q$D zh4El?8xrWwk3~wHt`?8nV|swwPuO}Ii`QGt8e`}!DveIr0T({w62A@*e5?rel>~)< zRB2ypxRDrFDR&ykzYmHK;GdWkNZUV{Hp)mW38c+XX$Prn&Q@s)HQXq?MuFC7Hb&z1 z0EeqICOLrnBZ0I#RhlRS(q0Or{YtZwbi-a%X**f7V*D|lhZecOUsHr}^WNPAzf`Ft8S9H|_B8D#pl-h(fCp3DM^{(sG(Pg%^?FOlLCM)I`vGU7f) zyk*4aB0F^;mF<7R*bk=NoiiXiWmQ29MD@Di4MzMg7|AJLzEyGfF*9+VK*1@I9=iZE zkAQ=#lZ}>08Dnr^D59-0in+rUK%>GBiKJ_bI0OYgL`Yo&WOgCZySq7qd{Z=Pe}Me? z)#HC)Gb7m@fu3Y^ijv>wX@ z?4qDY-C{wwOp`TV3Q&>|h;CU*c@mXc%)qrp* zI{#!T%3mvUF#Se}aN^I37J6cn@XsYY$2@iwd`B;uxtNZ}j4vwlt{0^wgBds}z8Qx- zHX47E;8I8j|CZv#hQC)9p2@NsF={i7^`eCY?H;wjcd>sn*9cBL=Ht~;np`b6^qdF7+;kr1gcRHr@0t~ z;*-FEiE6-Og*c+E&8X~8qyi&$9siImapX4vLn@gTw{|H3`lY<8lNi;9Op9kOX$4%m zuZvfjeP;l;A6BJ~$g;mbfhZn?9iJtQZH?)+U)@ObBIIS{OooqS=`1`QtNCINYk=@x zikEE)HWDTjoO4toj>bwS8otdV%0c^SY)MDho9}JNyo=Es@v17`$%zySmRS4=-`?UT zTqy}(*}?BVPaS~L)(w)C_z4QYpSfWfR%7wShb>t$Nz7f0Q~S}ldt%w}6-Lpx@{@5| z9#wP|pl9F$R302>oSsh|7GuZzOTf#YQ0%8l?&8IP1Zt|;xNtBl=qwA=n1q_8;IG6s@v ztAa!xVbRZz9u8O~!;)Z-%2p5!d4E?k zR_grcO3c%-DA4*+Vg}9LI1d?fO8YvV&40_!&R)dI;C@_BVYVFczKqXtXlroXRwpe_ zKRkO@2@=D@^KaR8%(8sA^u=Z3Z47t?>iQL2`F3rTo6d1-f*O}B^?0pY$_67QscIFK z@fV0-23;kn+fo8$h4Bx=48lA$6ut zadlD`1y10>0K@XZKo8D|%P|WpB5_v-^0jdm&FAdu6C*K!06>3Y#JGPRA7jDu_!v(+ zkB^}A^Y{o$KaYhcuj^LY&NY_X3F*V~6d`#&22tMXekl%qEaO@r< zJ#=Y_YMK01j%C`jua6`E%(7!jle;Zj%a@$+Ln-_Xq?W=Oz_BL4G4}>_V~T6d!pRINptk z1?n6>k>LjtR&4q&)Z?tT=YfV5n|v2=!V+v6E`_gb0|&p6LAeQUJB>aVN5BzW1${sP z$I>%3{75g7r=Ds};Al8%X{gjh7f3iVj!1h+PC_J2j|1eGG+ffBB;hzYCRIx+oVVI4 z&Rf-#IAD&+coBhh5K6|8b4(s>!gKsSqZN@{4B-Ge77Xt!h;QdarUnk8BM@&c2%vmg z*J|KMI)caH97!A=F=NG21Lx8ag4YzZLkbY zqJgvPSS6E!Y48Egb7pap9h2&OakSfW1LxW?sXmaTh;YaqQ|4l^&%>MLRs#;Zqr8i~ z12m_voHt?F0v5B?z~OgHTp~`WKCG!l9B;kGz%h7#L91!jEi2qsa0(vVl=*fE2pst2k#BadBPrZe)`noB(yQ_jf4 z5qSlePv=|(6kP}(!N3W5%(^!|@jMA=rQuIJDMxAQC!Rty-HYkHDE|}B?_%<6>Q6ii z(3_#BQJ;8@L>@8G!{NJ5ve8|t{(2MNbrOtscQSm}$&}(iO5o#6eAmfTyyK(kf?sFi zyH2L|^-Uu{itjpUxaD4AkP_c@GI5~j+wmbS_9BQ)n+2uX&M5K~~ zf^$xJOo(@EOVc8LZG1#iOKaQA#VfEIdTu#Wyxw~9(RIhdi`8L=&%nkG9wSaSiq9%9 z$11$)EO0Z#D0Y6iki$0dh0rP-yoODM#qfSG-ov?F zTpp#^+El^_mz3AcgE%>qX;8`;V~H{j_I+@=&9eD;3;no!&MdD7TCsn-0U#rXlXc?p zUGCZ*gx#;v=!-;bGBxn4T)xiEH;0!roy23N;V^V58uLBm*FH?HV4fsL{LBseW5HI~ zWZW~9`Th!#XK=+jq5u2hbD`tp`3T-$Qi9sqg_JjOl}P?LwqQO^bgc#3uK@j$bo2-H zU>R*$A+@4QYiXN)+yvvHIIE0bPr0~yZo~>pOB3fg9NXT+8r*&mV3*N|Sc35*qsV)> z#fg8plHTCitNErxW>_FwL_Qk4C*!h6^j!qz;Nq|BXaF8p3``xEA`^{g@(NBt`uBjm z7?-^e5$g=xc=U1$E^8ek*CKE^BUd1D7Xmy42pb{|lUt8jzKk#A^KJOa%hWLwa_G2; zdriBCO1)pG^1}yPAT4ZG$4T5Yh^pQW5T9`g?cXf4U(&L2p2E2$cPnr{MEdV=C8_CK zg{D72bT=-cQk_w>0mwfZ39!@>qnT7{Xq7Gpf>tTRzDmCWlfUB`t0wWlqN)JGQ589|wY)%G0_`8M*+N!j;pUMK> zbAT<>^#h?UVI>;NJ`5y3jLY&foT>cV6iZ_!5Onz&_RD_+@|cKAl>c}HX5kXQ+=e5X zmMy3|T+NvdU)?z0SVQBlQCwR+K?h;&TiAHaa$`+jw%kUrn1@TqewyFVP8SVrB~sdO ziAp|0RB}6_XA*Qj>ix_DK8d*qQNH6V3axXD4TJ1wsX{ZHsn8R2p$`ZYnqj}t*MRXA zxJ02hBXA2Y@$l`33ftW9JCs}$v&k>!_e3%82Ftr}i2`Ushkm@4 zssb>asQ`v90N>8hwZ^btfNfy>ATCjW7Z7+Jm-uBUK;Wa%*{r{2Rf={+Vs0qLXIzEN z#_YlTwB}u~;`44%tP{P4YRnN$G=>7ZxI}x@oZJt=s^Jkl8I|_PXr_|2tDFtK)2K_v zuwSxb@a9&EC>ial5*L4Qc5$~U2Brl;=O;wBHVOzMafvqQGC}lh2Lp5fF3}KAL|`@} zY>15r%*TaanvG9fBZkQXsihriFNdGG@n>$J0ENvGqmtvzYA{)bOK57GZvY1i1K5O= z8*vFcA200u4n(&QL_0r3*!jJP{v4Ok=ld$p$Xm$ph!W%{^~q?OKFc^{e5UZdKrc#) zpVF5aMJqR_0& zGmBwo9FO0CB7RNHa7g|m0>8%1ssd_1q#mLGWO;ujW6dpG#`ohp}2(kE<|7fBQ)P;1eV}3jO%c5 zNAs~#kbS#5nz_i}GnDT9G8C?%+XF>S=W56iw`$Y&kAHxwp>(?;UCy^F-9wP>W?Y?n z$^N)MwSnI@NZW-IvD_}4i0M~3gzK(!Ct`d2LPz{hkSfCoP0?mNFvTNgJlYe7#BMc* z?gQJl=o2I1CCyvX$W+XVSHNS!@m185X4!BwA|Jl=qy|0#!nc?B zzA_pINz9{JG9O+&7c@4{Thxd*?h8hNFvrlcEImoea;G`y5z0ar1bI>xm81koNC_w! z+%X8*?lw!n%htvDnc1T+s0~~5{JGhK!pCroj1nJb-kHTiKxDnf%xv7!-*U-UoD|GOyxoBX2(?o<*-mNv2qL zAey`mp(317fMcjVUkGM?{u2Phudp`eRfrbjQ?IrKP0OWA)MY-p{kMFfU|71j9Xw5u zFBuDc$b3sY?zS5d_~~YAZit~fg=>?&DDqP<>_>3{w!8)3cNtSyhFyTXE}#=y7KwK- zPGG722GCz{^}J6tggW$K@ zIB&*e;!<4OltiPE9e<;dRTqsjuZza1UBAX|0eyPo+~aQp`?gJ^uX@LtSDO9WUWk zANQovAF;d{A5CT$_3TB!wmEA_@9O_q$G)i#62I9Ah4yi=xI5S+HBQ)RzU5=^qV<6~$F~ z=TZD_J{oZJM+3y?iBmjt-p9B6bRKt63q$hQQL32~emJCq~oH z$pwZ27-wPL#U6SzPJABt?e@^OVs-j`T*lsVfzuQ1l)qjW43cSHl5t!ON1e(p=1}@$ z^d6i;CAF7iOL|HEC%#Zm>R#VIsg#>6Jve*H{MmXBrf2wey(qlunFLJhXxw^rIk9>O zsrh=@;IDc(*Z1M6s~&Ea#XOp{RnHM1%rUeqdWC{j508r!tC6Zq6RTdCCRTfaSH7Mn zV%0MWER1~36RREyAHy<35@XE7s%IRCtUoccGThQX=(kQp@}PydMOX}`hu_}`ec*4g zcD+x5EmB%^h1T6i!O4c@c-TmBDPWkqZfd8+K{mnsvg2O1|-nVy*=x^@?qWboZ;lQ_djQZc+1!CT}cZ3DM zy&LLzW1X59hj+;n!W-*RNiL8Op)=N_T z5$iMoCTLJSU7k& zRq)}^C;XnRz;_q;z9W8`QxB}(l>Hh6`f#ad0;%q}BaSl?#igGiL4Sfke_$)HZPwJ< zfRiDO1BJuZ0xl|F0BM8)o^dSZ7_wV5PAu7tq`0+P4fqzFE*Hq&5hUcUN#?aRoU)>6 z{>gA&gcn#A<7{hTN_(csWW zr3FLqrcvf`PyW>nF-gjgewq2;qCxV zKSJSLE7b*UvauHny@3=|G%)7l9g);#nW!ou+eeAS{=!2NjW$s!Qh(#6qGVWatitM{ zsRiHkI`{XdeMo2n-mzJ<(s1q-Fl4rT*}|qpE8uo;Rnr2vGiIVWMlh_wiyyLhasNDA zg{OFnHxbQ!1bQC5it#W{c36#uIaWYd1ej1NPpJF)uq`N|q)d0Gf#w^|J)&NMVxncV zEMKJr-B;xCS|AVA=iog#yk8?QQ$!st2(bMYG_GW&olpJF9WK`_W1wOF%nh6P@{AZU zuC8D;HDWic0at9{(l+Dj{b;)9B6=pS;@o-7#6XawSi*E|~hZo_OE zT%)*Fdk8N;#28i4G=>Vk9a^{*SK$PO$!E0J0EgNbZ4}N>U^c7=1sLZgZJjS`1zMsD z#-86*NaKJ6x=8G6?5C!-7w2|URA_-h#Rn-$;&Q$oAP(32&R*=59)>jc;~F(cp|T-j zdsYpk&IOSY4zRmb(e>jxb3?Po=(s_|*a;>(aP|C$LS{C8XexYC$1hV8hx2<;zNtl@BM4@^0duze8cGw|~5 zpqes`?587o6t0Tr30fkCp!MZWr^=O$yKt+D#1R>c%pq@lr4cKys;RCt4d-Vn`FbQf z539&$D3|k$im=ad-cpfSKx0vZB^^&u3KW80(!=%hp!vr53YL`5k59&>N;-ZNI|uIe zo-2SX>G)d0ZbJNeT%x4og(CSZ{O7ntNyj(plGdnP**g^0s>oJE3XpkPNe@@aqNK;D z$VDvnY!zWY<}6haQPR2}LE)Fyo$t&%J*9w(n0hC-CQBGZZ` zlS)n#)cF+tsvq`FVr!7$9Wm{rCKmyN@XP( z^_Q}vqe;zLidrs85tOHbqEc~`Vqmoq6ppn~IapL+Rf$Pqi8QE}iMo_(tmsL|;9THP z$RRpU=YWbFU7tfeF`-_+#KThaq9QPP>}QTDnr_}ZF*&POeT6wYd3=%??42}cLD9n% zrwWVaLssP#7Sl(J5kgjr8g^KkKrN3HwxjKpiH1?b;*fHbulI^xQW1FUXTws)S45K) z_T(aItHj->0xfZ0UBu)875!O6*2I`<5F9AfS|RjQX!eNKmYyoI*pD@b7eux2G=>U? z(g(4|rm_eo9Z+ZviWMcT0euD#TmVfRi1q}1<0D(joTSl@8w}|VmNpKMFZTEngPGyA zGzJW~SvHfZmjyTgQXl1a2z*>0(t!@-jb(LNbH0yuf&({PSN zJ>*FoN;8SGNLZ9;lOE+1pXX`>k7FAp z!tv}y45PjX9SF^Tw$~=KeIuI_2pm_oEGBymXwB5UYsBv=WseIxuv5FrK+l`ms$~x> zZMRUj*_dzTsArmZJjHxrHp@6X6jRYET%yO4Eb5a*v4bO$v#)Vv(Sa2XVbp~yyPIfc zg~t41v#G{2l{EoisDUI?8%Pe@I9p1tSZ|rBY$K{=h!Ih?49m9$!}P-upHO!nmS<-| zeSTY^arx*J|DVXmHv%!1Q&U!|F-qHnB1L<~v_RITD?4EY=0Fk+jCL_^?hw~@pFnfQ zgu^_jVx7r}gElx1{H#GR<_B{0%JoI7sFL=ar>7A4ewrY`T!3w|FfhRP@KvHUSR^~( zVrkDMDRqp(v2pj*V@xlvlT#_BsddMeUzTdndRow1^+jpbMD~5sDP)6`ji9gU?}T-* zBGTpxx?AgCjm}E9WXu`5=&-&Oqp0YohfB-XCrvCvk0oltmCD88A9CUm)6+FWPC)~+ zqhLp<+qv!8jW#o{9xwnWsKe;~V%`vFvATZa(s0t}ou1BB|13MD94Oex_0m*j$+SEV ztVn{@ga^-hD(D%po{P$=lhd}~gjCP(f_0*$j- zYHL+H>9bWm%NK=!p8eh^CYyZRs~n6S9>b(AT#jy(P@3ohWdiFgPtVBnMc<-j!-yf2 ziB3V$6ndIZsgNG2HjYWA7|e@wj#BTa(PG_0lqkCqSydE^wykZlm$pgSro}J{iRDVB zOw5Yp&>AOM@6`H{b6zpC$K#9)a#iGzs$Z&T(j@w49()G)6(-kP<?AF*>>DQA(_XUM+?#XN z;h1#>CZQuz`cQCY_Hsram|2cQUE~F)nl-6|<|t3YqPdCLAtv;mDX2y$+vYy0VBK7p zv7F|sWhy(+F+v9#AnRa1xh&Z~s9QBR94i%z4^@~*&Y1owr5`9P9y||93LTFNcJgw% zd2kRElxutv<8zNFMLZ;kgMtRpYS|-Ape|A;j($5-EjuFTIUIA*vh^Yc7OaNUa3|{9 zLPd!jN~5|P=%ybHbiJZtIoI*l{TQeHqAqwLBtk_?w9gpf14j%=F1^Q_f@K<#TY}o>Y=+kW-hzCB9uFIgQr*^r7yKhQlyqk zZGSJsSDwGrF3sGH!I;yRyuI~w3SVY&?b|o7_U$J{PFd9U4=r;CgqFGG-ZHnsH^70J zI-*L|{6&u^r`uItS0jv#v$#QChay0F7B@H@9JF7&jpnxmRTo2*O|v?N>0wCCdi3m> zO*Z4SC)JSj+(&bfcBYwNx6Lymcoh$~|G>)5?-Y{S=yO!TDx&B{DtZr5OYvN3qZq4w zW6jrAC1&|7Seg~0Q5H%IQM+X0eDq86>YZW*;7gJFXdCRSO5^QY^h-4cIkNXp1=2zWq>3tgH}v_sQ}@SdLi{a* zfvIDR+83*o15j0PB#;BhAdcIxJ3YHU6?qTgn4~ijCPwS>SIEH`|dRL|s|NkliA8u>=$?5*=hvL2~CXyltF9quLsm z*>b9+N1iT>&D%d_31q*RFZ;znkuVAMj7ttWY29oOJ##G5J#?|`p<%7z=GQY+stPfY z?4?JWQeUaE5M>^PFd(go-rTgcxrd=mSvOsmGXQ^Ewy%bZZA#JN)Kst^`iG##`=pc@O=M9uoEZI+TO6`}f_<%LGPYE|*pHU7JGy4lmq2o8RG8>@b#GfC3|JYXUUmvi zaTlBTa&JB1^177>e@-!g7OrGNha5Gd!RRIQt=ELO0aIVnlh?4H>|uoUwQdjc?IdcyBwGT z%IhJOSL7=X4}|<-Tuu;tEu|>0XV=P;kBd}3)PKrOk+P98U&DGF4%()kC~zY>J$8aq_CDjj3faM@Z;+&nnkY8gVPL~m*1qMLLvXUJXDF_2L4loV zv81L#yk?WqYEs8pIrt`I(~SEIob)w^)>L43kaHa5;&0ld)Ev8eOv-Kcp|Z6X_y!Q% zqmedRB%8cKM`NOW`bMGVD(t59qav^I$Sp&50Hl^3Kqj-OW%|p zT6U!UWH*A1Kk=lmg1v7=zTf}r35py9bD0p7kPi_3K|on#MJf=*9OzpKsc9*2ouYfG zD&5cq>G{-Pxz#r$llcryZ;iuJA2y+zR}U?PM!g3@dk0&jl2kuI6l0ElZg9GIhA|>_ z;1myQumO>3TJ(c7G8N?O2agp!QH0&3Ey_pH!qw9V>`3UT+3A>?{lD}ZgSUAdeEM)D zgf>m{Kk{<rz`b_;KGMG<)bH++C;#3S%AUdxE}j$yi{ z+v~56HPylS=cegc#YII$B~D-0baGC0`dX(}JC?i1>4UiCKBNBrqR1%(z-|?58>9-?gbtu^O3`L6lu0!Xu%At&|#_JhE+5s*b*c~~yF9M(l^VTMzSi=ATR!qyNMe^0P-s>#Q-5?RvEGtU^P>f{b%YptbDxbM$Zw);1V51v}>v_8c zH|tK^Oum3euGL*}jkxI7`{NSaB8MYn*72t0>6&sA(0Ed!q^eB8U<;^|m1UK&cZdz2jfz4mxOwdsk-7-u2%9#B2^&2HyH^XXo%I_<>tpYY z#})OiwP+`Lcf4XHk}MdG7&~aA#YIjMXo+!Xm$N}_I>X$(WU{b87tN;(&CqI%O`!$l zf?GUx1Mn;~X8?Md-%y{=p_IR4NjVZna`CRHS;|}Xnpg_7^KePZEhM^!xBHb%jqA#$ ztQcP6E5~&tE*=$txv4#9I&ix&$ zAhr+#%slGM%E6Esbqk%y3io0!WF6D^SwshuE9ziTQBkSVpVf1rQvjLV5#)o zX>V})@DG)3m7FaoF}pz|rvtMN+QU&Y6BD&|1!i^Q+IFHTPKTgwY^c+Z5@VJe$Gjuv zuE!(~y?(T35puJdOvu@@jS9j9jD2I$osQWVrmP(u=sT@k_Lg@EnH{shv3gs*&PL{7 zvK3}C#`@`6OlBz^CdXGegWXWIRz7(GAoY1*6MLiv2`kEWD|;dyB!e6 zD%paPQwr8lqSndZD@BOMq!7TI?Z)m$X}*t)hDc3D4~C8tTc(f=rjz0F_43NMfaU9x zxqJ&*KFmo>>t})TIb&Sw?*`OsoxgU9YxSy^rTwue?ay^-O-kavCtHJSy$=Ra_jMU< zcA}%*%fu|A=M5Z0IP8e#^SEj~f*3;wlY{zvgJ57!X)?)~nJ9vAWFflajs8CHgmtAP|D72c} z_0W%XiQCgjUIN%uNQvM~1ZQ&=P>2AN*~%6n4az>)T_d7$HOh$t`y#8b{u_-mBk@hf zk+|eIvkW0~4R05!8Pu#U%lQJ(evb>g#*#X|H$vtCyd6o{vAmtgTO)5Pc{_)5ak{!aercdcI= z)f~$1SldBHqd!UEW4oR2L$G7Eq(F1rr9uc>t$8K)Ly(QNY-b?9LPG9eTmL@zKLL}o zt)oSFG=mEfbc-ShRAU<^^BnXWx~z=1q0+zN>WA-XL{%ooB4keF?I^;Ift z9(N{A;8b^tTyCTNf{&HNJk>oI$~>NG{@L0#aDlxRJG~Jw=R2s29PYs6S98p^TFRY) zV9Rk$59%jk-4EM7$|*Pn(2>QLi+uoVl~Z^iH(90@FOpVat*91jse*ALi$$1Oh&)bm z+|kIOH}`3*rk(B$TqJXDZMiEQ3`05YELL*RipdhrcA_6R{gF!oQ&RU_Aqp3CmQ_lFLxHS$ zSlJ`vKG2Xg1>#_NO@ZBo9T;rTiviF2P7qENTji!^n{-d$#KUw3i_RQ^JO~TKZh<>> zwuI$5$?swTS=NFQ{8*4B-Hq-Ru;~f;dr^)p^;@`#Xf)lng<|@fecF$0dU3X_>^|s9 z+B}N4?3A|w?NMBk@7u_BO zKo51OBW9g6`zB70C$rjxpxkZDu|~9EoSebEmM-K4;kiOqPV%e~X0Z@$z!b_Qw$SpX zoDEst_hgBp-GQ~3jAEu}9)qct)!c!+3#vQZ1|gylz(jYNCe1Gliu3ce-N-{mzhp<^ zTKB9yTS&&0G6z;jMspu%?Z@IC48#eFf3Y(F`Fax93w@62QlD4?=UDrom5g?)u!X>C z#ZG0qu&)YXH+LuO*`Rw}3cGnN7KoVj3N>P>gB>G?WKOMiZ&oT%`COKs&&ML4D^)(A z&uCQE-()@)Dy4{gK4d->;Gb$rpNYI9*f`*56+!QsZ=E{DtHB(12IMZNcHd;-S@uuG z94lZp=VOlwQ^_;CsVJ8HJWRt-H~%;jWly-)S%{h&-8XfCgvkdaD`$$4VokBvEC`c-auIIl~lFWSFEI#ww0jRWQ$p?m8d^hj&m4C(ORO?5cgtF&pF8| zVH+_FzBM4p#}?4Uao=#4;c$G$`yE`e6Fv_i^D5q!q4VX0V?vjm@Lz$JhtI0_$0ewp z=?Ix8@zz4vX}q1so9KGA*IP?%-Atv>TgJf}XN#fc{H!^?1z!A^yFVUp${Y_s$ehI6 z@r2Fg?R&h59JNDFFGscu^uX~s*zaz}AICZf9irU5#^f3UppfKvCCRZ}mEC?AdF;gX z6|OS)X_JG{VF;OZjMnqk$lEg9tTniq=P`P^n#V2flJzd2eSvELKDR#*mtdXKh>*F8 zw+jjD;Oz&z-Nf4#-tOk@QQm%moAnAqAMhr0VW^L;;g1SNCCchr$9y6zj2p{XR>X>2 zxi`bLq`d{2;VMI{rR(L;z-M41Lr~i5!D9Rn4}I|HhIT2TY#9zXS#ow%US95A@qaB( z?#p6nf3P!>0;0S4alJc1NYfLI2y-nw!a5O!nM_M?5{327f!uS^4jE)8H5))EYh=CP zaf2u-3TRrx(KD{o0wN{Nn}D^ z>G{@#yz=wx33)@$btdH1oZ}vrS7)7XCh}?~Y|k4y;qkok2~XsePIxk}VB)iRu_?*O z@-C95N{O^QJBp+{{bY8OzaHWkI(>JR^nzkZuk{4_V@cnYKFPNZ3ebfs!V8mmp9tlRSnQ0~|yQ6T0=zU_)mpNHF(9E86LeD6Vy%BL&* zDx}9yC;C~+NQIB`PDedYNghM#;e12k?NV}_rSMYZZw!ckXtFI3BOkA1B&9sew^=_( zQ2e@*a~#sQ0$)FP_(I_a^Y1Y0u1Q=Q`+*xdKk?eDzxFennC!CNgdBL})~%KpU%+B1Kkd*aAe)=fr<%(aZo@!^MRnr8~J`Yp$>F0%m-f!1vNuKc^k&FbR zqO!q*dJ=LBlJ@e6FNe@mv(gQEz{^xn2+)<@3EzbUyk2MzSNt?Q{RkB5mH6q$?S%CZ zIWtWWlaiBD4VYQ!eDu*o?F8bd;k(tjHr&1CPs8;QQ>_y0!M6^Tdf|2ke;R+cf?p`X z9$cUL_GAE_X&j`z$MASm&x*BAB=p9!wY_&mR|`5lw;iqW!SJ=TJ37j}8g$+~P|;EU zgr|EK>TaCu&aO4Tb~WGBOU6IT z_?Q(-PikyAc46@B+rwASZ)|RBTE1+0E#YgQxC>PaPJ* zrts=YO^YGPq)Og%ieB7|Ue(eoZexv$7&%COl8V zR2pF#OPh`6V`ieJd0fz;a8WyNep_QpQ)^q({8ppcw-FN5=cEre*V&tbl9H zu9HSKw=Ost&N@?a?@C(D4$P&*UI1qcENiP?Y{2y@+^>#kTH3q>F|@ZvpdbW}Kv~eZ z5aE;1AGWnFKnN#I;b>a~8e3Wxvn4=F^O~Cgn7@1}(PU&5PycEqlmYxjE{!cXM_3?= zEOZY92#%3jj6ZGj(F*Vvr*?rW0?jSU=Qp;JP3xLvNEG>uqoUhJG%Xts?e9@7E}B1| zUU>ggtI^NH4{6PJp)s!pJYDZ$Inm>zmq(?hSj@LDE6yywDo z-Srw?7G5A*hv{2*dat*KrCq%Y{Re7e&&wO&6bOEU291GYBu-_-fj4R}%-S9QE1gat zhd^)-wYL=G*Pd&x8%t3c=s$9V6X!HyINL+vF;~IabE9hZyZ}K?L8e(Nva9(9O+utK zEN)!VjHSSy%b3nCJ^l?1wYjx%#e(G{S{iZKjSwnp8UGby?ZzU~1W1dn#5!Q1m@#?d zKMI;*2IhAtndV#C!j?8JUEZ=r&X__|HE)9D%`m>bN!1E0ia4M9&u(9-`J~3wd~y$4 z+3L2{ZQssl7vK~K?xA>SX$@iq-uR!}k)`I78q>Cz*-}GxmwCe5+O$Y64E9hV7?N=^ z*0(SocGHIaJp9l%odHNCagCI^pz#`^TJFf>y;{3yyL+yrrKrO_@0C%0#mEosp=`k( zal{hrgzUMLnOJ6m?WyG03Yz~dh}(_jVL2_c@B-h|?!4Z94+^=osa5TW;OOpep>roc z?l3IEK_VW%^!OggD~3U_rQ#ijy=TTG7m{)o{!}uC^&3{EP z{j5YO{pf#AA%*dIhh^?r0fpgp)6BlXWKwTq1SQe~VdfDou#XWW@*D6TSUSv3*g3}) zo&euG??1O6`X>}b<46@N4B=5sXaboHNA5I!W8Er!1~wLT3k&TLKaS_^e1A~??2g#A zF>|_oZERD_#<}zx4fR0YurIQ1vm!Mc?c1zJEPPD-wDl_gT;ty1ntY=H{v2+#Ubf7c z0Nv`EGd)6)uv3ukv|h8#SwPt0lG7IVa~IL8qYp>TSvUg|S=?k9dm|AGiL~q>`y>v&XJ%whIroy zWdyk0p-}D4X2)qY_8GL%-t55TL+fe=$(%CCpFl?8+a0hvPO_p7>`R@WIYK`BkM1Wd zqs;Qt==pH?{`E%t{Me;2Q7GWP9Q|EX0Dl+#V^paS;OQrT@q^}{P5ikyaz{j?6J#}) zZWKTUsE-#F&=`f>gY`&8$AiPA<}GA&i}@o{eESXf@pDnXa~FYcQF`SYRYwXA=6~x38|NmdaVxN)wF`L^%_(gY{tIE+=T4xP3D~vKvv>MylDz=n!=l=@l*~( zBwoG3t5DDAl-&x=(S(8k=0&B$m!5e!74#&12}gejbFUTj*et2c_8haM7E z-8OAPi!KI+@N|-12)mVF!@l3S4CiUtKXreK zwunDpFt#!JRuq4ph+P)PpR41y^3T@zNBnbR;wK4nHkz4k-Quqo^WiE7@h4)~uQ>0) zzU}v%kDOSWQP|#odc{WjBj-;9{>k~XlefaSGLrcE>)tBq&(2141@=?!i*95E%+>uH zqc=tGisH{*(fgv&HX~_#4JP+RA0+I-=p)e_Ffn6a_m&BdME}5qU&LOH;m^ylcVfu7 z_Nb}>AbKbE9)a)0K8O{7$j;%b7`;{E2eF^Vk@(a2&*O0|)<*m1@m~`9%lLEgq))QZ zelGq7;cvv>j>lB~8|}BLt(nl))`Z{qeU<1sus^c@fqFqTptQ4~f0S~T{WtewG;90f z=yg%|415OOccXn>bYnCo!j(B2Q9&r#EL0FOnPs;pE==UL+PV;D8Ur`l7bY$N?DQ1a zC5amoN+xug@`vniWH)!CbH8J?wr#YxCLT(_lEu%GuZAHJV$DFVuSN0awdgxhf%*=m zm?5PA2NabZC0|PytxW#4|Lk1uMrt>r2H$n97y_)8$k>hc2eGT;R;+v@3~Va`Ncnku zdz`4x#b1^w)FM#*w(^;CfosD`pkT6#Bd|UCqU;Pmid_(QMLn{G%73;XNE+>uAaR2p zui7PD90{azYNu8WAenuE3vtmEsG!^V@O0`zMLF2`I4Y=dR1`SCei2%Vj1qhp)Ho_d z^3gaT4C1J$ufRnyl-(GI9~s)?wYiKbx$( z@CS`S4GJ72f)`E&TTX?ZZ~jUs_E-2Tn)I(RwlU!g^S2TH{cYrfh)DP#^0@$f9{ExN zzKmSVO0X}sI`9D&dV>yYqX2BQHc7xH>mdRR%O9dx7fv0?>K3Ajdind=ejsxBGO|hV z5-iY^pF&A8tJhbPy*qL_P49A8hg9aR)^-B6TTd#$lh*45yl!o^CB|0!ZX1BR?QIIM z&3>GK$L*&S;3@mp1pM0mtpxb_rG;en({%QjD2eQ+>Ffaz*-z8i10b@Wrn3h?WIs)3 z55QCQn>NhxO__aQvXz#*A+xX7*<=1Cvai?K10b@m*VzLgvai?K10b@m*VzLgvai?K zV@}2&I+BmAuVJS4*VZ{y&bih5~NCvo*;5z&E$YYEN4q|+eSs8XSW{T5cQQtSw zi+tbgP%Wy%ypHhe%-;a6aP=QSGYvEX8S3sZuQH+TtIWGh4A*y=51NtY7$)|wlNr)q zCl}c{l81dGFd!2VP`=mAw-|eiNTN@!SRnoa@sL_1)Xo9zrx@9TrfhF@Uy4G&m!f~g zA2wOT{=Iu?6jSL-0m?gV+?6)YyNs0&J`J-Arv5VenZNWve7B3GSREELPecn+uq#ol zC!)V(;xEA}l*l3&_A{90A+w$C@9~F~%aFCYR16@W3f=~s78&-ZTB?ULNF^%roaoh2 zsPAW(BU+~n<@^wmO*5jTy*kRiK>zGcXPbjkZ*v}Xq)9yLyiCB$&TXy$Fh@qj3drts z5rRz+dJjqK?MIy#@P`63qy>K2=_H9u;=eK-1n&|i#2`$IVSjFaP3t|!xf&Uh4?|W9 z3NEtQWj)2@r|g&Thx3XKdo$W18Qx&O$SFNW%MSZa+hh2J)y~Fx7NEcbLx!wVz!20s zteuuv2CxKjHU5~jgCHO>B$kIFYi7}jW7Dah$fK&sJQ{h8fY&0OvNIzRBSJsqNdjmk z@&f*lCqr5*uSGTzQB>n=k#~vsZsd=Vyi+{mIz<`R+r+G6mA!_6MHfwqWw)D`u`OL@ zUJya^xFB+&lI=n`g9G4)k?SRZ<$ch60gZuDK4E^v_5f`?h?SINX>SoNhjQMHkXLrw zC_n}U!=(ubc~c-tkhs7qm6lVcu$g8Tl!Cr&xUA5!;eK`2?2m-~+hwmH*x36Y3(&Fc zW{;c9>6M-)5RvWd@U^0Hu&uFwJ*2kl+YW3tLa3F+a`DtRC55rRllpF66&t#FRiDkq zMuWXZu-!veqZs)Ym%?O9`)ivQg)n*m)}s`)Boe%C-^N^`-p((Lte-1W&?8UGz_$3=7MDgYOHFP! zH!^vn`8#&-zcc?3s7hoclBXg0eRkdN%Vb}3BDo&P@3E(TPbNcs@+YaW{N{A_I80{+ z^Vwcy$yS0hTZOLa>UM= z!8-DIKWsm1+wa@EqxRFWhZ2T;7kXZ~u6x^UkBW7iSi^A<^-5GMPca_(tHj zC(cWVwTe*`WV-{?FngQ5!#17@g5#xj`Q8Qw-wmdH13CqEg11KO+t9JuPop!VF?qok zB0D4KqTplE?&O4z8=TnQ+=2L3Ke)^Kz_NdjZrNUkuGp~u><4$*AK3QqF$CD_oOKSw z_Jf_yt&V*g%lb4%7BCD1-Fsa7evFv*E{u}sxV<1s@?Z6<7U#Vi#yn*B)z^lx$i!Z? ze2XbXgtJu4G|DjvPf7A3|AtTjE`cMUTX5fsbrdr#-UEtuzjc)aGE^uf^e(hWaNOP7t{TXmNvT%L_IJ>j(;Z|CEH#mHYx}~vA zv;tqkfuO3%k~_cUEYE^-3~=hQ;4A=6Z5EtUfrHLX*bfSg-zA8>EFjcu^%8s>vtX6+ zfd?VZ)rir0X>}3eh*zn(1VKf6RE80Sek25+cdTw|L!AnUpaKK{@gt69Rv~SIg2+GB z3-ASzf>63ly-oE=t*x3!=-C{uqu$@@)jlIA1bmj@4kwv`Uv;yO13`epsZ~h;Lk4d~ zDQR`Q()%%u{1f1mXTiA-IQ+r?7x-K=*f7{brv9E#IPmcWoU` zg!8V#VP9sMHMoayK2bQu0w;A>PBV;9G5Epd6Zjl}SZ@&z-trVqp}-js&Is@_h0{ae zJPDb@zhS`H=2`FFVFW<-ReU(oU}^|H)Rh0zBU%eUYD8PJh;LNzqm`2y7ir81;8TN3 z*mFi{4C6SY*J>Q2T3N58V(u(&D(OFCy{r>yy;>&!ueM&=th8R*Ug}R%8wQfgyASz^l+pEr9M=_*0`!;~>zCI%rmo7mR%Z92zP+o%CK*b4sQ2sR4G<2L2M^in;t`sIAwecAuFlY7CRAV@05ICCZdO)^%)|)z( zYN{9}2ogtAEd`|6>$NDM|I<`&csQEsP)x0AvrygX;b^L|p2#bU=9@hnP4y@s@B*T= zF&*NCbvUAz#?e$)0MhA6m{}VfW+jfMY64`gXY+ey%+nY&j;1<+80HS_6uPq*qrYeJ5g@P=3UF+d!szNwb z>ZsA>szok32S2pf!_idt0aEMb1yM89R|2h8;%KT_fb7m%a5PoFa)dakPuJ8!$GCx@p(RAc z1b&+S6c0yJZ3m=oA5AqMG~uyw_}&^vQ+*$ht>v03b1i@6;b^Kw!@=Iu;fWdZddkDm zR266?yS;Kz8>|EQ)8#tV!_ic~0;I#ELLoCyRaI*oO|=3L!?UO{8L7%)rxHg~Jpstv za;*)v%CLmh==mg$rdkik4&+B%%go%f{ocdTR0m;{-i7ufsb+vSTwnKkIGSoC47SFr z<;?YUu7{(kUIL`t>wD4dWGGh!xJn#N)dWZltW!$JT4qT8bbUSR;b^L1`vL<>kW}A8 z#8NbdXZ;s>IGXBxKx(s;>p)ba#L-k20)cv0g!E8`^s#GwHRt7j;6W|kQ&s7l<+ZR z6!kLGd6hr}iKD4b1Ej;VC^U%-ny(qJaWvI$0IBtKcoV1+p}f`{qH#1;ZY^46mU5ly z;b^LN2=Qte85_DZeyC}J#?e$C0aE8tm4nLvY5MsSHIAlw1(2F@t;0f}1R+gz%%K`b zQ#}gER`dc=^KHO&JW5S9;4qD&sa63}UaqM!*YaOH98J}PCbaZR{mH-Svz=!i1 zmQemQ&RM`Y9Uuo+SA05vvl{8$@!1HRbF=XIiNfiQ&m+LO#N$Jm{hyZk1K@N3+#R3% zBMswP;B;56;lSCDh0kQ*bb5R;%kxv?xQ_WZ`o^a9-_(Pj!p`)I+pEb1|?}e|rDa78gRyC;qwdNe3^w$*-?fu$>S5#Vv4^y zul;}%15T!LX`C6r;qwPsu7RLOMEx{QCvb|h@cAQf+B`lvnuYkQ`5b>VdfF^}9tBRj z$EO(dh^U|D)9)C=7@mdC8sJ=+h0k-q8JmSq<*{g|9-ko@D;7CyfL&YUdr96H@FKJ@rxwx1T@EY8B`-+;3_3!f)}L)+-CTpt1F zi!6LjM)Rd@bjycL9EKw8IkWvNo{8}y3!nFaQ|$4{TwgP1VZ6w~XFG7pJwBQBJn}fh z*p!9O4}mi@3!elg>|3+&Sp%G!EPOr$4qi9vR?o-RqwQqj^Aq4aorOavd@k^MovX)&pnXEPUPt&U+r8%;lOfPugmC@@xmr$65Fsa+0*w?)W?a zoKHPIne|gX-!STd(;c7lfWs+#ck`CFfwLeBpZynLmop2W7lG59h0oGPyup=)&&$9$ zJqw?M78*uX7CxJSvn~stl11nbJwBQ1eLZll%)%#kvGipx^*j_xM+c#PAQiub!0F7w z=Mmt{%_7giO;{IX;qw4+7JGa$+t0z+xVkqBpGSbxmW9utlVzXKogH2boc1hyJ_XK> zEb@G3iG0(mJA1w#IB#a*(`zZlZcm<=sv-FYq~g~MoDZ|`c?LM09-jh5DgS6b`z(`f zxjX$_51g$YpUm>)E(c%WbjRlm;N0u+=?j9e9li}5w&m{l9MUY`rt416KL8Hfa(8_G z0-Rl*Jeloq>M61KimFwg+n6qW!^K0PD z$-?LGQ?d5U!sn;J;n^eI$y0tB_K33ZxfD2U9-qwmNt}*7qAYwa0M6+ipUn1Cbq3~s zS@=8(oON0FRGf*qUlu-R0q07OPv&wNYccoB!e=dTHe})R@4(^P#X#$F@3f&E^Kg$( zX8k-1oG-KRIp8de7g_lHJ8)va=}w-T&&FEM<1;+tcu{)}*1}o%yaAjKJwBQBJo#Kh zyz>UMF70o{u?O7CsLE$429l?JF~%F&AL} zCkvmS04K-eQXDM*_9)5T7`~f&~vdF{tY0F(Poj_iDBgfRAem1cK zMdl2`GOC-n<65`Xh zmGim~=UpMrLqnW9L!9poac&E7{xHP3D#ZEP5NFQoQe~bS;=DV=xje+VBgC1bLn>z; zSDdQnFG8IAhB&VaaqbLpJ}ShSucD;dMrnw1dx-P3AGUL4}w9^%Z86jE!jJj6K`;ygFRnKP?YZG4*N zK~x(IbGAdA>qDHIL!3YS2AuiLV~RXu>O!0shd6HwaUL4d#+Na6wQxOo;Z+&p*gdFeW|;C^6OPh5rH!V9MQ1T ze*8w2U#7y$fb(Hms*G~=$JrOM1kTy5Ld1WA8R*CUs zM(TN(CE3xVZ4K6Aq8S?@*woZ?*UU8P>2A7vq!|U4NiZOc4HFDR!34(a0wTL>6xOg# zg2}8Qpapx6LVSpp<&en%g2M5#N)8Vtfn~q{-uvHMw{CU!bg6n|*ReHSfBkj;_kaI; zZ`G|V;h>$Z0_PO|C0m+<-?$_lNk0sI)=8nU-6@vQ6lj_I`4`)r=mFPbA)ic>*TVl2FPC4=_PPeBARIZ!UjH3eq`f{9xhhY|7L)iXZP9~YF5_g2N!VT5 z;tt@rwCJ5;dXt#ECe9B57Vi{es}g0ef8i1W4%ur7JcF%Rd$BDZ1A??g=o?l<1V<;f z=mEa81qeqDw#69W(iRZ}bxOAQ#~o~odjO?qv=6ey38VpOi(dPpIwM;w;deV*d`8>i z6~K1+rnvYl+LCecVb!|*hxB}Q9eVy-v?KLwKF7r^dHA{>?MxwkK0f!lwm^fCgX4lT zL2T@(eAvnsoDavKAF{yaxSXl>5V#xiljfpNellxh)3@(roBkGjl{~;c$fh6FHYHoQ z2ibH5;C8u=Dm@cl#JzoxO<#-urA66a`XHD1wF({y4B?w4M>UMQO z7@oIK@O<=o_)S+gO9)n2j%WyeWd0WIRMGLu8p*Z$=YeC}qLWyj#N8BCn>Ud++6Tw- z1ezxbaeWHcHm9LO@|?KZrWc=|x_qn^TD0*=(`KKzQv zE@je(| zrK1@RU85L$kB-4F!LtVmY#kJX&jc~q$9*@}Td6+$DXz%+@Ok*VMH*Y$Ff624W z!FhEQcrxBY-z-#U9A7j#CauK9dnfT#MH@1{Ks4qco4)2(+vn9Ez%isvo9ERYFx)P$ zz8^Ylmsjru!|m#pY71Mio&&At(8m{*4${{1655q|c9ksSbk9-pi>7fZa>AZnba!i< z(WBej1LS*!>rQ)6VWI z>#+MYHc5dk;2A6PmQ{Pa1${KK>O2j*96GDa#?gvZj z=m%+an7PwB4T$e%ym{__Oi9%;E0@g53|&9poF6+BfEDKK{9V%f%f0EghEaD!Nv2WbNws;Q^ zT>X$OKCNxhyr*8(w&+1SF5?uHJ?Qb<_0%s0jDx9O83n z>iFS1;6Ezj;`B^tPoqI0k{LxM)PUppfV>xfMefbu(|?$($k$J62;sa8I90f=9NiFP z1dwI?m3I;3HbCepIBGR+PMC1s2%O0lIIg$+D$MsXx>X;Yc#GyRZrr5$lpdrv$uoVR z!alf9Ii<4%MS*>AmUtX;;XlZJ1OA1{BL{ir!+Y2>Z+jkQL?Re+-uPSEGcOQZ&Ov?3 zhw;DcQ)rg?84eC*k~QtUZsgJpv`6CW@b}sHfAgkS6UaHp!;fkYUji+{whtOR+yNcR zv4bl&VN*tW6qjTa9CGwbI1~kwEuw&MsBfY*->vw)dD9yHCI2%AN6Kb!Dl?M(-C)N2 z1pM$k7;e@#5#FByX9a(ahd&0$R)`>@fPGcAL;UOqHkbH z2U-a8$iaSi89Ks$z}bd>ZT-+KZ`XMam+LSWnpCGNt-s)Mg_98!g32Z9; zutrTg2l?SvP#|vO=FsQ{^0BXjkj$c#A?>=3aL9jNfVhzU^JM}#2l>zPI{arF@TC8Y zp$(jb4)&ktY5xg*&ROBH-Ft*5kX)e#7)QN`%#jz1qvmPP;vQ*tn-^}C?Df-s$M!k} zFnNG|ki8y*P|{w#_C<9@wiwa2=mFGaoNRFlhG^HLeMj4(`JCQr3tO zU9$k+M#M=yw;qESTRaS*z+C9)BnDS;U%MFm0(d41#Lf}%+!u6>|A4a{|2_l%n}g$Y zD;gn-x2h`NiZ|zie-BGQR?u{g?JoWwXaD)E@A6r8b6BSV`H^@Ej#2vUMd_&y)OMtB5mw^lcGKN%YYNQE3 zE?PJPJS!*_9Rk^GQcQxNKU<_ws{jut(b%S`4Ajc=DG#6NWbiZeD!^BbLp$J6Tf?quhJ+0Bth#&7Xc8eTOPvy z(pR^m9XNOBU|+3=eN}yZozd7g#-1x&5w!S<`Rn=yh(-=xs~y4pGS@{A)G68YX1tLi z^Upf~1#^*uZ2EP0Z@YeHRoklvEx3%6ExrV!OItKwOZsCFlD25Rt~b`g7OdyDYdw=d z_aO$&(TSc%a2q*ktSwakZuCr;?m>EfMC)BxOJ0&++{`AwL3~CB_kV|2ZJ%Ey&*h zQbm}X+`IX1^dJ`G1%ULSBsMs`fSk1;zeaaikk=-)LXG4HEuy0$T^w z8x=G!>x~KP8lO-O--^U5{rNi#w*Hbo)02dP^%gmN4P2lp$VEAvS~Q3Djpxe@r{9Gc zdJwnJm_|beXk>3evX^k(f()+0F%(2SMLEeWZ`xtVs$Z#jouaj(X*r}a$!PVs4FN)$ zUu&Ux&e-%sYj}=v&c{qut=3D8vgSME8H6JT_l(sRQAxK@G!@>>(exoez+B{@XnF*h zq+QQQ&zZ|e=|KzeJ>%Puf7)g2A8HRj8{tHrlAh@qPLPB5-ss@4o`0nEJWoTiHpM5igynEU=pdU??;veTyF|GMWynt>9mx!N#6 zFGCGeX8R~;$;?J04fi0skF>Bm-9gpq7Ni=u5cD&Qf9;ITzCmAfP_t^}8|)f+YD1l5 zRz==u?Hdw@Xi*-s)yTdvi7RRN2EFIf&Nrw^feKps#)t1^-}neDM;>4wLOZvtwb_42+d}9g!xATo1pe1v{UAQyeH|_x~=^NjPrA59`U59Ustiv~c zS^I|P70bm2zRYD7CP4j7cY_wR0yL3>GMRe-SA54?P3uIi%+aeNS(mwJwmQ$qSAaJC9t07u;Q zFd$1B;#JDxBUqO-gpeMkyIx2-;JdyK$Qt;DieOVa&$H!z2An?Yu4mkn$xLcU<0O`n zasP^j5Up*%S#Hs?r*2!b?#kk>bGTdh4>gm?0rIE?xdV{%7GxTbZ(ES#fUIeV>%Gqf zftTXCIXJT|0VJqzTEMSo8U*~}3S&#XH6s8It zyjv!Due1*No_kQFeCvZ8DQ`u8^BM<^BY)GW)$TMlu;q=Ye-E z?rt`AplEs?M3LEV395AYrg6dNaYc>`;^%)T;@*w%g^ak#Sbiwt&bNp-5|Vn)1)U+6 z(T>dz`$o@;RA$rlGo=dQ39jAsoApa*42{D=>RtN*T8p$G*%dTmK?dm^9|ckM{PslD z?{ugyJJioO)W7La?@L7eltcZrL!F*fv1Nb4p+205`rQuo6^AcAv?##2FjIPWqZY~u}awo&amd2;|wjcZ-_6H8Qst? zN3M?IeS%xo@m^(q7?M53QZQujv&QR`x9nqY>4^Ffhx&p;o#x(cpZ}tvuI&DYE$q%d zZ=_(K4@s(|7-K2o{Fyg<<}4bA(}B;gz;^9?-tf%XIK;D(9iKc_qa-)p**7*&uIy>H zS95tZSaX201It;kl<~qYO=eiKjO7=HGIdVp*d9K?)xw1=aujYAdV3w`i9A_xYzOktX znz9ehby}{DBJM#9Ni2^VID_$n1<9_$x)x-x2LopXQQmTjy`>}S4>{D&I@IZ%benpw zLwz|B_0KxgX-(Xsl|AoJf2BkHbRz1j4)s-sI=$~{@iX`;hx$q)>R)iE(^KUZt?ZgZ zeZrxBCK2^>4)ya6^@|SmvP1oBBI=Ji)Gs*HFFDlT=1_kq5p{Y#)6(+*%|}^~>}7}g z2Oa9GiKsvBP`~I<&v4e#wap(m)XycNe!-!B$)Uc*q5dg{`uRlEzu{27>`>q8P=DN^ zejyR{HHUhJGe7G&yUn5g1Bd!rBI@6EsBdwo_c+vPB42r?%JUZ!QNQR=-|A4`?oi+A zP`{Lj`V$WIZ4UK5hx!hO`sGB_FFDkE9O}ak^;bC5>2XV>g$^s~A2`&vJJd%U>bnhf zRaxByH)vK_aaC#R1gfaLL5#9RVB@53-4_)Yh-xlsxrj0lKo>X zWasK@1Lex@V|z8P7zg^;%FS_xF0*fJdTGQGX4Xi{)lpq{id*K)Hb5&QDwD{0t?U`6 zkNbZ>P&mq4wz0Q#ME!1u`e}#yS%>;_O{P_Lf3St!+2@TE?DHW>l@vWJMVvpUJd!G` z!{-gp?DHX>mF)kch3xF}8z@)yA+}d@e;!z2D>ug(T4vv9;qzLqj=ZkGEo+}&VtyEs zJr6ZBbs<{H>-sj(>uALfY-5eA`TV@$nY}K=vyz<**Q}Re zuiHSmvMX$_<{mY0imlunXK0pvqs9EZma8ML%W})?Q3FSqABJSBECoXbKWDs7dCM?+ zOGng)9qN+~^#zCe|8%I2B%=OGhx)8TeaWGI!J)n{5%m#=dexzR%Avkys4Jhpu7%HY zyc-L0yoao;EI7tefM)bayRv#E2tbgQ@osqLcn|TcWWTY6>>TeKC|7ow?bSS%2Nu}M z&2fhIvTwAAcP&>(5%)B1nPYiig!y4e_6SSCkiicbuT$P~guSIB>RTM@`yA?%4)q5N zb!GRPTiBg_-bledACgo_G09SFfX{DVhtC_H+2=z%E7|X9Av^p02FjJ4WqURE=YcV{ za&w%aYuPt8y)2r3^cu95t0S+wgh%E?wqbuB=wp5ulHJErFl6vu#_N=~%(Az1MEwbe z`gVu)Rz-czu-{MIMlZ})SvB8Kb?sB;|_Itw+4-y=f1LA z9qLbWsIMfVe%_&e$)Uc*q5cHcJr##4;?5+Z{-{I!qC-97P=DM|S9$)v7I~igIMWXI zaUohtinA;QXhx5;>pB{}2_3c=#~Gfvj|=gvWdB49*}0F~K)JGGY_I11*T68xS96@9 zAFyw1vY(SByYSP_k7?QSi!-zV(M@>hIVcy{c5lOzx+8e0fu2c@eX4u|?M^&>K=VWO zJf;oFz>(t&a8AL)>1y2GyoCPWfb&Y=K#jl=Ps|e7I=%>;BSLn219=A5S#Z-%C~1o!(a=? z|0VsXb|mCi-i7DYG0$(FjXw?u>rmpn50Dd~XxSph_TrGg>f1>~~QhPbfiO~yM~D2*Lo%*Zc8F|CgSM}CuwA)f|>Yi!xhIY8*3 zGYR=iKxUQKQOo5Mi?}AgX2tFN4R9W^?)o9M179SMlI{H5GQQ7fNihNle^*H290Y_y zovb4vZvuqt9|`$AK+ak%{|O+IfS9|^0m4sS$-Dj+AZIL`?*X!^=t!I&140LwWS)Nq z?O1mIWk6{4&B!$hh+NlWZOj64O0@xvc?%`lbGQ!><53OZ&`SY^=g$Gc^@ilX>hwvS!&o=j#<`;V6wuW@ALGZoCwA>d3RE&c3gEY}Pm^n#dyECIsL!Aj~65DpG7 zskHG00qF_d^-VxPJOueiKx|2`y%+jXQK__1$Ye%vm(j*{;P9FzaIm$9hn!E>jV%rU zhej?^^B!IZp~tQJtVqcNhet_LiYg%FEk@731;{pw`n`Z$)H=ka%o-r4@t4|=?fe}e zwp^Ru3p~va-SrEAELo5tK;_~~N5Nb$m#-q6wuvgGN6}gW&Whz@ze5mx7q$2` zYR97W6F^pR#n|gP?}N|lyXO2-sgj33Yg!&{^>|=H$Ymsb4esL6mXtl9b}V0A1mqlO z8Lhq>5IPL?-=}u0yZ$#I%a$#E1jvNyWhAZZ-w(}Ow%87c?W-ezj9D$eo*>p;rvTxq zTef^3AXQ7Np9JKR#n0n_%vw@>pCA^_KLEmC@{%oY!<%R4Eu5WzTtqu`UEIH`zr{4bYI!9}7pT!f?s@>)RbxOf8~&$c*x2Oy`dcJ2p+SMjdNws`(3a8}Tc;qV)P ztXl0{1mr>B7=E68AF5N!6Al7$+U6OM3zo({35eaJJqE}Yi`G`WueP8e|g7Sjp zhbMt^R_mGGkesU&1Ricw_If99#-1Pcs1E?LqFV-H<}4s^xsa6~24vFW`OARto)6L! z{tA$>VR56P^?v|4V#&Vg_fg@aaig)D067DQ@u*#ZkOd9SYXRYURnmF`AWPs-%7yBp zNcHM=+-2h8O~9c}$HdMWAX_b3mjT&k-L>UIGLIR%{}Ldlt#(cTGWnu#%fAgsMr$6w zGb@0cwY2&$AUq2prMN(M>ByzKz6%Jw*C^$x7iY>ooxV6s>+gXxW>LQeTh{HHv)&p4w9d}fY=rs2c&9oSOo>@**H-Ey&$~EQ`A&mzm7R0O_%){~;h-ELzX`56Cta z*krsd>pV;hC{Jb5IZ5H)=0pU4nF}}#t zXp0V`)ic0ZvhMm*Kqw;`KfC}4SQUfPfIu|G&t>5BSS>%}W6+o- z`}KhAvv6(#q{s5!Uju}q$!PTuAd`R)2htXk1W{)aQU>IV<>7Augd{LhycduWtL2Xa zvS#t~M}Y7Olx+F?fGk-p{{tZBt#AS(4;(kJ@t7|1FhRly;9 z!qff}V#1Q^dO$8{kMb0;Rg2aR;PhB}-UY~t#zA#a3d)dFLx_(fz!|gdngQe?3#SeU zRYXSfrvc$L7v+b5oVV`!3LqnvTu=Yc==HP|ME#|JP=8@E$*%)qv`RR2K&tplbR?}i z0a>zI{wg5bExSMKzaR!Jxn2UuvenKj03n~>qFa6yAm?#vYEd7MRg2dBfXrHw{t+N& zt(MOLvTWfzP7uxEbS(&QLuSOvt82hn0#y3p-{Gvc5KPU_cz(?<&jfWoEtaP%{M( zf<{o==a&nmpq9ahHoUypawj8q^thq77ED(gwO(^)u~BN&3$+UNY^v1qU`I^pH$_}5 zuM4j}UulLnI_J*>yRq?1Gg5xF>NOUtL1xY`1GRv22UYf-QC`(J&A~n}dhpg)d!q-( zCwA@M@9oX)zWrA3z^;jXxx2p~7F(#FTA= zzIco2v2jA5cct<0CDh_^vbnhKVP@@^LojcocHAyrajxp=U7p;_VmZX&6i`0~mxiJ) zZV|YzE|w2OR9ceSI{~k;b*(-NwM%`VZgdxZ$)If!rICn>gtrbr)lfL7!*Q$QSeoYK zNysBf%h2~ce2Uqt1v7~5pyq{vg&+bJOSLz6N5>mGc0$3hdZi2(C^x(S!9NdQC>+On zO3TaK1{Ph$kdbI{6D`u>&bX&f4~{qb`}4DY&1=;BVxvBq&kdqmnrY1D#%{}lL>mNd zcD%6@PBXfgJAB)OH@<`Z6a2YQzJnUx;oT9CJA1S>6(Y7Vv0UEp3c8sc~GxX}C+DSeMtb84-H zILuc4Vr_K1aiwh!!ac@^z1*JuQT)Mw`=|QhIm$u0PNjj8zbH9#Fqh` zEDd-zUzvA1PP%}Jfl^%j<_;sKcgiTQAj|`QZgj$%=<{;pgQ4_vGqNW7ERhsirm6KI zhK$i^szHX?MXO-mY!T_&s6K^um@7)6{z6<5jY9d31SylkU?)NX>HY9+_$BjXr&2hr zgg7#}IOVi%@=bS1bVruG-AL=A(Gb5^nk=a=HNKr%YbkShb9KHxi=rWa4D|;3f9b<% zaO%v4#*RMBGo0{i1rM{8HR8u>_%peKgWj$4fFhxfjb};c zSBdadl3Qii4HjA!b!r^AA%;#?TXgPFdN_-;FjqMqj2=!PUM_bCcl8g}0&2qKV3TnV z!KWe81`uJtB!*HPBoFa;n+C}qy#U{pv1Wf0IvXdI9+-AndqgKJm6Kl+`C+SsoxH&? zpDFs(PGtW=p!%Bt`Fy}zlyRS??qjKRNurw}(M-_rCaR_z<>`VnWokkvB-ND`nN-d1 z#0Z?ZPqDp}xkSo1fRroT2y@u=pw<|Dm8k7$s^(y*3_^KQuGH{EsxB!;$>+w0Xyj5o zG@&ZEG(=64Db^S2D^(JWrZkGkL1yajVtTIeT|6ET-PYBi%#wq}w99JDLL8<#bGMq) zgC-7P3?$RfMiFEALY7Tuc-YFY7&*#;o^9BTB+PQdu4x3D7=I0=7`@ye^Euua_Vxyt zYOE}djwR|wX;dRPOsy%yn~BZa67kj|31IF!&Q}h1kr2z(E^#Lj)wmmGifR3arcyAw zPg6nCf7Tgz!kBtC$RG2t8kbvCYjIs{T}zOT00UE4=PajLcjy*1 zr^d{4#bgm}WDUC#Ce%E1{Z5%7mnZrM3dL!jo)hzL@VlHhzE7mCCml~(Tj`D@`%$jx zn!gM6ex&`76lwG|{r%oJs!gosU?p7)S*VH__72n9lUO(IIu$L^ZN_EdoGwvM74O$s zT8@z+x$#7`yoR?cNs!@mpK^=Lsh;M!^7cg!)qZwqH#y%`AYL`6Fy_Y4=w{J{PV~zx1~2I*36|v`{A2?rGd9#%|*W+tV3KM4D#aMZ|dY^=|cSexhlJ zoS8320H)Pkh{tTW#Ps^RQ^$6j2+Naln$k=BlpS>{?(RzwnoO5uqDA67R*4(*_Ee>Y z_r-Eun0t(+q9tlGU3aDBmb0WGyRfT3l_f?l7=OYxP_iQBe6EHK#S64sm+8d22-6s{)%By`0(HA!imb0AwcvVs+DlspLjC@%&+mDpt+BirM>f9uxj;$57vz0 zp4#Xh8I~zDp;Qj=IDZm~X6R-utWVK1CoR_2bIvOIRpB5;6R}IPDXOMgm6JvrSLX?e zTGDn4!YPVc;H8+2lU0ypS&`xTygl?jy?9?GiF@;tsni$JGpFK_!|t@pTp!#(3w7|I zK#G15qDs%#Va2lH7fUkbgKi}D zBHu|A^ejcnuL{d|omdCmr_>#pFhaxoCEbxiwjJU-jrmYa0ND(u*Jy~-E4*#tUh8E@VYr5ZAxzAq>GMTyR1w>E-amswG;WLTal*O zZkXQ`XK&&+cnH;dY1$&5SeGPgw#`GAWNSt)BwZS%Ge4jlk|ND!Q|1=ACAIA(bY@3z zrXg~wys_TUeP5MrCbV*{8Uw5WSSRhVLbL5Aw9p$#ljRI4`pW%LzNpxIKM}L-gqHbg z(P#NnibB0xM9K+Gx6Aydw|4|{nqG^BN0U7gt?;#au)%Cc5$8i)-Iapn3q9h1?CZSf zpXgy{6MW%E9^@0T*p@=edNpWkxl?*ONshhj?J10a-6WzVG3rJF=ydF;w~aS1gmEyX zluk^;nqxDG^Ca1>!dUFd$C}n!x+B`?wh|$$r#Zfek_kzZO2yb}`wC;#bV8)%UK#rN zhPIEVB#Kg9Ux!mFKPO@YZTDzQ7igz!(U@)`9qXBfnPWX4b>#%szpaI~)zzWSvZs{X z`#axbB9v%S$pD>m5YmCWI*=qn;Nf+EM^ZOLoE<-!qQ-N33Yueex z-P0oM%PGcT%wvE%IOt;rYURtjc{Zbl$76nFH5BIAi^ z$;{Ms>`G3e)hm;=!t;(&t>H(z+AZaDg*ZzNcYV@r%c0%-Ny!{*E?o!35KnH;p@r{O z``zImVH3NJnzLO-*W!D9cwp5p*<_~db&kM&F#k{6KPn%FO+7oW+lHfp_|w`bzeVQ>HF_=M+W zLR)0ht&3%^QL2lkLZ^h3i8iz6@Pv0@0$7bwEtnzV_+1OCm0H6KYBikB`L$zS9owiC zD`k9|yV&rjN&%n?;}QmDt3h$+@Ssxi?f9tT z0i5M<#yIt$F%K{!c{AmCFIdP2RUzT5UoMmajop~7kzC%fU{RW;x9ZnO9@QFM&(|}2 z*((+64P5h13}z)ugn*rpbp!T|LOTw=`Wi1c%C~qE`^WRx7MH#OpQ+Y^`9kF;q3fH7 zYHvQ{-GOb=;U>Z89JUGF?bm~hcT2Hc7|SVJMNW4w9`xscqm*}R&`@}{RBF5A?#(e5 z_f%l#NK3he0OZlYST00+w0^KsW|tW)@0qXR1MdxipxX_~^K%~Ni^$e9kYH{n`x0(24M=-|*frU&P17 zf`ynkP%4w2KTt1&if+Q`!fhk*cW>NP1kVUqkJGgz}s7Iz!~SOYResS zDtaJuDl$m#;K0Dn0mZtGRp~}DWT7!3N0OH?tNU|sfFyTf2g3uNv^8Zo+7irb6YE;F z$qB+z^p&|8qz3G!n_O<1sS|9EL40h`TPR|`rpnwLa^-RDF7$z;QhgM?a%6)L?AG4s z--)TvV&1D@Z?3?f8_iF6Icz;CzJ4e8@~03RXdKajq=J8s1+{We+PTB?kv?Pq=NEj~ z5V@vuf~E1`kqDb&tx^Vvcm#WJ7o=7wcyFlpkm76i)Ljg?-kC4r?j&X{E(pbz=RA^L zwlf>}1tW%EEmBY+zOlb?!$W8tr%jGa{a(M<=lPlOpmBRyrsG16^Ybmm5+VU!%-x{O z`xHW@M!it0h-8qbq(;6>>9RtW5spnNnMR27RgVB3k_BVP2qgVb|7p}E!$J<_g_4!; z$S#shWf&^^jUqm!u0oUkHb9U3tyn%z`PoAc0;^F#o6d$P$oz2y&PWfE$gQGthZh$! zNXPsAdINo*=+%V~D%ap+8c=*8U=Nu?UWV9YhPvodl=Q5*BpwhK*vP74J2O8I@sZSu z`MU5&`uvYqnI>%^LsI}1rK4)6k9dnHG}u*i7)WP`BysU2B-1#)Nf6XvAW<~yf+;C|`X z=YyI~MC_I#6$&5o-1ZyH5`lzEQ)~glqIl_rj9npz$ zZQkS}D~EHcM30h3IvSMqh&NS_OH0Z777Qc2dNs%wr_lqMY}BIvmBl$HRGlz6fWbGi zu8CirIk8ir%$!r`1N>UeN0}F#P>(a%Tx|Uy6u6`9A$YPaPx8$qOSExKjkEk-u82U(z+%g`!m@FzH`Bha8)Guf@Sijs) z$y8B|q^A9Wf80%wh?z>Mo*TR6@OWjMzMK^6c+eBgmbdF-rGQRg8kIDUYukOpHNEFi z08-k+2U7F1;E?5uq(U&61*kNdUtd8dKcS0NRcRV@IF-89)2JeZe5aW^pf<$#R$D?j zM6Qfp)ai>3j2^u8)gHDypV+m3zqdEH`}SMC1G^^n%Bie)vYfSPEgEF6tAq{=503N(;IQR~-50V~r3nMizP zSsSUD#-imU#}IW*82(eT7~M6Yy1CY|VAUFldo)fBbHQA`s&$d5FR`}wLuWab$7<|O z(q41Nr>kuHj%WEn@<1Ql@cX{CG}v4td@A!JadDoDyveU}>PkgL7-D)(FJY zw4_WiP!;ofl55)M*~bKw?LLt{I?^d1GokxjU!9dC?H~zo4ig0poal6XCrCS8l+=?l*q4{{h!>idY}(E83^vEKHla*5 z)KQ-ZRe3M~=8zPtb84y~iE8COWXx)_32DiMHL0m`mYHls+!Qf^Y4@q(#w2`UnI}AI zk<>=zbS2E@lpe4iJzEj$7GkpHgr1RVQ>0T6+C_8=vLeuBRRIn#8tQ7-lqlC}m!x^Z zHc?G;i0pyNxsFfkk&v2E<0zREQy7toQU+cXlXsZv*5o4ji9-xdE+^O%2^K94ns+=+ zjUv2XmSZBji|H5Pvw2l2O3#ms4S6zNdgXYF*+La1i6UU9H!i-cBX{9Psf84W&%v_t zC|@NV3<#;PAVBL8(HU8)LPA42LLDy!K{XRUypp9I%`#d`TYBnCR4U<_FWJ90boYgF zT+f2Ba50k<5Lfn?iXbwg32B$Sw3|D#EM~~{G_3aR`0+G5bG0hn*^suI5h7u-RjRYu zxFBv|tJAz1iScxBqJY4I`_^oebiU}|`%3#YcIgc$5yf1%EJ;moDlE$r0dx{Kk4g5z z2z3tL?GD_U6$jRQPBSaYRKQ76+pkqgMKud2P3@7*N8BP}q69($k<94-%lSDhzj4oP zFD^tYNtvpPv^Hyv|4S9WK&yKte@4!RPtW&>;*{AH%1-1lgKCY-6mALfGg3Upmo)sl zl5B?rdaT|!h9w`kL!_uy#XQ2#gmic<0^Wz4;4w{S>*X~^w@FfdWEDk48YQ=AMphZe zURUOYsf9e|P9P6Y5vr+3Q9f#i@i4=35?G?z5t&P0YBi11WEFzkQ+_EuW^pHpD&(rJ zOt|rq=;9)F7BN~+!-&miDD0^@z3iVX3AgLE6NG_S(bVSgU|(2H>ITmlc+p1@xQA7P od2c3mjC#dU9Vv=*nMgUqtdolsrSQ; +function Home() { + const [topic, setTopic] = useState(""); + const [loading, setLoading] = useState(false); + const [mode, setMode] = useState("roadmap"); // "roadmap" or "quiz" + const navigate = useNavigate(); + + const fetchData = async () => { + if (!topic.trim()) return; + setLoading(true); + + let prompt = ""; + if (mode === "roadmap") { + prompt = `Create a structured learning roadmap for ${topic}, strictly in this format: + 1) prerequisite: {topic names} + 2) subtopics: {topic names} + (keep {} brackets intact and comma-separated topic names)`; + } else { + prompt = `Generate a multiple-choice question (MCQ) for the topic "${topic}". + Provide exactly 4 options, and specify the correct answer in this format: + question: {question text} + options: {option1, option2, option3, option4} + answer: {correct option}`; + } + + try { + const response = await fetch("https://openrouter.ai/api/v1/chat/completions", { + method: "POST", + headers: { + Authorization: "Bearer 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", + "Content-Type": "application/json", + }, + body: JSON.stringify({ + model: "deepseek/deepseek-r1-zero:free", + messages: [{ role: "user", content: prompt }], + }), + }); + + const data = await response.json(); + const responseText = data.choices[0]?.message?.content || "No data found."; + + if (mode === "roadmap") { + navigate("/roadmap", { state: { roadmap: responseText } }); + } else { + navigate("/quiz", { state: { quiz: responseText } }); + } + } catch (error) { + console.error("Error fetching data:", error); + } finally { + setLoading(false); + } + }; + + return ( +
+

LearnRails.AI

+

AI Powered Learning Path for You

+ setTopic(e.target.value)} + style={{ padding: "10px", fontSize: "16px", width: "300px" }} + /> + + +
+ ); } -export default App; +export default function App() { + return ( + + + } /> + } /> + } /> + + + ); +} diff --git a/src/MCQQuizPage.jsx b/src/MCQQuizPage.jsx new file mode 100644 index 0000000..c9cd053 --- /dev/null +++ b/src/MCQQuizPage.jsx @@ -0,0 +1,100 @@ +import { useState } from "react"; + +export default function MCQQuizPage() { + const [topic, setTopic] = useState(""); + const [loading, setLoading] = useState(false); + const [questionData, setQuestionData] = useState(null); + const [selectedAnswer, setSelectedAnswer] = useState(null); + const [feedback, setFeedback] = useState(null); + + const fetchMCQ = async () => { + if (!topic.trim()) return; + setLoading(true); + setQuestionData(null); + setFeedback(null); + setSelectedAnswer(null); + + try { + const response = await fetch("https://openrouter.ai/api/v1/chat/completions", { + method: "POST", + headers: { + Authorization: "Bearer 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", + "Content-Type": "application/json", + }, + body: JSON.stringify({ + model: "deepseek/deepseek-r1-zero:free", + messages: [ + { + role: "user", + content: `Generate a multiple-choice question for ${topic}. Provide four answer choices and specify the correct answer. Format strictly as follows: + question: {Your question text} + options: {option1, option2, option3, option4} + correct: {correct option text}`, + }, + ], + }), + }); + + const data = await response.json(); + const text = data.choices[0]?.message?.content || "No question found."; + + const questionMatch = text.match(/question:\s*{([^}]*)}/i); + const optionsMatch = text.match(/options:\s*{([^}]*)}/i); + const correctMatch = text.match(/correct:\s*{([^}]*)}/i); + + if (questionMatch && optionsMatch && correctMatch) { + setQuestionData({ + question: questionMatch[1], + options: optionsMatch[1].split(",").map((opt) => opt.trim()), + correct: correctMatch[1], + }); + } else { + setQuestionData(null); + } + } catch (error) { + console.error("Error fetching MCQ:", error); + setQuestionData(null); + } + setLoading(false); + }; + + const handleAnswerSelection = (option) => { + setSelectedAnswer(option); + setFeedback(option === questionData.correct ? "Correct!" : "Incorrect."); + }; + + return ( +
+

MCQ Quiz

+ setTopic(e.target.value)} + style={{ padding: "10px", width: "100%", marginBottom: "10px" }} + /> + + {questionData && ( +
+

{questionData.question}

+
    + {questionData.options.map((option, index) => ( +
  • + +
  • + ))} +
+ {feedback &&

{feedback}

} +
+ )} +
+ ); +} \ No newline at end of file diff --git a/src/RoadmapPage.jsx b/src/RoadmapPage.jsx new file mode 100644 index 0000000..eb792c4 --- /dev/null +++ b/src/RoadmapPage.jsx @@ -0,0 +1,50 @@ +import { useEffect, useState } from "react"; +import { useLocation, useNavigate } from "react-router-dom"; + +export default function RoadmapPage() { + const location = useLocation(); + const navigate = useNavigate(); + const [roadmapData, setRoadmapData] = useState(null); + + useEffect(() => { + if (location.state?.roadmap) { + parseRoadmap(location.state.roadmap); + } + }, [location.state]); + + const parseRoadmap = (text) => { + const prerequisiteMatch = text.match(/prerequisite:\s*{([^}]*)}/i); + const subtopicsMatch = text.match(/subtopics:\s*{([^}]*)}/i); + + const prerequisites = prerequisiteMatch ? prerequisiteMatch[1].split(',').map(item => item.trim()) : []; + const subtopics = subtopicsMatch ? subtopicsMatch[1].split(',').map(item => item.trim()) : []; + + console.log(prerequisites, subtopics); + setRoadmapData({ prerequisites, subtopics }); + }; + + return ( +
+

Learning Roadmap

+ + {roadmapData ? ( +
+

Prerequisites

+
    + {roadmapData.prerequisites.map((item, index) => ( +
  • {item}
  • + ))} +
+

Subtopics

+
    + {roadmapData.subtopics.map((item, index) => ( +
  • {item}
  • + ))} +
+
+ ) : ( +

Loading roadmap...

+ )} +
+ ); +}