From 1342fabe15d4578e4fa6edc10aee3f8cbd8279ea Mon Sep 17 00:00:00 2001 From: giongto35 Date: Mon, 9 Dec 2019 03:02:35 +0800 Subject: [PATCH] Give option to join by zone + update README (#146) * Update DREADME CrowdPlay * Update README * Update README.md * Add zone control * add zone * Update MISC * Update go mod --- Makefile | 6 +-- README.md | 2 +- docs/img/overlord.png | Bin 25467 -> 54345 bytes pkg/config/config.go | 1 - pkg/config/worker/config.go | 5 ++- pkg/overlord/handlers.go | 78 ++++++++++++++++-------------------- pkg/overlord/worker.go | 16 ++++---- pkg/worker/handlers.go | 15 +++++-- web/js/init.js | 4 +- web/js/network/socket.js | 6 ++- web/js/room.js | 15 +++++-- 11 files changed, 80 insertions(+), 68 deletions(-) diff --git a/Makefile b/Makefile index 5e398654..3a4c04e9 100644 --- a/Makefile +++ b/Makefile @@ -73,13 +73,11 @@ dev.build-local: dev.run: dev.build-local ./bin/overlord --v=5 & - ./bin/overworker --overlordhost ws://localhost:8000/wso - - + ./bin/overworker --overlordhost localhost:8000 dev.run-docker: docker build . -t cloud-game-local docker stop cloud-game-local || true docker rm cloud-game-local || true # Overlord and worker should be run separately. - docker run --privileged -v $PWD/games:/cloud-game/games -d --name cloud-game-local -p 8000:8000 -p 9000:9000 cloud-game-local bash -c "overlord --v=5 & overworker --overlordhost ws://localhost:8000/wso" + docker run --privileged -v $PWD/games:/cloud-game/games -d --name cloud-game-local -p 8000:8000 -p 9000:9000 cloud-game-local bash -c "overlord --v=5 & overworker --overlordhost localhost:8000" diff --git a/README.md b/README.md index e08b087a..4278d7d4 100644 --- a/README.md +++ b/README.md @@ -25,7 +25,7 @@ Crowd play: **[Pokemon Emerald](http://cloudretro.io/?id=652e45d78d2b91cd%7CPoke 2. Cross-platform compatibility: The game is run on web browser, the most universal built-in app. No console, plugin, external app or devices are needed. Chrome with the latest version and fully WebRTC support is recommended for the game. 3. Emulator agnostic: The game can be played directly without any extra effort to set up the gaming emulator or platform. 4. Collaborate gameplay: Follow the idea of crowdplay([TwitchPlaysPokemon](https://en.wikipedia.org/wiki/Twitch_Plays_Pok%C3%A9mon)), multiple players can play the same game together by addressing the same deeplink. The game experience is powered by cloud-gaming, so the game is much smoother. [Check CrowdPlay section](#crowd-play-play-game-together) -5. Vertically scaled: The infrastructure is designed to be able to scale under high traffic by adding more instances. +5. Horizontally scaled: The infrastructure is designed to be able to scale under high traffic by adding more instances. 6. Cloud storage: Game state is storing on online storage, so you can come back and continue playing your incomplete game later. 7. Online multiplayer: 2nd, 3rd player can join the same game in the same room. diff --git a/docs/img/overlord.png b/docs/img/overlord.png index 0723ff0485ce126a6d827dd912dffe05ac71f935..9eb927bea3c9d72b87c4ced6160e71e9f171921c 100644 GIT binary patch literal 54345 zcmZs?dmxkV8$aGbB`U|FO+Ba%0k{qHCo|ZbfBJH{TuqX%8&{LU_~(|J zmxs^4?x7fb3XSHb0z&9%Y5`BFIcjUG=$Ham))XJV0N^_S3U&qSssmRhOeW0(@8NDm z;cWKTfoST0Hy^Pww?|p4fMCEijY9PRzK|Y7Dr55z7}=LW2U-vih^CgN4iv1XsSU^r z(z0{&bn~VB$1s~BdvM&m{t?-g>CGVUF?!~7f)~ol5{KoXnE%M`@8Qd)Fns>$rVY~6 z(FA1Je3-*ydi>Ms#b9{RfJrx7nZR1v|LVNiqGJZ=ltgj!@^zyFw<-Tpr-L4u>5XNh zuw;8U#tx^!a>D{T*c`ye4Uqq@%58z6G_?O21mY0Dq3W?gX12Q8K6EOu4v+;}7p236 z>ZpKB@pg1K0vg0*gZOSllqrWw=Mudfh<-eXqc+si(hLSg5}*NketJ-p9?b~`CF|yK5%IVp}MhHUY6EOPiO!SkD}0V5N)hA z+{~ZpVS#}WbfK0|F9eTC^z+B*Bh9EjW(*8Wm#$A`IQhfOteIw1Z>keRPa6vIvOqw6 zNq#;s92G`B8em)thqf7Omow*u!-yKRYuz5up#!=D{6IF*qz1$+3XKQ2JyC zC|BFp2W(@mi=yi4>(K3SS`;V;?}78PfCYeTypT9B3G4)z(3D~B3&v1LbSIJnmJZT) z!a_+jo+%WMq>{iUR1kEQvsOq65j^N#6@^#Pjhghc;eY6EMJhmwRHdu=Ih`~;-P(Poe&;QTob5;7TXa4~9| zVQC%Uy}2hn;PzTHthqPG6iv0%N88u|ZJRpvz~fK>NC*f*Kv`39C?C3)y^Rms(~ir* zpf}Y`vbMG6;B*OQeik62jgN^34{5IF<&EK(fc+eG9N~IIPhBSqCXPs@qI4igbBqnr zAM8YixH;*%+41$6z)~<+P5{LM0@Wt~P+)2a_vErXah99&V?1p9z1(qDTKd2*drtxx z#kSExT3frpkq#)DFAC;sisI|y9K48JUk8SpIRbBD1GnRQ!I*AjFRG)1sh1NTsb`Ne z^#-}oZB58rx*dW>A!~X0co0aIZULr9H#o$SXG^i6^3i@w9Xphlw;tErhDL!C^vvP@ z)J^Xq=wWT)x+oieD9HrRg|PK~_*x#eHcm(%o;e7N*Z09vwW$^)2RMpJ<&fDlDw#~C zQ=xcoz&{Z@h7AH_NhSj7;(PEcw6swHK9*!Y5@ScRx6ntkZOm9?Z4Mjb=Z^5UH8<5U z=bAAs=r(i&&V&m*4(Gzm0iDjf?U8URIMbH^GQqn$;<-dEK0yy-K}XtHvvmk$CXq*m5&iIh@rAE4oJMM4ac1ZBbidnNJs<@ z=xk?iPBg_>qqJE_v=ahk=MAFR@y&1y$4!_pg+Z_wGQ`u5!bMv;>Z9ShWCRO?ccAR#6M1{m1YJT}S44eto_1(`XTaFC8DuoaAmbwV?- zSO%Jl_R)2)r`vk6Oo#z!s+YYL9Sdb(VIY)+InSJd0^#sHEnhmrABc;l3>3?Y$a44d zqm$@fI1?7j3b2O*hpG$a(Cyr44!(MD6qjy=CfO1k0<=iXO?f;#{ejqla6md*yP;@~ zR5vZ658nsrW=9P$b8|9va^icU7~XbX7M5T?9F@a%ckqSTcsiNcW8HOq18g^KV1d+y z>SFzw_9jqEJ{aO{XXXoa0LHX1MG|>nU7RJzjt9nh*lddEhc#h1m}qO^cs>Abn_>cp zFr+ul-3IFKXJv;Y6PTX2h)=e2w{~L$pa@W4 zR;>U#iX)N_)#2;AnV4I;vF*v$9K0ilqJuZX=wf_WI13vKCWme34g+bEb?x2U{16y> zDxJZ_*|X`JF^`M3_JzPK9dyY=Cle-?%!B!0Sze}=_ADK1A{&?jXUQi6aoyD2)`sFu zGv#^dqu`$2a33fi>p=2hg79<@8|vt5ZevZs`&#qus16XAjgy5N$l4vLholjFIF?Qx z-aaHJJe_UgPa#;^^R>7P3>3|0`T4^6d@@a&z-EEnSw6rdEO$qHsvnhaN%C~`@q=Pu zZWtRVisHrNVfDEV+CG0b3WsG!V%b8F9!wCJ&e$|Ppf(FjUo6WE9zfA^BiXo2#T^9pG*be5N;oq07~hyyA4+l59r&AMZ(hXHXaOLe^06p3COHW z(G*83F9v~yCsF)?bWV@y!1lCvBRJXmCIeNO20(>AO8qO`i)0ad9QWy~17lI_XgWXUzG<}8^${MF*ZtI}sPlV~2 z2Eet!UL0F(Fj+^Jr03>o=L^^Kw8XLzT($?5gTJ&T4vO1M!-+PYJPO}}=>anXS>u6;e01nmT2Q{5 zDU|PRVTRVz_d`3`aySqc%#T9X214-WhQ>JhP!W8ZmbW&@Pn*qgvcj|Yz{3a!s)L;t z!OMeVv^cOt^s z92%I#a-^FvKx9046Tuzba6m4OFz2w`c@z-I#)GV9qswFx{Hz$3j+>i^iiMbK(?K*F zYo?PvON)d>fS@2Ve~uHB#dje!T;zu zwSAjX$7=GOrxE|rDB5t8_@85ioH+xJm*?EJ$Na}oN*$y<|KD_`??nW|$upPHw~q<^ zUl~k+$8P+`FTusFTgB)h-z>0Z{}vONHJp4$`(HvAiD^kaEl&s(b+Fra38o|}d3c|| zHD$FUXV>aB+C%pV?Q6`YeKr>qI0X!Iv8Up@@!w%~2@a*dF#Y}5OzX#CTcx`BPVcXc z_5|~Q!ztd6qCY(}62)a1q}(=8gc_pl?e_y~&a||#GPt^_DIZa-pRyPwjfJV4 zPgYBNhgYBMA3kuHu-6SUCo1l+*MTZ_Ua#C+?{Q(9{d7U<5ajgChFX5YJsVP#X84O{ zSuqRQ*l=MRXm!*>E3Bd@Q~;j01MO;Q_16kT5}$e?A`c9Vv6r&%D@7`*NjKjvRx~Wq z{E#xHbfQS^L&~_4VUgUWicD(eW%UhdA+!%Xq^j(b!P~7n4#wM9$scHxZt&wP=6`+@ zP6>FMwyN?+@?uzCaa>Ga#(_flrRr;G$gQcuBm7rq>;Gs5inY$v#Q0#K-Nryf@OuR{L_ zfC@q{-03_GHyJy|EOmPG^hJillVWjd`QwH#d`4kg#HBB&Px{LSucA*NFg@ksUasa) zcNy2LN@v<&*4~^rNi~5I6TtY8466r!g_Ku5|JCS5lipy=n{hkb>&mK%Tiy>1!ucbL=4x7dAwhh25# zuBsL&qzx~b(?EwCK0gXB+Ha;G7~?kt89MB8EJEE==98GN<_}56CR{+7r=ZpdY+i!`afY{c^ImoBDTG z>Pm|$lpd)Q-KGK<_OrR@Hb4-2%r^DN99T=Det35Gt~Z^=H*ZY^lpT!;4BCPIwJgXR z9mg4ncNkuH>OUxY$fY{ff4_5`mdB*Vnzqzo{EbV>16Co|s+ErnG%-T#CUu%C@Q&OuJhv_jn4!NTy=nv+zpsfvY{Ua35rVVC$2b9`)CJ%(Gy}e z5kO&6n-`BE`r0CjS-!QM;pnk&{-ZPn_+Y#D`h_e7c9uA!9ccwVQCU#5|2kdXG$4rT zh-$Zd`Xl|tnUFEdA$jME?pAJB>jn^eI`uh*cfNXm4f}X^hZP3=eE2yi)LC}Oq~SnJ z+fMDhJ2TnCAKVWuZ8v@PL_}P)VfgYRC7k%C76T&Q|7jK(tgQMRe#1a!?i32)cz5#G zzBzcj&b}`d*SmGj*I1c2(j)+`Qyr@UmHbv61?HF)=|GLGjLfA02;i=4$R`% zOFG-$DwSDMT}Swjfre7oTpq$7U2Z+EFhJ;xCh_$x@X-*HGSPl?w zo^kKoB^vXs<@nrf)3wWh*)~R0pQQqTW%^!Y+q0}{#o$3nxT>E?g%6`RHttBvwKF~) zuAeNI4nEjbhC8_Pngh%{w{-s-3->76-p&1S*Eat0hda)ewR@s{ zE`%4}3lFDX&scm7EEhciy(?NM5Rq-xRyyQ8_5AJBSY5-^w1;Myl^#xzt8560^&S6Q_u09^EPgvFkB8k`N5>p1bd$r)Zv~ zn1b4Q@vq0!3VeCHi{)NX3w@h947+HNvwD&SWF+C zg_Djj1G<&_#tUy77)K4=v{@p_reYJ70Z(JoRJ{Ho^;LmsJG_#|DD(a+f8|rT+r{I1 zPBbQi91@gn)fYHFFWez!G0`wIHiu4)F~0~q19$G5P0fRE+Ed|H;3EF%iML|+F4()nyZkb+SFtI}MdDh^8rj+-sPJxS zEd%b>;;(zSPymR*D@;_XH(x@uAq|50{1>MCE}WTvw*-APi*T&t746QytX{1(@#N&6 z@#*Ha*Be^X!a|s0Pw|I(FQWTf_q=~;5~l!C>N>ex83&L5=>GBPGx^63QSckbI1J1oyJARh^u=Bf96L1gM^YzoQU4OHbhzsh0BJ-iGvco}ZhBVip6&-}J z7G}2|@^OW}#-B#7#=DDCbA9G{9zTc5-QOrcflPxKr62b@&Li~k#>?V{XD-y$wMJFr zt1lF&2J;$aVvigA8dk$9jB$`>H@txTG;_lBv&&}mNftcp%#%m^gh(`8mu+|%_&HFe zdw1ybbJ51FJ^Nm_r@VSQa%o0u@s+VTI--0<@6dZRKC6U^6h50v~KGuHI4 zhl4|Z8$Bxq{58ZxVWTant*mbwu63tNuj!ki7e1}U)%%rmeJ2pH^-mUVzJH3G)V$;6 zh7k+9!50t?aY|d?Sb;P)ymqes4(-)kmSxo4zx+m~K*<0i^7;B7=tjxBbYL};GtoAj zw@mLUk~oQqzut>~0UNu{se~h+z~b*o`wcc1hS+{ya?7`Uf;#;))vIqH(M5aiEvxX) zZ`GG>wfj!2@lR=veBUa0qP}F=*t2eJ>obaK!z(A4VaSI0(?_4)8=+rNh~0G7#_Dh7 zq2V8cpW}MVt27M6>@*Iwy708q4E1)3^>3i|+V#EL7&ZK|IBoC-@s*aF%p2V4y*!gI zvs2yVE$1UaC9L+^v>e21iQe;W7kzmTuH9(klMA^!Wp|Zzzz+55n-!eClX2DM?@lui zCRLtdbWMrb`YS*l|GM{S3lLcs#V%Hq?KPS2$+^|`>u8hVxN!mXs~>HzfyfE5i+)tM zNmt=xv*$6=tNB4u;x=c0dI}FF#Ye>TCgPU$b#Q#hGx-#_3nx2y+1|NMm>mgdCVZ|0Tc zjwp+D)PL~c>PUw9FXz%Ndbh=y1Eix5Ii=gq;t#kQ9dIo%*uAFtE24Cl2=PGI2%UhnXtNFW;1r zk1K5-kmJ|pqNPJ71@^~%@NQ}Hy33_^mvu7xlRNJUK8@30S7YZ^db5kay_nS6zmaLh zck4mg-L;+250G@oUXwC0F)?5InT}<}2ccb?=cnbs*{l0xEzB;Xx7)uRYA8mkS_hn$ zeE#v{NJINv>+OkihN5Y!!~qJMKeP)02dGs;^micue1qgvb;l;1!wKDZash)(3)#udOqZWr}L~BiO`_S_fRsK zqn|Vk<})|`uq*g)ntLUVmPLBGuAEsb4ftI=!VdA8D^PAoi%lveXC07Dz4BNtUfo}F zYGu)YygO555gsZ5Kdk&l7N(D%+qlIxy!571@f71_gNIU(Xigp5=bPIg(TV_ zlV>+`r=z9sOySl<7xUGrarwg4H0@(K@z>7XjCKv}7!4vi&)Sc_6CcP_4jvx>jkY}R zy`;I_vQk7OKb2WDFuZGO?PP8926%P;?L+Jvk>-ak7fM#Qy@}~xOcS5HhstAl&wg4q z^B8dDRzJBvFwJiAhGIx(_XKF}h#MX3X7^o8Q?9IzZadVkUK^FEi( zQ>R{N6#uGPc}Z_IzV6_tf^mk0nZor(A0{%gV_h#wKXKSuWm?(-B>0UF?q2`x5@*=#Cst)vZ$R9H_ z9{7~2d*jeTLPs}m&Lg;qp!XstXSTpUVG%n)}zK5V7Xh>GmM}ss^|F5v7>X^fa^Q4J03ft~ zo^Ru}^sDs#Wdr%`BI=$Q=6R1g)AqNltx_mK*{ib$==#rUnPk-Gn{8G2Y!gz{ZM^{T z%$-2(0QV#*HFlHJU4Q>LDF^=b;*N~gQIE=&cjg5IT6^v;mz`bDZ$_W*L&M*_%5?Bm z+IQGE;-IVMmO-sNdiU8!WAznh>8fip8$r(7xENo|dP-^*vs*Sg!zIOHH)~8frtSU+ zs2HiATC-?W{3vpwcwz8ir<{Wa^QTI>BAr_O^+-p+Ip=F3kPJR+dG=?0?}v7cc=zG1 z$@1;=Q6ti~Kz`m#YDMz{&K~Eu;8g$T(*ZGAK0HCg#+&_5T92Nu^i!#3w;6gH&d`4* z&DiSboA6ZMOgB2`$(~!#+N^QR4MS3VCfkdmR6l<@y;D|6(bkobL?p6qsA&_ZQ6&cc456C ztH+jI+ER5xme?J?26eE!XeW=80R_F?pJyfS80yeJ?O(HOE&fA}8GrFBXUrB8GLH;_ zzD|phktj5|c+vE^Pc~_;N-(hwVdHM%7PGu@t9C{GkN=N4k$ZC1U-s^QbNh~^t3%G! zq{NhL1-9_~8cV`dNxWes;)h`L2E!;>ZqQbWmK>y%O?1GB5)*|7$WbK>-_(d8}~`Ak@FbXwXo@U(5uWBj>2J{S5L zaw*R*gV(ZVP6Ky+wiibUt|AruI%Ujz*LG(%PektA zZs|Yj>E%USo*fMsQ50k1Jf4S>vyK^QOh^J$j4D9u$$yz~ip*KJzJfTy&(_4g+z|U@ zIIDbZdOTARZ53gt_k z3)s5Q8(NkFfsLh002}bs#k;h>#NJEk*6UDX?7bd=EOnXY+eOLfYhI#<9-R1g<^93k zw3Wv?zQPxrs3$7}lX4u~vqzeITAw~W@-#Jdclj|mK%VxG(I}aKR6Q!T%+-@mPn7O3 zd(bI*Fm&Hoeo{E|QP1tZ?t2!ae2L_1fR0z(G|fK-Pj0aS@2sHZkGb6NS(^LZEn{`> zZo-CYIUC@ByqnoWCpJksGz#D^CvUE63%$J-3UefB9ML_PcJ8RWi9xhD8!RZsAYV1%{j{`xpWx?xtme^nyq$&~uB6iyWy93`BzBruL z=b7Dqr?yQe1f+aK_lv53bOc$)^Cj>R_WG{U<|3KqeKl6a?&T@Xsl8mXP|2FDk*@dm zeGL|mnyRk894Ruj6-?Hm8r<{=*|9V_-n8?oy#HL)mDbX-d)DxH?aOw+M?$LPrhfvq znkv2bqg4P?f+`ix5ZeW>1e@8rtHP_mW&zfAbNWXN%PE=h1(PP%B6D{2?qRM>l?N=O zRwtmxC&In>9RyZC)UHZ!m3{pQJ+Nj2XGY;N zHfXtp9mcLXHM<=PHuSSB+-p+$j=d-6a`qW9dR20cFHo$wr@h_Ek`;a7hTX#A644u( zn7>d}aHe)1CfdtLaI9ZBqdng#bwdqRjq_T*dq4dmf z-EsP^bh9~8YW|)aIsF4Op@htHheOHT(HSvAt9hA_{sRxJGruNE(i3hE-(@*EW>lm( z=o;00+DyUPOT#ia`4l_G)Ui)pVZouRHv3)De_jix>VKc|4zC04d>alXLao$I&q!?5 zzVMK_6ik|jZ2#C%ECNAf?SmBlaC*JV7oZW|1(P{fKI?5i`2jy!b~a4vYJ;=R@W5-{ zX}8W7!CDW#WVjX_)tqSD9^J(j9&1&95E1NM6BsbuywKb$Ukcu;{G#}kwQ>F^KL5x2 z-qRVJ1Cje1J%g@0u|sWnGsW{>1@B?pRgufP&e}gr9G~czJ(y{H`u`!7IXV&f0O=~3 zZLtp8sP#Pz4U&BP_%XTR>DI8b4I&G@{zfTJl&oqGg7}8-me(OF0*&B}u=wBc7XX4c zkh_8yxUOB08ITk-r+h9X@TmW9{qTpMcT4luaMFg!A{`4FyjXi4t7R=h%<;{a{A8a(%SshbIsl@xZ`N@$iv z2VqtetV?!hxR$Ap`2}IhU@twplq|n`YV$_UyXPYBmYBYjhqE_MGikv zQRBx=%-udt%?n5OeT}!8?&NCiKo#8!e;-rvqB5>`?NV1s(3L9!6+z55u!ejf7R?s% z^TfG(ZZO^)i1Qg4X?md-vf+6u(=4v!=iI+IadYp``S^~Y`F?{~^2%cE4(UJdE5G}j znIRO)l0^Zc{Gw78#%q}WG{ZR7@M&tnCh39)|M=m~RdMw1_{dK~XtLo51D2%-u9fck zH-w=CDz|ul_|Y08vifZo4|y-MJDD#GzLdLgYi+K=nxnsvfISyoI(6V&06T0sXf4@l z3ZP}mX#~lh4UX~e;F3z^*0*czj<1>bmg9TUqMW(M#5nG?jBr5_{6@O!#PEvMfl8aC zRVbo6;LWsS!<~;)Bc;k(qYcHe_ltt@1Sw#Jt zV7`3>YiJpah;e-D|HN{kqjDE(Ws2HVbsG^l98>MXM(bG=TrgNQg`~&hK>)Ffk zKi34Lj4V0u9xXgmS$9rmUa4XRq3=|lf|0}#D?Q)8N` z>nm2He6Uc)A^P&g#`Ik6258A|)w#|CBNqpE?hFf+3Vl{Wmkf~P?-4%zC^OCW;IGy% zvfYK|6Sk?}mOR>B$5w98t(s>Qw;R!;z80TdTkFq~xa(C1P_Zwmt1}Xr)egtAt<0z$ zU|RddeQQ3pELx9|^ESTd=u&OXS6q*2ethfQQgYz*#m=cOg$9P5{UUCB7x^yZ}Buj<&D1@b~Wm!sfvAuK6qO+Pe z0{zD`(!?e%mtOM$Y7bhg9b4N16?UMCW37qbpTO(I(?#yok46F%@2sE2$uCKNB9`Bw zuURp5=dMf>+AAMvY{-YK!Pa>7;g4&Iy-s#$7WEmff`2{&`8_kw3!Z8Zx^c+a_e<54 zT}Zcqw$9q8qj~|H(Y%vJ{Jmo>$CNwn)dk8+`5P7JMwJ%aqIMPLe?747SSlyAuLu=< z;$+9Zw8OB9uiKlsvs&L9M<$qyNywN-(~*yRzyMs#7X6QjJ%;YY_g3b{E-2>vGn&SA zKN9I9kXg;u`D$;ySf`f^Gm1VH;$!yH>RML)kJgMoq4PZ|a!0LlKYa7+t8-kd_tbrk zmsx2I%4vDt&{*|e-OOjp`EW`Iz|sBFnBB2!e?Au9sR{o#B|UcMxl+S?P4R2(`3J4I z5=f$K9thib*YN)jR(_3s4v*ay04T$XqaC4b+5;K;>ESuk+1t_ zzLl^pe+T_)?TcN=V?Ehv#ND&rM>(GVFn1;{5_sbub^zirV)XRb7aQ6=#rujWb<$t4 z5u)GVXZ9o?JsTqRR*h{i|HVjH@o_Ghb=|91X7txX@C)U^;}2*T$BPTUMqXst0s-ss za=d|_4CjzwR&#{9L{;C90uKv1gO_f0I1( zI|R=gj8*P$sM;%*PlVRwPz-=#AOGjMv^1ab<`>VtrV*ic$b(@!eQ4(k3%&5Gt7e}& zjKY9A(-xrKSyS$hUFy6!pPvscTpC0r?EeJbx8_oMyJnZ^Wp&_FCFULAI#fYQJ6pH z9yQilz79j$FPkOVz&6fxTXwonzCFaDFoNdiXKI9zld`1&XUD5_gHMiNJ^4*eHZsDe zHfmxV|8PJ5#=OWGeE8~Dm*EY$g~RXG-Ex;tx283)tC&X{ss=3!_np)*+8$)^@h9VS zH1*_Uq~3VJ1-tC7m*uuSjq~00wajJ>k$WxW@x{oAUD&aE_?UMKI!Cxchd#?%`Oot~ zz)FvFZ%qGh%#NhhbX@Od6O>8_Fx`o@DC9UJ6z#n9#>wZ30~^1 zAKTz|arXA`{xp1tMx!5wNu|dMG8jpXo~LioQnDQuAh(z|e{%C8>ZV6L&OZF#6wZZY zWpd2_>x-+mrUdc|7p0<_~np9_$kH+KKJl246_F zMq5d+VaibD@W*q3%BH+|^>I~&@u}#H&cFkikdy7qfzJy6|3IPXoBKwz^K^v3B~xb0 zh1;*c7#{ppk1;5m-_>M|o+YtxM;R*x@TrM?LA952uE40jk?1i1R6@79AG((i`SYJ) zffO5t2U2WJanbD~O3>4m`5VQ*KiRlkU4G;Wv(6SaBCzFd*H-uf!83rD_wCrNr8OHg zCJ`PsR~8Zmig+yPBx?yotPTc@Y&G5iS z{D;rMu6=F8>fxDwTMxOgh6f#HGherzC^b*imj_75e~xa=k|Q zS$6qK%SLHt?VUM^_#YNU8$UGu2hn7f79S#+?iE%U=h9D)`JY%hu%(QC*S;%D0R1cR z`e0`d+|e4QEBi_oILQ*$gxmy04}O#MmrYPa0H6pyw|=O2YN!ml*tq3BTSW0)ze1DG z%9S#(+1SK(0nom$6%A4KSr3~gX4Eqw#pN#v*8xuQCg5KT`2VJl?D^10SlQhY^s#44 z=1t_e-pHD@A~!4#wtH&FpCF7OEPJNc%yhhSuZAl?qzeBZBIQNf5JkrIrgbzV*T!$2 z7V0gqICOr`#gwi!;M~elkVtU4(DQabka%Zeh-YFtRT*5{c*Sa3>c7(a7Z<`4)+djf zuVoE+S}|lweZ;T4e;}C9rXxIB>;BnE#%V7XSLT_4v2V6vySiW8Jo+zEv$; z=4}1#(T0(y=!|Yp!wxtDZHfOgGdp>i|AmOI%C5`8N_JS}| zdsnWL=B38_01-!=7k3eqHUU&Cb~pI-jg%W2(5bdy?dxZ+y8dY@0J^CAcqY zpW}-jvSY{1(U$}vH$ATk_nNTg%3i0J4}F_9zNDQZVqR{l}wfIh>9nMCx2605SnrK2CVk}f4uV8{&vFM>m^TWW4N4y)6ts9kg;Re zCPbplu>*D3yF2Vcgd(!jga&;T1J6eGLyL|{75@ymUg+5=+8ZQu+xZ5X3N)#h_mv_>}&ExHhs6(618T;SPX+hcroD#VfdqG$z8Wv!!Ebz#U zUH(GfRqbTFM$=^HA;rfkDVI;a{%JL#0!6-GkHzi=$~F!KtqE2m)w#fCY~=knDOHK- zK5~B2j489=l2M zE)fz2=}#1>yDn9@W1ckXB*$fE3IM~+=KXs(pn{lm#5N|buBWqQJbU4MjZ@AQ=bo6} zi^=DIu&lhnA5=SuoYb1Y)=WL=WC3TAZ?ky*X65kzt`I2F1>L@&d@{bYAbaVXTVH=M zCG_-72^m)h*N;s_qMtPoilE=LBwCzU?6E&DN~145pBM{>9YRaQG_8v%N6fzk0fn|k zl}&{mewli|&hyIEtBOiWDS1)NS@>#?IF~R=W11ou+>)BVv9{1F4W>!^PjvjyGOAsl zu06>bjDmP;KFP=stb3?e@w>Yi*9{c1!k6d9wcgY7a2`)7=xpNE-N0&c4a&foB(PXPQP0iefhvb^O>TUUS=c{vh zKg_-&qvbyCkUE>Jw{lE&!}=UpM*0Q)NkLTE!B-2xmj|hGFwC(3+yfcO%vSmE`w!pE zSgP3gXErBXdww_R7B4_?x^V+zhRf>2?*_Z_v+t@Nw7**bm@PaKKs@&Qd+rkS`IKvr z`i-^8P=GgSoC~ab<6`#(qO1(NE{W_<3SBRM5^Wrj6teu8^6o(74n;-9ML>ans$>}F zzb5Ega`@Q1_SPBelqkRAsSmkPBU9RlwtwjgdDG zm;Y*i{pZ)~diVYhSD_n0KN(F9S^LY&%h3z58t&)LC5pcbl4eRmzX}Np|M{f+HBkR- zcJ%PhMdr4^lg{>0hr;RKC7)$&nAT~!#FTPHrlaNYZ+>=w`JJ@#1g^B|I#2FFvGLW| z9M^54kAma|#`ePJ_}fJ#pOz*COW(;PV7?lY(oVoz`mc^L-NU8|9Wr`;@qvW9rZsEw z&+>Kh%)g1nE}HuO>tOJ`p7@jR7PpnHFK2nL%+#NbwlQ83D0#UuKM{#{4c_11-@mx@ zGl^Aiw4k7?D_PJRVsI{G$zv60GqMu)pdS$Now4GECrAU8j>FAK zDG`ZUEy^GemM66`J8CyZAwHO&d&(V;IR4^&c0o_(7&3(9_gN)QEvHA8+jY?>aQ=dv zhI3mXOL^a6=!M#oWoNJFdnNLAGRoHS2mXA6iKy2fzWiifN=oW@z4XTeOWmOxYsVgy zrbi{77SgJE%zS>MzVf=n{+S=OaY?zMIVIDUd6dSTI$mGxC!VVQ`dvKf&|@0$BXF`5 z|K>seM=4kPiA<;0X=8B~caB~RW=v8B1KhfWg@l?G9~kmp4H%O?iN?x*oDe=)(#I@` z%@HyBfYWO$p}93Qkii`3vAK8VvP&k4$cu=_{sE)zzY=G5So3%uC3LW7TEg0=j=5*c z>R;MY)@3oJ`kAe=7Z#V}vLrUvjE2&(5iRPuRqF0x-g`A+XJ3ztb#kN^eQbBz=0D0u zT>9rQR_}%S?wIt6qVX57`b48xXs+Toh3XSaR~_)AP^C7Y;S)1xx8FPZ}5W4 zer`qBUdtnQRH_Bj3q~mhcA>F3Ht$`Ny~qkX4sQSWP~)x?J%0l)Szz7r@qkL#2(Q*? z_4V?xBf19~EM%L}jU!JrEx#2emjy9c{iD99~v*1(${zQxRI;m7?~x>p>&4%TS@k$M6#{M#nxHN*JC zRh3pS3{KO5tNNQ-Pb6mC>q1%GlZ&q9z8aQuy;_nN`^mxuc&k^C_hs`ask5?Li|Lc` zfD+Ah!e;S=kKW9Zw&&lSPRu7(-|T<>`s;_9*yGKNo#^p~tcrM@?N?p032(Ig#_WGQ ze$`7m6H{Hcbv`A^!*(cmzTK;a3j2fH>VC3g(a7xD+99ZrF#n2l^xV>HqYZB9?2rxP zOSOFH*<&3o+0N+#Pc*&-!nENH!x`&cCrns>TAUf>B+#=GwH8_#T}BKz>hTMr)Rw~v zT5H62x90IIFo{$P( zy^oSwO?Pxk$z`>g9ueS-uq0^$?l%7wROv1wV#?`$m*KFWbfp^K-JMGaiwOs7J%Me_LE_ztKFz??qCIU6GlM^LY%y#^&txxPnPA4gB+RS^*Zwb{ zO@m1^WYs*XNbvb#|D4XZw+bFo(zH5b)8LRu|K0Bz!#=;&S0p4l<+;)R6p`IoFDjh{ zcAT|0x^m^C0yOX8vaBR_x^tc3>8|}Fx$SmVNaqHMaqx8fv|W>dlQ4Us0vnJr;9D^$ z))*k_e(2oeD+Fdh$)3GYz$;GXmd|( z{eY5h9w?opUusz|b@f1Lu%ydbNVVAtpy{`#yiZ^K#;!L?PqQ8UK`K>0zlqx4l}{H2 zB*_Rb!bF}a8z=Y=KQutQXgcRxqjU@g*tHr32}e7i*`J?zp`Gp+m8MCaqZvT1+a~*F z2EV_s)%$Q;BzRtB$#xc#{AUFix_}dL?;OFm1uOsdW)zUcsq9be0#0Crp0DY+_~FLH z*y62}FS29V!ijrK${!16^=uPkX*5qxE#4E%>DdMxzz%%Xb}VKy6)bZ47ZB)Nm+R?z z8+e=gtx)2Y@NfO7PkI*e!LwpxE!kOVQoO<8yX`LA?$q_Pm;K9Hod|)>eRUG5=!}xW z3rTht6HI?}s0oP)sdoOhh}ae(EhMk$SRh589l+@3?m?#9**F=Bj(@UjXFVOT=Y_^= zRKqLd*~9Jd_+X>a{hT8mj+#5#H}k}iewu$8`CsT~Tf zx7#P>JRXe(4>c*3p8c`Z_Vxep_LgCFZOgW3f(LhZcM0wUcXyW{6PUPLAh-u70YY$> zz{G=v00Dx#ySqEQ!CLE_yU%_5e*4$G|0iSgQN617s#dKPpu8Dc*C?SVQ3I!6ML&vI z1O*M0EY%HN52}TH?ivZ+AIyB0-{G~NQN84NRv9jRyr3_F=;4l!8OR<}@v=A#Qt=Wv zm8Oob3{BCQvMJ&bZON%*aB8hNOi)HOmXp{DOzI~W#9^z67CqHtTa^x{{zS%hMXBIN z)^??jQhBV`7dPY1y33|PPW>o5aUg__0>2b?vPVOdK)s^^@XnqTnflfKu0-Ks>qS&%{@>P@t~13rEL$cNc&HMJKlBUY4nqWe#F$YLxZnN+z8T%Ve!l8hD7^ z0;CWVpjxK?nofDu$}N->Eqd|mRFRu>lRU>3W2ISIxx}>#VYqG`RnJqo zjcb_vx4PcXJibhEzy|+*$@OcK*8*Qn=bbuf9bIgoidTBB3(&mLihp(gb-XgObhBCN z>vCFhvgW0j*Z1xqS{JAaVPjkL|vihl!H(C}^}z_zUj+C?}=*6X_{{)-0kPuGsRMi~Z5 zX#+;z*KN-#{yl)3QR!OxX#NkX#J_o`^=DFUI0(Q?fuI8jQE2L~$!M`}k(pw4@y3q_ zk$wQ8`f+d9yZ`^yyGj+~#sA}yPay=*`T%sS|H94?S6JJVA|H`d{#GYb6>udfVqPos zPD=>92I90blw)vsftP8;v3rY6%d9|H4`McRz}Uf=>B<*fP1Y>4MxT$M)_M| zM(Ba`Aew?k8L^%c-v{bCyMJQBa9_(p9YC}rY8B%N|HHeq3S~Akc`SNTlGkVfDvkqG z@&@aFS-C_5C>(%OVWg(;e>5Eb-D-*~8UH7S|L=YT$fHdOIIHuquMvLpxyNVcd&K?| ze|D|5ij3d&;G9!q5qbh&`Wd)DKcj9WvC-$B)r^*93n#?SFsrBv3#$Ne{1?CMZ=^R( zaw_tl=O`~8B-jIS3{$2U-{0}p%2bZw2m?4*NJZri3IB1!X`jh-P4imhHRkcW|Maeu zT{Zrq!E|T9%5nhCoAHXKN#Vb&yr&tA`O-Ill!N|eyZxV6vk&_GUzE82^N-2^5vpzv zGBZQBFw|S+#dW$8BdV9v_tTt)p<#LI^^GlhhE~0`(4>ij_uSLtwaLS2FPY8K4}R9R z8*{Do5{;rYpf>G66Mgt5BKmkS?zLA^G_ed^?wZ-Hw;xiK(%aO@OxCF`PmgXOr$w(f zmY3R$-wSy;3L)dOznV65MUjppE;*P4o)H%lgA8$8CKdL%IQiWw_(>A=^{s{POz-LG zY3YZTI_v?!+kOuZ%K%*ew)-Q&swL6k_h>gH#}#c(+1Icwm;Fptrn5Dc@-}E>B8El- z$XAd1{Za=tHon)3o+*5GQ{@BzEElf8+9a9c$diFVNVq3&)PEp&_g`E9WH~Ao=rGe% z@dauij+6plCob65m1b~5A0FmPMLX?`P`E?m3%C^@Rb0pa+$ z74eJ3=YVo{cK*`b2^vk!%Bn!_shc(~L*(-G|l1;PL>&<&Jh98N1@7l-rHvs<^CLf`d< zJbORFB2{~xnj-^DJAk&DbN=QvAI;ni%*lRLJMe+HUKgV>DYh5W1MEr%;XzPE9r6QC=GYfL| z*V||uV>bb#9hYQok@7ka&p|-z^5cH2u`|rmEg|>NF9_L0sTPt(p(4M9G^&(=nHhl8 zQW{o;#up|BZRU|sO)^RV#}YDvCqkobyT8^(WB*UQ`SYuJN1#k4c}eVzz^N*QK>shG zLFl9ddS|YVDGY^Zi@g?6YW{S+_jJy#Du`ePceu%fWcfF++WW_90I3za7?GH%HiKry zMIz*Nhyg&V5|Up4;?+Rt1njy?`!~kS;Fxj7gusaPod|B^PQ2L;Qpu#)b@ung$1wm*cIU%@O*s%9j6V8 z!kVDUH}O#qAhj>Pv~yd9)Blu_b1ytsW2rzh_ksr&p0?fXG1Vb$bp%1%a&R?p0YGt! z$)_QHRnxGLke$pj>zX9zJ%UOtnrXUhKlMY^Jg;#~AbYt{_uVndJG=-N%LteUH!wJo z^ERFQPKXzM(p6do3}j-n*v$QOyG>Tt^H`J};9>xoJx;uW7m=PwP$2cWKJwRBD~hZq z`|zN4Xj^P=JQ*SHn~U5;&@3|vROJ=hhVf?etv$p*y%$-ilu?Q_y9HV&{H>fNP-3J8 zk4CE5+cko(%6EG6(f6oHh6K&^{;+|`;sl6(#;V0~z1j&Zk^$S9Y6_9t4JW;slRgwf=e#9Uq@5H)v318QN-2=n6-(=u4#8Lw-k? zk(*1YwGA9e)rtl)q*IO;JEH~FSI5g$9xB(z%VZ0?-L(b)ANe4 z!S6TtUOQY;-vLI*Q_GXK6$rU?p62E~I}z&Q%&MbVpJ;VvED8E<(ObF*(jRg=r%A|@ zA-j|J^$LMM9OE1o%9E)T`U;=LF*P^V100>W2wx04q?VLdki_-@Iv znVDHSyV=K@F68YjPg1_kKR+-rF;CW_*%(_|tcOW0?{}T8oZer1m-j32F6NWE+?c9Z z!|ZPycI>BJ%hdOZ@YP{-&ZkV*`T={T;yUu}o&2j<0!}zQBR4gIP76`t{&lmlv9XEO zPeOK4+i0h2R)mNI#tT1+z0oPzY>xt?RZK!9gh44OsyeS-)+l-Xv zUGKiOY}0?C@82@=SSL6Md97PGMJJ(GCltwX=su+n6eIQL@6zitt_DO-a?(7wxVg22 z1IKyheCKAgNvRcD_*}OXEe(Jp%YY_RyIePiRM*>NXS@gvz@tS{L_=|;=07i8owPqc zsuXPcuSB!8sh)zmyxUhi%a0YEyoSFGS_*oh9)-9$T-BF8u-JKcwEcTER;>S|=Lnf#gSiN~ppX~d z0_V#xDW|;jv5N zh{HhDuVeHF;8#O8SaY(IO#3>?r>i8!SeKE7k_rd=-3bAHsr6_NUvRejY3abY)hE)% z^@FTDY6`m3RNMW>-=nph{yD?OF1$vsMpHH3kEVL;PYqHK&dme;E7ie5)kZb!v(C?7>EVU~ zN2Xj;!*6Hpx!c!senC31Uo0!Erzk=3TjQ-g&m7)e6xvOuKq2or*Jw{|03VJNuNgT! z2KerZby{FVp}UAEiXM?{{(@d=p&-q;bV{0iMnt2-DRb6QdqvsOr{@KO_@VU!o!}<< zmvf&h6vJF2{nXVj+jHGfuWCg?1cMcdl+3RM9N&23Rg93iaQ`d^43cD50#LZmTrQZ9 zTx9d&U{<4Poxs>@6?Vkwlwk~aXKcF=S;V!-M`OP~o4)q`?5zn{P+ib^2U#DkddtQH0Gn0dA_YXJ$aKR4os?en`0R1y5M$(b2fK|eCz3(`Skoxfw9bDi_8 z%(GhY53K)c$swBBt%nXbZ;fazt6K)XoY40Ts%J_n2;P>FH`k3 z-Z|zTPTF5UoLgb01Kw_IZkD*?U*xL&)}o%fq3$ix@LA79d8?d7LvzYVB{uwqH^o`V zb+_}g__s)6$NJt$3mwLN6{@x()io{(GQLA-cPMLdzOt2an{^4nLzCMd2U00Y?^7J- zKT$|b1Pe_g%|i);%d-!)OftE1DvD$V6KwK~JbI2?!8}C{w{beGpwkqwVcKriEFyWx zcMhR+j*+3*5`@MD&YUf2bqrH?!9%Hvm)B>kmyl7tR z=EA0)=;yq&*q<@RJjRgBpBqxWr+p}|77WEWq%AtSTOHeO3*RFC*$yLeP+j6<^(df= zN23N{Z>R)3p=te--8dBxmsn;$1nuI^S^p9c4Y9f2&}47v;$~xlY;<{wB5%!2Gps9q z6vbxqcgqL$6=_CkDet>1hUYaz1C@(oru<$F4BypF^?P4X9hJxuHviWhPRIK2=tJ+k z&DYIOxO|~<22$T8=apZ}XAHYrl<8Dy4=6VxhoI#fmi53x-&2VK3{h+`!)Qe|lC;*5 zBWD&il@fZkngf34Lqcmlo8cypLENoBpYyDQY`Q?tO+9h@le%G4qdhJpv;Or-cD-KN zD=v6Z+^l)4nk7{*QR>Q%vF?Iot*t| zxxqL}@#^-cAM=U6EOCjno;n)e{77%Y{kXr#m-Rb3>DI*vhL>z4WvE1|XVVI9OM)#6 zd`-W&YiPmaefFNa4&*3g&+`3{GB+&-k27={=xD1J=5XP1sa|bkkBK?IqbGBj2{;nj zoM4GXC&&akFxT`&pLUhCV2XTN#t z+614be+UU zG_+Aa(}qLRO-$ULyvB`~aKK9N_CV;N9W79Mto?dpnX#++&HuWfgMhY@s>n2DF|Tcc zQ>&P@9<~gdj;DdG2>&pDAzsx5kFo$B2fxuFJa2w)NFo zEgAs3uvZy(e#b!oao?XZKYBu%=%6Cm(a%o{(NM1slCm5kq4P^z@#eyep%I(r9A;TZ z%kJPy>7Z-ogpK0y8G?}F+u9EpGAZ?x*ey_}oWnG3B`skbZMb6ppmE7`46RRJvPUbL zBJ}La)&@n17hN?p(?DZWLwF}*J#ysnAS;=lzKp|@x;+6O+ z6hSLV-JJa+0R3Q5U0(<_NhiwaYY~iEJxh`s^H{)rPR`8& zWKxHJs6zu_0Fz$Wy_?PaF-m$Av#l&zNl}gnSk<}p&vhLfc%kuo`gWOSXa^nCk=Lq& zn%;mmj?aSVJpKBF==~s>?O;R1#qsj8nN}->i%=g6P&mkGA8oMk43PNDjlsQMQNVx{ z2;c~^S-wFW!*W(4QgPmrd%CEZ*K7bZI)CoUXQLvz?J1Dfr8J@~XImIxR(WzW5S;y6ud{oKG9AbGhJArQ}&u zMlO9cdy8#xAKQHj{VIf0BG=C@afm9;#XKnmKl}*eujB$t@?8v&)64*rGPV5!=ZK2& z={H=MQfN@KG67xRS&{&~q{h#Rr|$EtA?>?CkS3-YplezgaxW<%52lQ^8Ha~xkJ9q! zlO0uVtf@>_(~e3vfcHw_lTGbrE{#HZxjaJS^PPjm09FX`%|0s4f~|+|U`dJkE-!B& zFnewV=Cw|x0$t6eJT{Q0m^w~Zl4NFeViHxLxq7;srrD)`bt&?UKYGed(C^X)c!6tX zuGVgipHo#}!>40)>=wSD%$tB5#vD^96A{Eaz)<>C3JpkZ9MH4Edz5@=v{*!k?-~hf zuF~vgN*41L`dn6eqbCUKY4HMbUI$BF!UVMrgqLtTpujVWtXBeSQW;4T3Ki>y$!uk9 z?W?K*2?Fr$yr6kr?52?(D8Ly-u-12Ct1Z@%3#M*9rmB1~;PkPjwyh^C{zo7%NTdVS zNZ>{)3!EaQnsT}ATq<$?$cSWJrQpaT540>UvKEC2BY5Vr z!KqayUCPI#N&p=awEtDwC3;lWfqyPt?YL7N7#>nM{B^q?Xutym9@279w_ed=9XpAa1TWnnFFrHp*e?gh~;fBhL%cOt(1GmnWdaZN* zIXrskI0n#ou;75J+MfvmOqx*baEHY6?%YSdKgY@r|9(+3#=NLn9C2BDR^5@D**9lE zw{8v}>P2*#!VEJ>bSdY!#N0VcV>EbQ!-=^7TWaD^8o}f5(>uGEw*(nAuYFK~@VEL- zWI)>;_EhZn?K&}ky=QHEa^{H3=8L=pO#dL8#>~KaV=^O0d#|cEM)$y&fq3KU)K|>c931db8o8i-n0LX0}|lhi!8la z7l4b9_}mp;7RKUcY<|d%<@T_>F6M>DZGC@gec3aP7TfcuY1v{TR>uMu<$@kUu3L_K zFz1W@A>bP0&d^s-yL>j{=OdGr%E9ah{K00EP+uA2@D>Mx++VooUVAx-+}=E+xTLsY zlu2)rNLz{GmjuPV7ko@O2_HV_>h>AH)1wwC;s*ykvhuNzJ+iI$ySiO%tqcZ~{lE#r zk>~-LUKTM`IA1lp(Kxn_Y4U*SzVfun3Z}*Lf*~`^7~r8;bv$z;zeS^nxTs&(?N32< z(N@7K2pUVbFccJ>jX#z{y-rVkIUbhYSPFp$v@0a4I`dA)u&!78pM+Cpd;mq` zXb-~(fk^;-&vtWDOgS;6*_8c=fCKwFzPSxjA9?C5tE3>xLWcKc-2>Cw5p{_R!GU)S zjT1Q=0rc|wISnosS7#w z6qa7(Lpc6%Qw&HQ>vogKbe3AYkjzloL8M~f+mYH`( zX}kJnfKM7BO{RZ7Ae}_`)4lU@4Ad{xzj&qs+oP2S=POOAChe9dTdJRt zEbR=V-RyQpXtvNF=h#Pb-_VMBi~3yeXf`WXP^x4cX4YpMe?ZI*s6{6Vc!bKyp|DN* zx%YvGih>mvZShnzhQM7S^tRCp(A@o*%?NHl`DhS((e>-C@?-V5TX{|GbU~cd-q#ex z_`To>6UmI19lVS2>f4L~PFsFpplT2`Obpe^fjh`B7LrDtt0Y((rGC?Oq~@!Aqy@13=|WnFIb6}9@%ir)To%3E*099n)r z+)jWqX<^~yQMR??`Of;`_{+dZsUFp!yQha~q|JDYHYURBv^RXdM$LwSsBeG=qM~R0 z&VB1_Kk#$f9P|nXvHBluCb!C{w%189-rN>sqquK zZ9O2pq&7PAZZXfROLN)6c5%EU8}0dW*L|es!+RE$$NuQQEg8EMJQwjG9p8*H`tDX) zDMi57)v25OH>{zvBNE=K`ezcStLAcMGL-<6SxA-_kkLM0{4n}H>NBN!RAC9a>*hY# zZ;@$IE*uCnsDADU3QWgzck6U6g{XCf={~OarZ^}&d6< zOokn@wq_oF?GL!EEait8VaDqzM9B-(<)w%fz%#S`ZjG=*dd$u?814*}L^1~&oh>jx zL%(X#mYsX_eZ(Psu!bBifbA{<($5OtBrfLlj8y%}1C@nN!P^Pjv0ZCFV}S#{V+4(> zvnhL%00`ok>komHw7L_Zdi)SHiy0Xa;(-tcu>ZY~KYo-@9%L3wi5*V}cz*O0dh4NB zU^g#BF}DF#*_aU$?KFCC)(;9^35{3-jl(yK0vp#5WixIKNgJT4)N(u!bsAyP$eTJ) zVkgT$bA87Xb*3aH3x%#nW)?|;Zj^`eQC$4cc3?B;C^V5_4DR+%q54IuRkuM#~VP4O*zj^t^d5hm1ZI477k-Eoaf87{!D#{QXn$5K90HfF6Gp>{xU}I1^6HyIbWAO*&YVd=KzUFPuPmHX@BnUnaSQW}pHhuG zkL;TS8JmWcKw$GLOLw1bT@)`EJgPvx_lUInYAy$9A-fJ4r@O>aa2+v+NYU{9;HiLR zs3y*WwNo<&Y7PcQ496S}XM||xu##^G2xZZqb_x-cY=R^5UC{{-`Ih@*f*K?<+A^8! z3J!gjaeMcm62ij}1vMIPN;=bG5rzoqB-UW#Y|8YnwI$%fgT+ff*)WCi`@$ol`9s?| zApR*d$JP%3TDe4 zM1Ody_SF>4Fu6Rc2t&?AL_CdN%)3KoW>O>|G81?z!?f4dpeQe-#LiG+$I-(eUc@(x z1fy%!a*O|r!g#M7%>4n4SxT>Z!}|4>#!~%9zmaiVVvJ~Vh1ZHrv(=29+LQ}_w#Y-K zkHa_4r75X}#tH&1KaAq?;Z?WgDmC(9+iM+|_0x2H)1aIcF2(vSUvnBBivR?rsAH4K z0jayADGqeEnAx2G`MHkn*?5X>*$y2&CE+Ady`-)^G)#E+tL{)+BZKcvue|kk>3_>g zM9|=E@zOl@LtFde<}&;Croje@*||L128$KP1U;y` zn@k9tLO?qkp-Mop-G=5js$F+nF%%2+XaW1fhN&LABe9jV`}2Sq!=F;sa=kyaA=2Fx zZz(XlrFIcw9U`hjYB8|i!!k<+)~P<~D&77T{*0=jj9Px%#J;_eipWzoTMA?7bmm>` z+2;il9@es8@We0&bq?iW0(pZcvs735z`j}I%ub#I+&AR+z-8n~OsVy_R60yQ`c=X7 zn6wVJGqD!#_bpNCM`qnY9Pb%Lgo>{*CnrL>N=-E5ncWl-<+G$YqkZ)C*grF~LqA?v zRBse^C8r_TB@k#Q!O9nZj-GUUN{?oiZQJ1g#VeAAG!D7$DZzfCpM$!D^3VZR0iReA zC92qDPwXa3-y-84SZskC(1h{ss6rs_)uA5jfpmzu9fcxYKrp`rzZW_@FQV=sZe5&` zQoKGhLTrqbtgc9u5U@AFbry93ezYwazJJcv8D{k0+E*kMc9u|Gd8D?6f zs6UfVQ-`$}#Dr>fk_N9#IvgT-R@Y3WHAxF08K6h?zf-VBUBRRz(J0_d5g4!i8jV$* z8~dC27T%1XhiI$(uv$OZj3YdE1~Y19g*-%(jvVH5H7>wE)UQbpJA~OJtkcL&i4fdW z(s?DoCC)znEJ>nLsxsYg!3~IP#8s7?qmta8Zk>@N?B%XhJBBPQ~ain#- zq`&*>L^ULEIYKN{T19_r&Kl58C`6hI;*@gR#O*Y$C0;rdh3NHp+gTQgD0qZFZEGJKD9r8Flpu)`&Od*=}v1{f%kusQUYiQ=6UX<5|l_WA9nhpQB=t#ajW42Ma)s?CD zDxC!(vNUX?o&}vS@l9Eu=G#rsd43kAZM{)WCM(OR?>qKQ+>cA#Psxheb7Lt8ZQn*z zCk~x)DU;02hK55K=AS&lc>8x|Kh_{CA2{4n(v2QVRZ83S2>|ezBmj~-va4Bl7IUqiy?_F`R+?G!Wd2g z!pA6-i(xbnkI!-IwK78f^kC}q=QojW819$m{c9bUm-u^wt2K`Nu7|RY7eUU|_)5G536u12!FIa75L;U;juCcg73Q!G9;L-TmB-=hV@mfgV?o83C^!&F0R2v?RbiCNXXx-PwL`5X0X>Q>cDdH zv{Lw~K;!$b>Qi2p^J~`d!J@wuOO+$I&QefDs&HbjX6k;uJb!Rw&9zMbim||WF_9;_ z@6~#+XoAN!8oov%zuJKE+#f3ym=p#SwkpZ=@x*6?Ev_bt&36K%U!%qK4G|X>^fU)a zNJYNVPv*mX{26Q}%TCF{K~kvcnZKkGNI{Y3hdOq(b9^vSvLu&b3}0Q5AM4aN54($l zXRS+0Ge&Ev4-t<4suDl8VB6wPU-7QDNQQ;IXeoGg$OYeG*b2SASC+_Elq+9c4j;?G z8iO^u59O3sCodL6SrDq~qd`Uo~hyG5dk2;bV&n z;-uC^cRhX0jO!Y=Ll_V7wv=4>LrY$4?+p`%!x9Mj?z{LlRaVKqWa8lU4S?R36A~g% zccqY3at3ZD@cg7{-y!r@>~kO7+bkN-+cPW6x2j+RT%%O7Y%g`R`&~#f5z{AJZy`uWbPjDviFK_HW5qL|)5X9|s*8Fc}uYjICE$wyZ(R{;&|URg_L7?m0I|*V9L?d)nFs%1%H1kI1>|jD%(aD{Hvu;FM;RE_9Me$j9a!UcEuzd#pIXH z23h=v=+Mrt`RP)gIzOL@Nw{jwG3mw)@Kj|O5{YE>-cpFQlV-k>txTQroQ*?Dshsnz z+q=23%E6BZ5SO4Q(H`bjB_Z4E#<{&bJ)fvW3=V1W_5D)!XZIh011NqtWri=gDRmD+5MkoHDMc zE6f%$WbHrTr@fBG^Q*uD0KH{1N=>^wAs0k!Y~TUQbEAj0z$U^7LOcK}mN(1)hM z*EHaKvx4DlAsHvNv(Op^7=;2q35y@35F018FlmFI6dPZO{JrD7i^NQAo?5P)PGgg= z?)baPeU@~p1785XTM z=CSb`0}w;fAwjCE*?-)uMeBWtkBRxUH(BNyC;*ht#G`jWr)U*myXkqq5S9QY&YX}Q zALCog+Lc?)mExzJP{`;)X{se-nGSD0%hNAvd<(WMFZ8eP)^Icl140)~IdB!{R<=-v z1Ans9N^KevUS0&wZoqk^hMIgwX#6~GDjzN3qt2Chyxi5r$(!)?{Y^Zi6PhB{H|IbD zdUb2HK$c0L7F@{_Sda)rhogokw_$!_{qA^?#X_UA-nTmYSxkU9)qi*2=6^o|s9uS` z6&4kBjgNEgFAI1aL;#{mru}2GfSbQ~KvE)fz7#SE#2K*D_@MEDU9~R;lQoK#mwQ_m zHVX-8354zxc!*1(1LW)z(Cm6t;IAid7+^KzxrF@x=oLvR?HW6smmpM$m>}c3%IhMfmD zrh|nK$evVWD+4OaU7TQ-0PZ1U2&Ui_N#`7nD<36^4~j%X9QZ{0nY8IZJ<3e#*cXi< zL1#v~o_NzgD)n6sJ6i{_#>yGJfxsp_uHVO%)lC!&dE^HL-mq{-bW_FE$!6bM=tAs# z$;IwqEV_h;m3KXs&3+$<4P0RT%7kJg(nK^NX)GE}EHeMgr^h49R@ad82j^-?q~;Ek zVi7A<7(sbWT12j8fXt+Z56VCTf@_vwt6MZ=B;8u%Yw>t}KJp!m^iXr<=+|_Bckr}6 zPnW3B3yrvzyBUp*baP`Tbyfx|R8 zOMf&$1({()UDfbIgIu{?m|rpiZxu!07)#*!9wH-e7e|?MB_b^ETE?@bEtAC4l1*wE zHhFeCjo}#}NTxzJWGtDcBeQzfdD+x6oshJBGAEd1#`UGz_S9{nk~Co(KN%Ag+zlh~ z0M1`n3f~ayO~CahDNNSA2~Cyyjv(5B59=EBx=@qq5AFvqnA@)8)bzuzJPJK!u%t^T zCrCq$sML!QEAmQa$_kP`hS-Tz#}xdGaJ0}ZOI;VsIArmZVA=-q3F1>GAwOsulj8)P z@H%2pv~zkhOa(hYV?A=^~snoTIktbVc?;YSCs| zYC1h%KX0!5+cNs`fR(&$NHRY>OA?O`Rj>L>4iH~4-kbcEZlyy#E=sXv(o*J924zgz zwQPM`JB=1h^t2c{-2Oyb0s^IT?I{UeYcg#n)c=szpAj#CEewC|z;7bl?JJR0;raQ= zKBR9g{F95N+50NWlVUyT{MbV!3*U*E_0yP+@B8m=zSi}A_yA%45)AqLYB*3e#GN!; z93vLzo?I!32al>Z@ntntt-xx`byhxojHBeYb)Qmu{C*Aare9-xF*vWM^&P6Poh_^L zISla8EH$H{Df)J#(fZwLmN~zWV8rzVp0Dmw2j=E}Gf~erpXGQ+-;{&sliQhpevjl? zFk+7;)tE-i2`hG3AUZF866s7hgd^7)4vMi(a&{=*SN>V>36^7+zAebDbDcS)%Nu1Ap{)QD(891>%n_ zGkD#(WV}{(;xVxC1DnWN?L5a)NnH^cwymic-r|DfXwzp)i&}_Qj)K3vH9HaG`V+?G zolsvM?NgggT6aP-vm#)Gv1Gb*VB5ez5gzJl9 zrN(2do_?gjN_&Ohbn%X$l|=5!{vd((ylUIcYX$F0dnS9?V$1U!{rsrh+^&)8lzOa)~Nt2C@dyDFiuh6@1>t0H>XoKiise zxzuO`dHUdK{E_+nv1*X7EK|q?8L}svD3k9vGtaTfK-s{M^xTDF++QF1v=m6(M)*}- zKWi%WkQnE4B5mt~q5g4vZ6c3Ow!x-B?xTF;E0FJd<9K7m-z!eI`Af6#78~!<6RSGY z3E#N-ATm3=Mkqb!d64J+zRMoOvga)Q-kcXCbd?{16+u*AWbd{Mq>r#JqEyHK(UyQ0mqvS)>G?;hy z7)xz=9uf>Zl$%4qE1~N0J`7ckm!JIJ=ohC?>JA>GRc?3Dui0K;EHd)lq8YPN;X2ez z6Gl-O(#bsZg+GJ|{AQcKQqBs(no#>Zh|cN_O$&=h34R-^B<3NLz$2VZit~*}>&r+N z{?y~Hnif};OTiTvGbQ+zNda+4at^UWWmQXv5shrJG|ilCNNjHBqS%%;x7eItL|+XW z7CRU1a$$w<<&WQm+}wEi0kUn~S}T;J<@R_?8u@Pq4GuTJj1P4D;sbwGU$n0Wm$R-e zpVrZBUTtHUQMe@1vA<_i-aA=b=-`RlP6M`1eW1v;Rn)}~(#lcej@)v#VC!h~yF_I= zfAIa=96<4fgtgXt830sG+u9V;$ud;U06RL@4&ayf0^=-J_xCek-^t4(uC1-9*1VT{as;F) z!Xl3s8u>*u0cc({y;=KRDXAj~*V!^HUQIvC*vhk1)A zh&=|F58$X%aByHO`<*MbIZ4UL04bbOyt_uGQI$QZnmSzZx%8>iW!S zjgE~Sa<(~e4xg6BY7_-ft4#qKIG^Vc@l>TzG@yR40LEMR^<4raT5*7}!(sjlVb<2= ze>wIU&xh8vm%Qy5G%VpDUCyc`ybX{_X3A@#PKy*1{1hd#+{8+G2%5`E~&C zi5&d*iB&V}yrmKJHw*^&Y2AUAd}}i;_`t?D9F@c?0p!NlRF1E-GvZShIK;w9_qrEIEHWC=Xns)I&FODZoXHDgbdOGEDccwYIy zK|Z~~(|fhL7SH2cuhTWJqo!?k=QYW;Z!K>g!3U(g^(qybCF+T( zGJ1l{`hZ+(`4p>It5mZSSaLK_|V5Up;--uO zu@hH=02ydK2qsWiD(%_8jX5bZBDS@{VQoA5)1DpzFj}X^bMi|W02=pnOyh^g_o89| z(9WxE6#iB5#+iGI{)D*RxtgpzN)21H+{>pCp#0x*ow7S_(u$e5m3#znpdpjCINIT> z-b*50w^qq7r`%+5&_p`lYztg|$`K{3|Dd2VM8GrR_w(`9{Oz~@*B83C$!2I|l3G^B zWeUOf;fgZf7Oq%IP~@oWgsiEb4wEJt<1 z;RG@;oX$b*y1ED}D{bI@Kt6OzMNBr2gH+P z))Zi5l`jU*wTzTt7a85xx5tvwIrkassx8J6ej=`^tf}&|i90jbJu4gEyKWvchS9Yt zH8IWAQ50BT_DA$#W9FyBje} zwfN2U@~&^4!6QwscoP){(>fVnHVZBAEgbm<2$jmeKJAii9d54)p3{=^<~>fheeKD6wk4`sH8 z+=NJiv`c~vJKqHrt8qiA)Y*o#Eeh%hyM0Rgt&TE)8!iUT_e}Fn=h@~r5hqdYUSXxAEUHQ?;X&jASD>r>%t$ENl?w(Q zZ5!8#iX#}cG4t+1s0yOK6DhskzQ6TEXyyAh zPg^+isw(MID_6Drso#G0g_fTuHBb6>O-tt)Qm&9lb_4+!>4kJc{$pQ#AJ z1t$rzR-hWGs5tM30PobX*@sUiZ1fmGByuIzeTwlBffB)sv z_%T@HEi1_?h*Zcc5V*+A*M3Dx&S`3Q0L-Qs0P)Nd4@J~A82b`m&sdGh3B)o0dGY`P zPFUXPZu5lFV1s8jiM7i*(_a;mvDfr#v^ac%8x|(76RfRVe&XsLc_(|{eMq#MOk8Td z`hd6pv=oFVP}lv;lJTaYTDp3HKLl^t3(bxPER}|;vKEh1OLMKnMnJYaaOKr*=wX+V5mH?Pep`3}3i0zUxm%s`D;;4w8-T{y?M)2Qaq= z$l1`O7X;k*sO8?X+}g-N?b9dK#;guz@CH{z^;3dzYcU#l+kZt8DcHwnn8^Bj`GoJt zhR*FpjiLu9r|0>h5h=t}r#L(lEi4GrAeCCShSuwSECvTtUrWWtgu!6_2o{qFe zL2sI+pxJ4LN??5WUCpl+-tY}q zZ&MO@NdSUsFJ+=d^h+ILN}f(G>YkZc)#r7-41exn-_M(m#G+#c)U(b(85-x%!C8KC zu_CCo6v_<7nnQ?CM@ykA2Kf#_MUtBzi)mUzc``p1cWG>RbUNG~AN&Y!X*tT#EK5Z2 z&COrjOVLkYm<&lm8txeHg)aC?ADLSh?c|+qs7OjX-IX-j*m6!91EQTE)rTf+i;G5- zKTOlVB?hy7epI(GEDhDOYGwOz0wr>{L-qf)_m)vvZe1IwAPCak-Q7OYC5@z%w9+Mw zbR#7oEiEP8EhXI`-3_9Ibk|vrzI(rCoW0NZzHxq?Gsf9J9D5AzXWi>wYp$5{y5=>@ z1v-!9hou~fUwtpW9gT^qeaCs7c3Hu_oGu+PUBn;ZZdX$90drZCKagfK>is|&^Ck1?{J5M?OiT<0#l?qM znxOd)vODCh5GMt0Np`(2fgvFwBu5)xbl(EpM=*6jF&6Z6LQ3?6M)yPZs9d!IGj_z> z7fsbxa}O1&Y>j@Xw!}<>BfaTxD&tF<=GkHqM#CHg5?hcEbZ;JbR z(8%H7;Sa6cE9qadQ)yWRdeg&gP*J#J4gWH~5r2lMmPz%Cd?sp5A(?7*8#hNn@{o=9 zh^9b;jtImSqYbK?Lw>|2%zaDQvnUW@!BB1SbbFpI_)?xplO~+o^M+~rqZATw0#T>S z40_hO!X0JRC@cgVHV}z;%s)lH`9R<pa1pi>12F7PXo@BM zb0m{UjL8~WxfT};E3~SqB0p~s2)Xk#H8pW~T{(3*{2V%~o+Eb&dg!6n0)iDk78Zui8Jq?3V?!tPnTSu74-9{ zC=T#i!G3}b)T*^6oN@R8l~BFAz1G3i#IhLBALxyy1{xb}t!Q(#HdZw-{i29Cfxg-F zuUPqsS^INvnO&-z&EbQ=nPmh78A2i=;2p2dHqlLab)w(} zgK7?97#?e(IeQS!E5@k1KZ9zPEtypP+AXpcf0P&8R=m|a7aQM>Hn}-2310hr_n4L1 z1l7D|oae*9jxl@14b*>yLpAf2VFD1)rGUzB!|?d{_~lrgMr_q83z9U%d$!?0!f=L2 z6u4L%9S)wQ45vJeI;L%qg;)%f!JI+x9O)Pt881NoIhareeO#WSr!gaxSzs3QO+g@D#4eONle5dd%o(iuE_QBrT_ z9=K#VP3AIRoXtE=-VgAm&!kQ!g*Uo@R)})thpbk(qFy+c zMb~$5glV^lvGSdmdbsaIX}j0e=(o>mz~v^=kI|7b_ZPszMy3bW{IITOh(#*YRLjlY zlZ^hRs3v1un^$*dJ{gB-W}i$sMu%o)$%qa|BJ|j5bk(v zBEMfdCC@t__UYtEVlKx>l22Xq>u78_URng6iK^IXSfNvOGXvIKC=ysDCsX7l$ylo_ zirf-&ov##FRdN(!P(M5zB&VaYiFqz#Pxt$)vb8Fh@M%)jAMxs(LZ90kW334PSZ6bz zfc(&fCRq<7S<`a-Gb&VpmFbPP6GS^sR-LvtKUF3Lr5wk2GG*^)i3pM!Qx4)P3!Lc^ zVl>2FtIh>AJ9#`7#kfnaizMd6kG3~zOa>A zZsNbfw(R?ba=QKJo98h8`eyJgj7iqS&-KSNBz3_-H~1+AO1{~?DavX{l^HYK!`a*F?n6x zo9@kJjeu8#YNdjO=p=zFNVq{Y8MEJpTJPJFZ1FPtdd4wSOTKLHnc0pAFc36Kp-D@W zX(|_ZM8VFx1V(-o-H=v)8e04)q&l=CS$m8Eww5;~*1*e8V7@jBD4=9I>{;16fZ?D6LdIPeI1dY0$)OeO4oK7fkH)#-CCct&8}nUDpS4|e zs%G}9f3u!LnJjsCy0i34PxnzP7OmauJCcRPW@J)teblGuQG)X#5Dz-6QvEh;WW1vv z3sZg%SM>5R=GgRLV%vO&Zr!t0NAv|>o1o6iv7dG>>Iq;@eP-3FX66QHE6#X9V;+98 zH$SOG1t)KnG3GRkRZ%x_0Pk56f4{!cCELicdlnkGKc5gO<)qc8sc);P?@g89CFjUU zg#3?1JcBnp-mbpjg~K)2{l!6wY4O5~V8hZ^CdG9yEvpO2_^bg~VJoKuNT}C4@8B%~ z*=hjctb=$)-zY+CA6%4YYJSYHWqS2XmYJt-SZ?HlR)3X}#>k|oN$WTsC<_ysy*;t^ z@3W1G;CqX=)uI>HIbXM;$r7h@(X~A_kjybd<8%K_?C$))j6YK*BAK`O!s_c{n$m&w znBC_MmK;{>@%n+p^8J7tSz>BDfp@5q%0WjVKSq)9y|w%3*CF8vRA+1OB+2}Qv^v$| zKVA0horm@fuiiX4m)9CJZ884-A_uXs^^Pt}DQ$(Oxcd_&!}SSwYVk)@i~N~p1bUJ@ zJT}q3gp&GU>ht}MikIB=5x52F#L{NZp9O6hNOb*Tf3=UWPkAbaV~I-mt~cP?-ebVD zh33bvpM5qh#^DJeKW67GJA0NO@#%3PApO%%QyD{hI6cw!boyy&Ps8TGH}5VvL0)eZ zvsS(SP>Z5VuQp)``)pi6~c#6+`Xz#7ZsA(Tpj<9R5b6j)!$8oSmddQW1c6nVdu8ua3V}_Em zx2+!1L_?$u>zbzUC3hyog5Iz@V0pZ~hVWznBz|-hZ9IA`%D`hjlzBorX9%~Nr78+s zv890^Tm`te@K{bT6gi2D!$RXxO`rzB1+;j>(S|IEkUI_#;U^KkyD)m5%<~vrX}@0* z1JWG8o``^s2_9I)0YFlpii-;ifFqp%DT)9W8zNAUKg_1Qa2Wl8 zdY$3r(Wc-S#N*7GMA(y{pr9a?_v-3u4g6?rv}QN@x1$A$A~4d&LyG_aA%6@4f{?LX z`E|hGV^GP0OSA&FERK|+j{km5KnnS$kqC~ZH$V^7L3L+EwPU^GG zR1%u#W|7!kdd|ekI+*J*EYXPkxtCeKM>g(N;>vt+44z)c*Cv@nXbF{Xy?K9OrKyr- z;TTxsjn%U?B()mS?+NSpIp^t^%g(Y7Z>VXk>tVOT2L}4mxB#`yfBhY)TO{M8e(a z7QY1PWiLrJkM19CK0nhrbDzQ54~kztzF}#9$v_4B=GU)=FR=zWC2Pow6}dhJ7w_<- zyYTflv^W;ajpY=aKSst~sF)oIXvf6Mq$E^lV!ni8Xidk%0;#(ji3Ao#5;n^%Uin%T zRNj}H_?|#b4eHe1+}@7X*%~Mo14OgGZ@JQB-~dz-cm?!UeoPc#e}10i4+=*3*KwME zqo_6?g#|$9=0+hDCDxak0|;s`RBG|&^4K%fWg=e%s0(&JUG|KXoYV4npPDA@l{~=Z zdSKY{)_62a5-Mw#?!L|Vo`BQ;ZP4woi~&&D!ik0$IdHkO2;szgoJ;n7XDx5=G1$o& zvQF4F=cf1DjTCN`t=-(chk^TK&55Sf<4T!6w182(u`b?%k4%&UfSKlW{`NR;@E9yMBqzbdlgZ zpWzD(xzP8Wk*m)zmVWY)JsE1@6LM@fRe|8y80D}s2$Dq5d36qOQFR=ZhhP^avi7-O zTpTSAc01L3xMjB0Kj!6igQX9`)pz9#W{ISNv;KLw5-02FR{yK_E#_Rlz2Ccbst+j! zI{_i-&2}F18gX9R7M%tSu=NdXuOXC|OF}%i8{Cn8>ejPdmQjh0A0T-4#=)FStz-D_ zMI|%%hB%Gxe|=v~5=$RbRXLr!^GvlTH7N?lTpbU`a}e*#@)D+$RCerDPJimbWbVdu z^i??3;E>gz-*i1wqUwA8?U_LN$3fsIG+^cpOXds}Oy)%%uvm6w8NcVE{BzI8 z5*A0dp7sf!-YTW$FU~eR?9P#BG48(ea2Qn;7BkD3u)S%(G)wgA$PNf%l3eLE%Q)Dq zb6NH-i^MEYD_WA7FY&qW{@I1B0x(EGr{*RraC6;;i~7PDlO{BV=lGq6eqQ~mC2TDs znSsv6+LmCRdCK8eqTTTYdw&O2d!rP}K-d(gzrEQt1Wxn)3Y@Z2PDC_yZEBw|n^s`N zUT$m*nwMZulw_@K@#R((=G#rKW&N*I+L@@t$00L)>|3(k2{lQwAVrHoV3f%53?==- zfpRQ1me+K5J%7P5t*Y}F3B{k1jcw#bhV}d8anumLl!_WZ8+G$1`|^D`sCdXM4-BMQ ztDKSVDT)LvQI>ZYw55~82Trq9Ph{MVq-ofcbhLmqqA! zko(7E5&k2T-kB8pgB7tRP|KzX4R7(ad@9ht|C+$60~pSZBqH9a_X0YvP2diIYYbQh zk{YvMhRnc;R$F-w!f8(zK>Q=TIw&aUu$PoNjHRoy^MG~?h`r(W_4RqmCQKdzRGgBQ zHb@#So}ajO`TZWchhV(LInMH6nr+Mv^C}sg+V$H@g-RC7uL%(|OEgkP!z_A(^ne%< zNj_oylI{B-BaO7w(Iy8TAL~*+Cz5(;Sbhfr_t}$X5i*!uxmP_0nTTwf=>|W)(zOQe zOpjjebQ$K+qkHo_&eg8@p0dh*f5sd|B*f_h^W5T5SI*wjk`S-38C?_xeu-Xi9U%y~ z6*fbB_ebPBE-;=f6TL$Kci!&?Dc{W3aBvD;oQe>PWNVM+Dav(21T2iM zubXZjmYWUAv|P4!rvy}Z3^I`E74coLk~KH_7>Za%5j=kS^jtS5f>g`ZZWqxKjdVDa z_8QSR)a$v4(xv2FyLL_YuTg5uyXVqz=A&4~$;Pv$=7xug+#9>3GW#qkNr54Sb&HnfsGdznTy++6k%%cRY4eR#6 z$En4fRMQnk(k(phKrdGD*G$V34M3~$xX_14)!&`B-XB)7`1j29>4H-n#HFVWmp?vd zN$xpoGm)B`iD40#?7uU2r-6BP|fm{GL>LV6dK46!Ma*KuIhD^evZv|js=CEYPD zQ+Go=t3oNtLIYW?WSy&*+JYSTu5RdNKM*~!v;L0KG7=(*F%$R!%Q?fxxeEIYj>QX` z5UrArl148BPY%`0Hp~fL8`-_-s!K(|EqRfcac7Jnh){xJgl)Jbfl4i-fKh_EId+ zWx&UGD|>ujwZdeRyftrc!~c>5xmNl^nz6~pF1@DSbIeNYENcTpeR9JBbn>;6tTNsf zysDsm3nK(s*p3cIr>akzD(@c8KZ?e?{g9!-I)3-F*hF`fUv*o0vX)e6S}8|iWUeOD zc2~I#T(vHLjsj6sEC4xdO7xG6L}f6Uj8^RC*nkk+4F}A8Yd0El6Hpt@*Kg)uj_OX( zA>=eN4vjbRn1%9os;#CY_rr};>S}G~kAy7Vvs6~Ha3#pjL9rBX^GtyE-H1Lc%9xCm zog` z1AD;+cV8uH@2+oqM=U*tZUvUstWnkH<08~#?;GHP6Ypk(VZjFaI>A{VW{>G)rlP=5 z*%%{SQXPQP;;`99vs8CA_<9s6-X{>=rJ;rVND2OWDJe{;;`9&=w)f$ z#~oXJd2s>9N8z!hniK)-`)bb0Zp1X!P|4ewpOeW?9QS=1s<#tK=$ou9g8K`@ zA4Ef(4|C@p!_XoEFy248l1pMPZdEE5j`FJvu>fO#f@M5iZEHlDmWjtYnbL-JT-NqS z2Z_0fEeMcacOWcVtoNDLWi3{(UBLUs_3q9*o{11$sOnsDy7*;B zM(XP_l5%`JE^H5bzve*YYIBvQ%kL?MdBOn!0hr|EQ2@X@OeCCPR6dJ=ZDg3%mkl45 z3g?hGALg#7NJl2q@^xJr`o-eDy7(b53ZZX~Q1Iumk3c^bDC4hu!=QBgFE&&j5Jt%t-3L`{t=H z3dETsL`Zxtk4)|sa6PQznhh*jPj_drPq!!6RRld~REEEok+FXox_Eqs!8gKRt8fiB zQmmh?eVfH>I;tf-8~CHevOq{>T}&> zrjcjX_pLMLL5|lYmU#rxlj7Iz-voQQC7;nC62i!Mt{FgC42s$Y(G`n0Azr@Naf z$+i~%l5;fx{Tgva+gr?_lm!<=vxX4H5wP{~xu_j+!fC<17vchbhrH~}?ou=H?e)1d z*zhU<=p<{R^?5i=U>)or@Zn!(lO_0wscgocbWxQ8celCYe`uPE7?$Oz>#Q7HS$f-P zIXEytxT`BiHkKwa1+ZF6^%~y+$41;C>4q!J0Rk?`MV6f*m<$Fjg3yplU(l`vb`0_4 zD=9E8I8Gp@&#FiC%Vu11MARI!-@xb%IS zGnByq9O)11#IT4(DeK^_l-UL}&dXQ01%2rd${Gcs@8k0uMbOay_rF8`dUZfaQ3G%u zad(yY3hdXrfe5ft&jyjh-f-t#1?#*(IO+)ZnSF;j)2``aZ@P_fj&#a+#^GEYIq z=0(({LAZeE5~GxkKvspcqDqC$IuyIds`4f*Lh%bmAGXV84w zlm4aFOfRrXXq2U%jml=Ne9BqAI%h*6Xd3BzGjeK9Lce6qZ7=v||?3IMa ze?b+CbrN~f$C{jyb2%v@X=L${@y(9gHb;{>KD#Bh9+T3%^T@J0rx+Ghk(iqwLLMxR zOXVnJ72te~_+?Rr5Z1r_?e_>Uj2B+zBAT6Y4qN*{m$36PR&$7G&XB&8B0JR#vaH+b zkKb)>SiI1E)BciV>NiS(#X35l?N*eOAibF)(k#S8&aET==Q-=iGVRUBW;Gv%^w@vL zkDto}ec|<}wyJY61J~7{;^6h!XNOi(#W3Mn<vi)S){E?!`TN9x}hQa-R3c*}(lp=V(LltN;au8y?* zCEM%%V{D5Tk)-jSD1PfbQOAwrXyn500l|9>1X5&VW&OHduktM}EUav8^(+&Y0OfEZ zh;;}atMbajkzXqT?8t{%|w%POY4=IrN0Gy8V#$lc^b(89|phz@ib4I048nOJx zG!WdkJN~Yq_&NEhZDjHjD=NSb2SWQpVsm7|o*^L0v~u!u9MtP11`KRuseVu`uxFVv zA|zxbng@W7Ik~xQJv|8E{%@#~2u|Ep0D7hpfWR{TZkyW~TmozK)88FDU2S)Q7LJ4> zb_?%jXd6+9cre~zPti`=qCppx|34R%<7JF#Rg%bp_ub89ajr7$Cu6pxO6Yv8{`&Px zqv+KrUoA=_@ReEgn*b(!Qm#!`hLV+v8eQu@S>=9e2`UJD6tU<|7y`Xw)yX)kd_0S~ zlkW>146c6;MuVs98HC1T=DMh?r4ku$cTe>UL(oH7)e@-LBhy=l(76y~0vgWEo@{{yFvA;+ z4nPaS#KNMgAsC_WpT)2k&|&4|a=XGmH)J-Qn8mK{bfT;EC=s=`Pk;~e17!4Go$WC<0GRvy zxJaBJIxhD2sJK}LVLG{_$pf?7%vVs=&xKGHIHZ|kJt3251E3~o{*6Fjm2PL;7X8>~ z5`jckK7cEO7|}y$wN54i&&$n3pnQ&k$EM3r&B}(&>JDJ&1u*RY zd0(Vn^bSN`Lk&uqo>cS>f#IRsktkv?dzQmmhc_F#oT%?E zt6{8G$O?k%pvUvyUU)-$Z2GS~2E|r^QlOR}aN-K)?%DLd9N=SpdArZnKzfEU1=1jl zS&M!jcMe6-tX1p=EvX_3pEXop0|a#q;doWtgK>_p)0+(D$2109oo#y%p0yvU*89PS1~Cnp$fe=&w!5$ zCh+4wkEdZ;`N}%sS>tO^_W*Pmgqs|Wx|XuyVrK$Q0O-GFn=U8&d;U`A4C$o?;ur(s z;&2!(D;cA7Q_2fC>DgI;E&I#niCPOkz}Zwvm%1~=unsJht16%-V3$KDzk7|hxz zeB^-H)h|UCxlxXJ{~uF;R>!#{waM^23jJSwII{%@!OH%A*_F{@($`Aq^-baDA}0Mf zcjkf~zzY8CKNH>3W(RRqKk=uO?pkcI6V zJk-GB{%PRZG5n&U(C_&C(8%784SGBKH1UrejWm7&1{OLY5K@A0WGAr+R}A>ve{r^Q z&@g^`G(W#;>3%|n4k^RGxk%2wzR+z%0ik;hRu2QLYO#WUu4<-&hj715ik|}y|A#;H z_8|Aq+k=WMDFp@8mdE`n>P7LPL#Dj_k3;YO*^ptbQ=YZE2@2Yi*l&$c{`^Hsu(oFS zTw(o(JCJ{ARHlTBLwc53IH_E%sE1Rks?K>tb(O8fONvXA+Qk?Py_*-%qEh|o+@~Yi z99_hGKC(A9K&G5{x+CU|XmnUShHfPeY#469TV)Etrltm#&rT0f9*4@fA3Qib|3!7x zZ&L5(Mtw6o%rIWsY#mWBOFrBFqy7Ql>ook~C|O|qF@#6)N>q<2ZTh0m?Mz3fIr2VJ zHQ8eas^wE4Uw$mov|nF=slUF=>|V({U{_Ifa8p^=sTAcOlHm=1@tZROWrO@N0Pcd40>flOj z5dvopiS9R#OE%z-wesY9V#%tHxfr(d27p4Wx8H3@gL63cQ!Ckti(0zi zB_Dba#Q6A+QKp%cna?%w7GDcG&R@zcVq(b9Yen-@FQi)AT!NosxAZI;lcg_=v%|{+ z$*ybVpA&dO{@7wbKYg?sr46IXd4=PJG7l*~N=pz@fxm;LF3B1D4U!Uz7GmqSwaZ${ z|FMZJO;2RUlV@ty^NQ+$W!CdZ=Twp^r!_DjpFncXeKYGO-&yt~BS0qQ&iT0z%b%r8 zoRrB;VHkB-?kp-Yv472U6NaNwGr%}H%6qkrZhpOY{+}P8l@srjD5Jdtaka{aiBi8O z?faPNcb>F5XF-V!{!rwB#7ysHZ}BV7lb-nev3qBnzAdN1l3UEN$D};sV8W^XqW}DN z!d(o=ngJY`qu=Z=$HX3CisbEf4Y^2QjtXOU8hMeD)m>MV0*Gwm0VZ|z2%^*_Qh+~X2Vybvg_~}hNAD5Wp$wtEJ#QZbM zB$;}aFW6vfBZC9T6{M21pD5?N4qW(*yBXEu@VIUy^;vdkEbzs}zX=Cf*AQRJtP<5= zSU92zykBpNeH3*ikME-@=SUE_ zZIfkEvY&|V3E;r!&@&daV_U?A;cPn6fOjK=Rr9HOL|V;jG}@-7inNuA@#DD)bdQWy5Y=v^c}&w=)5Jb!R69p`nMre@2{?0VaOO6~kL; zUWr*{^U0UIq0w5CqD5Y9Z!=2}!s50FH+I&B3#sNS+18b_^LXBJLgg=?gyO8h0SkEW z4;6_^e2AN#1`taDY#^ud}uNIHt;d1fbSB8I?HqtS3z8?(lEO$Y%KM9{9I+ zjGB*0$846Ay;yS>f88pg-0mUnf z`Tkl2y1j@#8BQ)UaN?B;WP#;dUWj* zal6k_C*i(AGQ`ie#@IzD4;T2<0CcMUmA}!O6t+lBvU8vrxp-OsRwWl3iJ8_X?Wvu_ z91alVKt*d~=D?6PQ``zH>KG|Kyi#sBsz2PKyNGA-bKh?X_8rT0 zJGAn-iMnt62bC-J(iHPQWG>sf!55?l_1L_JUAhva{2`{}!qTEiT$MNq(U6yRDy9gO zhDtGxD;?+Pk30br0i$ z6mjb#F{00BY-oJcd!nRL+rf=kvW!9Bk{T=?Pj!LCLT$s5qLSt2=nDVHPftX-Qj%E_ z=RaI1<)0v7MzshMIsEY*(nxDa*rGxE68h4!?Er=eA}*9@g!A>Ygdy{zLmpQIcr(^0 z_e;Q5KQhS|IeUm>J0VefMriRuK&UF2%Er>D`1}eeEyV0E!h29=zTTl%$#NlW6vcNt zf-Bu!h@>O;fu36q6Bf_q+Ry49wJ}qCxJH#)BHKr&wo25z4Liw^5WGCaa(x6hBgrPM zCVrigQ|vyF0a>iCZeUN+Oa8qR|k^ zauv!p#F^M?&QT-w)Se2$ad0`nj!GY#IY8KgN=~v-(f* z+@iprx>9%~+b4?*ulKb2cLKiAt&%8zys2@&n}gYoTL7p|pYl%;qxPDjkVc0j>HHb4 zX9Eq#tG_nWYFJ07@s6O|xaFvMvO_Uuib{E< zhm1IrQe7borF14q8g!&4`yWUtV5nAP6_o~Ny z&Ge*KNzZC+^%@jym6;IcuK<<_+{4nY?^Ni!>(>o{z>*jnJ6JY}$Gt_7?->Lun_?SH zl|Oc_-f}(!E}A%ny6|tJ0JInSKPwK?k3kUL zzTJ~(#1%O(`4CJWN&Rz}v_2 zw8=*(8_~4_^L3Qz-a83(Gn&HaA8_FVjO5&o^>0f*tz_~3WQh(w#OIw-=;+;LgW(; zO$L!g?tHKIqqb7+s`8r7s!i_om@JS>wJ;l(2#3!iPB{JaLCF3&YV!Kb)q8UZX#h~4YW+48!P#JSlpV(K(NE#^qJe%;e zA^_*hyA&Urwd>27BfIbMvwS;YEdZQAp|p3&G? z4@k71TFHFzLhb_^6S=aGVO1*XS27{NoKJA^sveh9thY*=rC&&A1Pcf@d97lT45H&) z;;{CYogJ{h#Dd8kIAA5YjA--EvT+ZojBeFfHV|+p!J80{hOk;mf3Rkm>x}$SrSRov zXec5g^H8=KV5N4PqVD|0{5x?Z=~;-sD7 zX2@{POomHILK|ISuDe@7#bxjLn%eKDmc3fG7f zjds{n$$$RR`-gNyXDNPIqcisCbQ$H<7_IB0N10BIXM}g{LlM|QE-^gUOAsN6*@>^J zvT5$;({db`>Ht7s$SFwk#N_DgdOg45hsb6Cqki2QxwCWk^|k|H)Zy%=SYRrZRG7+U zxKwQVg8`d`(K)-m-mw5uJZrdW%??G5uTZ%qRWBOzf{M>IT!2$^VGtq4t+DaXev0{8*z}iDe(RDT>6iVNk z8r4slE~XXmE)u)eH(?*Jvcr9D`_P#y!fP1&KbI!w%tU;_s#n|tmr&{HiE%-UZ&_8N zS=W6k@7CNVew@KBSAE{>OpqJ7u|*v;Mb>85`Y};PZcb=MM|{a* zPek>XCusgVod>lrQbHBR@A>>dnWd75!Gu>XxxZYTa;EdOW)cQrD0b^jVDhuz<7o|s zf`A8?EY5aAMH+uQb-&T?u}|AFG`JXswTYT?N^;$R+9pwg??I6xeuw|2h$3c4y<4|A zY}{)4Q&+LuO^mhNnY6EG!Y$`enbg0ub&eV z;vKK5@DlOE2$mVj-=6uOBsQ_hXc>PDSJxYYVV0L6bPo~wEGx_h=s(28_}_bRl9TGx zY?$EReL>1L^^6=yfn+&_u2pVVJvsKvUH$~6gKO8Nm#C{;_FzzC&<@l5?ScIvG6WP- zN5fItZHyN%U}+HLZue0OB;}Oo*A&iNugl%hRZz>$FRu4sc%8Emy-%S)))8=q~ZhY+xDf95$v*ETHQ z`$`sRP&4rp>CM-+waa23F3!~u@ZGkW>!#s1uD93h@Sa^;sud~2D4qF`-nF#MRR6G= z<=VU5mgh-5!Srt*=wp+IKY|W2FE~)4>07|<|L+Lam*7>e~Mily0iwK%oscv_sfsa@LWRK$}ekq?2)9>x)5z%Rg z&4-wT{yy#O^yY)DwV>1=eF~4??yoFl_+(Au8}zZtT_TG@2k7`;21u3AuQTPT{lz+? zIpl;@lGP-p7M?s(I*-zJwZBA%U~~)jeL7z_xdZ`+J(UXy|N93bBKobALZm>)!nNEA z;R_l$j1oF}96RYdf%EKdmwi(g#(h|zO2*E*lD*HCON&Gy&7Mv*1}gn?DZ`gG257}O zwvkNFgyl&<`W!ST4#b=OYt>BDcIzV%Awr&r>KR^&D)O_k^M0}PqgORB<{EWqXQU!+ zvhx?0#}!xmK6WQ{>ZzYh=xWj5TvgguxK3Kev5|!(3OIKR{(Z>j`F@3 z_iy-!)XE}{Ncq=ZS+f{GZml;2!i--BQ7NU1T3fShzbDA8M`M!78B&1&?_H($MPst4 zXgHiKNM#g%NfW3H=h7^M^W=-uGf{I+$vt7kxyX!GU(>P^D0ZF0TI|XoeDA`SaChgE z`o4l;p*<8^nT-Xd;L*b{kwY5Kre-_aYlv%oqoe=%waEQiU4!F=L%~=a&gla)NU>zm z<&jbblg*3$O=yZ2$KTPL-)tKTWoMcg6gWlJDp=CR1iL+^ znQ`?919FCJ+^s%$yGyRS9Cc;4Eq7`4BE;ActUSVhnU5sIo5dml7CP>g@22rhiz4OZ zPw%zDwHF%)th@LsGp?5JmCqW68J2Pi91)A{8T-saUts*pH$8`Qt+qLCy^m+|ZCaeE z#ykX$`4RU>FSHSZxh6ufCsveA*l83s!QH)PvkxULoB>_q9rorJBkZ4@F>m{A!y6OH z`O0%a^dpy_i5Z4rU!smm(!bG4O`rcN=XR%g@Zix?SqU*UKabJZA+8N|Y}fQ(UTjo# zQYu2zEGJ?fVfOyAuBOsI`T4@|9=G77JTp}^3BMS{&taRKuFj3c6zh$>{`=cUB1%eu zPs}MAw{|zoR!v#I{S4L6;`Y(ka65x-Zz9)teLo_S`DT)-a;L`3Pe3|~>SzrfB-ELY zSn7Q#l`rxZ1Kw}`#JWjhx7gk=U_ubTDl`~JG>(BNAj`I6!op(O9otEdCf8tUXTr)c zT-aeq&OJBfZbg!i4HNW20%9=F!1Yru>_w6%NMifkVgYD&x%&N#GRwnc2axlpee_l}n+RZNIqf^r$Lc zWt4!&i)QyWgbg*tiJxb0966I!BDZ_9OtEosx*7gync|9BIQ(J!6S9(y*GL!IzL`VQ zYYS1ZIG=psU>)zr&z4`=)UwJS61xhrl7@FsFZ^(+r(cxczIA(R=k4w0%DcqQEGZR(hb|QB```iPTP5atqZ+DbMUwlOQk2y~ z6_&VHbMp(oc9#4_?mu?oRuNil6A5Yuci|k=Jb0E;*401`&mamzj(p=tz&{|!Y#htcfz$gEsWbvbtVFf#lB&%>gZUl1 zerL+56bq6r4IKYg+W|8bwP9hY!yaj&2C~=);T#WV(V=sZ+19(I25(dmuS@u91;tjAzTAg5o z9vz8*my~M~1wR*73invWQy&CzHKyk`!l8?}@#VTi0gJyxQ@_iCx-Q>}BikZ$>H-rn zQ*9IG_FS4i7IrjVHH$9>d>MlPjUjIy=T|l!!TFb35-5zj*+G1W z*WNb!e`*|w@2gfAwV5r}@bt++-Qj+o3mAZDV8aPxX2_+1uriWGKFVql4kE%Xt9LKw;)*>sTkQqZRldnjWp!4FW0) zHj;KIM9kQo)Gz3m_~6tl`DR9lAR;M)mg|+irdAR5b-7Cxd72dm{KCFW3&}EfLffhU z7Sa=_3m*C8>kmhQ<{6t7WOjOu!!vQC@@U5@+Pz77l-q%K6AUEdzQCpg^rIw@c{9$r zw%)YO)yYYet)d4#d`Fa%b}>P&Z4!lJ2cA6a0pkr`%LWrX^sZ%>B_}S9NqbWl0LYCV zxI)yyFVewVk6K))_j?dzYi{5nET4r?sN9pdmj>w3^XZ7Sx6xe2!*zmnh68~ z?F4@wBZ$CHOg*rg5D1ZGu$jdj&p=JTn?5f3-cGkXAP{}?>AD&n%CkqppXBp}RcMdX z^~RUUMXxXCOWG+-jysp9Y9x3N-eS9W;qFn5y^{j1Rj3e_*83~Unia`CO zf_*_AMVlaq*pWwMw5iA{=-W%#2lo{oe3vOG`~HgM?bE9M;|{r7Eze%2gd^EcVsRUG zisTo?m(!M?&KrmoV$P|~|H`CQ`Fco--k+a5?kejQO^VQ)E3NHULJ%y!bW?03y)j14 zL0g$0Pg%3m`-fh;IIiTcQQT?qEY(2yHM5V##HdNTUF(`l?*7If$8J*$ z9!aY6oZTJM{AR~1hgzpPy{ppVn6DU5{6uNNc8WyjL)$5LQk=luL;AjFpJBIM+bADM zRXN?xuC^|;QE_vOydKvgZSMK|uD;B$4{73)^I*3-FAiT&-te|(vQ>E!LatOGt4$Xg zX|G)5czZ2`FvzyN=f;g{gJ?&BnnjJ4>AKro+;d1V-OFuNlMD_|ufVpn>{i;RUdmBk zzigdrJoYt2-ok&D;IZ#4CU|9n+~U>914%>S>}ffsW4JW>)SzOasct0lFB4m8na5Ab zSZ%3Awl96+t-llYqwXF|xTi3v9rRHKu~k+v5=6WtqNRpDL}7zJ-)(Rxe_c@Er%S}0 z`(aqBnw@^$-`a6&n}Q^JGcDWW-eYq&S_!ITH|r;-JIpHkTkl8-&R5I>wxa@8V*@H6 z!?Z05FBAQ2vk%2*EFIcHn)mg&O>6eEZ@3vozwP`ztyq}d=KVzK#S8gkuOyGu6k^Ri zMYdk%*ywBt`LNH~1upM(=%XhE7=}|e8{mTT!R~+O{$w#*bwNT@8Uh^cXRVg2d347V zv3gYr_9xIVzYs*x!(yj$;}5T?J{MPLyUl%jw#PBfKJ)mG^vWtZ74=hA$svP&sD>xQ z?~z}P$=5!-)LeRc%h)oBAr)6YN>V2N)79(&Y0%OS%SOhd?L~jDdYyfzA?}o`GT+h2 zOPx|@bA<6e#*@Xx0;#lQ3N?*FqUjMQf)Vd&v-F0atbGdkb~yNyDC=M~$bR}>ZtZ89 zG|EFUCW5`l7KAoGf;oU?c!9|5#$kx^oz>d)&pZ<8sh+VtrLmjo4o~lvoRsP_3{vZ1 zeeH%{{Mpb=O&C-T4?Jl6uyXu?gz(lxsNWqsbF3e_V64%tn*mV~U;6=@*>YpD`KqOc z#6k1&>v{+Iw~N7DQig)%WIG!ug1=k7eN^usVfdkv*7gf!^R~LGd?m?z^wk37*>?g5 zi_X62_#3Zb9#Nb`&&SrWa}}i)Lk4w3^y84#3n`&QC^@y?=`^}ucMY24bRR6upe=55 zX?#c}_~Z_uZtfOp+JE?=d)2495!W}(du8BrPY|(I+t)=|&9v@iS_^GsakXKNjIN3m z_iHES4}zb5{({jP$b76UqxREUlu(S)wSkm4n8|YZ%Xf~dr=&mhdAvhL4Gz0}JA;r( z456E!JuW>ApZmV2D0+TPyp8nK*`{A8*lKk%S%{r&oHT&h;JwyozgPyy<C)* zZ-xc?$_52Bs9Nm98rnq~-ro@WV9cH%aPX6MA8I6B$OJK3%SszecW9V`Y>_EmwadQzU(wm47ym z&E88oR-{pzIEY_{mzI0>M7vNjwzQRx%$H3w^@Z{%Ww~zss#`zH%SZRT%)DfI7}5H! zf$vFTUA$y|>T-QdQzNwv)lzZx=I^56=B2NNuJt*JeBVu0;N;9XqMws#dwccHGnRT)IQ?3VqeZd<|n5xm7eQnPn7>~-xK5KTP|NP^D*6EbA8)|U`S``I}*$B z`w?>Bucg4Z{G>z2p5vguW=rk+C~A5WUHez>y&U#o&e4_Bc8s#>5?3jFGWXtgw-w<# z`RSjgdR7)EW?8HZP4tr)t-0zG3t_$*MJFj4wG1J_-xI#`m1ol)NlwS z6m8E0W7fjOx#o{^|N9el9K1gk3r~PhqhK0nEbOw$ul&p4-{9kEkXE99ey-N31=qr9 zJS}+0^Y246sA>G?!DpBfAtWPO&HiI*3o7ubS}Wd&^P?vo^KWe^+2k-Ghg(@MoQHK* zKjv}kW(#E~MTDOTn3N}&RT(KuIQ3(h60yb9C@7I-*d=-DhSbh?DXc3mh7}*S`mYUS zaO;*E6v#b~xCrOBZfVFAwX=P|t{}iHc{}sc6+b@at(j)s4s3#?^H8SW%7FH-ndX(( zn|0&cgk%g&N=z>?Fm@Ccwhy`UHUklu*r~}8hS_dEEd2T9g=S&k5(&T6%Nny<%WER7 z%QU(@mM?CnczkY9zWwPDw_WJ(SUNr1L`ZPvbeEk}x6ny5Ct_49M1NsWa#_jEjaaQ|dLgCu%^2Zq7Q zj5^t=b;cu5UvHirAFPb&ie_E63%i!YD9V0lEMnbaB;1p#bZ!y6|AUiF?oPtV)gu_% zo*qh5e69DdJT(Fd`})$;)ZJsQEy!=JAb=-yIq(7pC2-nX{WSLcmagk;i*NV)PDYx@ z2{21PPh?~ox*_z)Z+)))&Br38`8{TK`9PzYX7?w`m$@{O(F@N-E9=o3j}}O6?N`j+7+WLl+*J)EO`z#;XwWhpq*EhM5oDOCee?t2R-8eP`XT zYb0CPs*<|;v9u=*QWkwp^40(brECEX?CjO0tM~M{jIP())^njQQ29-~EXy z;~vBD6^qaZ;0xABmv$0x*WgoiHiE;7Cp8}n6~4NS$0*Da@H3 z;kn~`$}9e>$r|NL&s;`J{U)zn*M1v%WO9kI&cox&bMV zJyg6NilN40_`7B5eMyR1iyqp-s2pCQoAXCXr$tWOX93%Kx;rRk*<@U%@j!H%Yk@d` z^`>^Iw^}=zh5q_wJ~h-8aA(=y+w}R;XqQ3pY5`me-aXp*vl7iq;5jgG+f? zbvVBQis&5cvQbhCHxW^TY>hr(yXt22so`c1f|}Z1J+KanM$*C4YJ&Tc=%bPa5s(|L zeicrG+4>zt@0DkeI9TZ=%d<*p}950$6Rq$24PFg z_xGvOBNr;Mq^`TJm}eSyFlcVkw|^ZzJd%1AZtS26VRoAfJG7a%p-uGM4;>H&@3t=mN-QmK*7`St-v-iGwS|%kdvBMHn`Z$<+;;91aP5;pGfhQtO7>QZ$ z!F?XY-(NV`n53P}QeEfNIYoBTlUPj2vXp{b7Lj_i%XJr${ZG?xgj%oTuqN`$?nV1i*fas0_W6pFBxt&uWKD&d7kT1VegmCC^@`$+EB zjC;L)u$0#3@n$_^8W-sZnhB!vUUgg*ZYrCH-d%Zon-TWLMHqW}-HLZ{5UwS^i-4?X_fmiA}uiH^cFhT!i zY6jH1{Xx+VmwQY}S3nl|G%Dr1K>#<%m*oVf(P0~+)ufjzrtH2PX_le8J=abcd#5O9 zm06gF?2r#WC1BnB;`XNuR_``rxjR3KuhFMf5UITl+PmGZf|D<=YQeo66){q4jasn( zz1p9y${w^#&3)PWsQR-RVjS5TcFP7%}dKFR8OtdE1npLFHyqlm|tIC88%t| zRipwzAsC@(=gAK9k?KAsD8X3Tf5UxT{q#7X>lt-Asi5ci>5-)g$@gbQB~cktNt1Ko zC%@dJ*yZlM_Zlfy)^TdMoqFj?X~%sYY`L$hQk4;v^0Bztv%l+4iuONJU&ng2 zADAnbdWWWF`gL=VetF@XqjYg9$q7e{^BebP3S!_dmz@P5Y-7no!d%qd4&5^&5eweMCbHn*6oy6WOv3Z_5BXN z1w1>+`R_{-oD3P7u&0iM&>x<&-5FvINrprz z+JjJ!8HM?&?yn|LbHVGBTI8rdM(v4OUrj(rl;JSOveFrtV34}U>TIqy5BN+GGxA4i zj6H{xm0^E-<#R`!F3u(MVA}!!)^Q73YL)h!sS2U*y-})`*wPjAd-~}$-7<6jRZbB8 z4cGD;sgSsX_&qF7#~%acqR`z$B6uTvae&;;@h1$nUaIquH4)6o#}i_g*~=&nnn^KJ`CJqTuEcK6}rNQCjN;uD|dbiOMVpBdEn&~ns-{=PPx!q9ab zpD!CH!}BHr)nIy7QaZlkoX@|q&AKP!qX@~|N`F}pYPT7GVq@F~G4vUHRV^)^F3*jL zegocT-^>jq(zUx(3q_zF4)_l%JYj6|brw4gx78Vce`9L$x?SzzE($dau8NzN0X$?u z(GI)~Qq#`!Z^N2*1QBEb(DZj7Q<5k~8BjGNMG@yW(uQf*`_7NnIM`@~q>$t^Zr_)# z^ap=#xGATBA?{SbF0-l|A^Yh9_I(!FhYz;r?aHJdUN5w0u#a?zIkZ8kb$7mfj3I`Q!Sy(eeF2lk51zqbNL#+uT(53obo| zVN5)s*$mRbPv}`QXi-Un8t-r)CBZHGjQkOO$DN6`pWK{tHg^<`C?!ZN+f|DrXTH4@Hacqh zS~hYrz|^)(TkL!v#K(M2u#D}?&WCU@pkTN(f4Zmy3$ygjR+l?Vzrgn##}Wp4N zj~LKtXjnrh*2pJfh8o^w9e%XJvQP8jHcTbD`Oe>+o3(e4i7<6$4EzbsBQ2RVQq1MM zMjug&7}p`B%%(8cbbpwS==9gCc{h5}G>&)Co8&D7LBk4%e2HB;>S2oT;bOZ});b%y zT7BCf*cri9_%RB><9FMIcrbGY7bwoIHfquhP@-6<+)6Sm2J(~|mpd165%#rAV*+iR zo9>Q$d6m>f70Ev&qrC4$=A+&uAY`KR7Zf^ihEMX1amdcrOEogQ%~0R-cvO0zZOoxy zdBW}3LB;@LYQ*=K#Uc*hUf-Skr9;920MgESrX(p6W*2eRJeT@dDdKIJ@%Ll+(0iH! z(odtsHZJ5*-C>#-%7plZZ6ZI?nG*hk~cA!=0@V`^A5$pm3f@h_7Ax z|MkCOaAZkh`4HmZ$zS3~_4^Fkn^Uzb0Bao%7mqQKSa(*5CaMu+eg@Ni7e`x!hWV=6 z|M~gl5$;Mx1-F-|!~1L`HkL%~*}Lx^qhnZyP$ndr73 zO!K=w_oPDvO5pIm=-agQ@h2flxlEe4Wf+qviI_&GS`3`&s(EMzqL%{dq}o*=Ih$S< zcpu`Iw8YLWw1*-g8F~Fu3pXY1NQOo-!p~3l4BJP}-g89sRz%!;qzJ1rh%_;1DWti~ z3ALPNA{mjp{jOOyXtzAOw()UouWaWfJ*FGR3&A}FiZbKDSC}%W^?CJji$5UjW4W&C zBV*w%HtrbgW-jwI?BKIeGF`wYzTcV<^9Ar$)wzC@3)s4J!N_tj)9ZNmBbPBbsL? zE+z{8qkTX*=Hh5LVi|y&%#F!s?t}?XuRRlBW)QM40(he`n?e9vWAn!RSuI!M9{qJ| zPMP`87YhbffPHC3dX~Q{Jbd970q-Q3T#HO}RRMGK{qG!e28<;T2j|$N1Pe7esg~n3 zC|nA%IHbCzgT&|vt7Co!tJ(BYb7|zuI7hgOye$Jq^F9ae!Y29MGA8W%W$hBJ+!P#7 znoBNxB?&nJSeA1!{lPJ7EnN1(SiJVXJ4zyEE$}|b0l>dofHR03W+fqOap+58`E;X1 zCDw<3V97%Z#{lJmS`vTkWdN^s17<%#4>VyOIqMsY!~NBG~Hh=M*U z@iVJ@&*-+WI8>5#68BrpWn-cmUx;rAiiyB~8;Pjl;4Wd;(jc{tx2?$lh!NnB_QOSB1Rj>9yNTOHnJGi z;4+H70U&{GC$aJ30JKIWzb8xRhDisbpt;`j+n=8D_oH3=A8;tuUAdCVcC~W;@YmNT zN3yJ5ytbcwYpy_fg+DyZ~e$11ULO}Uz(%vBX z>&Kq`w63+3IyyhuerRHKb5D6ja5+5YYA;pPrDTqX(?*_458{)VB{eKxdgM7w_Y<^w zeUsxiDc6#>^}JKmaen-4feb_RjA9;eH|2qvG{(`Gn_nWy{g?Yo=5;gqN?d2Lxqnp- z2y4FF7kSM$61cnPZWv}85w4Bcdjs{Ye!SyEpfK(VVKs^$u9Q^w55K z33=x4cD5K4Gu9KOz60O*qHwhQQ0Hfr7R2HGS*^>5hrFp%4yv7m@6M*IygxV>g;hpU zH6V6~p*6D0ZN2THNVf2Bz{BkeZA22YBTrYt0Mokh!chKq42pZ|bED&}<^FV*HtI$Q zwbAGcXTxuq#w3uA_&&WvDi{T;^h9&~)j0g>qEC*vp~pMpiQO-rnb*>oRliih$vUr( zmc`%hx!8KMohgQm`zw=hb7!GTC$LIfCiJgQEdxZ5wj8(o0i}#ob%Q4~mQQi?Q&!vy zKG@(UredEk3QiNQG2YJu73Aj6qqU-G(b-M#iae~bZMPhpnhjbj(9S9FZu_mVK2j2$ zAuup&?;kt(3*ZZ#Ig~#lis#<;oG_kAo4a+t1#5f;S%1DDB4XK8^-^>63t*Z~j83{Z z#sJZKK*iD0v6$Y;Vb4RN)X{ZxngI#>^Wk*qzG%7Q`v*Ff>)(1{H@hs8^NVmud-d)N zm^i8hf+5~Sz)GVh3A;P_ZupguH*S!IHTmihI{Q&o{D)=Iz74(E}?TS=Ram+;?-lS~k zMvf5p>8C=j*I1N9Qsc?dshXZ)WWFaXnnlX3>Mjdge-w($qT#QNA50C-*-uNuiA|H9 zed?29vUDHYdmQ}$4R=YR?;rNwQS88U{@o%LKcw7T?qjqwJG7~}_U0iiYBsOor?kiC z;>St|GWcc3cgbY$Mq7Lxxw8`p|9+GluG*xTVktfF;fa5tlF!!7owWQxwnw+N;|Jry znXI#FlCT=0@)opG6W4!;IQ$h!KrE6=AT+fMPdIT)SAvuZW7SH-LA5hOJcPMP(ZizXwQz*Y`=c*_X)jmC;7j_|YcVT?eo$tODAj>Xel9%yJ^{*L?Ir+@qN2m$ zli=nKY%W|uBCTy@UqzEK{90gFH*?=jK5JkZ=fYaV@@*t-2NEZBEY%>L;}9=D;29nn zEmo0{OayW}_6?mQw#y=vZ^3||VzB*ED=TgjpP+HOago14N z1-P8wz7cpFNC)q`P_QVgZ@WN)?0ez~V{lObN*~reydGs0n8PUyzcdKCgA3kdc46Fl1}=&FzLQpYvQAXtz#pKC(Fa zO4Mg&LO1v7$}flr+(HfgaTf=62QpD_XBYAAIC_#zV{uK!6Slv%mIG&cXIP$ch0}*< z%?U+BO5G3*K?hQEC;t@jx$-@Duw46Llb};Z7l&=;UsUICy@E9e)IMZ3g5fxoCnkox znfVX}wq&U2+S+ts#{c?XYA`*a)6>(Lp2u((Dw#6N#!DH-8~1KK$6&A9H%*WXa^8s2 z<=_G7@nZ`E2K(J?E3g}beUG%<0@;>X0;Ki+j{t1}YQw-;4|XT1_}~v7IE})Z9_0B7 zYvJBi&;E|l#y#L{nuU^#NH{e?YE^IBg7h3D7a-?IQ)~*aeZ`AUz6}4tZI=yJ9`J&Z z$V*lz0gmCsLk)>NOTZ>2KG_v-ZzF1wOGrDMlNkwGMk`d5eCZgEch!eFLWku$h;?kUTbrhB@}~o4`e>Nj2C^c zJ_3JHhi0?(ke*I=oO1(Yv;3uqa353>ox6i&p#FUbcyH5}-t%?TcK;t*@Pf+^3|4c8 z`AaT5SGHO6PqcD0k#?5AwL78-YvE}vd3_i9AVoU<{7ca?z4yhr=mQY7Z+*z%HhE&e zmU1lcABEUwk^bfgB9iF;rVi7!Xu3_;2?HjiAY2qMb*~*CU3Sf2uQ}YDHY_DU_I`b0 z$Pu(&ky9S{dujbo5AjD(Krkt_hct5ZdP~p!(Sz+XTwI<%AJyde0Hj{tkUu}uc?$zo zL|+4J`LBFj_Ad4dSbBfWjTi7bnpq0Bk>bcEmr)g+OulpnJO9;>=^804>vkDHq8`83 zz@yyz#IPtEP}etD2sot4Y#Uww{GVO`K)RkB|M64uiI6`3kq-YsrI0U^lt{}vKqlH& z48IF9=s@kOxs44z~${{kIT z3S7OdT8fUJ#9N>Gl@!t;XJuqp0=Dw;`9-9C-y{ggO|(l6)-66ImT{jOfB;>>pNY;G zqQtpzE=6JZCaa#*VhH;XNMGptTgH zt}b*%2d~DX9)TK{k5j`$xWf5t(F5savdpQr%pc|FBT6#Qe;ZKeP4(VN+r+m9G82Ow zls{8x;l!UwDpG|5J!1@j>`1{e!`)9Z^DYp|?x)~w;@_OEpH3L*|1uBi^UG*@{+yji zbtlV8y}Zj?P`)k|9Q?0Rn6HwL^RIV~V12L4So6dk_h4nY*DX9^XV5L4Sveq73 zcfdARmXTw;*#U!mdNO};&)DBN>DC{OTc8mDj(%;~afW}_#xCW3b ztCxEf6aimp?|23(sAeFCNm{}34rU1Yln|Y3ssAXzfQyyQ7_q{CvbDe9pHJ>5sZBMU1Lx0* z;U`wPr@$jK2#ht$m5;q7=pya)u6i(lEsLnT`UJma^zC()%{rD%E+zDr_|CER|4~y1 zfpO_f9Q6Qw4c@Ks&on-N!-uEpAM}Zyf@W1HVBXm)TBTqcEmn@kfD{rXkE4s=LP~>+ zvCwg_`VRk+sn%1;@8H_NF5&${!%eAFbAU!HQNv$;HsW2XIp6nej~HKIBVor8Ric0U zxl;T8{QBz1E=YM`e3$LlsR%LUr8L3%Hj_<3lhah}X9P0AUukFfwZA+5+)7L{2)BqIedTSJ5(U2^<2hq?v0ag4o1t|6S2c}8l;KLqpPJK6yNl=g zIF}-E$9ERCD+7{<;OcA7vLECuMf|(nCUybJ_#<5Z$=z_iaB(PcB&AdPbEa8vT@hW= zfu~2WMC^1C%SF3QKGlw=WXr@n(aS5vBqsAWAT^VjIH#@sQ#6`OwYLAmm>geFli}@Z zyUPy^-4dT9JpSEraaM1AXHetQF{FBS5~ zqqddU-5+=tB)n#2zr6A;>V&B)TkeDWXUj&05L1mK_l^g2$r(~a{Sl;9Z>M6UUUGC>>4NIk*2mWY+jSiTQ1nxptf_c%=F*F}Oh7d9807P130|Kn8kKR| zfkuPG<2wIpF8J9At$xY-M^f%jAHVYa`jRAw!)}QZ|Hc;goT23LxBK1jRiQLiuNGw^ zBEq^}wZZnoxo6JzfO94bfUQAb%oFsSX&SX>LZW615|V-eaJU6R$Hr z&yei9K*Z!hA{7s#eSU&8OBO;ho0^c@3xw&0Vj6C5;5o@4lnvamZ(cTfjBM4x8_TAc z`zaVuLmw3{PW{Y%+^6^gKn4uUL-ErtG(Mu z1i|!8OZZX%NQ=PLT|*1=yBh(ghN0Yi4~u47_m{M9vEd-3ItT z-d^R14{+ie)RPFG4oYTIzH`-L@J2oApwou%&2b^`;Y0Wti>^Do5uZ+&4id<=wW2of zdUi6!yU#irDxEcfWO`lln^Bu4>L)(4pGaj-AsqfQYM%M=;kM}B+Hh(kA%`voru99} zLn`s9NqT=P;cuIpy!h4IX8mXA7UyC1Pj3=EsOT;@ah(_>%8lFP|2Zndeu8dx)dTkG zht4JZ94TC|`wYTk0tZ?K2EU16V8r5&XPq4G!bf~H|Jka(I~e;1bdQ@yGE?7CLnkz1 zHfcY+Oa@^}9BHYYb zpjY4SJ!Yt^2#m%8W5x=&!BfG>V2SpmP*~6w@m#&q8~n>qxdk*6k?YpJv0mL(#9G?q zFj^kH5hr*^Ss8t_IGC_%OOxNJj=gcQQFu#5piPIQGe>yB45|;0K~gJF2P}nE3v&zP9?Uz=w^Z;&C6~2+!7L4j>3=a^<&j^g82V zaN8^U#fvqii*!&_7y(*SB*!ki74LNZ&|u#cg~!y*9+Vu4Lii%4;A(&yjdMQl9Dx7N z-6jQ&_QwrZ0R5dI?x>NYxmL7=dk;n_&Nb?e$E|~4Q8j)B37GL)8~SvHGT@-5vCqe; zzXE`vOz6gQwF?%t2J$i9uE`v3U53`9s|?Rc{We;as_me=q=@u%+2a z%l6xoOtl^i-}M;PpQlHA@vfHnx)S*MRwNN9PX0Ou;%*ll3Oj%+2xJ^cdG?Btsa0wQvsWQwbZe;!>2kA{2(kM@jZ6=Ltm?if@*?*h!h zG9VbTyuQ6&?>hlD>^Hjxudd#BeWzNlQ2qwhFW=PEJil3u&lhLukniLB0R_jEYrSPxM3K6@Lwz^1t0--D;$0x%4!aDR%T#AeRXMaa4O5`B#Jk&s(*b zv~XCw&&QLG^UYY-N`BMIAJ+ljh38FzAN()!Xv?#Nt6_*C<);$1o;%;hc08~c>~Qh4 ziRUbpLr)Q$iPa!7$PLuR&+WTl?KrB^?koa}SlM{N8_&zbMa^q+ojyIfW}2oxmd5#5 zVRwfOn2q1UDZR*a{vINMAMjRq(g@@`5)F;y)sCov_olI+(Y$%UVTHm@qZHDWOvyzN#(&zj< zGcUy!P=)~*XX%IFPB3y}xX#F@)=BZtCp$klM0}fG$ zBxPkwV9_T4R1quR^VC2tfG1_T6@Mu?oN*#}RB%nOu%|T;%KLC8Yz4Ed6HW1O=GHwr z7q{{IFVE4#Bc%IZ91uG`TDUH=xf0cQxSe_u9my(O=)ohn3w1-FQegrr_s0t*vnRu# z)XWE7bAp=yVf4J{3>5r=JJ$w}J$DV}f*yMm@I*nTpzvs`Ht0_4l`M6*YWl| z`TkA|gEA+~04e6lbvG)jXyy^vmf|Awq67?@^bVj}OkR52__UP~+QsFs*6cPJ8b=yW zdl|p%=*psrcY}N*4K5jb2_#T2Gx4t8cp-G>-CNXRid!VGCWu1hHzm;(jTH`?7*~w- z^_ye21J_hw`*~ip^n@&V(lP=?!nic@_)US_Bqur-u>*!j#=K|*4~vkOS;-B#w~r9h zS@jdtd-mWIggbL{G#uD5P#z-Zx7=?Lxi8b-F@EYj@Om_-g-f)u5^v|HHZE?0IGPZ0 z_~CG_tkncnp_7@$#cxfBiD|vzEyjJUHziNjUQ3v6D?gSJ?kslwxboYt%#YdV-V=n6 zjV~u03eIS_sh7{Fh(D&MF&5b189WMQ9O$an1jIrhBHj_eCutKa)KNqFzk5wBK|0|~y6EG#27^##b#wMnfnECDGqqgU zTBkP^?z3t@CMNqjX;7=xxR22M`_+}#65%9p7zE5?;(zAxKl}0jdOz$@6LcNQeq~7< zFL@3>-lf<3#mY>03{sMIkz$w=D059f`aA-CH5K@}$F0G#*$vNl>H-?-pcO_)+COfn zBy98M-eeJ=yZQ0NKUzIW)|TYrbT4&*-~c>$bxW|FGW_B!;0W}U!1w&E#vZ*-q89{` zB~R2LuSttBH;t$NTp##qo5z)}$N@Z2i2oGc6-DTW?_mS{H%jSrCmQrJDcQh4ds(~u zZa>%YET9<5K?2y_j<~Sen5q?g6R@2P&^b4C`NNeRFsJnvA1tdkvxHLuK9+%UdF%L@ z$>aCHXR{0{R6o$C(fX687UE&LF4a%sKv z`sS7h`RxO!x~v_aysHk-bFcwprRrqWAnb(#3i`SKngKJY{eat^mbVr!? za$wECa}S_(O>gWC6#!p=-F$d$7PH6wp<18s=;+-2l*So7dw1GKZWXBMBz2tskR+h?{qU^*?V|}^ z1p8jg;atcq;24!F1U+742>+fq3X?JoiXbr6gCo3A=4KJ-m(j@<;sbEuX8gig}31@UA?=38J6GEvsN^&6#mo*X^;x?1+ zqY;Sw0HVO11!e9=kWn$7tJV52bH^sagtfxp4SvrP(0js7jjCa3xu$gTQ2J2*T4_AE6g21l#Gv5m1u@wU=zmEgr5ET2zNiWSg7J=j zzAju#*)1TbY`i-KEc){EL6L{}&Ie$clDR8Blz+t(-$(~q4o7_z|1LzE0N8nVQ4v^t zHeTv`LF<58w+7vPX4(AoGN@?G0h{n0ax>Cty56on23VzTaEGLQ1)9X&I>7He{1H?v zyn4S82znN!HpO_eJ`K8N7kJ?Y0aIM>=?!{4rl;v-1g1G}#iN6r#KVs7oVA%I;OwZi z(4A|AAqGSgEEs%=L!$=H+VLes8RD}YxnN)L4G?;3z$6TBRRJyx=T?AjC%S<=SDgV# zAcm>*UAbWiM|5`*lf{rm(&qtl++7aa;Pnb^$GB^Mfk}k#H+Dz)Cn&3EP(t-dt}u=k;_y#pg$!hIg6qAKMY81Sbt`8G{=NRrV3zVXBCF%42;lo+~RJ`3!do97o z*lVVVUmq4@MI-VR48lV}u?%747V1vGY?Do~&k@FUvfU?JW8#8)y#q*JkfcH#=fdb) zf_6bH6E4Mc5|ZVt0E1;2RDIMr2o+&b?$f9N>@uA`5h|r54S-yC%ZfsL2ij>Mm&fgk z$~wWH`pMOQ=N}!0=&8p6a;z|#+aLJ1HmX2#0KlD2#@*dVmX`3`SwfaG4O$I@~2wvmdnd_`y^-ZJK$m5Slt^Ctp9NZT{8|G>(zHj0vf+MY-p@VKlqsn&kdyztL(lIr{91PQUgg; zua+-u;H!5>Z6y0&T_UGw|JFbxia`sL3*T1uA=^SPu{$&^*n&nVWuk^Sd+n}I34DXV zl*%6&+4d06H$GeQ4XgzGm^Ss}KuQslGzB4p*`VHo6wuN50k0AOp>E87fP|I@bC+2V z8dZZfE^aVTZa}%7b|Dq0;QQqoxQ1?DTau;TBY{%vqV0qDG|2Zzfs@N&HsY0NCUN>g z=cumR9Ibj(CIqevNjO%TZ!)tbKKx6&iYpO_+_%QQ!o9@Mx@Q*=@;$jp6J;BYzpMJL zR(6}hVgzZ-SzumR^9DKJ4yx-6`J|;%zOQ_McQyEe(#zVyvB8TU^p8gVMcWHN(M+l0 z^cPlE;i=U-nUKY?-fvxi7cx^lrKTg;6s`SXD#&5gqCqW{bT}LMJtcTeqJM}| z>;3mDyUX9PiiXyEos-0~6#EZ-%61=0cS|zVJ?q`f5T~CK4^YE3ET?^Bf%1&P6ZrVb z*?JUIa+h1IAA}ZZWqf-R;EiwZ<_XbQa(9YUwv;fl$5q7qlt3;I_g45?_i6@Tw#d`6 zFEFWqpHhY`m0mS@q->-B-PRB&%!F6J^O>e3sWYW1_faKG)Ec;~mg>;f5NIq-%3TH` z5Vy>?I}hiqdjGxv{_N^8H1nO(2o0ZMAl5Yd#TLb|W)(G27dHCX#A@c;EKKx-sqxS{ zc`Dx}(z*ZRJg?EZ;|tK_Hi=@xK?~e=|S8K{dTr;+kXtzJ)x;w3~$2 zSWs1MxHaEl(MJ$vlm3Y)AyK50A(qnEA`yjky4AWE$GRWjbFF(rh4clOSSJOUAjRRi zPd&2EJk5JQi*(}Go1@jo%}UlL>I0H#mkLu1>Qd(IKzp3rtNs(^;07I5X^*N&5p))d z5k0I!m8YNyA?7ey>ZXxM!yWpfvc>pFgT90XR8^B zQ=I>+CW(P^XDGT$Iw}|&GYW(CGVaEy*rzNNXg$tmhoVk~D|lXIeO|zz07jwA$Z&&Mv+v>TXN>%0SY`pQwqK z_5I(OVH7L7rJ?Ac%SmIE%P_(qPA(V%!9WGG*@?vNI=9fJ7Z6^6Uu)oQ@>ae@-#8ZL z?COG_SZuCk1sqcn#~qEMLmFFVutOa_@;TgxFj@r4+QIV{$&qV;RSr~#0@hD`zLY8< zFV*nN-w%2P94N!0TyO;A1^`fjk=I<$%DNdqbCsmqX(LRqFe4BUXH#O%da*L%^e;(} zSGE`G4fqj67)XX{>^+Of1kzZ-1V4?xia>VZ7H^?W7o@C+#^SUdBvt7nEr9XZzh^># zyO_$tE@3XF;)j|~-QnNwshgk0s4N2c7RU~Hg{-a1utwxjj%hm#Ue;zY@#+a1w0s@= zz^m_e1*2BAbV@C9CGCk-^<4f((Vw2$xH-36xC=$ZJF`2+oiuEwHy=ZM*`T1!sc3;E z#tyz^+;S})a+MthQyVg|cxn#M`tB=?X;*`qA1}YC1~kb2y}Q8mzc`#r>g|9(^9eE; zKI;ODpW#T0oT?I;i1X7H3Su}SfOm-1k-o)5xxb|wD#Oox4(OZjslJxpz$4L9Bu+of zXP@|>+6M$J*dkHvki?ci;&D z{!01icy#*) zQ=pBy~z^W4w<-1mK5*Lj`iSs=;U&B?<(8jWxTsgT4QOZr@S8f;?N zM-c^Y?E!+Bem7C+SM)IvKlNZ!yNsDXk1p;k%ifyDfQ}43d3t)~UZ}AbvIXgLgY!C1bg!To=I>3ZJJ`BtBbgDc~#yqw=EzzJhz8{ysUAE27V@O|6 zT)r;!Ir>v@g@gd%(?wmtf5+S^`2aJiQCs>$q=2?sM7|hJ9H7CrV^ZO}nuM{#r`kQ? z#9A}FBQiv|u|DuEvPxDcFS7Ad%AVW)0au_?MYuYd$WQoG&GuZB#$Q0IU-}?)>&Sy5 zr0XfI{*a}zDF{kN2=ehrq#u6gYrxz@vUG0H!Ck(e3a6oUdox&Kmq{R)HuM%6a-$x> z3;VonojG`ZaWm~e7<3PAeh|kYgay9eK{=Z*Z>r5{ksrwpKo58inPIYHbClslVRgVi zcN{FSP=JCl0W3xKA}bOQ`85&xw?k_9<)Ji`pO}3%ZL8;4yoYHYwOt zw8KU3Z{~)iK)q@ReTg5R3odD=a0qN~xAT81>9xi6X^LLP)}xAu)`+Utij#wB4vy*h zT>j8univWEnvPlB~V{Ts*wGmykqp)XNLRo3xX$dh=! zOq9kdyn+sfG2qP;P)}vTZ;erOspx&DA^dV@?_&Oysu2M~mfD@Aq9pOMkk#`FpYe0m zAB(O!Q5&GEZH#y^59em8Cv(_|-%;h7EWYx=NRz z8kVl6>EuxS$`#D=80Du&?dLwckb?%lIhXJb_q4uJJDXgr*y)j4^>Ia;yP3SK-5#9Z zR_{@0>`J_8iwO#NhcJLXjSYz{kYmU21%nGk_@@DOUU@TWge1W!B3>CHI6XIb;mX)u z3j{{N#_K?2HUt%{**-dZ z0`=4zo(QTlwFG+Wvo>9*{obiD2eP#({*ptts4EN8FW1)rg(-xF&>Yk>DHzW`C_AaR zS1neXW`$laYeS|u~hAZnMX4jV|}9)ohyr74nis4!%8 z*_|_71rjAF(@Iv(z{3C3p&7hfj%cU0w?=gsZY=(?c#C29ENN z00Dw3xDrKchkK3hiE^KirbfmrJ9meBp8>K)K%$>FUd^0y@WtHeZY^_hR!(4G(d(mD zrRnp&<9C1Xk(S)y+l8n0kv4~$(+-t=1Io$mS66I+zpyqo2W4W^8$d1)hmkXUTp+JY z+gW(uZ8%1&)im`eClBP2l?qr%jnaz(yjEwhVp>o~yK6Ps1;7e_cI=Xt6eQ7>B_zBm zL~6+0EaxZP*h#^h{7SU35WQglmx|ddpzkI4ku~#+OQv1X1dF9K(Z3~zTuP?I@RwRt zxjRmSb|h3>L5ON;$_1OQY%1eGo@0;1qz-r;VUi0-NyPEOHd@!H9dp#IMlgbspm-9f1pD~Ix*MJDs0R1u) z7m7R!{k-RFG~kbLkg{=j@VMnW0x??9+nO;#o#`Bgc(CE(mkY#maS&9^7oVsYH`$ag z`PC4+apm#C!%Kny$ya_7!=8`dJt`^$t-Jv*qXF{-oG*(zJVtG38U(C->ZgYxCfNK+ z4AqEmcyk2eu)kONFgt6v;+c^OWdzkjP~xk-hM)TH*mLbKyq*Af{lBs7pE2u)Et`r9 zZzPw22)vuwO>rkgU7}P?oDlRi{$y6rSm1)OWlpi*)j7uwgA<3r@rN1p9YcdV@%P|( z^Xw*SJ==~MyR!aw#Doar_t@^6-~TVJL(Ef6^wOj^FvHsll%_ZGSu?b4Mqw)dN+}lpb^w{K8AOwno`mUYn?)fIxP|RNl5+-faLU%B zb(a~SQ0}?`Dpb^dFoHcRPfmbIt8*d!k^)xw5(N6bE0Z1=lP0@doRFU$bpDK(jjst-C4aIzXr2p1fyx zRsJ3q9Cs{|aB9X08OTZgb`Juyt@eL7f3eRN?|4ph&`_dh0_& zA8HSS$JqKvU2qMThye#V2K1WgfNSn6t(n<{yprVYYpuXYtH_zvPSL82h8P`)-e3a# zYLHAx0cE3*Fx8uXoTu2Bc3&uvs6=cPJ(X-Rc;6*8ReHY>;B1l*R@?)=KtC9G{8Vn~ zeP>?<5Utyc7!*~~=62@GMG}-6#9_9*L9z;LSOvoJ9OCXHxCkh=eWQ>64u#-K^b@FFd92|15Lf zzZ1H{Ll}kIPk}DlC&|KRO()gf0~3oahl-OPbnfZiWr5Q?KVLin!g6n8g|YV_g6)4m zOR}cZjEI*TuL$EFjopv@?P7szsTW_>56OWzV4c{5-Bm_^4W?+&(a&Jn9ApO0KKH(t zW8{+XQzK0h*hkTlf%n5O1vF1a#vQ{JwuE1*f7GvIdE~J9Pk{U`4{3(^!MKc($AQoG zY}6{0V16w@)f0mtXh!4@2u0qv5Ic-4<13@ zRJ=p=?35X2+>t7;@c`bVcX%nbub@r;+NU0ph0lXj+go0_`A4(AHkrmzF8{_3W93Bn zN5SV$0@6i$dDS}Q2Ke4m4IO`WoA0GK5qg)omsY;k-|!l5V&m=H3o-Tf`p6^S66Rb+ zi zD+JF^5DXDnIUfb5ZmFo%&KOzPNn88lWDexhP5A1s)eq)sshoNN;#9nTa%5I{^c7#n3aZ`JE!I+OUl9w8T@@JePzM9EK+eGqH8^2GCU=w@ z*1lHo*mKq`kG!N6ZakZ5=Zc8Yw{2*>agq%z7x}0SGG?W0RFV>&7E-pRe@XP(Oglnx zb+{ofH~4u(8@wE8Rb&T}N!1Ub<-xE;hkh}h-4z^~0>q zi7DH~xnt6WbBUQi!Yz27wd2{)vqcp$Q5~0nv{|wrR#@1m8A4>33mGp$`gF*(+;}cc+I{&n^Hdk6;SR-!7nYc z5;FvYZMPRD=>i178hbOJ4M%j$7TRyCo$&Z!7nDQ96R`SW%zEa+H)n}z_b`r2*N=|{ z|9tDJc@fVbUXFwLH0ci_en`yn?Ju!>otAl?xA&{c&-#~T#s=eZ@k}=a=ewo@8NC@9SdGVy@%me1WA9h0O7+V z8Su0GwGqqQ=(Xc_0#f%7l@>=?+{?l=)qM5wCTp( zAj|f>K;?5Y@?RNSXt@zkrEM6ppme=KX7^UlwhFxm zU_EW=`{d^?gi_9b9nC$}mGmj+B^BpKav&v$^bNGWCQ|wZ3^rPb9n1;i5Saexk?!q9 zZ{UW7lGBj0Y-}2byI^x4d0;`8=k|pU70&HRI$Jw5$PzE?LCy0)NH3I!N;-~K?(u16 zhf_s_#yr|IoQ=qpBoo*lkBlPs5lJmSAtrV}dR_?qi(Na}$V3esM>uOuRIv8$mqahf z@~u0kK>n5@XQ`-F;1f@rCOJedf|=X(iA*4hse?I)b7%J8q+E2fIIa`sWmj90mKu%1 zMX)Y56GOGgLZm5w3o*=i>&f+8umBx=9O%#GPNoX0p2|*>J>0P~%Yx_ybpzsf8%8dE z>xFiN5fJxMN-fbIgUUcqWMj-D@Woj^y|&w%`0Ts`Px1706z5y|7;vTFa^>mmAeO-y zvvRer-?gbMgV0yKg2;%7?%q!F`2uUF5TKkS<7RXGZHqr-fx&0_?3Kd1c$0Qntp1Q5w-`}?oOelc zF6O4%?0dMn>Jo(IV3WaP2}H11JR)mZDt}3Pxmb?(=-lfe$p$wnov}f_2kPNAH92j4 z*wkhaaA1pwiA+NOdOkr}^j#W8{MgU~*GtH-XO^G3B7vhf?1ANhoG9A(u$4rmx&r5~ z@T_x)eIhrpG*X55LK-bWSTa!sGE7>@rHK9D^+kEj0%yyK8S-Sdl(9q|z2PR>PPh3t z#1j|sfSYI^z(OM(Y<6FPP{NWcZ+{hfx~VVB8y z1b*d1K}v3LWkk`oicG1KhhXhwq2!6l5{WRIIW={a=q8#x3}jX@4#D zyA)P1&v{=mQ4L_6DU9aMAF6Qo(9h8Y;y8PR_E|Fpg}y;%I-J&iCU{+Bt;FL#A#o6> zgzdgMFkRMgr)uqgy*XnTa_|egu;gotfNL9yd>LeY`%RS(%xeK54Vl^5OR0(?f5b3&SePPr$v%=w+c)b|u*^#62U5lRfP&rU=vj}6`eR9wzoK)uYc2-kK$7tLm zhK4~4gJvk~G(@!08hx;=Ig3ujYr*f)1TQ%bMv94OKA*)A>K)Tm-;Qc-Y(4U|irQazwcqB*N-(yF^sZan zSa>B9@JVyKzo709KgTc{VJMsy+Bf&1HKQZ|;q2+q@A%mN<9i*g-#E3Q;h9 zw1ISziZXs+No@LF+x0gFxD=rMA1kXh@fToVsUCM9BcY2FJD*}2@IIs+zrkT;0C^8` z`3-k|1sQgllxbEw9FY%SK(adl336{;a3ByuE-myx3Xf)q z%KXs^(k6HlI?PG_D<(BptK*=S_LALenKYRvA4#huU@>?Uj61Sq`QV5pD$XI8kHGS-Qv?x~+<<9PQ5G{-Q zj|AL=Y{+=z+@G9KFD7z1mVW`hcq|6Wf!m5b$XHbC;9YyIfUz)^3Gj$XhrUh8N-EmD ze_5XTI=IF?(5TuCS{o@K7#LD%RjNq0(y}<)w)wMvI}~aCS$oP%S_p#oFdIcRFFU_K zTxxp+*|=ER2i!oo@5)UQOaRb^X+CE~2Ch&C21ByP4 { joystick.init(); touch.init(); - const roomId = room.loadMaybe(); + [roomId, zone] = room.loadMaybe(); // if from URL -> start game immediately! - socket.init(roomId); + socket.init(roomId, zone); }); diff --git a/web/js/network/socket.js b/web/js/network/socket.js index 52eb9823..3b111352 100644 --- a/web/js/network/socket.js +++ b/web/js/network/socket.js @@ -11,8 +11,10 @@ const socket = (() => { let conn; let curPacketId = ''; - const init = (roomId) => { - conn = new WebSocket(`ws://${location.host}/ws${roomId ? `?room_id=${roomId}` : ''}`); + const init = (roomId, zone) => { + const paramString = new URLSearchParams({roomId: roomId, zone: zone}) + + conn = new WebSocket(`ws://${location.host}/ws?${paramString.toString()}`); // Clear old roomID conn.onopen = () => { diff --git a/web/js/room.js b/web/js/room.js index c1a7a6e8..ef9866f5 100644 --- a/web/js/room.js +++ b/web/js/room.js @@ -11,7 +11,11 @@ const room = (() => { // !to rewrite const parseURLForRoom = () => { let queryDict = {}; + let regex = /^\/?([A-Za-z]*)\/?/g; + var zone = regex.exec(location.pathname)[1] + var room = null + // get room from URL location.search.substr(1) .split('&') .forEach((item) => { @@ -19,10 +23,10 @@ const room = (() => { }); if (typeof queryDict.id === 'string') { - return decodeURIComponent(queryDict.id); + room = decodeURIComponent(queryDict.id); } - return null; + return [room, zone]; }; event.sub(GAME_ROOM_AVAILABLE, data => { @@ -50,12 +54,15 @@ const room = (() => { //roomID = loadRoomID(); // Shared URL second - const parsedId = parseURLForRoom(); + const [parsedId, czone] = parseURLForRoom(); if (parsedId !== null) { id = parsedId; } + if (czone !== null) { + zone = czone; + } - return id; + return [id, zone]; }, copyToClipboard: () => { const el = document.createElement('textarea');