From 2f55f80959676970f85a02a9a968668ae2113dda Mon Sep 17 00:00:00 2001 From: Joshua Wise Date: Sat, 29 Mar 2008 01:36:50 -0400 Subject: [PATCH] Initial --- CPUDCM.xaw | 3 + FPGABoy.ise | Bin 0 -> 161236 bytes GBZ80Core.v | 169 ++++++++++++++++++++++++++++++++++++++++++++++++++++ rom.hex | 12 ++++ 4 files changed, 184 insertions(+) create mode 100644 CPUDCM.xaw create mode 100644 FPGABoy.ise create mode 100644 GBZ80Core.v create mode 100644 rom.hex diff --git a/CPUDCM.xaw b/CPUDCM.xaw new file mode 100644 index 0000000..f28ae93 --- /dev/null +++ b/CPUDCM.xaw @@ -0,0 +1,3 @@ +XILINX-XDB 0.1 STUB 0.1 ASCII +XILINX-XDM V1.4e +$92x6a=(`fgn#ga|htc,twimmj~x#k~ha.DSCDDhq&I[YIMB.yct5>6339$;8<5>8:35#mE709;0>;5=0/2347=5=81?86:!910815><0'934;>74:;-6l17:CQS_YHFESTOL]LAEKMCZEKC820M_YU_NLO]ZEKC@DTIUZJROCO50=FZ^PTCCBV_BNHMKYQIE_N=o5NRVX\KKJ^WMIFS^YFTBJJJBYDDB;;7L\XZ^MMH\YCL[UH<<>4ASUY[JHKQVNO^RM>109BVR\XGGFRSIJ]_BNH53=FZ^PTCCBV_EFQ[CJNXOFD\<;4ASUY[JHKQVLISHV[ESLBH447L\XZ^MMH\YUMZO_SAAHIB3;?DTPRVEE@TQYAMKG[A@TWDEOIl5NSRM@[ROS@o1J[WQLLJ@VBQ_WM8;87LYU_BNH[JSSX\^TXT^Jc:CT^Z@KG^^R\H64AVX\TDTSl2K\VR]VNUJWKJJ33KE_D95MUGE7?FJL8?1H@F?7079@HN408<1H@FEKCOR:4=74CMIE\ZDRNo1H@FHW_CWECZOI[]i0OAEIX^FJRLBBm2IGGKVPMTNWMUJ^12IGGKVPOTV6?FJLAG;:7NBDIO]GMSOCMVHRS?l4CMIJJZOE]OM:<6MCKHL\MGSAOVCE_Yh4CMIJJZOE]OMTCXZ7;BNHMKYNFj1H@FGA_QGQMJBb3JF@ECQ\RB]W]UC6:2IGGB[[_QJBW@YT@@L_o6MCK^DFAADFKB30OBCBIUVF@2=DZLK_II84DBO\WUdBR\PUHUNBJ_BMQV@ESAFD<7IQYAMWF<>C_\LXEMAo4F@AWKW_XBO?0JLB\E89EFZUH][IN56HFN^WMMQU?3OE^XR][R`9EKPRX]GC__l5IOTV\RDJRM;1MT<5F5:KAQCA692@BXYK]_HLSQQYSQYOh7GG[TDP\TN4WCj1AEYZJR^TBHPC13EEHGHJn;MM@O@BXG\^87AAX3:OK^2=JW_KGYH94NDVTKWM33GEEI<5@8:ME@ATDXLh0\EO\E^QKMCR>3YCEDL]MURc8TLHN[NDOII64PHLTMARO02ZYE@ZVPD33?UTHXVZBBD]NCUKUA0=W[JF@:6^\DNLF0>VTMG20\^GACEG@7>TT\k1XEJKWTDPMEI0<[@DL@Hm4SUCQPPVX_HC_:6][AUWP57=TQZ^NAR]VNBJQKKIR[:1_C]:4TSWF<>STMVH^JJ74URG\FP@@[<1]EHY>b:ZBSZPBZZCDB5WSU48\adXAm;;7Ujb_LcikwPbzzcdb<>4Xeo\Ilhhz_oydaa5:Y3>5[23R:1;P:4asuy7>bdek1}i}foo"2*52<~angj6vl3r734`+2nn990:7c97:59'33<0<2wX?i48b;5g>455>?i>6<:?cc9g3g<7280:w^=j:6`93a<6;;<=o84>3e`0?sR0:3:1=7?56zQ0a?1e2>n1=><96b7956be;2h=i7>50;192~"c2>i0(f=e<90;6<=50;2x 34=;o1/i7<6;%d92d=#9809?6*>2;00?!742;>0(<:5229'50<2l2.::78n;%34>6=#910>n6*>9;6:?!7f2;;0(>m55c9'6d<23-9;6:5+308;?!532=30(>756:&0e?203-9i68l4$5392a=#1/8849f:&7"3l3?37):j:c9'17<3k2.>5764$4g95>"1j3>27)9?:638 46=i2.:h7:i;%77>7=#=:027d=<:18'24<012.=?78i;:k1f?6=,?;1;45+6185b>"1;3=h::0;6)8>:6;8?j4?290/:<489:9l61<72-<:6:74;n06>5<#>80<565`2883>!062>307b<9:18'24<0121d>:4?:%42>2?<3f8h6=4+6084=>"1;3850;094?6|,?819<5f5183>!062>30(;=56g98k0e=83.==796;%40>3`<3th9j7>52;294~"1:3897d;?:18'24<012.=?78i;:m6g?6=,?;1;45+6285b>=z{:?1<7o6*>b;14?xu5m3:1>v3;0;0`?84a2<:0q~;9:1828272=83;p1>85519'2<<282wx??4?:0y>6c<2k2.=57;l;|q03?6=8r.=57;l;|m67<728qvb?=50;3xyk43290:wp`=5;295~{i:?0;6HLP}CeYEmgm%93ca4F+RGi%8b7GqOv_E@a=yzGW>tS=v|a`>IU| z(Vq7IGq~pMea|_+-|zgN_l)kj=UTqk_qy)uzMp62bBy$Hf*<*J*Hm)S(vqp6XR?K9 zOtZ9i!RNCZt@SbrzGF6TTeRSyp+k; z|AyAm(#xAfU}wp;;nb0(x3!Hc%hHnM|8E&3E&X{dn|!0nEr~xq{X2bse1Oa$-~0^_ z-Nebw$koTe>3>=X9B2PY%Y)DyTj^#EQ4n`xk}qfZO&`se_>?{%gbAX zEz|)W@*E6T*>lhaaIH81;s`h{9E`_#@}J%m5Xueh#YZN2{vBU7{W6?<{kgb zH~x1D=kMR?8uqW|YapjNFBmNl;^1!`jlcT?pV&u;0 z#Ku1VQwc5j&q^k?o=zU#UjL|^j*U@8;-nJi^)HS1FOQ&1dS|-ZvMjxA$wmI3ss#Oe zrkh_^*S;1)5YB7$|Bmku7yryEhPYe1vAjI2ZCO;7ueB@H-^ta<-JcrB|Brbs4>xks z!;@`G)nR$ly;$2=o?cFDcWPh|IZvfhy;$BmfZ_m=$gQzL6{ zN2=ub)FP_3le-<&+mS`(NK>8M$H%4<09fw6PM&OcHZ(aDCg~W*ux=cK(WENX$%|@D-9Dj2^|khNvUVqf@?ukcyf~QLoMdg;u59;l zP(i@lL{i4NBcYHnFEgbZ&<#zcIRYefb0>FuHkIY?c>ehnP+RNo3*#?M1n{X$5lxCG*^}z)!fU&)rkb~m%j;je?x8S z$g*{r;2>~PF-UGPl-wWT{UvBl=6XD(Zq^>uK`@+WgY>1V^Tl`_&~1&oW2*CW+y($`-JTtwYM_9SZ?Hi_Mi&GK?zO12Yk zw#Rt6a~i~Cr{cu4l9c5vX)iAyvW=1s6XOwbd`xC~F*k;wi4LvFSt{CWPdeE_ zsexqE9zUOPI{IXlag;fY5o(I8PL5AoA5Tv*6RrVNPak)8PN)EtmA{tSWTGZAKFQPM zZsbKJj~@^thsg0R?QQKsCewC20CGR^@MQUtgmK8@ni?;4dr!6-)rK{(op^fsczCny z#z`6{p24xgA$(kx>=$;jYcAm?7N%zs=~c2*>?x;nuUCldCI~&8qQLIN6su zyCZiqqmru=-mFoS1mKgl$O4$GQFpex>>idU$%C~gS-cZPyaM*!K2RKTjv}W`aBjcyl=+eUFo6?M-%c8y|0S zu`T|yu&J_t8nc%5o6JWLmE}rS&mRqZ5tZoYS4fi{zdYHo4V%a{7x8*()X%H>tq^LbebuYX{aAmOr^5wyPT((hYS~ zCpruir=PVKb-Y!0k*(E^>gPmmwAPcQ3Tt9=v6A;>RC2*OIgFojcDi$_0L+YsJYEbo zWMd*%@L$1m4kHtN%$qb%Lgs8gq?D68c|LR^Px_==n*dUTEP_do+^uI3l|FHbg6)s!E9mA14DR8}cy;*;FS@b69nvyOVv+o^!-q^~dxi4lO70@L?Um{b+pgO>UKw z(v#Ww!;ZP>_$gIYRny7aNL7{7?8sB8HF=KboT307iHEMLN@q-DRm;_Zt~K71I0f>z zgaZci#eeu1HwwW2&sN9#-9JKG__vekg!e^MhP69cYh+onspP&%77?e_kh>12ow2EQ zleAcqBWqW-1NV&Tbe~)5|lQ)@hNxJ)Z&+_JEY<$z;)ZwQq?8x&9Rm+1cF4mEq*YBJ13a+`yH{ z_wJmg^f%c*;xe8%lbJ*HL&pEA4Jv#zK_mAarx$SFaM)Q*{>Pn|1S-kYmn08-@bf=B44D5f_stW>ByPw2$89|+&b{Qw(cd2={8QJ?!_5-5CpYVVc}8_7 z%&0(uG{SkU`R|Q!?y(ux9{>4y0crB@PYf=rWWV7&$L72?{C_+A=hK6KIC;3<-^744 z&UtP6@16XUvws(!AZeEK=#2A(k@EoguZLyhkAEjV;Qy(u;NK>3kv^yD%F*K@p@$%f^c3+|0{t1^Mh9WC&Y^& zt2oaO$t$fK`^K|sVw^<9e!=*FImY1OJUk+=^%a;DjOE)AS04F^dEyebfQR!X0C|-z zMbwC@iSfD`w46tAV!U)0frG9?HSWX1iHE$3y|8K?PHmG{+-2+s_>CXKF7a?4FO!!# zfyjVOW-&1xf=GcVO|nWK)hQi$TW!8WhIdWHrZB4EMUMBQFp*O ze;8x)aK7Lmuc`pTALQNMp@(_aP0ULRAuGYAK{3t?z6>7VKLKaG9$6BTHKzKEG7s!T zHR8??Z_!3HmWT5d1$ix6jmU#MJq#a$yzJbDF5uy`Ir5s3ip>Pw@HtpB_|+=IP67YX zA;ebqFL_C| z5LB>}zZePU=I$1<0DPG>AYD)oLSKj;uo>Wl-Gdl4Z(%pU@16qG3i3X$3TXvh{tn_W z=z4!gs9=A`W856D8D1r9fU8=0+yQL*ZbfE+ysbQ<31gLRTp46C-ylE1zMu&<59+qm z2@wT(n_cK79<}k%k(CIc3c7*PcpLC=;307j>;zX5v$!(x$P}<+@e5lI^Yzk5C&Vc9 zjNpSw&l;m!L0T zO(l8Z*&x4nIyMD3Ea@ligU#S_%61qhTq5QJo&qD#W$^ zHu?~Jc_(8YfT5a3&_Kqi6n_f35#fjz)D;mzn1PH-7J7$^vjpphc`X8o0D1f(VFK|M z1!G@9KEVQC2=dyeh_&D=Ukg71w0 z0*C_Cm2M3p0pso45JTW+;Q&?!cH*1SQ^3jcmpBG%e_I@W7GmGui75exl@Zuch;fr6 z_6h7HKE@t^Ou!9{3bB-4L@j}zdG_RY#N%JplX*Ie`~VIGw_=K*dng|J4z-tNK?Hz| z+bC)XIK?gy8v%o(9x4U)XHsxmm^TtcW<%^2io_?d6Sj~@fHB(!odWyCbR(nz^1`o< z41tWG7iI*UsC*#;Vcu;Ba{|nJUf?IWT&dt)FphnJ`~n$4d2BU|E6-xOz*}|~u?a9c zJR$tJ_CKHj5HB?s@!;mVgm48J_uV)jU^5UyY61V0!^jmF^MA#YAs59R7y;Nyhw&?* zyF(va1{mZA&|4tm&Wqd!J5wDgcHlQ@H@*k(=a-`&K|WL)i3FVZaoinb@|ehGs6Fx7 z=nt4L(ZKcswt$a#C}7y!i);b;nT}``I3HrssOqLYJT2%i~@Gzbg->p-+MQ5 z6z~gOLc?Hxlw5;Eb8*&U=fSU<2BjKe%sGQk2YzT>NH<`ZrG`A^(U|Bnve_69_zG*r zzkvL%4fsp2X+9qf0^Nm?_;KJW)(TGo8IveXA9Ob^M~VS6pFB1IGFmqgAHYnwAR#cu ze_|^DL&j7r6696G&}yikW%1}$7|SVR+Q3!(9qb_B*}Ix>g0b6D>>aGZm-F`E=4RR`;i<`iD zDX*fiATLR5qze2_*?|x|niIJ|mSEhoaS9W!fEd&E;lBa1WfGDKesLw_1lXDS7Rlt! zPo>y%eYqit+<6ORF2ty4h#uq7n((`P3!w`*eHD3RLAQP>stmErZb0sGeXT^Ez<8P$ z`WrakXM>#t&Z9^0%fN}5IMN34{8!Lm;CA78ED_>bKNGzU@^a~zKg_R)?tg@qfM2QG z=uY5A{0ce>GNFm+a^Pxa9i9(1lTRS#fQ=G@eh01s^^j1Q$6r&p_n|5J1RZpJ@1YNX z^Hm|lHNdv_HQo-K#5Cix!DiGlTpo0@jL<~L>5>h28ps#^K##)wayul7i=h>J1iWb~ z;_tw(MF4&S=C}8vo1hM7r{Y=Q>!1oo10E9A6LNqj@G`y*bm@c0WytRoExZ-*B()OL zK*stZu?xnoW|%n0l&z#lLG01z(DQ&nb|u;Yv8<>;+hAU%7pdX;O2yT{rd|WF7wovb zMvWkkb0v_iP=_;?;Bw$Mdk)UM?}*e!vVkk?6KV&3B_5$kFkW1ab%JiR1R@Ky$FM^- z!Fatp&JWz`g;Od3PmUXfdv?t^MZAOg(8GiZ*vyZ@x%aTK^RXphN1=pr6y$RU@dps^ zjy=Q-$VILl2#gyqYi%D*^mL)3M{A8@&P93w#pd$R*I7B8OPQJjDdx1~G0vh=;@2n2py! zy(ML!PJlt;62Sx+XBDgg{2u5;zCrAQJ5Uy^Q;AySCioT1!Q22_^<{Jo@Gyst$%CEB z0U{4%GFo_MgUy&G6WZ4zVASLD_(RK{&D)>UnDdF%$gyW}=5cX6Yv)2k_^dLz@A!^gHY)%qLXg zhhZE?L8*{O@)?c-;6F5q@dAbtNt}DX$y7xp!Iy|Qk_4D>6Ko5_qF991KpthbAh)== z?m>)Ty-V0&vS9zv6=WU6rIv@M!+ib#Y68CIj!~WfpT)Zg?tbC+3VRDYq~6A+!nkZI zIu|gAsG@Gb!~9A_41CG&LHJ?pdIqfnd1)zhBgoHYB32M1g^tgFJko{{?mdp6ErnY@ zQLTs^*wlZ5`$8;vw{RoSW%MGYzzLr#vH|2byhoH^tRscKhFsM3;4v`vxrT9{Ih4jC zS%3}4Q4hesa5J_B{AO%Mgu$lWdh{*Khq)tyFmEM=I>J6HaS8JUUwc&WIvB@pLh1qY zltIi9Vo|2zfnYQD0-6rBv^ay33i-+$LK3(*9T1#{^RrpbC5N>^&8UeW3jxm#A%gpy z*54en1q=}-xDwciI0M3+T4+ul7`734Qw4&4p% z)D9vIFtAOD4B))>D`gkVC+47OP(O<^P#koH6EIW2rg#>5`nk*ylFMBqa+oXFtj3TYn4czy4FQJ<*U(j9Q*;K=0=|4MAvs+6 zHIxRJ&s~5ELJjEl<8FX6ZzZ-Cd}ZuLPJ*rw1=WFg#f-7XfLY@L3!%b$c>gADT#@*L&`bcry)=Jp6R03O6NP%~Ix z;&I49=tkbKbPr6UF0aUQ-J@Mp=Pd~jZ!u8Z6OnW{2EW5v0h`(_ zR0(376+!fYOo%G70(jeOhfN2bv(2yo;D7Br+!*X1az#bJ&h)!T5SJ@qv<2p6ln5WN z@Ad^d2D;Igk$8~D1CayV@ouCSVwp0R(1)4~9K}AsI9U~&0oX!*;{p&D{U}}wGATDu zbKqG#4jTr)2gHyIV4sfOSD;uk=7|1Ttii*q(11~N9;XcYL8 z+=jS-3~`6}4zY(N;6fm;V~KTv&BzMm1>l)>fx^8n$Q8r5&to$;AlE@gfQ3wl9JzeN zrh%P(RICzWi5tN_LY<@#cr3{HiDQOA58?d?kM%!U6uOyJ=VBaW=!j(y35H29^ z?nSADagGbYeRdcAkgx&_wZg;{7zfr8qFfB?$e%n+es`=ti{L)TwyQ&IfH#T~dX9(l zgAekO-Hs;!W|Qp*4RqJE;XP0TvBiWq^01PoEIQO>@ThAha z;Fnl}uLqgjMW`awu;?4S8tiZDK-U6Sv&FGukPo&a>|k6|kJf^WbQh%wxXKkrc7ZR7 z1uhBl5vQ;@5KBlfZUOlHA0UeW|2AWcANVZQ#U#079`p$G5b0S2_xB-oewZ}K_-sNn zz>abq)((7bQb89(9}{s$%Am&h_M_bWZuMS-dyW!xLuH}o%shk10RHsz_)6f1J`+0x z^NHQaXNX__*)c%eML8@Mv+LcVZgu|!mX zPjxF~HH`K2&>_fUNf^Ps*C<{=*#^1^R}d+XH?$$R`)th>tPk>DPDK+SmL)fd6_7{o zpXe39wlWG8fLNxdq4xo&`Eeo>$mL3@C?SKF5hjfiZh0!poyG(WBTNhz0nfI1nKqORALUFa16Kv_v6V2+_=-4j z?Tn(gLEhbv;C?@zCV~0DT2LOs)IcV^lHkT0+Jsnx9m*zL9B@XyLMpg;PEw9Qytxap z+preON0Ft#kFg@E54~4RgUAJ6IlIyAkauwxv>wLGJ|j(FpFa>e4`bdBSPNiQ&qkx6 zJ|%PTXo%f^9oh}Ocew#&F<^`CMIB&X;xtwZ_wRB0(MZ5Xo=K7+UYw3!17F(@5(R)c zokrLK549%fAjDgjj|G8D02N8&+F4GBfQ-+3g1ZlyY!M4EQIN?DCD_1&JC6N@c_+rLr4S2Z56HN^ zA-MN4VJT_WM}=gbbo_d-q&&L%7&mKrNu400EB57Pp_*?DL&;FP*d;XV_NYDU%qw_2`f z4)D388C?kVGvf~BBw#qGOlU&h9Y0_dfZ@OobUxUh5r>F_&5ds{Wx(bWL3D$i02f3X zWR%|Gihwz*5yN2|Zi;>Z-LNIZ0nlaJA=`mlYzXTH43TG%ZBQH2`Y`S@sGv0DA@Dr4 zm|_8T67%pT&`n)KaGw*h%`g<^!`C8n0OzXp=qteE-i>pgZDx%jx52*P3&I2JyQAm< z;B&DcQUWr3OhgfE>I@+E5DR50`VRbt{>EEiobnOd44kidhsVKs33NdlU=Nj^g&u_3 zTQ-y6o|nQF;8Q?XpNVpxy@%(b>mXmVapWQwn*m?Xjd zPT7iuCd2$?!N?kk{Z#AQrn0;~HVK2YMR$J-!~;_X|XOA$HjZ z1TWaJCWv0}yEg~@1a`_g2z$^C??jkTdkaeO6EGk11>^qSEKvco0Gmo_xCqEZ@gXyS zANyH2_xG!j4)`?4opw4A3>e({v74Y<@e4fxylxcsbzT`WfS%6*aOcrhqNsBF?=BiTZ)<0j}IU zkTu{}dnbMr@W-U1{jlDH?xCqrlZz8@?z6kRsR)~kp_XzMd>wp(dO=(ZKA_LRSI`f1 z3FJ|v0eJ`Vf-aO680XGL<^vw{2x5ds;fUx*3hcUBqd3-v=4K}>n* z6KjN0gmC)M^X0yUt-;?bM% z^w-}r%*rjz(gz+3+Px~CeWJ2fK|NS~hh2nY`5As6(Ysd;2Qj+>1z!Ywyp^uJbkFVj zL>+?%u1gZIJH4ecSMIlV4aAfzTbZu#!SYADhL&3H4o^+g z)3&&)C-r*m&CT(31wprt_Ulx1gc%NORC^!PA)+kNk)XG&B|FAX{g_LJJ1#(Pg zXJpxrubbSD*q)G)YWS)1GdupaY4i2X1K$UCY_6Z9{!(O_@XNv9t&*v&8z1M+)fx0l zOd1YO*{WuCA{lEA*0K}vH!BxNc`WaC_h3O=v|i}0zTwR;KPVqNf5Ilext%_L=V-xQ zqXD9fPw`MmEt@7<{1#su zj?4~Rr{V3wIyaV*Yrc>+^JM7}?d6w0HVb|}FM%~Rzgk*S%Is@<=Xb-h?dZjr)H8d# ztqlwx2vk~1XsGH*`7PfbBV-^RCiQUp(U9~lnDU34RlaH(`?l?yRrxEy`nsanv7AQD z1gZMQfuoo6oCnXo-51}(NIYb3Q-92S&b!$&x?eQIyU8y_u_^rDbsi7${GHY z`aq3sf3@7S!}$uMVMxz(1upi=Yb1)&Dg0=Eo}Zx!!rnDERMhO!UA27|qQB9j@Nb1z zycMrCyqlhp+-|IQa%W1w`x{m6Xvl5NgK;nDdb+919gpNsG6^sYqh&0&qm|TiYC;lQF&c<5&L=M zL4?_yw%@S)WW)D)iL}Uo%xPNMhlJ*KUVTvPYa$YJxU@q*#p_EiDq67u<0I~D-!HBi zQu~&=&*{Qwzu=<+qp$~zF+GRT(INY@Mco1J@tI9Jn_gV^JD|wdyYuafv7zpl>gOL! zuhB5n&#yoBL7A^CPHm^!hmglMC*?l8e2}y0$f#z7Fk?{5w~`^3xw}#$`!eJCA>9|h zB;?-dsfdcKNOV){{T868abh5>$K|a5;R8kn*BL7tmi%7hbu3kPibKRDhKw)uONh?3 zSxF!7zjzn6R9jhZ{^l?*>74q{B2m&ctJL2O9ZftHZ_85AQW^W$@JWMlb75vub@eB) zfoYw~3Ox1S^~~6HrDyQ|rz7`7f7h-zXiP4@J*;FVlzFlvp{wX2qto)XDW;WrqpQcU zvb5nBZPVQF0GAm~*LXEFe_YSoKob%33H9g_G+Cl7_;zQtwc3~W#S&Gs_*FLYql5t==}6;jIn{Z;dgfx)xGv8&DjxtP50=_ zfPlxT27Mt@c|KPi>eX{v6ST8oaEJEjwRJmUQ`*$$ZTYdRY|W#LSt5R8zbfqMW6qbe zl3ott#Cc#imTH^ zcwapYh!`@sBKYA2O>x#p@w5kTbLpY>X!!(&F)li6W$zuakpbyE$!9JE2T$1A#D2QeC2Cp z2>s?7eLd@}l{r@qI;HiMpEoeveaLF3|GD8gEi93yVmZd^Y!$he3R`+d2KucIC4Sd_ zu)V(1II2iA$u+pdqESU{wPoyKf8tr#=cNln@WMQG&-1!y*@cpdx_Rz5qPk@DM}*>r zHR(U9LL=_UG_);8@iSTIZYj-k0dc~=RU(Q0b0i1(Qujx$fFaV@}4jjUiuOeCbrMcDes}$p`K<%&DF2hR_{pO0H8ZMxv zXsT`PXuQXz?(59@UEy=o+$CQ2imi;SOAa3WnGm@|>u|>IS4zUKm zPjk}NDxXdA&=qDz5B)Ji?0#a^v%ywdp*7iRYNpGhN7}1)1@%S`T`w-^)-Fn&mwtOs z(f!ZWV~1uQGS;~6x2dTpV)b#O-;PDic~jNn3#R6=d9LI-il1oTUo4~jzNUVU;FWch zrULu-;W1B_!t2M|OHy@}x`Hgvy=qo5&{MmBhbQaJY&NR* z+w~=TM6uWTaz-a(b8~dD^zxGCA0C=MkF$!H$+tz<`zan$@VxDn5F1^rwn13(XFg>* z{p4F0%Z$Ut>JnS0XHly~rmbl|l7nadRzLIlS%&Uzm;Q|lPO|T2EzmzSvVU21$#B%7 zHO9#5Mt93iU*3L_AFWHBmzKg{96!~H=>IaaS-00ayr}RN-KXKnwAC}ktQPqz*bRq2 z)p)*lZ*_~rrK06hbMLPzy%-mA9Y^O z6dSVIccf0}N9Fo&S`k+C&swHMUvvkZY8~GPy*{c!50_rnv&pS`N7;O<_ac=mHNLKD zi>weo5u<&(N#j^$klHC><6ITj>qp$MG0VP=&FW75(`&3W2CUnCr>kF2wAZ-xxFT>t z+dzJ5=PSBJiV}Th>v5qp_k^5>Q73Po?D(QbvBrDVGWM%#NQ9&vjJTta~_V zaM~l=K>he5@0~-!w{mCQ3yBrTzf21v|G%0N4HWH~-XG-o)RCzn`&s$LLz4}iYhE5@ z2efU}Gv+rrX}dn*BHw`OJ)OMydVTi{?~kat%zb0$A8gz@M>j6MK}?Y;`1z^f2mZye z>bkxDZtOe9GsDHIKD{j|OwpbpqSSX9O<2`guh8)${{|X@^!~oyyGbg&#OJd9G<_# zcGj-G#9BcUL79YnW^jA!5BrJ|Bxr_R@2rJw0Kx#xMQ>HVK;#hY4EX_{^!TF>9g zGYS?R>)5uj^|F4;wwpRWVtpa*&Q8j~#dm13nXe-4?%$mMO=GyJb6>T3Z0(j$5&OgYr{InDbp5q9ni09y>+kIF z{g|J*OHD-S;=NZDAxm~i=f10KQPDpy!~2z8C7T#z=WV

4thj+pS~iPi_UrOwy!NJlf4nTFjJiKy2M<<)n;!BUBvchF~ldQYx?qvY*xHk7N;b?n*M!zB*d zMR)9%tWAF~&FW%h@T)RUy%QC02fY>q70S&1l$Ca9Q1_g|JO2Zjw>IvZGkw8GMv2b0 z2dww+e=Z!jJCZhMe~!NPiql8-IBs3LneuxxUqPh+BgS0hvt!@13)v6LzUsx?yzsha=`Gbe-I~$dQ%K<8)wZSTYa-fG1u~*?qWPp`&Eoa7)v8{m^zWDb zYM6i7XHJj0?#Dy@+k_js9HyLX-FrGA+)zqk{{}ftiAsahW3x366lq5a#ScG}w)lBo zQQH1eL7n0JrMz0|rAF<;Fa6GjRvBpqy;~x&U#fp?oXX&(#)AU-i_@L!llPRc&IUD{ zeIEK-owxMIi9O3i?maQ&xx!2v)!G|&`cvENxE3Kpe1q9| z^OmYS;hd|QO$7>S`P8h<{qoICE8~yqWXN4P zb(Y7tXHl;97n37D)ok^?cg@nOdogcRqcS-mM&EDXlG>y8hnS(9l9l1Ui|R-#-8=VM zY}dONrABJ$6oZRNeQOUkHhLdmxH}aU`xsu`E8;ew5FMCE(G+_d*QqDFR8XP%zF(!E z@YCO)!+Yo|%FzNBX1v{y(0HU#ETLQ7>{9UlqX|BN0`Aq*Vyma?Rb$S+WMw_+_(%E2Yi5q zNLI$FH)%`*jjz5hY4R(3_PF{#zgc%ePmp(0Nzb|B?zTba#T%MM+mMHs*3rH;I7{_B zQdA#x>vg@T*20{U(|B@+;@VFQbq0B9arIiSA~a2Fr360+EAfUbj~>*i31`M*FS2QG zv!cALdZX18s%K|z5*$)yjt$fIT`Jbp&R_q)=+6D{*WMo=lqr1Ix>s_D59?X~OQ~FK zRmhfx`@>tW#xEL+XiZVkvzB5G$1nQOG~HTJ;!Sn8p)WDL_})m>;}QN-!BG|Qdj3BG zkL90KG`sk$IM^m(IU{p{WFIqY>sL{MH%DIQhUg<$!q3OrF3+o<@z^A0$!P@d7hOBA z8y{#|u-`wR%$puDmGSH$Wpr>(WajDltxxpZd`!!3S&1E8mS*NdO+BE!@~~&G%BHId zM38)0M@_!oMb;ko?TK%f%{LUU{$1R!qZQ&oyT1Hs%30)dL{;^4{ixp9M>zxDyLWAG zt327VTf-!ydsNzg&r6FE-Lm?a7kZY>D(m*&*;Yv1vB`ONjHkvFhV1r-9?owqUFYW( zwCL;V2C{c_zPYC3kn&)AbzBESty;yPJIQEzrb)N5d)5yI-?|q~JaGw(i;w1dd88@o zEjoJON8uMok8?}>Gx!=3XxH`jzSJa6#%&o;4+-l&rEWc|d;Ws%-ZxWq2*VjiR%#C| zo;i3iX-SdMyuQ(AJ>S&ydsWn0nYra<)o!CZGq>sbHXIYXbRcp!YO}g!Um3stCgtA? zGCy?$)V!IQY20{JFNW&2+uVw$NoDEkev|smOxGFGz7FS@`&11Ylz0ov$GO7 zQd#;v>)G#`6lUkDv^z{QpG?2?bUm|<0Wp;whejDrTk$rg3DLiEL#AHkMMATVjqlxWL5qtHv0Viv?6ON4t@5hcx4$FyHy-R3 z{+8jSt}6HIbIm)6BlXLSggOrCG0(L56p0lpL&0eQVRJ}1UPDH;P7B1!yxo|5>Iycf_ z?)RTtx9&X6d}n&Um#9r(oHtx?$QIFiwS9Ey`vYE+*O7HNB+-ZWx<;^?3_b13`{O}O&pCf(!sz|G>VnW0igI-U5Tq-hs zfsFpqs|^W^M;3)q^puZiT#tzx{csx7@ws8_nt@Y4MRp#4{;+dIGljZhxY{-6@L3JN z{JyL$8Um>TxViG;UmHJe=94|b(#(1vXY*2g*4|q;O{(Sg-DV8*wkpgIdvBxsj5fHm zqllpxIsKS>S?+9SH|@T=2jdMYwkj^aL^E6c=&hyd@uP}rujc=rlQ5mkle&R**8ypD z{=*}6Cw!u29}CHuzV(2$+Lb!xzOyIQl%iz@OL>!}7!h~Gif5m}C1NX&IG5L7pix|Q z`+6K2h!bCzV%1#hr6u{wma=`>xzVMT{6!B#H>znAgy zFPgW~mii~{=$bvVY4_`zBY&S5o^fP9@s4BA7ZWkW2u~&QQct9fdXkVcNt)lp{ zkF%7;8OQ6Z1!y_B8kd)ce`6%Z8p|%r80BratK~H7hTq4#f-Q#&1?!$92O2USopPOa zL<%{TWJUHZ2X!ISRQlGe8+#oM`Q0_!4;Z*5zU}z#7kAxyNXGqi`y<`v$~EPwFEgsM zPJN9Csa(oj8g3jn8pij%altVAlQ5_Dl-O6QKs*p-O| zqMG6|Td>fJJ=Cw4*I&x7`=MSL-r?%1KQ;C9j-rRz(N)SoKSP$%{uUt6x?6LWZkue(T6p`(#yUy!F+^;cBVrx`Rgz_0C1! z-6Hzxfq~S~7cP{f4Au?JTbhy-bM9qCM>q4_Y!&vZ zg~JO5epn*klX|r8OX$m`Z;&~Phpo%YNYkLtKkwj>*xvPfh1F*LwebcTJonNq?&8JC zznpsBKPqFt#rF9*>=7-Nakj{Y!YA~ZNBUk49M3l`Rm_O+ zD!ZrYo3X%F)7GZexaxRRep8Ks!PnVShzL_POX<4{RLk$^H#my8B^kuk9Wqn1Ig>G> z@qFuLox{b;!=)Eao3k=;qrvI8%ioJdUWi`%{PI|I*>rWY+;nezZp&lobN1C!y5jVQ zl5^hl*vUN+8~%JoBqLViOXP^x+IJtm41Dmor5!fNaBNn6_w0+3^o30i)V8*t(719kh4uT1`~KJ%z*`|(FSV%wDMF+}KVWl+jTedmR^Qva)Ex00TKa2PD3BEX<*T+&{=+aKyTY1L6a+n@+etXQu&nvf3W|I4qcl5JSn%@!~!9jNzAX;-_x8$v-&=v zs*N3*i*9BK6JwMloEOk?akY#7(2b*D%3(Q)45g$i2-=AMY; zXV~31Sv8i{Z(uUoBYd~PL-QMLXx_={?i?c0*k7=;Ts!y_t+XW&;e9XBP`EJCS+i@! z<~PhG#y0J8;fo$8T4~HWro2-^_F>E3ikJO?@U}HPcLItT%ncB z9r?Gzi$tZn?`nK5eezZW6Ut5CyKJ%~?t|KQU!fLC`g5g9uN^Os#OcwGE3$iKvZKl@ zMLgJ}(Oo*W`#Dx@9D zH)pS67QV|m^AwpeKQxx7r8c61_H&QXW|8UA9SxF3Z<5P(9Eu;^sM9x2(%3OrzvS4W z9!=BG_xvlcvaSayhqqZrH)(8G)7O{$#(AqyrW{i|!AcF$buT(p8=&*DIbOD@scHT5 z?eq-Ixn-|XgDhyB+b$UVsCZXV#XH4|TJj?PM*aszlI(P1*K;C?&&gF#Fn^xz{KG2e zl#N%c(L0v-=yumr`poJC$(+mGnltN}l$M4Qny35N0&x%45j<7WYZtd^>25_z`j#oL zsvBNswaF&ss=nI%C&!F`pT`WB^*1J_F*GW2_xo)K9Fr)%s%4Op5Ud&UYhhGC&kXv- zMeS#+ixc$dp8_ojp zf5VzLo7Penh`dW|GZ68@)fn<6%j3tvpgx0)E#uu_#c`-wmjwa z?iTeppx;l6Z&|3(eCzAY8zQu>{i~m`SEqe54B8njW+>ct+JvEyWs=vYc6DrYYSWM3 zGgIe2JujK_n(km?{wF-^wl$!BliA1#=;$T$=0qRe-s|O zN8{ExVKegST;1tnzdgIMhnTcEL4reB?eRyZiLWiqAJvk+@KR^R@!5=}c0(l|`R8c^ zhgRRY=>BT1=ZYAg^2YUgdaEia<;Jw6A>B7O+FCwp#_n-&xl^1x;8t6aC|E3`DRINq zVn)vT7$1MBLZR}P`rY~2ztgoJIkk1#yj;{Aqb5^-X2IrX(k@Dh=OVWpIlw43yZP11 z&~}=PzAN@Ffk&h6`L_b+XumcpTRXZcYMY_eJnEXa%ZwlLetGELn7rQ5t-Y;7zm%^+ z<*?ZCqwQ~K_InzQO`zCx+y;{#CE&)g7j8>-K9PPUbA8AM)=M67XwKVvet~OX-I;00uhlagA0}YudKoHfUo5C@jMW?rOSaHfy4Ag9<&J5Y zNiX&D=kfP?zBH%~D`@Ii5~Hei$@ztC>6Ogo7p^62$jsfS-mQ0=?HtFvZ~pB?4{wr& zmg@Rt0Xu(KUpv&{+})J2n=x0YvR{m0?V3JX!>()&)%BY9-1X-Y@3W75;x3e=F4Q^S zFn7_F8=lfb3#*ItW80a?F2)=I?DO=px9U$aqi*Q!bKYRAzRk*~Zg%AM*09t1`}0Q_ zw=^G$9{w>9Y+UNC&L>w%yB6K6zaafiy;3xxzhh@Gt|6ekF~(E!^v{fX`rv*CmCQa{ z)sZ%N2dj=U^%K(-Qs;|fgT-GZL(lZ^>v(ONJ;UMaueWNw>dPr5hv*A$%F!7|Hys^& zv%UJ((OgECXbN-oLy5{Yv>(eiCJXD-q)uI}e|^OO?V@w|rkp;#nXw0R6$(%5UEe8v z@^?y>S~_v-(&~h4eC+GQg>rY?IYF($rSK68;@ToWIN!PYj zeYG9>QF9zFwbnU)mMFUYVmPf+O`(f%LG0K@^D*&lo3?bZHCEd!#?sSoIfxWB*N?_) zX^377Eu67IUejRn^X!2rPs5e_u1kE?x_ju^TdU(zWjATF_OHH69i!hr>y#|Gvn$R( z{b2jD4Ff|5_OAajU8*odYi#Q4f{Xe@-*j|rpI+@+t+UgnZX1peee|hdX^~Zhle*r@ zDGSF^Os}_@JaT`)l zx+dYum1qgZ&jqpW7Ls;xI@?>>)!Ey1O@11f^Y`1%&kY#)zM{%m&#+Qj{`$0SFIu(F zC1_?O={nYQYV6Q-2$Q&(ZJ~nL@8stO!%d^tb3U0C(ZT@ zGydI_K+9OsoXcu)ANh3rt$Sm_8m()=>Vu33_qr(pjgds?@c-lKtAn~=qIOY28j%L+ z7L*X__;rVb($XoYq=IyJcXxL;0@7X5Ad(^i0#Xw9{l0tW?#$VqGqZo}+1azt*$4DH zcs=tU*(a)`^1E!|tRR$IHg5SypX}we3)*MT=MJkDoxL4%u7&%ssbU}(V-JpAX9?*j ztcs?~gnTIsQAPlA$D;ltu3;RWPW`D6V}rtzK{0~|;Gr%U%MNYA8(555YOn}}>aYx^ zjEgTQ3Vzf?BcNTI_hd7)-Z8er8!#mqn35&7r@P1V(sHJW3zd3eM1fT@>O{`ment2R zU_xHjC9&UI!lNe(OO~sq!8EC*OOtJ+=ST6=Z&+jhqKxnQJr~`~r`b&qE_n?lcrew$ z%Ha3mxU2G1{)2)ruz&(>Xnp)p8GarCZ5>T?);#2JeDaxwV*n*Cj9 z1xbMePF5GZ58cYt5)q_FDSBNawy%0{OZcbpq>W6a1zvw3wES|mGh*n$uztHp-*9(m z#|Gsq0*eKD^10^zq)utrY`FUSA`%HF_J3^+_Ca*G8xL=a$Kn~C*bDBLeHFb300--- zt=prD;@49YHpS7{f1weiPkf&Gr+=R8%SpAw6Cm^LJR?0=IAf=i`jaX_mzzPo~W_88)zn{$L)YVicz}kLKmzsn+xuq>uu&shk#*Y0}=wXkzrc zFC+(g-8jK*37F|4AiA+x^Nqv3_AP3K8Gx9EY^cr^BT1nD;sHDVs8)vT`xeOM;%0CI zKimo;Ko&Ejl#<5KbT=eVJOA7F6KAe@HZgvy-X&n+#A*rgD~DL5sex>M1{N(!IKJfA zsxRZXTkGA^kPjTXjwn8h}CbPFM_xC$9d+(En z#lT=Qx8@%UH9O@eyIB$fB0(aQd(06p?3lQvw6_mxUH~z*U3Vg%w}R;TA3-F-OEDk9 zC}zdhiir?0Up0M-G06FYh!3OL=jJ0FDRcU*cHpb&cV86TdDFdhe^gIKLcsE`Et91f zd}`QqvR`5+c1MrQ;yvZljsYUU@aLJWbx{L8)CO6> zv;cM8@y+*SioKuqHDy(ElTa0|fhlqo?`i4a8zbEf3J_FgAWB+=f%D3Z|L0{E1_2x7 zt~oK!kJNwv`43}aF+yCfk2*8y+pCawZ*=0b{y}p$2NpV?v-zpXZ%_R0AOwzul!TI3 z*12s;FF$_~!Hrj)t6%nR8!L5ju91Ga}jplJBXLcC%jpE_QFo(1*kaRIjLWTM{f_I~RSc zj!{{n)9Rm+*xDWMMl1{?S>dYRD1O%p;nJcJsiSAFPZ?c(BZ9 zeYw;Dvvl*Qf8e`12rjmBkN&aby~cmPX_CmAy)i#rvp8RLoeO^~`OI-q-VQyZWA9Ek zK&{)$7mO^V>|nYwW%)1oLmRmv^rCL%qevN63`dF;TA{bB5RJ}kM2ZwtsH@XX*asiL zhPG17VSxzMi59J$ul`Y^4~m*nA?xF2{RY}+rc2h$rX+>p7~Ajmd%ZvzjUCw#?H8#D zDAQlvps$H7^7K8-(^E;C_}@-@?Z>qS3+*pke{LjJqGny~7pc{v7waOD?U#ew;C>0} zjYEQ#sY6qAl`bKX;EwTls*ghmY2!@UA@`8`cpnd%ngU|Opl5>=+DBz?p*#Hty$)=} z!07;?Vi^9^z&2;U`)N>ECu(yv$?*&LB(cs z0QY^w%yIma!QFw}{A@oe_|Q-3ZVJW*)PSu>%6Kv@ni_TJ?CYianeBM2u0MJXohr!l ztA*=`;)~s$aCBTAOjmzMv9rIdT}nMog4y2#!Xy$ME>hvaPPqF4xYgEz85osS(5|bG zefBg}5?zu9>y0n@!MS|%8FUh0LmwlF7<(PIV3E61Dm!>RCYxmhm$QEz_hrr^R>!Ie z+1^1LVsa7@z!CgI|16XXCv#tExz^G)+Qg-!KDM<0 z|Ca5U@5BO*La8gU>0`J#+%$oXGUc=X#Mk+$MO?)VY7%8dn8<*?mq;XI328?+8)bK6}zdOHZpn_KZQ(d`QJoP=6{%UuVh_qAcW;x z@d+k}r@idEpKY8Lt$^vzmqP@Nneb_qoOzLYzlT?ObZ^+V)fZJaD-kn?tAU@KvWU8C zK{5lJrER|l5rF^zdXKXAEg^HJ4`wnNkFosgJmgmOdkJJ{j>?n*7T9hgq#@YH!%6!) z^9E1hIb2s!qnG~OH<3H*gA$9DXDCIVN1s10q7G&Swr}eqX0ep>*$npAr>`@gk;eGM zGT}K1#d3!YD`)!*Z>zqPV({s(bHS&PN?K_7aK=Av%=oO|UP~{M=efumWa)n}4h=U=U9eHO@>9SG8d@}AWIId) z6OF2KXfbMyL5!523v=2I%k;i*JpM^dT!=4z`CsqO zhwnZ^QcRB7=6~4KnQN+m#*Ex@xkDp@3MU!B9?TDrS4Hl9P-ou=g8* zLoBfJx1#o&A*w7%%zE)o2_90Nct@e}t26B{irHq@fr#$_F?v=!e%+V^nEqd=?^yaO(sWRLHS5Y)3+m!@hT#JSyQ+`*c+H?nj zRpoQIlrz;=)29E7C5GiqaU3Cd={}>OsDjws&xW2jftU|4P1)l43CF_{6yyf@A%_5b z5@VxyC1&pTDzKncIp+Z)b(fS!>X~rSL;>Gdy9P8Ebikhy0$=H;{JsSwjeiIG!iO}t zQkSZwGYYv}&J)KM)V)}#Weyqq!c#;W=v5DJ={wMU&=_WSyDF*I;6({3kxDr8072bA z<5)_KsJqx-`(k_Pyg2{v&gd?fQ%i5xlK zAP04M^jA)Ngq;E9P~JS;v5!qtbA9qyj+)K=!vy`XjgiZycqTp2H;x%Vj_3RR9F!%z`45 zVs89>nw={m&q1a;wm06@AApEgOa*qM!k*FzSMHM`43!kO-a$%`u&pOy~ z8)Tl~gmqbT_H<#qk#48@RiTvr7u`FpYxeA0=jKPmNR2|-8KjGwy6sh)4mVNaqgtby zK7`HMm;JKHNSVS?I>q<~2x0R%v5hx?QMeQ|c^2DO{UB&CNZJ>|p4d?6;LDaV{ zlkPW3DFCNb4vvfO<2o-v1zn;Yi;$z&&6?josn3M-S*0rF^5ddA72^nfa>kr-Tu!nn zO~4~!wNB}(lEIIUq7ZL$aZq0YE%f>CjiM+}UMX{O6Qui@=BJWa513^}v#GpqA?)D= zC7hFj?9Xn#kT5Dd6@0gRl;esy{H%rR(KqT42m0q(wMSJSi~L~p6zcYQh%(iumJz&v z!*pkk5=bt43AjCs2*wRL0h*`5FL3Vo z8UfvBYuurU@h(wx{3d2LTidNf+0js2=P z>)}!1Sl6L4I5LzI0@<#Ng%jkM=h;0p^>E7BMsuvpuD5(fcjQe}s3T)M!FTvOmvfN} z<|dVSW4GEp2njEd2hoVS)W_Wb)7_%SU~0`-VprQ5Pmd;iss>8BgZW#+Q^g-h0NL`MHaoj|*v09i)5?G11v{I2)#Hi#f}85W z%TFK0brYTYeo@ltk&SwWsa3x0Uu2d(E8%%z% zF&9~q`BAajTfD{)Pvw_)oFFI3%$mOas<4V0(egu3;;zb$^;x#($z}a3$o4KVdctjs z$A8}_tF>_nF4J2%VuRn)Zy_fZREvQ^O72A=h{F4%L(h9yty_8^yYc4!Sz3o@alu7D zZ{ke>=gg1j$rpBAe#%Cv{V0<`w-sr97_5-eoYzoaF3L&*ibLPq^LiG)%@m3Y_)_Hn zRc>wOI3L201j<;$slzkDL^AsyqxqNVQnnY39bz>wv~q03`g+=tjl19Uq{>n;vHzX8 zq;`x(Cx@CZ34IO`)^uy+qvIB#5hSsLRptF4zX9LjLbgVy=0{8WVG$~jJu*yDXR!0~ z8q&6GxYZfWg$_T2;2)7vKWo+VF6@QO0J{Et&I60j*?a}^B1LH|<_4{=8Q*cpM2-OX%Kh+_ z9c8AQa>dWfjzW7t^zyyWcKs5?Q{0eI(qdNJ57zw+PpHk`mCU50(X#J2(NVGC|Gp-> zJU6ytI}2`tKt3Vklpk46JSx9RzO8qH_kxqHVnrIHK8OB&zwKp=${>$F%Zn#uhrGWs z#rjr*IzJE^{DO zBXRO0&*!p?iH8+zz(*P=Pz2v%)a&D7$Iyf$V4*rKo(kvAU^g-8Rn#~NRHdc)(FhQ= zH}wRV?G!x(Qa;$EF4|ietLu!TvGNYX>g9-BHuE&8IgK2u*Z%h&%MRIE4i{a-jQWxV zFb2he&KXsP|{ng(^kV~nMwhX!BDwhn8^S+qPsHibM$;+d#shkP?feP|g&0q5l$ z%Dxyg6in1vk0%Ynx_n&$0w;mh2TneYmW}r@?ryQ;%4y7x6xYeKxFeil$2Zg6eOFSa zhKij*J&6H$lH-$LX$tr6ADY$d=Hh(N`0e~rG&v(_dYM7^c-;W-M1W+Ht4ukvFt?Pu zyj%en#FT{~{*y9$wgzChnpQGfbN5KCazIF@VWhnFnz-J(jsN6&0*q*8IAtv?8e);8( ztK5EJuZar z1T8hn;kgvP6!1K7{QI6@k+Y+c8z*cIqpfA+pjEw7xC#DmJ?l%twYgBw^@&xxjixs@BuPAp49hsLlWbhbJXT1Af9Al(NO}A7 z=uTmF69mqI=d8UB6edYhENpq5`Us1;?>pH?F&$kD14Pz&Or}n=7;vFvQnb+IXe% zB0kA~N>=Bbts!m`Mb-t|!b}}^%CiE7Q?N(>c%)+s@FXv?jf+OTgMcFB{~lIAq5sUo zu8CYn{3CSc-q*IN0v0$!Ev0W*s5Ms2zqgfNLC9G+EnHhle?M3?ch~hoz#b~So5Auz zrB~n(mZNeY^wx^}6B5anm6^~>bmYT@Lrgqz=2<9zslxE$xlND?*fi-ZC^%efnMnK5 z;-8=fL~nUo_mR=Mme7>^(R7PBmj9A8-SE!R@qiOWzS>a&Tk&~;-!s+nb>#J3xs7o{ zN`EEha7r&c^GY)L92zf%;XRcYl9#o%T<=`{&tdxkd60>|@SZ{(CABfP9F++mJGy|+ z#b_=`f1Q8Q(yAXs@}{p`2erK*>feQYCh$9gR&i;+Yoe^p0}S3D(5%=+-F>C{(z+i( z)UQ=vN)*nGvj9n`DfqaOWIft0ldISVrwxmu?Cq`l{c6KaMKy{0z@u-~JKu zfwAc^mf#UD84LKA29-u{M`edL;zP<+IZ1W;vmP3etA&O-Jl3bl|9jv_cAREykyYsx zrim!Fw|^vSRV|HcTRF`KS;q9`!y>cKS=jVP9o=GST<5bj{UPz<_v;mCSbA7IzNxEZ zbZnI8WN0izjis~>kyuzWSX^|Uk-MY3?pwb#98XAa9HRfIU z^FR-BzL?49=|_PVdM(6AonB{p@3^1KH76OvQD8ILA_+*ouUPCJSBOT1eBS)~oVd?o zcNg5(7by<}#qjBk=N}qH82lyhC@TZKnJ7IfJGU=kIH%n<_FusLQlCF_?q{4+glf*k zH-|zEURb?n{k?R^_o7jxGf)?=9&Hrwsz1}XC2W&URR}nv?W3^e_uEDORQ)*>{VnOR$4&=KYaMK zF4d6s<~VG_H!c;1=rtreX0)lJq?tr67o@_TUhUkbR;cL5HRxZaWt!loZ4b>-)5IHz zRAQ-1i`S6S0_PQaNp!u;pgq2e*aG-FwFo8lt`;^b;J{=rrkOt?HSVX@6+sIQs_(8Kqnt_#b4b-&x|e#d{IY^XIEz$ zF-}Z*Cd5RkAOurf^>0C|tkpMakKX{QnXw+5r_d9FO~GE%*EJG#53&8PImqrm3H6g* z@txz%@x_er-ACy3{&;>P|K)X+w-*|5ai{{eVF{m|FPTGSJw#5;rG!KDGrN`UoH|f4r6$1r)9l%e61d<$2 zb1GCAc?!<`?|{};;tH?nMsN8V-;%q=JOw+J?2jrt(m6FJ9u3L)UZS7zZEH{sX2x26 z`~z_g^@7J?F0P#6BW^0AAAaUGgW$uAV+9J6zKtdO3ucK4I>4uIufp#ap&ujjFx1sv zlaNwOhk?#8l@xUWJO60TEZ&b_=9@Emwii$HTs)@q1;XFO;0)NZ6+h8%e~CXQ3n1sU zG~u8YVfhmdki7Ax0iw9vn3-B>4b9%m-3og9!@+r%%3@!M$U;4tM+XuSur_dNiSrXM z%cOeo#~7cl$Qu67`?Z~)-~TQ2^vDg91m0BnKCNxDjDLYrad7t&#{8D5xPI5VzB)h} z*x=uEAH-LpYN=XjkEUdir5#FyBAA-IDP1nM7&jBZia%8xsr(u)VE4f(7RPPFQhT<`C!*666?0E1UX~wWFXI^c;)uD} zlIsqa`+ey_v>^e{hyd3O=gwf(Vc&m{EQ%Q`^H+%o9pUZwUZro)S`L%5eZ}Q{cjtFX zD=|bsDJq$0cO!7j>tBpYsANw77opMFOwwU=S2x7&s@)V0zE~)$4}}a5QfUIilNQk# zO*H%Zh6xdlf=b(Zo$nDxrU5pdg=0BW;~&~}BWpn+jLaj8gGWE3TOt1N2zJb4S#9;% zTi>HEKYr-^47Wk-@w3*gB$C!GG63tEiimIrhlNr>t58X=fZo6vwPs6z+DOq7oMkURMP(Jk6YTL&fDFRt9!0Ex13NgpI~ z)<7lrrwycACY78u?F5t^+*qES3!OgO{N2fK%m@6j321fonN-pQ&Gg@rmca^@Oi+c} zpg8eojs%l<9Ytha1h&)+E=n*zHwtv)tZlDW259ASCzlJJ_%c%5lPN2|2GjI3vc9m9 zVmFzV#eGP8gy`_=ZI6>J?|J9*kfyp}4wJ4kN2m6>HEnHAe2Xrw1x-p+Z=2Gs{Px4} zJDg}q9H`LBSEuKyF=TaNPw2|K7QM8APopJD?3Z^E-WaKV3KQzHlB0$AAnyLoYtaQQ zfz9(+!7c}kk`@8ZZlTRwNY=C699W|Y?*oK(LS9=p$WvTOa+*O(+U)L`W^Udcmc*$v z{_vaFqS~aA@^ug$=@m2!@n~RwN z+NOe`S2D)=e_FM@*FyMl)nOn0`QJ4B$=G$*%nmUDI6Ca!h7ySm$M!sUCfxEE#bDXD zbR*#Ol}T=fX~6#%exysY7TX~{UQ8FKQJ%PinrnZkSNZfMF#DTd;zDvPy8P7`VuP*= zNokFEpp`BKPB%*%+vg;E@H&_ByH1uYhN7;XzD^+01N!LgoLyZT@-p6xqDo4=hn5R( z{-~4(HMTshquCYZRptF;nZPd<)^g8GV|pI7S#3lA>@s;1Z!4n;bri^(wI*LX9`gs` zbo*S)q+&3g`{!5-`DPwWKM;G3Uqxc$?bC8HI)l*`)k(5sk6MOH_Fnw9@FvDNXn)pw z3ZCtWdH2>ir4)ruB5%1Zy`Pe@Li+K0e7q*6wRsR{u)D7=HqBQ z$*%;O4TdH~SzKiY^i~#p&bI)*tjpur`oy>D%tIC0mEQ*3mAgNdF(cST$;vo|t(!o5 zN!v*^bX;mT=IT5$$chGV*jTITWFSD!<%U92$^6JnSGofUqpH<^)AaN&v)b{fwKOvM zwL=1DIKL`;OBbp`)<+pk6mSZ@4ph<1wb={92 zTMio>!J#molSJ#BawuCe>`D#8H9 zPhmP^eB++#%aCtVRlNZ%&zWD?ePL1-pwNuUOsPTMgr)B*$#>$-?xYEcGN*xmfH&ey zD#4i#A2OuwH?RR%BX`gcIqextv!yEA;1#S&?Q*w8S zQsB2V{$0pJy#>dB?)H9=yhf!(`CpKvK8c(8UE6(5>oYV(C?SIP2qGUi^hZ;}NbzMz zt0MH|{$o#Kg8K?wejy!`)&F^7j47uj&eSm`dqbY~Ic7K>iC3U}wFf5C%=)DQ1=Xlk z&RZ6S$H3T}x@R`lIdb5ry^lmaKFQsMlB`?>v0Es{fZgGx-kSBXr)7z~rNL-4s`$B5 zGoXa!tqXB|^cu?gvAXMZXjxsi2&?PU_&toYB6FBYG;<|^MSJo^T{UR8@%#Pw`JU=1 zFBMB{Jqbjz#S56UV{7PG75dh!bP#p=To3K$Hbmxd;2LZg@CSI0Y{1dUq3+_sdy>h; zzW|;xk6Uj-@{Z)&2Y;Eb6#-jzj37GJqO&}yxQKU(WpRH8&(Fkf8eaO;eME&uP(x&S zbQz>%O+p^eOAG{bJck!@Z>rpT@G#SiKmjw5w}!KYIXkFbc>Z}C1H|Oi{RazGYTjan zf;nhjo$(|^7~<(UjSa@#x_7<~rF^*G>3}tZ1z4z_jTO>4dfSN>oP#GD0VXEe$-GfV zUtU!CjG%m_c~g?=UdHUNZBkK2MgV1lpJY-x8TJRNutm9Z5%?Jdv);X>67_3gwdiNA>mmYULY4PNrzqB3@8Q z)Hgc^Gd2CLe*s!N7#7Kdyj3^WlqTkC zkOS&9{CPm}Y4)+upA=Pi02NTsMC`l6Kl3cRMDkjuj3~UH9Nei_;nm@Ty1m$!&BHi{ zY3Z0Lsm=#)xNW)A@^;aU&J+~nqb<)N_j)_Sf+Mj`#5(WvWy3|d1rlCLwRj?bxVw8~ zPl$Q6H4(`AM@Ql_1pXyzMaI|z9+~lxhxcHNLVwD5-$)tm)Tm;+oCNvCkCjj=%pmP7?-^`I(2<|r2CMu`)x)*Y)a&5O+@><&JJ+%Y)Mn0S7eW(Jlu!KX z47(#5A@mCVtk6@QH`!CIbYyy4uWG3qD=~-S3e$D}iqv++Pt{l=R`8b>*;5BUB{)p} zqsz#O*+Nk6v>flGW_-IuTO@D)hqtttTkYYhZ3ZlHUv3(C*&ypl95}~{s+W^>E6}?k zu>kI|(?-7L?0@eVo~t1nKmhtDQmj`4T%rMj`JkG(74%x!IJ%@rv#lnW7sHuUika>e z>URlacC6D?UDB?fz(xOgO($n?B%brb<&S+e2AAd(LRZy1-!f0jITV~DgTs&~W)2ob2EG{CPw&@>4{U zu+mRc%ID)Uq=_AJ$n9Ajvvm8RjqX6nA+5GIpxuJYbHJ*!r}b-j^o`#s094%Rr^0n) zF8bxCwR8z5rmSFdJXgpH?()1~nW`cbSDwG~fFRF`heo3F{BiLq@L=j35M5uxcE#|} z>YaBG#3}9fM`yYu70Ie|9i4br^u*h4=*O6a%#%I^CSWNSE=tHAgIWQ}Vmbu?o8^yjj!XROjC+_K-)i^# zsc>$Lfmi?{PwU+7X5)eTdgw0ZEG6;$Mg5ZrCQeadr}TX6fr=lv$w->l0^Us5> zWRf#q2>V(jGD7v#sueL%iM?;Uj>Z9MhV9v`L3y~?ttnCNNRp$i_QwVnvC?REvs!5k znQb`dyQ9UwEhP{_+R z!rKlM@)V?D+W$gp`P;$AO2@QM`M+`Ea*GCSw}0q3Wc~F+sy#s-p%hP3GN&J67E=NT zQ=?Gaap#_?mNQYdO7FYD-eZ`@0!fVthbMmqi|O=2TWxUS0_HE?csS5aeB1wd=Pd}$ zERfy6Yiq&(6%4(o=qyGH*d|2nzHSI1y<80^NWDX{Un1%9l-k;SYpLU03#&l%r+>bL zI=%_DrPDr{tJj3D%wAD1a(!#IrvJFCoiGbvr><4so6mN7R;0rmpArf^>t>{TOQ~x6 zUmyr`NVze#JD))hOr_b&&;_^3XqA%*rnmzX zc^V>*UefLaSrbud74Bd$JkE!?zj_pZ#FFG+rF{oDoW*C0TtRYwn_`cT+r!Y77LG_y ze~J1gq6Its>~h5P%34znW8z=Thv3|mR8~;_qQ0Nv`@Voyz+Iz6I2|Gvk*Sgt^OG>0 zf~f3w+7-T~xl%SWk0bqW_L4J4p+6u7d)AXJY2AOu_;x$6BN-hKq*FPLSm)e#Ty1jp z$-)9uFUTIb)xJU%^K4vX*`n9}$r&kqC+9!5wy9354hHHa<^t!XiM%$cPCDl^43HHv z@EMZ9pg@A+)vx-Mui)*iPnt8Iw^NyYf6&U6^AF>=(EWhUVZJXqfU;~bUj#f^8_?G2 z44HvL1{+JJ4(CHVLMqlqTL z3$;x|v%$ct)xK|bj7G%XD5jNVFv5qqyc4WZa~XM^Qc1p%^zgc$Nh=5^$H+IU+Bq_D zjEEQU^qw^y7eY#VBm4;|bQr$qx0K%3FoJt<>fNYv2);z~Rx9*oR7T#!h;+lp1?xbJ z2+}4gchSBmhcV?3VEm^8uPO>!ifNw59jD|8L%WdkWsJX_v>pgLmCn>!AqV=5mX0H^ z^i_s7U6Iwvz+rjP>fnMWhh8F;A{zlq(ClJ%J%Std4X)DmGWG@`+=Ky3aD&^h`tj)l zKC*x<__!oy99dM~fuMc_Mke(Gy=XZKbsT-ZWQtcr+?F{5sI;R=-qV5=)pyZXPy)9_FQzvz9i$B8Qole9hy7-x?SW**psK zAM*I;*H^U;mb1T2wX4`Vf~EER8LAjTi^EgyV%K9<#0<7I^|R(7#3m?)i(X0h-%i+y zdsPEyTW!jqRIi*Qa8KNAVT%D~rGbOjdxqP_!C<0=IVB%)u|BHREGcBBL$Td#TLwh( zG$#uE3#$6Mn8;bpTW$ihDuo_LX@x7r>c<`h;z+pgk#GjFxc-3bH8b;%^=l>{dc3##ZkW;{Y^u|3xn ziubsmMQHIlEJp$-X=b?kP_NTr<@#r{Z-N*`{D8aiIxPh*A$CKhSkVKTr2f&f*^G&! z_!_chp8E^)+1{&NG*?hWM&Sq1w$B!bP`mWx609F>~Wv#IHe>cZE? zYV9nr!I7fnDp~R&vFsF+uAGOci2{m41~Hu%k?bOW2)v76il2Xc?|CRhDjP|{&Jhs+ z&7IieJj8Y1SF9=9C66rtfQdmt-KU(3A!6EWe+rw?jE+RFc*hF8_d8CM1{)&*h%;?x zt#V=2OI}g8oi-1cuHwa-aiILFCH(TwbN_k(R`$R;$+Fw+loLk&s*N7wY1UUGN6_M} z_C~9~u_7Bd@p7-Y!EgWGAe%xiNtyu2?D?W8k7B<1@gW5;G}j$mW?HUIV048+wEw5I@iNFUb#etZ(M#wZ3!U1hDoN9NrA{4GxZqb8LvrPA!K6*3TABpP zfDZdg$0^O2>Bm>-Y~u?2#ZfMewYM4{Cys%(v)B$O#H!xfgSjWdX1Y=EIGzP?7JXc3 zyB?9}5iNQAxB3ikK+W?FTey5gJfdLjn!F4@6pT48Be4vZwH)qTZ0kX4Zogu*wBUde zU-Jsf1bl({{aON2f1lzTt$HK-HIy6kkAUD}U#nVJLZve4OW+mc7@W>(XqI%bQM(ha z*kOu(L7Q-ByZBnux94hirLY;#N2AGyU(edJWwDIg%2L1$j~xU!|1ju3&L6(_s1bnm zu^ZM(+BqyPU;}3`$L@kd^UqoqEp39EtkiABN+R)D#LY#)BLFT5Qxyu`hDned%kMu8 z(;vLHeZk1OpfJe1=1*a_vbpygf@wO-xh`<&w+f4nB&x2vlL#w(z$7+7IjvFYn?II! zmH((QegMy_Il)jzJn6t#pF$&0p@2ikb)Z58lfPK=W4^&+;Si$MoY;+N^>sZhUxHUf zNaXn1z+0ca-hZAL&?n^rO5i-d7~N}HQol00%kA_83-l9X%@w(Y-MEz)?+=Yt%t+x` z2JBNIUJpaYy|~Y{zcCWZy$+6U@UhKU702p~5HOE^eZ-3)<#282c2>4Eyzeq;mJ4t6YeBhKlSo+nc=U>?^4E+T$c_aaj_ZRwO~ow22-2>0%URM zkxLTDfy%dW{y^&QFz4jYQuMZ=8WolIjEAD5Gz-Ky?IeB=H~qGu){20~B(QQtNTyMz4$_YW7Skvjxf$M(eB|+{=`+oCFBP9NDKY1PZ?1Fr#&*yuw#C8(A#QrkH?oX#NzQPC0nu zh3QgH$4R6p$Z;F*xS0GYqu^-ip;_uC(zqXJH7VO?Bax{gzZgr8P+dgIs?KpnE);DD zuNG;*dgHA1nU#e31Y^GB4U}oaz5T{mwq(O73v7=4+H#i=2I>(nHXr6N{(LQn{}q~s z2|hk(IhH-{_9Lv$qAbKfO^{LCgyWaC3Y)ts@+IkY;LSOY06M3)997Xb0-pkurSp4Y7wJ*!yT4%pc98zE8G%$?So6ir%n|eSYui zaY^zsG7*eut(KP8huo7VS(tD(4i*JleJ%gB(2=KR-1?JKG58@k)v@z;kK_;a1?12` zbF(Fg+ncy1Z4nzS;9l^=&yNN|=!^3vzPVQPPd>hNE@%Xw|4Zg|{u}HK)e;xl?U;bT zQiEFA)W0sbjTgpK7k7ahFg$A?+qmluce<*`&&eqArph++<-6kw>-@78-g1F{ zlh$o(mG&VRSK~^fI4?=YF4S8U+M@8R&G|U3V={&p8}$7j z6vc-)Z)CsE6JF-SioVPwV84Nech$vnd(_UUW62IK}N;=OqX zVO&W!-XQM;;7>;*|1>-(Y}mfK?3Rr;M(exNPTm8E|KRlhq@WQ>3ab@wuNqH@nuN=_ z_4?FOzz>M5atTOR$W2GyTr&8KBmAf$`cT+&5?G$3??kyQ;InUFh0yOQhDS{ALIp}@ zF|DZ-8u3kLe4=p~9Z0WOq+`W9iKp**(jMB{MF6V~FiuPo8ch;W_|CkRv*U&)fCJTs zKKc8M>7MF*gfq>Rz>bG1UmnVvy(b;no~nqvfz`j%^*wA_G?{X(gdF z$R(*EdiJYk?~ECc%#KD-98fxf>a|my7{>m7ZH%VQ93qEPK%Ro8KdU zojg=*JAjK_gV>L%9gCE?_)+x24L{qL3T6?TB!mYV^Q5NQ!5 zE+XT(CKp8WHY%z6^oPS^6kW2WFAw+~FHu^s>tX2qvZ&0Tk^j)U4(-Ko49fm%Zw#@4 zzanC4sGVRS@YQ`K#3|XchE@=*R7F&1zoi024EJbILKdnE_lqLK1YTOhBf9my-3BVG zXmoHnSIN)cTQ882wSaMUDoY9L2l1S3`{iYXl7ko?KY2%~deRv^{qjmE=sRdC@AjaE zq2BE@J=woB{SbK2h5bs{zsqCm9FTGwWCLkQ8cU!0N=kfEFNt7EeFE=#{;#yZfXu~6 zLK-$6bci?o(sd-lO)a4sC}04M6~wfR(!V}%D^YoD=)mt?7Y_##&djG0+4K74Yu7rb zhXLDeKgX=lZrKqgn!+{;g;DPh%%+8SnamxlY-VE=@5v}5xPq5e3*6n_=bb`OSmAsTgL*e(6BToec z7>uK+Os0L5ne)bpf10?yyV!hqt`aTk1BP`q?Slq2KVkvl!)dk{P@mo5GJPm(DY; zjR*ZqIRBnaKr$CZ&i-?}`2-2Fm)C@7{$YB5jcfZ=?vLlN;A5ek_2;S1X!CqqwTBvC znsIr-CAwB&WFt0R{sMiP;FTRWJ^xO$6Gw>7)r6$(#?l+QT)DdRs?E}uh9O5IcOT** zLnb9_uOcJ;q`)1ce*7&S&k(2FQH1V3BJg#M0b)uv?o_`%+B&yjX~1Ln)V1*76G%Be7&e)mnx30!CAJ?291yWyL$YudOLiE*7 z-tAqqDQZgWpw99n11om$%+bAh0p4_(pBATj5Ao zqbRinm+w*NhI&!KCcd~MekL+^KT|PN!7RZi2(UD*)t>AjbEbDwlWZUf-Bu+~38jffxwx?UAW1(;TY> z)v@}1M7ig5B(vE)Q^#x4O8O;zMo_U3I(G8a9(o6Nz-g)<;8Koz7=CEEhbN6s@F5>)ttgjf^*ZIqRnUY`Oe&H2v2vr+N^B4U^xVW^KHzHn5Na~0XmKdLY z_sY_&VDqw8Ab_pP$zxUZLD2ix!LXbrfOfVX-FNBJd(~AEV)vVO!Oy`mnGRXHmnWkp zf?1K;xcMqHI9MaRqduzgb|rMNe%s&4`LVaI?IEU zJ(qXFXEoGFrYo-DKSqQ;p%0U~T`E5y(yzZJ@%SLA9>n-M`^K=LYjbJnRW3+>xpy*k z!SbGA=9Ami^*R=JiZ(?Z)vE{r!cWLq6(|l%%DuZmNX>rR6dw#z30SKl(cZ; z_^9cnoEnYiACCc`-_qmJKPF%`{Zw9uv^l&eAFL}uD8nL~sIF*_Pze*vDzzV!^gwQY z{We0zq1q41a`!B~s_#ig4i7+xq638J+fjt;#DuAo-y5kQty#rVEzwD^u8irtIw}5x zZb9KOirQZ?w-$CUt<1GN8n&>49#Q6lwmea_Upv}9W(46c-U_@X9T*dNnjahM+u&L% z$#nGv5FC#jXRDA7pE^xR)o}ms5|i4L5;GL8-tM7)$;t?aV`B{xD1}(KO>~_bRK@5q zA?>ddzf$BynkheZy5uZ_Pe$83o*n>TNHcoo75Vdkw8bADKGtYbGJ@L7Q=Q4-1xg5U zXH3oZ3YKb|y@B6xcjcjT|B{KH0(P)LaV-;wm$lz(Up|q&Z-OE>Q)L~+_Xl&`aQ<#- z#@D2znVH(aOY6)$wgL66Z#M}fK1_pQ#N?il51~o7cdujjP+RVfeXXI>UVdVJUUd+J2 z;lIMn)Zo4G{|q=77!VNLzyCjS_y5xWD5m^h?f3r6|F4h`{5R!)g@AyN;K6@2(*N2( z0x|+}0*e1;QxQ-T&=5Q%pe1-jKu17Nz(BxAz(l}Iz(T-Ez((+xfSrJYfRliWfSZ7a zfR})efS*8sK#)L)K$zeOfe3*p!Bc`~1Y-Y(x$gjvqe#N7?wJur*yNnN7-Jmegl%k+ zC0VuwwrnIhkWOApD|xZBE3_*IFb5nt=bUrS;mAigay&9e&PPsnaOC$_hnd;gAeqO# z@6GpZPfu5MrLN9Bvygr?jiIr$4UMDmG=a9Ii8P6}qwQ%2+L3mm$>3N;)ii}_Xev#k z>16&E22$d0TU;eHWGSOvXa>!sI+{hZX;-SJ25O`^G*=_cqxpz18eg;VD+3Zitwx09 z3au~D398LP=z#!1;Rb}Of;1at20{rIY>qmFhBw694NsfU?g$0#fl$((2-l#!5Uxpo zLbw*e<}lO(gzHco;kvXC;d<1JaD8e)xB(>)Zb+>NH=;I#8`C0$n^F?tX0$iL&1o^h zk<^ZG6m=jRO(}$vD2;GC>O{Cb?SpVKbs=;qgV3Wa!ZPYcxC$*n*oT%PT$Pp~ET`oN zSEGFq_NDz0_M;UDSEv0E_NPB1jL`uIx1a+N4xob&Zb^SZIFJrTxD_3Oa1b4eaBDgY z;b1x(;Sf3k;ZQmf;V?Q1;cz+{;RregVFewFa10%Xa4a21KQa^T?AG_R-UE#;B^kY}~v8(;qHGb?`KX#oTyWWr8;Ky$C zV>kJ+oBh}=e(Y91cAFpjs~@}FkKN(N?(}1K`LVnG*gYyH=w4XxZz?Y7KDr-I511!y z-3R>~fA?b#`LT!n*dr=t%j8k@Bvko4=Hoo>$DRnmpY&6o@?%ej;Ln8O&-xhu@MF*U zvFH8R3x4cHKlYLzd)be@;>TX~WB>GHulcdpRZP$uu+N*J_**{4+bSmM9eNiy@A>Ix z;mN`8eN^EOP=P;0yo%mdsSFeJ5W-ba23%e5LAW~Ijc^UR3*nk{C&IPBlbe{g5PI|o z!d2*Dgnj62gk|)1gyr-g!qrfET=`!|xDmaEa1;6`!p-Pag#GCigj>+d2nW(j2)Cve z5e}sn5RRbd5ssqg5RQcgT!H_AZ~{Gxa3Vc}a1z~ta67sk;r8@bggek}2zR7g5$;5{ zAe>A$BdnsE5Kf^R5l*EW5KgD-5$;UaA)Gc5yt5fgw1p@!USD}u#KKTxQHG{n54%L?oAgWY^Mtl zrs#Zxo%ATeeb90cnpKG~tGX2dTdsm9d-3x}{7@!1oc8%68}XgoSI`Xq3qURibjHClKj5|<}$)lQ2`2K{*R>k|Bh@y<$Is_|D8Vn-wD)vTmC=8{2$qfN6o87+6PYi z*tQXUY#Xt$QgxLJ)+PD`2%PL8ST)ZA+&X-UR6(CvXt_c{Lt}}c!TB6*yCt$(0U~SC z7xX24MPJi5^ez3H{zKo<_w---fqtZ)=x6#xvG~=@3#gx!a|1CE+N$T#1W2gg@^Qk3O4QY=ldix$&QLeE$x|fcUN7=12M)4 znjS$P_UW_63B2SW`ig#Hb+Lw6Q>>-%2WdRW#{)eSrz{R5w z>*&O-fk$Fp8eAS?${IrPO^&rcKdK?$)GULe-N4=J&jZ;xWFuUUk|3YapekXX8L zWvHO{ONgcLLSmrG#Ix~=WlNWEx^kgSIi|0^;k($3hW1e_EJzJpXmdPC(O<+0y3icP6u9mY>O2Tbxy~q| z@Iqq291u&_!XCuhMzaWs6)3NdAC ztP>Ut&)Rv$iwR;|Nrn?GTY- zd$B`7=V@SEv7<)jc!_proW_Gt+#Q1Iix6cpDS3Grb6hFs*-2#q)_5?POcTmOOc|70 zN?NQ+od;nl=NTsyULe*BmnyL)sN6k>Ri#;k#0r=)sE}CIIuF89&NEIZyg;nyv8DoR zL4RC5h&4qag{>7ZWl%^g2%%l4Mobmc0Au%2?T#7%aa_60bdKrE&a~8B)Y8O0Y7+p! zpv~DCPg3k6W)yUrdd3wqH93{9c$+gx8B|Ct7EWKK+-8zc zcpVC#ozDF=ar=G;ky>Ruco%Rmzce5(+O6>*9x% zSUh&>QLF_D3BpgdVg*bYR6s1X2cff-a-^L!ULe**M<}tlU+z(?xTYV76=KSTw02l9 zJWJp^VxedjJjkh1xxv|8mTXU^mhn6+nM!i1@*w3)3db%F>$_;B>ON}EQekQgA-L<4 zVv$G|^dPQyLhP-PIbOnprf9stCI>yBY@$YH*ms>$%7Yeb7B#>l(N0s#LrfWzTU1)C z4xI;KDG!<=6kZ_KfhQ=jnpN%|#7b!vA+Z9c3@RWN-KX;)EagE{G+rRq0n?RO3svqO z#Nu6AT!C02rp&gm2X%^lL>IE@zJWa`XpFcW>g-Ylt-L6s7^tAkMAcnn@h22&ZyTvW zJJgLQDVB((1-)n%5PKh_ynq2#FOiWl$lp_Sbn3mhz%nq3{B+nx-nT zI#uo-#QL*l5fUq4%Ak-~5JI;?2Z#g3L4eIrd8d8;RHkWJN2V<^a#L*gg68dDGn8f6?7pUst9qoM&@`47pl{EES$n$ZOOUHC@eR@ zck4>I5ZZB#1@90?((LjOQwD^LvL^2#vRFqkKwYI=s7~XB#6p(IBo0(Ldl2hrg#_V! zu>z(HDkRo1IuF89E>tHJULaO?vl8n7mAePAj@2weVg*bY6cWpKq2t8y0!^?P%z$rt zTGj5`j;hAlq6&BsXH))jBFFUQhVSAes_&x?&>%Hvf=8vj~44pm4$;+{?i~7UP!FH zlvu~B+&zeOmS)k&D+gMvfGL9tiFLNlgRqqUGzf(kh?TrkiFKUH-Gf-?Xci%{0;UWK zi3K5a6LhXPPn-{!9+@)Vz<)AX)ypXVxqu1i%aT!daUsp?V;V3J)t3+#AtJ@a;*x^? z!|k0Aml|xgNOAv}ukiwlG;OIY!b0<5g88NV=Q7P=H$Dv}E~nkgLrfWDRY4T~qs6*H z=RsJ?f94B?7l`#IIP_!^d=8;Uv944|5Xu)TV9KCEVqK;4AS~rS^M%3-#MIpYK0UQD`3i?kXR5x`_DDvT5%mTL!j#wTm_twFLl>Lpj~uI;6FDo zT-+#bD(F9qE(FF5<|^esduqJEA`MUq1;s-10hB#U`Ohty!Cri7P!E9urVI*M1pcGN zx>e^vSjvC)6bdgS)*4EzYgO(Z#JWwh2#FOiWl$lp{;KmJEag9Y3WXPlRSy@1wXRXQ zdl2h(%_1aLz?4BDv3&ozL)=Uhyvb2O?|Ly zZ-+!0L)?qI6n_)<74#k+dP{mk+^?`XC|*zwEf5djXwnKi|Xdmn?FpamozM#4o3 z7zDOIM@m8+R0RcJNVI82NCGUbMH~=hRxuYw72*+{+G<2p2jncGRL6)zV#3|E9rYnO zjaR%LvK=1<`*&cacNsYl@!Ok}i0J1a!=pXfku8GD+EEkJX(+~3eM<`QxOf8TJ2EU} zQSLVSm|VZhqTj-Juqcb$qeY)oNL(hW(4l>BMTLC|AlTQpt3I-+@r&13w(HZd>p8Hi zYU2aDeuGIK1ib?!1aNxr&u26z->$mD(21+yEaD)X9jwB+zrHxZ7;=Lg+kOW0K3WWT z;)0d;*00gb7?FFl?Xy}o-?nD(qf#9RoGWOX_y;Xw@6eT(P4b*3;DA?g`lMx`fGPeTnsqn(}Dz4s}@0j4!m{CTp*5wsBcHbd@ueheh{yVA5qRfp`?EnzldMOZxXhbQaa*g=}J$Q$yH<@xvDIetI58ypIlw8 zA=i{^$+hJ=a$UKeTwiV=HlieIYGQ6x0MqOiC*8VN3Dh&tb5?+t0zXv zNz}#qZbuo`S1&lRxM8t4laSl%ywCl{cUt|LO(-jOpzg4y8v`IDcQMwT17@Q79L{I1 zwQ{{l?j$G6N?9eV)2$d3b_?x<#HD} zL(Y_Sa+aJeca`~oFnH(%X!K)l=D1VrnOgktCde7=Oa_T_D;psA)-R= z7JBMcw6Jzg#l>=WTF%<-LHn|HryFV_M+;8OYtKib?#n%CzpxHd8BubhSwM%u%bAY3 z1e(s3yo%^Bcpv#ETERLr(f+K1T}TnKA;KX~hrw?^hXwTKunslIBxIaJn?0y+15j}O z<;aDyS+@Aky^IvmW5A9wK?krNt#lykajKywWPOBko*n~khaPQoP*{&DWD;@_hcZAgD5fV}!^*+qY0tuu5mYn?KJ z3CUY=Qf6hhN#UE2Y8Er?bK8zw_9@ztrF4kaT9L~5*vcDD3eUmGhlDW#{zC5Ck z`^gn@f1B9byKNh7Z-{o|sasU$@?Ex;f2KpZsP(Hpy(O80XXjzI?rhQT@t1$@-*~ z3@m-t#Oy6kpMGPY&mnYFxE53bTgpS_VYugOB)^YYYQN{s#mg6$Phckb{f6>zI@$sm z=7 zD(mqa+KhoFpD^a{zKUq@@lWyuI*Bznkxpg}PBI*Xtc&o<)8G@db@C)SC9HuO{YW-L z0S(@}FG6yq9*b!3-tF=fI+Zmzl}=*~?B0fuyaN!v@-%oKV<34NogUU;2jmcv2NDG| zcq0*}x3cjf8oaTmJcG_)4bG%9S%VV{VIi?zlXK;1@WuSI8^nRq|?ijl5P~C$E<` z$Q$KNK80RJY)`}WCwCO?{qVTFna*bIZ=rKo`vr!kkh>t}$y?=Z@~`rCd51~oTaj_; z?*D)_?xb_IHIyCjG9z09m92m^6``}TPtl4%dD=&fNm$Q6iKc@40uOgoM zNJc(R7qSLV&_%4lafX4A7{TRSd7k$a+3OFRGsycF z$fxNN*5Mhtlyx}P@DTE^mYYq9mcso{Lx*SSvak*lfGi{&uaFLxZWAK8iF{5zpEpu{ zAv9Kf(Vy+w(dtWop zI$f#tSDNGXVb1u5d=vKqrFds})L=)eZ^^g+(9!CS|B~;}RqV9?ekZ?||CK+;ALUQ-XZef#RsLqB>FvF6J0=b}8_o0$C`U)o zjjVUv5ESxO#MW@6<2bJ4Ic3f&P9JAgr`%c1>Fe}!R(IBL)(kN(um*P62#lB4qMNi` zltuXHI9~lh6JEeB^0duE1Xpv`an^O#bJlk@a5i){ayE80aW-`}3t{vsT3By++B(kW zbTjMSpKf8jk1^Clj#iwQ*M6UNDD;Zatzo^!F`~1DLg!4l0{=bSHZGj(Is^X5)dqR^ zLT5|5jWroae`QUMW-hpd6CU8GlxQn{_*2kiE4n?b3AfY2;bp&k&y@$Q%XEJ4RirEq z>g#Mxcd!P7=}y+*D8oQFYJ?PGmsb`Cp(;5;=&rB^W065PLpiirgRpdBk10+4r3V6sZi*g30I&)_9C64!gBi9 z8R?92MmuAivCcNmIA^@W{n1KYMM@@nrn4>mjkTIc_pw$-7^=eQ8=;@4RX2?9Orrb4 zT8%~~;h?!JR5BgshDbWR$KddYb)~K%dUTxX>_88&9y`*5tjFPos&H0|(9hE&1q5d& z`g>T9QAiWcWDfCDS5P`_)iw=x4_fGw`J>9DZIV+-53w#)^f2qf3nF|8N3AaC2b~hF z?`@Ytmuh+>tjkE1bqa?zYoN=5Gi(~}e{{>W-~^|J9%W6Y(qpU%+EsN4XH^rkx4cqW z@I5q{MvsRzQMJXHjywf4+3mlU*6+C&@vGgwbZY4d)?jCPk~KKQ5Eo9L2%9_&c3%Ju zcA=-j8lb~OG4fQmfCdfGfk=cy>Bk}(G(79fq^DVfI(mjRIM|R8j@>V_bn`T5#3GF| zi=GW@p!yAGHu4nEU_-7;_S#fF=j>W|4&ceh)HLzGtbJ4yKv_7Q!ooS=PAlMyV3L70=m!Sen&dHJ9}^jM&~Q2Q9D`};bb!l zaQ1Ze`a@>{qc?N@L@#iW|Bpw_mpV=KBHM2Py~OrA5G?r;%5K7m>qnDjtY^o~JAMrR zSx7Hy>*@Y_n9AJDq0JiDuI5LZhWqMhSzDZh)9SQ2i<~5{{X2U*i=B3-!wLIYC`<8Z zk=jx7m6N7dSieqsmGwKwkkFb5XP*#B-#e^+Q|CaxF8Zg|Pie;QM#DH64sF&zznLp+ z8t!XAzpT^kEOC}P%bexTzRrHm3TJ=p2~S{MLzuma7SV8K*7-BN#u^?#ud{}KG1PK( z4L8Va%S$D3TQOw3Z`SOHBn-RIfug| zk8qB3j&kOU7oDU3Z@khmgn5jzI>&=usnIpgG4wW<+p+Wx>-lGcD;(BPILDc1zU7tN z*07{=JiV*+R2r(!B?#vPMz>i5&#bW1BL=OlJo7~7BzWe@&MD5R@XXVk)15P%`Pw_3 zGgsa}OX*tgoJH@ku4mKxtm^?rz+5dkF;CNq525Kf^nun?&q23Ri0p;=nu^!XWIE;& z&UrT4+k4@9CSE(yIiEgc9WJ1cScjy~!g{sk5bbBhYZ$sX7t+7NIt&E1a4zD|=JQKS zytu@s{hoUf4PNYUE~bxJgG=ZW)?kq#E*usteC28IBDWNm(x+h!wnPr$T*jfz8))!M zlTA}tmxrEu6)mE}GxMA)=rh*gO8T62*v(KAj`crFK2L{d9)J#4(HCJIHUqYBuIA9@ z3v@U|H7+K73+Ea&qq)|(&bi*X!MV}7$+_9N#ktkF&H1ZyyK{$gr*oHcw{wqkuk$zO zKIeYt0p~&I@6JQc!_Fhlqt0W_+BwJV#$^izr**8$xW6=Q(6#zJd&oam};W|GSevk8S3> zK;N*&FVeTHahs7raJ>G{@7A_=xFC7`js{M7yZT>H8Uq%!g)$Z{IH-#=VOfKd@LXv%fEpNH$><- zpE#d7pCM-5eJ#X!fWxCM%#7aVR`qvXw&*Qk9xa9l-*c1mxeyk((j0oCewFhD&bNZB zJ~tbjo;5LO*rAwuS1wx_=4C+Uk%Arju8BC0ec71M&c4_1-G|PX+>p09UkR7XYfpyb z63*8gs?*OZ0YRB+)v3_A#y*b;&-q4_>2l-c7*l%Aw<@lM37hpkr2p=Vt;*Vk3AQ-@ z7OP0n$N7)w!Zu}9e3%`oKT7D%t zPVe*T!f%|UY7T2)YL0b*|E%G7PkJv3cdXt}19h-Prk&ja5qDFHuL_ zGO>oXGh0}wsikyRar@xOwiRkSB~;b6Fa-JLI=_e)-Bnk96-SjM2yngTIbM{>2)A6U z$r6NZjmMR{*p__R)`PhenmwQEt|r!ETlN)evn}^kxnK}wLE-YO+g`rE8awu@XoMYB z7wc#{GI^nzDB&_Y>s;^$n_*m)rG@+2aQ~0pHJz-xmbRb$i~? zu@}CG>Tc?8=5FrxcVmCVYL52ge%lXqw-6h!P6Nb-tkVj^F;^Q-%+qN5L!r@@Vxw>^ z;Fd+W0}=9|hbs}6WTd_MjtynK)83Kv$F~TpfT(Sk*b`ZpV*TLR)|0mq8?z;r0+%o0 zDh1s^`cbFZme)GwhPT2NTZ>J!EtD0o>cN>YKr3kru3**%9^uah#QvgQR3mjA<=;c# z-$UWw!`$KS2zYn}JbYxt!&ede1D_jSZhb%xpWC>fBSFeVM}T%t$^p|AmkX6{|Y!NE^Z2dv~o&$zI@&5?ip3j}`;CWbH6Ys4^99xT58Gc??D2 zjul(#l2v7j&-ii4ZiA3h!(PsCSk&)XU&fa_CQTJk>99n1iBlgbSX=r7pyS47l{9c5+3)&d7 zH?s0$6qcGV9)g;6XulWT-JKzZ+p<+yD;wC%?2qt8+Xl;<-I-zpTd_`5uobh0u(qFY zXN4F=t=P}~4py8kMrtdv&_X%8ba!>@)sx8`FkJ2D5Wzmmh7E3`d8M`E5FYrBoKE) zdx`N{13hD96AAZE9NHXyhQ4q7X47zA)opSYxN&!(+w8Wu3AYt3>PlW#qug@o`^J}U zo0z~FEfU+ZMtc~#!hw(GT)~>N9?$iC^LR);k#Qil>P~32k1O!FD!ZpXu#V>cMY*q= z6qA&WK;-clZ1M6ia`(m;WjPst&Y->`t0193x{FMnDayZgHPxhvfL-9NhrxCgoixqm?xLBE=B z$BLcAWKk)qM75YA)aOsdbWtmI=FgUjnW9e25<7_5Vpp*vhEdEc(C>yz$UPXt7b{lS zA+1=#Jp@q+TfHPSTr@<;T(Tp%hl&OW6$2`6{l#{Izo^L%AtMYR_b@TX=QfwYkxROV zyGI~Rs*=$dVxB?@5$caY7E-O);c98=dG1l}(e5$svF>q55+Jvm0tv2+IZ|yx?(s;q z#H?>AG!uC43GRvRN$$z+DM-N|ahT6$ioL|2#Gax_>>(D2xY!Nfew>f5KN`ivSR5Yu z7|7~dj;SF%Sv-=4?h4-s_s(YGyx_gEkfqK-8nzR7*sKsr< zS?|So53v*PCAQ17oX97;al&I5-e?|;_nAk^7vzgL@39ZwY#uIO!U>NFa(}$V_m;D# zdXM}wy!qV^?~2Fpe)#5i|9exsE8brYz&qosiI?%d`KNf#{7dn(Tm?Ijr#UO!iEhko zbWU`--Eo*>HK5nq8+()|V+Va1Mrh+P=h_TAmiuC?)*m~VOR#IXKlU+GI5p7jo{62z zth+XLaJP3}ch7RqcHWg$;zv1MP7%M#HF2_TBu?0k#TmOXIMp@EnSeLcQ?kN62k&DK zm6P3b-Sgb@-3#0c-HY6d-AkOyabEXV`MrCo{0cigH)GG|M(p|A=3I*tzMtb{?|+^1 zaLV^vob$a7yFk~7_i?uON1XS)67M~KiBrG7;XLpUcn|t|dAW1DyvgBrPCmm4;Hm13 zlxn<mA_kFLY+(c{=ZdIWn%k75_;LF_L*!23*cH}yuxef&-b z-tM?tovvLU=W92^N!xXtP4M2wJveu}uCpoL|7ej5abC6AdB?rXz1(dTzwo>Jc!Pgk zyn(*~-rnznxBkBuU(0py)<1s*;0L__|C@S?e{Hy}z;C$i2e75^u{~Brn7_ z1U|sqHRt2qnse}`4bM<`e$_|sv%6Q(VCPJ=xi1j!=kB7Q9A69b4mGMoyf2nE)%pVB z>$>anzXPD1zlyeYj@I9!Kzu{-lbN$!MQiie8LrRGD&uV|lj>Q`)$zQEd|o|oYT%nX zyQ=3Z^IRo)A}wfwd7dEOR?j^CXL^I2y%6(gsCgdhBtkk&3+XU4B==e&xerH9H{3Am7*A3-AGLpY7lz)0C|FBU0 zbwc^MsTBANH*Ld>>D;-i|3d*Wq65t4$AOj(PA5I-Za5jwdx&m zuNE!H#f#k}5-K?egnNy7km7YY$G}BvE*bQliPd+!l-%pZ-X$ct!BEeUBq zSAA<|E-^W%oZP<(y$H`(!bdPlZv$>65&Dnq0Rj8BMJQ;q$(rs6!ah+U2a zpfnuEbPChA^3BbK^C5X2&)JU+jNXXcyG6GWuMBl_i7LkYKw<#4zk!OSR!OZy-=Dr9 z_a3pdhq`&M`!~?dtDDOdvtZBW9C-D8{DEV^og;3`BO>qk9=Z36<-W-KDzyAS%GV&W zhU(88LvOn>dEp)8KESD#%Zdn>UA83mL9xQ;vVT4Ul_D`Z-CwVtlK8Vq3bxy-$ckMf2!~la7&Ysrk^7i9Oc~Qd>GNPKdO7an?i22lNEY%& zgCUNH5SsZ3xlaimx2Q`TDUK3{i=!i0bq|vJv^d&lcZ|gk-5vKC_gVKJND=Z}{cU6t z$BN^`G5BsVw9va7bhxyQlS(MpqK`TlOh!A-Y543 zeDRo*dq?5q2!&ZSBPMVxIY?Wl)(3pHb$dK-0mOllzk3St^Ntb4cRU zC`t+o8{$+zPSXgdM-XPAlYK>;t{7v;mv>3`RrjAJRmh8M?2IUxgUEdipD^a+-dW^K zahCo@F)L)&BAWIg_jRN)mBQoCH;e#k)MtfBigQ#nAav>Tpe25XzkF;FE{Gzull!i?AV9b3-#YjYNSp z7Gv(~B7}zgNbWcM*Zi^5aiXq?6;xxb1#6p-O}M&P4nk^7tZda74N14ng<`=an9 zd7iirBHXVL9J3KaMNPG_yc*X;BT&Ve0R1pa0brUsT5cXws zA3Bh{J|>lM#6uAtSNurcs`&6MC)=$pLoDYea7I*L;$cg|j3_RDoV;@N(P4!k9?6Bv z1x@6wCLZz0iASRd+mhE8U-dPYcq|H^NnStkm=AwE3eS+Yx_I2eNjwojczPmvYp5^% zY8>%o1mV0diXr8y~J}7gkw)7Z~fpiuHyM9{7v#Uz=vw>C0>Xioca}c z8>)}iY833ObHsNgdFpZGZG^ooPUc2ruExs=9dBcA6OSiH0$)Vc7+5aHLOPbG88aYv z>{H}z7JTwnyb^&Q2a9cv@7D6A9aFp-K{@sp^7@Nc!AuWg@Eu#m4tPBED|s>Xl~PW} z7i}Z(r{m;pp}%6O5#ER(ytEg21MtyXd*M^J91S?UR6*XB;>{k6GSJ(~8-#p$MtLhj z?&(?NZ7uBZg~Z!Y_?hGl7H_i*)+q0&2VbJHS*MdXL?G1~<=qI4eg8(@P<+tVURZ?Y zs82zhG?cty;ytBP$>E-3nqPbfH9g5eey<&PXPH;;o#H1 zxd^97^2UhIfbh9S_#%RE@+0Jp6<+}1OO5bV6ybRCwh>hbRKda-#SF z2tR6spP~p4kT(hY4?e=rQG`p#+fMu(Ap8k2 z!7Q!ZyO8i3zT}!w3V$JQrd$({wKT%o5rp~QlUFCzxj02&oe2DdTgjUx*HM|7!MYLn zZX1&~TdwOD)_M{6i4T*vt6a~|zkUQh?|$;?<@$d94I=RQZ;;m@H}Las7=c%QN?xPf z5R&n}6K)$v5SGWtnYg^ezsH_4)x%#^IWQI0F9M5#LR_LQ6ZE^J2I3fTtI z+speC9t5_YHC)CbWZL&6uSv%I9IIg`ev1fB724+oatj}4Kmnodh(L|`FE90a!3R|{~_}B=1ouo9~yyotVZ5q zIaGm5PFrm4COIrhqME#Ri9eTTy_J-O1HXYFIXpt59WLD=hbt1c(YB;=+k9?gG(?Vw z5P1!=my{ggGnW++gw)aGrDa8cFfxMBv4Xr#IZ}y%ra$kJ-acNJNfi>Ey}ASz>Ex&g zsm1S-my!6}bfB0%(4gnue51(G5en^N$ji#nhJpg-W;IWspn-Bsgu)5S$?KM5{9JNu z1mVO^@|MW4JqzjFqKU|Dq7=3#Z>ikIvXJ8<@Du(`-ZDAPhmViIPb?>Ixg77qCq&^} zk+-kJ2?>=>a@#0;K6(4eZGHH}2)un6c`NXB7fvozqQcwX@b(LW2eL-peH3r&pU69$Q{_|zk<)T%c*8a)?+7`~ry-|D5Gu|m?@0c823e~q z?3{}rDlyeOO70AVT{Oas2*OY3Ymdg4eK}bQ1@zg4BT{`S1NZ90g!zCs46gf9f%g==H+c{%u$FAnSAGa3*4?e1g;`9zz3no72CuuBeE7$%b4S;^&>nI}!hhU0taLQqqt%@KskC&;@{HmlrfCQ}(cqNvD zF2Nsb*h{uW5N^d%&ZV+V<>%SjB8wTiyWVBq<=z$El}N)%vcbWhXYgNVERyZHB-dDH z8}hD_?V2R~T@MvQ^bqyDtG#QyYrX5d>ork3N#lRuNaO!Dj*7F4(DBoB{J82&4HkKvCs%mqP@uo$LLxBHH~$K??{8^euhBJ#*6g)Dhb$Rm9o zM@8U+u#)*C{yu|~OKRaxG#va>9!ADNyOH;lJlf}QjOAe5W(H=VPvcK9dgS02=&=zB zBd`|o4E|4}XA0KR$5{&2j#v$O7Jse5$vkiwXr+zZg}b?d$>XCWo+0la@^~YJ0!A|H zN8!daP@WK>Fz8A0p2L4@aB^uOCRia(jFP}g z|20(vAmBEdm^?E|Fc@OVA6qn|GpNy%~ zOy;}@nGu+(e<068;hnG0uWq4r(K71GQK9U#u@QWhwVKG7L8vGr?^Agh5X?aGiU`7pr^)+F zUI7-+6PLU)f-o8zMW0I^!Rbq06-B^;#~1P{3nv*pLNnq+^1hT;2ME_hD2#fQyszXn z0m8Krgwb1)_qDv%x6^eIcm?Lrc(*4YaD4<}^d97WD=}h}Hz*_=J>+{ZM;bAeynpk# zJ@Zd9^5zIa#YFP{ga3`Om%Jr{Fa#{V!#~Q{vb;44$AZWA_}D)umnoPfrSH=FulIvV z61+1fzjONS)JmQe^XELK6ML-v>c6g7O9pF$*B7^%cDl5mI6`4yu6@hz?P}yqu-y%+SAg1n+EP8Mk_$OP_Sv{RgLi}_cmG#9x z5t&OqlM9#LSya{!e^F#v_$P*J4s+*)GYymfh>%$OpH#Lw{+Y;-h-3^N9aN!VL5V#V zAya+`m8~J4Q)FC|s|9y)z;D0(7Er-{`QC~M!(fx=bIFLGcA&B~@x~!1m##*`6akVi zL@B&ZWoyY7tUmHZjh7b+2%=%~rCbuS`~oUlTfUT|i^`v;%VOUk5clO=GUBI0scaqm zl~V6@c_l*OXP3&>#lJ9dGJDXgd0OZMfu$J@lmCp6`1tQswjTa>h?99ea&7?`)2b#x+79pmdSGjLE zm2D|M^a;w3A_z}BPh|t;M=+G>Z~hfQcyf0t+lv2GNq($Zd=f?2j>-n%ZFG{KYJ|_! z4SnfGD&oHK1C?zpITfykOMY%CXqIB}Kq?z7_2DIj@I?fnauSsdkzc6X3gOEL!r*VI zY^eM)K!~1j8vGKK4U=C52w&$?Sbfq6DjP1p)`bCUBz#mI5oLDgRJ}D|-&##deJCn; z-|3o-sH}oh&HGLgr=oBL2sgqUBRSO|%-+Ru%QX{(H!kis?C$AA{NrA%scBZ#&JB&T z>T8;sM$Ya^@11DQ*2R}3+v3@D*T|-(3~q^*ru0GvWSW|q8nRuD3)>C7KJwqRG~KnB zmL$58?ddj}I(u4WReCuM#WlNr*6gM!i6v9x9m)3PvuD=DI}$r&I^$j0cxr5dG5Atg zv*TTvL{nqDt1Xe;A+tP{U6jZqGYk$WmB7iPK|T#CBnA0WM8H(polSS7v&kiiSc8^y zObwaX*cyY~-O;g}TDm(%)7)fNHnFV6+{ete5p%aWM~tnEO=*~IAMq4VwO9sYE9-oK zjRZ``(5@(zm|+x~nQTvH<6XO2l)0sux@sXX{>oOx-JKN$TjR%cPW|AEh$eBrZcQq$k zku9^r5Hy@uj2<&;{Dkq_j-5DW1x>A;QPWi0P&>0}W^F??tx!10<`pXn(4j(UQ)(LK zG=?dxl%z}JOA;;dY`kLG(j`U296x%r5p({$xe)=w*_CuT30gFjYo&y$Xzpm~QJCtP zQzF7}Hfd#KoRC+Cyp|fm@#Wwh`G&1enc}@SiNS>gz!f=Zs2kqjLzS*UTFenQT=e)x4;QsWmN3EUHK>OB5By+Ce#P&HS2>G=(Wq zk>rr~Dl)wmco`a$)H1GX$yBnKoZD_|D_C7^NW`4Hl>1}^V*Fmq66nTu>+IUQM|tKq zG&Z4u-x*~Yk}Ho+$ZCeNDdL>`y_U0SSx2TVGZKwug^CpxbNs~dV{L_>*)XjkB%q&@ zf|xege2v*_QKnVxzU`=LbkP-{R7{R>6RjK#VKe3ArQ9bY4ded~Su)vW#bgO=f}(3^ zoFB4EAOZ4+?Zq9aNpwScz+8UX3L-#^6UPX>DB2t$v zCxz1tgJR@RRXt^lN?;bKD0XzXZz4og2^O$3ss#y+>DlQ_c7!i<<-$z1E8d)KNOp9$ ztAf%zJAvgR0f=(J;7n2Pk-*4MNwH;F-mnCXUGY>#Gi&03lCM;%tz}_%vb{y8DrO;E zqsubnOiXQ0r@Lmi$5R-+X@T>T17R(ZNH$gKDqoRuF9It-*boSu$+Cp!8{AV z1&H`mb5{aI$9WXTke6^xXij%7FGeqyn05@XU{ChB=i=xpor_`BK!M~4SHQrz2%4DB z3DvX%^FLi~)eu`f&hKnT^V3zI$aJ?GSU6qRotzX+wr*N=5%){AHRnT=umvHSoT?d} zs2Ni*`D{yRAzQh+gc1vAoR?1(aJ4G3#$-n_)mEKGd)^gKrm|=;Rf!b=7NA~$LWq7P z2o<3o1r?wjMNxL(Hpdp2stz;boqjW^#Al3-aH1j&G}F#>b|vc5-PuGVCT?2aoRmNi zWNFBv>1@_Yn(QDw6*EE1HL>=f^XDez5D23x!!T}M8y8K?C6R-!h|G+4n#Kn)>;2JM z*@;>NaDnQdD;C_wCp$gsgPX z{X}h5ZG#?lgc_S5QBesVHRt)A%vbZAugL0Vm$_A@;_b`#MfamHv=hg>O#OhF^ZQh# zyDp$SV6F|KUAC46L<92G?dj&l^@%n#Mq0k+cJo-@nGFrBkST;(pXf|;Pm?chC5C^^ zQxffQGf0f%c}n~8JYoS}30frvfsm&_(|}Z4+rsUM7852L5kly>X#jGurXhz;Zsk`+ zV4DWu0%1saVs|=C3t!tMLd%lFf-hswOL!tM5)R=HP|A2$JX;qRS^lOw&>7 zMp7|2@P|FjqZizYvx$-_V&7cNb6hhQWcG%s}N!v|zHAH_SlOR1m0$6@-K;V-+Tmm8n!3gn_E2 zPiAbiunFR&do!GfE4I))P%A11HsnE6h{L#_Su@ zQH0#lTrr^nX^K-RB}T}bRwAp1AJLt!@}G zbAHmG*(ZzWKL@Ben6X^M7`F{nS3LqU89eh~@$4hx`RdHC@#*BGy2iWHyUU=Ny;Nd)LRNofr=xe&Oy z4@NL`)l*`vAeo5`9?B$!tWY8-Z%D+unit`$iOz)W87_k0 z2#QYTzS}oGGOIF-D3Y{{|f!FDZaOl8du1}pQaLMIU@b@0n zxGE~8*_uk^QnEWFzBGY=g^JMVY6~!sr4Ta24kKDtg;25jt~SmRHUs1_GdhgEwVj}J zO=~L_jZ|f(nTeKUcZUYyY{N2u^)mI8E*uY2yP%kb(DY>6BEtG)s)dhRDT6biW#Fi( zQ608)33HlkGS!`krBg9X#nRXpU5Kezom&4=*|? zg|I2zo$X0IXZ9J+NVg@MXLZ7U$$dlKg$!zirmGsI+8Ae+ETZM5YShg5vZ?VD7VLd) z7Da=xDbtW$j&{uo!^g*b#%fitvKdF_urH^km(~UfQlDtS{w*)vHB{D4jWL31D>Ct9 zD>oK=N4FAcMV9DR1UJp2vtaY3m~<3xV9<3lQfr4b zDc?q_Fq8!fnH+hHwG-H^=T&GvG#Kz`KnW$dm1iHZT==$n}7~47h^gCkMn6%)mP5Ur_9xdA-UdRi<=Kz!n3Hdy)SewTxL~?5H{Er4hYq66t2`q6weg4Jv14b3)ZvJrYnVu~2As0-R3XB|$5x z8bdUx==U`@1pxmpte|HTv%0frs6vpbNQKj-G{El4C>|;&xA3Zv>*F12n?r$kZi(H( z#)jHJ0&Wbs1IPo|M99k&GK&(nCWjy>xgW^;^@yeDZ@ZtP)>|e}) zyV^D_Bo6Ov)O2;FyJBV|BW&^lT4;k5Q9=U?>7XH61;s(xPp9Syt&

;trh)!lHk zRMy{P&vg$hleSg2wl$&fP-n0enOR&Cfom9_Rz7%*vU1mGz0Ju}nJpJ|6r}`ps63aTP+82kc z4#RSryVOo%eCClUL|E2DFvHUGH3sI)Ybsk>s=84}gL9){6kF05^@XSgJC?CH=K6 zOjWgon2D~G7*J-WCs90Dy$VVKwY)@|=eKaV)A1&r^zeD=InAwsyxPsMhKyyS4vc|t z1bQYc7H{(#euJS?6HUkpcPR#~j(6f5wehg2Ngkx@HU}M22b$06jWf+6Ck9(f)!J21 zv3OMwYY4XU&}Z{t0W3x1pod!Cu>DHR9Nbftm9y#R>h26)t;3uf%OIxZ41gg@yhz=M z%AG^ToDfxA&a76vg2wHmbzPpiU=EIL+G*_z+ku0rN^L4<=3!CcTQf0iN^-dchPKdp zZhTXbGEF7e`+3Z-=AisuqQzG$U`iApoC9jYj8MPHXjh#q7-c#q#cv4Jrp$VCzBIrA zI?tI3AYuOB5N}OjC8=HchOr3q!~9pz;&qxn%%#@wO|;WaDE((O9BFKBZ)omH+OE|H z&Pc~wW>-&D0-Dw_hcc!ez`zntpn{)Q4{izoILrK*GYUYk8dcZbu`toaBN@{?`1D|` zg=zGoc|u}-!QE0z6ajWJjt~@UWhQ2qZp`WeS87$dyCf2w0ir6}pu(%QVy$|R*i<S%EIg&Gp==y75*EAj4WJGz%x1KJ0?vssny=Jm?uv4-Y& zDon8|-rYjuCSa3+#%{X}!qF44%|H`5LFtoRn9MBYrID_NMd_tzB318U%86IGm8Y3y z@GdhF<%5(udr^#qym24k=++{%SguCAfx9prG#`c00y0=4(F5{GcCLD6`vERpU=tvO z;E(9TeK*64ZUQt+nX3B$J~F_wK$JtayORgX#w%ESQ)9RhVf!>;RiBo1@)^qtf9;d; z&}JD_A5E1+jtPK=!9Uw4A1R+vV4ytW0mwIR9_;|9f!_{?6JRimQ&Q^GIL@-5o8UJe z<4crIC50`3)-%n3e<2wy$pEW3MQe9o#-30^ME$dh*i7e=Eu=C`XWk70QjZ8ZRElu& zi4=h=8u@DF$Wa;`qELi~aWM_$nqaCs1`@fuUJNU|>&4D%Mg+d+s+xelwr8)&Ln=th zI)d3XE6UR11=v)TGYM;cQpox$&iFm5!SQBZ3&bYF_B$HdnXKQlH6)-6 zf8c>e`arYN5^A zgWus&bq`$3KnUH9>En=w^AkavkLP*#)&%bqSMbZXeonRm&E(f>@bgo1+kQV8?6v85 zFdGmL()4>e3Q~;|Os#gusyUP84J+Jee)ZHKeOa^G$ihwYP?XT|ncY97o=wB|9rz%C zN;4;+10NPA? zI)c>)%#Siyu!PSojq?geZhl`R;A2Xk3$zu|FZhtN8r%8#SqkLGgj>BVYsa2SB_N>+ zYSn8}d2H&_%}T&|$rigKVYR5@)&}}d%XGmym6=L4NYxH)BmjsLl}Al$sBhx&YOWfM zy`Z1X6s4cd1oRslLiDQ_@$n1)Y>kqNn-$(6Q^z4NEYXtKRH!u@vned6_#3qrgvl77 zXfbkg_+wcn8n}kdHET(tOO1s&qyLagf|>GGj~+$FlBrm*^W)P|duZIQ4V+&)qqc7T z$nCM;s}6VVICA@p?z_`nrXlC{v#Kk-6m$| z^{F5a%}=)D%MUSs!K+*4O0<}DFD7KNOiS~WLG3}?#!H`_P{pn+kJcrtMt&FrVBecp zae2u?+aedJMv1(2SO};Z$_PNeNr@f}{fGt?J5>~(hQr}Ca+QB17-gYSb3TaVe;Emp zEqeMO5{^)f%>ACyKRQ}2eiPaFH?lX`LBhPYu694w|FB7kZ_TL-6v*R1eJDyr_$z_< zdY6jpPh1J}p({c7+a(3HSytwm^JuC9-=bUvPpeQL#8#zpT8;WrzdSe+j98qb7x7$E zeLZ5{wp-z|So|B0>?J=v#g@)BRpiT4w0iz&H2+*$Y_K1#STcmT39aH6k|OD$*X`{g zyAk8`VLa{NG2Xq0Ut=Lce}Te&FTqZ;6ES@N3)M)y5n&tcSm;Fsb?Alsr5d1S&<~Pw zbwu|~V9JlP(s>CZ17a8>1Rox-XE-s>imCpbxJlrdzg>c(T*Gs@*=sFCatz&h$@7{P<>VbH~FjyfNV)p@?duT+9S}UUWSADmqOBRv(4eu@WsIro_jG?2< zz+ETBMvtl(UA`sPj+_t8#TwLCzTm>yu5^3M2+9tgQEHcOiA;@)k{RXIB^ucNui`OY)C?}pYBwDy5WgZ8tIaaIHZwnJ0TupwTQ~aO*uv#1Q=U3;?rZf4y{#d$Qcm%LcF2#_I}Dm) zttbqv$X6)s<}FI3Kolb`kPH-U?Minj9?dvG&V12nCt_G8w1sJ<23aHb@K`b%%PdNF zx3@qA91x2wOc)uE!1R_T!6F4UV#~74?U_ZuPPDf}j#wRxI$V)7GJ+;c?QN` z6o-&Y)5;NGczigfA~p-=UxIl!@5ILjYt5R}B$53~R*qs0rTVRVL83i8ZUu85k62 zUU`2;TZOk6yKuZU8^ff0{P36_F%FMm!o>*XpdXu_XonN9FDMnY!oJg*(!-`TZ(4D2 z#W|BY72}KCg5DWhd8$5gnJF|dV4I*U*lXai*o-r-rvy*L(VH_j=8M8t`12NV0xOy6 z?&K=QPJzQTz~Rc!l2*!N-;Qn#T~F%gts(NsVd5qENqtA zRBXRkrmI;=z(O~%ZpsEtX?6S}wtsBD@>ooHg3({&?9sWjWiN&#TR~%w7xK=03LB~iG`g6yMWn!rfTsjijE zKH6lTDMmLY$DYmxP|{nWS-SmW3Cw%75%LiC&}FwbPRYdv2KKZ0W6D7L`&Jsr z&SeeD=4e%?3{wN5lCY%{N|YQ9xdotk^FfQiOnVuYN@!CuMGIsLNT7~CVkVg{g7Jzy zVx~Z_d=lGlQmkqJ5I0+VY`xydY>PiaLfbgkk@9SXyx2faXO*af2C=Uh$rAf?$J=8g z+7qd^?4sD1fcSuliUF#a^NPAR!s6gb2CtMfSrfs@!=|XHh;?^{jS)6|uD{qikW1kI z(w0#tf07 zHV}XTKCa?b0GZQk>!wA~YwM=YDn#2Sx~1PeEsAF`V!~)Em5Gh!mY2I>+hAs53$fm^ z7+nSTze|&7wMLn?zBW_EAaDV))j-!bliO4tn5RoMw4*E*tgbo6Mzdj+RZYSu*4P)0 zhaxS!Mvk}IxdC6gD8X{X;ur_utt1|`Y+W~J#*D4GkHZ;-TqS&*QQP?%jh4tY=Id6+M=AGXHdbiufSiCZ0(7fWz7lQ|G{Kx>~2bE05_DOJ`tm1 zd?giqF&|^yLp}L*AMdyD`*bL&foA;A28`9?6TLGUl~=Qz1H&YO%E6#5_OJ!VzOYvS z1RZurP7QlIl9e+J7^ry+FhG+yX%gPJOk;7mHLW1ZyLoVxfUEETkqwZEVG!NPBcXO2 zZoqIEBLW_-|DX20F1E7kI`7tU(wJ~-*-ewUb)2I+OeI<3@BC9UQb#jGiT2Ep9dcwj z)bxf!UUIHPUf%GM($E974T}B*=|c+?2-?O85FiEm_t1wHC<-_)ar;&jMbj32icz30 z(4uGzzqxVyeQU3^|IRu09&*O24D?DIUY@h}+H0@1_S$Q&z4qFAz!UQ_IEwhjL#{r+ zNzT&)T4GqQe6Vq>OzAK(0{%pV6&)9kIiMq&0T>+7#X46o+5jHGWbgL5yb{V#HR0hR zSWEX@(VirbNmo^{FEL6xD`>Nz)fKTV+Sk}USi5`0{wAzzb_zIBQc+g$j4Mrt;VgYw zlsMMoTh=B0TYFW9i!(JB7OwXW7ZwZz$vUZjG{;RVIJ^?_0)4`w&>dp$=GNv?2miczW5q3;D`6nK2uC&ETSAuiA$-#n zeRXtZL*wYJusUw>F?19!vjsR^?|7_Ad@;P~b)XLbS;i``f)jEHE)Bfl`XDTKkk%P_ zNpVPn=c2I4z|s+l+c^SP_l6++Tig1=9*O@IgmPsLIsQ z;U*ebOHLiiur~w3SBXuuqX8Zlll~pP=-@WReo(-s5XEk@)4GSR%9e(o3@JMq{_~-p0O=(&mjWcK2cQ@DX75?!n6HZQ+{` zF}4@WP}LBm~zS)ueT&{){99gm;j#ySeY7w{AqDnpaVi?G7y8Z&CrI2on8c* zz3dzBG#}K}$)i>!{EsZMYlud|5@0Zr1`vNj19tdk=s5Ept zW6+mMUx3%@_IRvwS`f43}LbU>>@OTeol9PiBr2cLM4wM!_fr)kLp@jW#aG=`I(eACLYpz zn5x@wBf(f(FRCc8u<%GWR2LT9oVu{Egrgbg6ta2Wa8v}^kq8EWu#_pn;la2Tz;Re4 zOIZ_6;-nEbuS5_ZgGB+pQ9wmBAG*j(IVgA_s919659lieA-CXC7dbciTiidm2|pYQ z-Gt-qanS*3JAU@*FaXI`0nwB;>0VTiW}U)PNC3-G#g!6z;;PHpXVFW~Vc5H8OGBJm zbp9!OM2|K~`LzW}4RGM1*3lD&=)|696AL-v!reDi&Q+6S^&Dxc0XB+la}>9cB5tR9 z0LT2c?Mg&y5GB=cy1m2xDW!-*@(P2o{rKY6`T0xdF3nEO&0W4Qb?(C1^HUoSHZD(H zID7frxeMKM8yn{@e<&(QWXcWnXqd0Srj|{hpfx7*R%8%2(z;1alC(nmhJk_7Vgf>L zlZrMzqQQ~8_q^lMty)hc<)Mxvec{*y>G9ekDO^&=#z5UjAPTZ^061am?c8OobZs0Ux!vno~SO>v7Ef}6d@d}P3c}~+r%>&wMM{zTShM`qX0(H zX)KYvl|7b3zGOzB@cd*1DpA0!>ZpfqT-DPhwA~9|m8_y8BgqT}Y;Q@oZ@Ad|*0+GJdo#*cJC2Juj8ue)8G zSj5Dj|4<6rd>g;!aPu?}Af@i>YZ{si=yGme&VhX5w><-0#H)!NQEI0?x0M4`U;=gb z28YMq=NXml(_>}eu_s;${bfRPO}iFQYm-SJhOj-w88l75DLv6FDLZ#=ua*0}@V*kN za!@uji6vZOe5~AzwnGU5+wMpsxUW05vJc3Z0aw{OpmE9o1|Ig4xs?m}n^bqo*IVe- zB6kEIr!7aONb#I{&wE30qPHhw9Niv>jdNv(*OSgUC<&nG3?pMUB1-aa7_c$CciK(| zP;f|c*Ozt&>7j1IIx`%$K2(%O7a)H`Qo%(H^4N7;j_#COua_Ly5wa>Gyd zWpPj?;*~TNHe;WFrRdUT!Q>0~kcwWyKXSgX`J;g&$|-pyI|z}9AR45^g;$au%HA?p zb=Y4f3b1pJ298lmD4CILM}$4dx&mup)LDZ z@v1O##B#_V4Y02+0UCrQ+5?fej9VaJYFlo{3%liXL$`+A%3`4hj@@Dhq|nW&j3T7C z?R*s5a9A)L1tTHuF}C!vm*Jda)2vWAQnV)`V(DPXCUI_K`xceNoPHMhzD#BDq$rioKqeRpw72md z<_;2&)H{T2t28P0U@9{F2#mla;3!GVbF?rnJI~&85KcE zyC*VDl4X+;9jnEvSBL~=`$kD|lA`bmSG+hxb{X{HR=?IUbuO*xGc<%lkLNDTUc7Mm z+@-Vgm*+2BJgbxg1bj02$a@(}ih6_|bT>B;zQbTF3>+$93=6Z-Gi5TOfk*@uure&b zVkhwlRz{$-zRKzE6dGTuT*h=PDVWV&oVk?&e}G{s9u<=s6+&dH8g?@&j2Rhe^SCA1 zWW+neLiAixKmZfZ%FgBU7lo3d$Nux&tB*sn2TrbJI=hZwc-+TR>>>0C?Yn+qkJNk{ zK|+DwDf$vQC%3SPqf9G=@<|ub5X@%7Fe=M#d&aRlxmzeITTGhw39y0*Ua_*ahHMyQ zg58varFqHq322tY$3QO96jN8old^`e3{)k1Qo=>djA<`gM@kAjF2bqqf?wKqDyMJM zeg%yU+87$M*jR!DLZ3m_qyF=;uzHIcTh9mGmy1o6X|ZTbrlEf*Nr;Ek?Wtog?ws}| z$A*zIc(D`Rp#7=ktc%_)Y){jmJ>l?kP!*`bd>YJ70iS^DX+`JMt6+ax4DiRufh*sb zd>;pi$h%l88dNukkk<*lu|(WiUh`5~R>}cjy*Pw2m19~Fs`Op>s^G0SGyH?nK2mry zhR4n55LoNyW#2+AiB~sq3T*QsT0kW3;jxXBr$Fl($n``g4w7Ydu?vi7NDTzqQG9xYWzfiON(dz5AmfO-lxC?0as<181GW$8MR)aU<}w8^0U}jk^}}+ zS)*HWvhhib(Woa;NJYY2?M^Lg8!N~Xd#lx%!F!7AB}nc`H5g)f>(qEsHy>v9d<>Tj z-U&DzR9(eT(`HND5XY-{u-t5g-F3#kVv*t^3E*NHaMqI>^F7^Db2W}6_dPhHeTA}tZAL|W5$4pEEGeNNy<1HvA=4}IKi;)epOC8 zgixd%^(YOr1)Mr{axB|D&Nt`SWgdQM!y5t~{n7v-3 zOVA@8WD7l_;$|LO0gayV@3?C$E$>_;gLIGOqcN#MAD;RS2rza)zMunArYHX@+bxiS zAdTPBNDQ?^N`a7xwI4v)Xd+3|#$wPi_T2yzpgVW}vhE%?F55~%4 zcS6339Kh!-JI>K&j6aj174GvSV>qed>q>iI1^;^a!@ zEZ?1<2BLw%s2dRX6XCZSCO)jKl@YLQEeL-W(}*{|M7XsTiKWUo=xqT##|;Y*>pKL?c(7(zSBjNf$~(-)gtsX)o9xl(tIctJOW#AGK5kUn98h0Bm~9fW-IcnBnK6+S5yRQpoXDoGgnD3m~`N`w`K`d`fe1F zmlDRX?zD`1y=waXEjcMHaWex3tTVVJs*CFRAYorjEcnJQl8I6t`?57!ojv(+Efpq zs9?N}J!wxfwkg=6j!Y&ri_@*Y3gg=0D)nq5T!x|iQC*%5x%p9Bs-7HO5d&ILhHxf( z3d40bLAPjYKXG6S-y}PO=OrHaF=JdLIUFbXt%{R4Da2P`qx=e4Alj2wIdD(uDWRkTqJqg5`$&KaRJv7*(DYI zF#^Ltp2B8k-b#tHm2#nZ1*$>3Qo2M7eIV&xprinaVU8?IMP;(>S`=eoG6n}m^FWq> z)}ic*x_lt~ar*#{Uo?c!{s>oi{c@CAl#PJ^rbc7t%{hc^usmj`axKE%p`+56k~!5wiBao`(RLEd5yx6e0NpzV2}xik z#}W#|)08IGvOH=C1?w*=1t10YP=S(=8$skwX8fQuEg#l!O+-@!?8<(!=}gj#FfzQiUo*DWj_ik0S|?S30`+OfelTZP5SRGxY*Sqz^Rr#$+!b z0$@%=NG2Vk}tX)t#=9?J-d*PS%>#p_3(h-Xk!;+a*O%WWTfP{qlL0* zhKI7Pc#VcjNLImY6&sF~CnFFWQ8LFPFcm;2H<|2l1d_aH56OALZ z$re3z1{gYh&|RRNgTwh#B6jk}9R9F0pc1T&EKO5#fiRPsp$Pee;~v`y$Tr2cO_1z7 zNO1TNw}I_E6mmwv#4i)0kn{!^A4ip3ZaBt)yTK(Qp=-!6rj{hPUsp72^|*>VtD-Q3 zRfqVH$@rB?^(iDbuP&@*K&FXgFZ!_^m^&x;z$rIK5EtD>P|LbcR~l?=AQTE$qv zq1J_j+#euKpm1C)<)}~Zw6WcV<4b!RIH<%75r~hUeYu#!X{3W<-Va7JqYe@AVw&iQ z+=+G}<-PqSe^i@Ms5#a|LYZ-Tg>7!5$qrqI-b~@shg-Yuc!nX$he3}Rp3oxvn&=Oi z0v$wy^6}9m&gL+@^4v!t89qN$^#b^2hk7g`DHJInOWgDl1*rPc*%k%q&)o^(gAqDv z#aW3_6L=Rh6K1rux7s~i4k|1iu@P9*7RggtK#q~QTA02>lJ_9qzCIZgQf5M3qWFUsQg43y~qaDa> z2nT{@#Fk`-CV>Ttcu(+0(euG&Tv%1d@x|7|eRe@AuFylkQP#kdqt5@fncNrOk@qeWa^EcEJ>Kb4PIp!245G= z5|2})$VH*t>m>=+HY}wvz0*u~O}o0cbA-Xegw(S8gffRPfte*v7IZMokO^B3n<1K? zrvuS87eP3=r-yE-R1v&wOyzztUF8{qE}yM)`BDfR!Y=rB zeRK|)>}0rGS}0oh75dFEn6OdkcIxAHH0TBT3imHk#c`7X)g2a8Kb9LO#Nqn5hZR?g z@Eto%qs1_^g&mxJ!yPcqT9C6gSUfQ!J`UXg4W)HxiUfNoIg+24U|f4t(J2P6y>O3C z)d{xJJqR5zTJ?K|$Ki>QmH_lEbLN|PLX|k_oa|Z24;{Pw z;B>VdA!7k>BMpf~;qwGCoN?h9#!ad4`S5V%8~2vPDKhYnw=iz^caXn3BxHG!N8G_e zlt1FC|7+dh%pK-g=Lz>=cba*}xrQXL-jD}zklB!%O7Ak(;(4YueV*$nma*0`Mu)gW znuuXls5S-**h)i`7$P=4^{L@)hcUrVX)jzx^9a~hZ-^*5SsAljxBq_cV873sR$>r( z4R|9k*KZ@+Br=+0pcKEiWOHDO+NLWBY>2y2gzG}>5){`)!3(9()hjbg{a1+&a-m=6 z<{&Z*2LK9~EJF2Jp(@rxNLT-XQhY`$Vc~>>s6z)1YI(EZc{kjFP73_FBPQ|Q@858I zgxE*qv+qWSq%)71M_rphGBI0_g6};Ap-ni;igTCGPWmYbI0tkuXq)x7HR}^{BqFyC zn(Co1?cO8ksyfzbnFs86-hs_i8X(dEXSKJLN1U4q9 z?cxKZSJ>#sIm;3(gfR{{SlefDdJXn);Rvjm_qw~s3hLmfFUe_Te%iz&NP(8S2>6BY z)msC(oR&J0=XWyWh0Lh7uSNo#DRxkI1OM(LLA&FoKZWc`Bo{1l7+sc+f9_<&Nh!#d z5z>UD@CiunY`ovwp_K~vqG85?G#O-K(%NziBL9oYxE*-3<|#JCD?lE!g@8|die1sM za8|H$wpnHEv%dCmcbHV28&~z5uiD>FYR*SBftuU}@xUG8ccU^XJsFP(SJRt1+KaRZ zEEySrh#ld@6_1O@OmU4t>{8md+n@(iWT#Jqy&8olJJxs z0uSR}yd%3sX9@{7gmX)EfYu8XgX4=%C%HL<&9J#8q|Yjf&8=cxWFX!+i`$iKL9xdQ z)`Li)^~`n5LG+tSDViAV5us3l9T!Eu0x@(JkEnYOB^FO^RmGhyL31QrM)m>rO{>Nk z0oXzHROGF$<1XqffkT%4;y!Sth$QO^-7t{8gM^dWXp!eSlDP(Ee^t!lA!(^#rMM#q zA~BHkc$=nUGJ5Ogq2#!^qa@NEx?ADRpy!^f!CmF_8K_R&WI8DIkhnQ@0jW*;ZaD$i zDQ_C4FwdAW=2{8Gsz~(V#E5H{iu|^t4sm9hWSN?ARZJ(li3t__=O^(kxx|SR=6-)f zjpu7>*p;ogOla4gzQ}+)`(H2qk6WnBpVG})+H3_7AGc6{7nHjh>yv={NAMqSihHK@ zj9sdQzx?MJ`G$h&rCERY2e19@Nxb4u>C&tQnC16K{a9(_IF>o zf=2oC5`L;U(do!?daL6SgX($G4yaMpLjaM_3;KIOE)CN^>{p6}J>~DxC2EhD>*?Sy zV`Y4o*LhS+@U|*%Y$9!Twf;owCqaUrYW;NUXIh_c{V80e_J!8Z;>j0VKi4W+&$ZgE zGmzk)Z~d9p^Q{+9=f&2SAXG26rtp0lH$KinD(72gA(`iKso}-erPk%v0^Yp>qF!yi z+Ip?^XIt0MMgE;@h8WEw#Sf`U?KO)w+$p@3fX%E4T&kZfmu* z*1FevtM%2^+rpx+wSFNLu!twMToq{*JY)#q)F1 zv(ICxh?M7?>G0s*+Tzru=U;oZb;XJF6a(H6H1Fx z3Yggi8rWaxZoRs8gd<_I=L=j(Ew@Y+bMp(cv-rPQSzWs_lays;hd-T+ui}tPfB%F2 zm6_-nTAJ}qU3sv-bu3L1s~v2C4vO842i@JPZKq2MUfRlcf+L{wJ16iR?DJi1!_L61 z2UuK-YmPadv8GwYU)`&1Z5-ho*dx0t2JGq)Rz(NLZ84&*wx8RR0Vy$$&vlSfi!Y}i z9_}GHPqFYdR<{4&?H*RVm>CU0 zuDATU^E`TFGGLWu>fplF23rk_L#$Ry04rbCL1M6@GZo>?cXx7w*xJv^mvxYCba~Yi zcEO$690oAuHx9;?847}s?(`z@=GyIB)v^$R9#e7f5}=sk%B_bz?BDleX~+=5Gk0%7}X|l)HYpNPw&$-2Xl1uz2T_lKqhTY%BHP3 zSrg?{t*UPF>KPZ<_0^37E-}EwD%pHAJT#W8BjgrbvqtyMBP0nP&Y;k=eDgTjJ+#9@ zYXLmOu6uod_h_#_gl_BY!T|-wR#Kd}CHJ;*~nP6i@F%p{rHBBw&F z!PrQUQpK&5;+RM&1^GT5B4b9%2qaK5Lt=$@Yl~y!E~Fg!qnz9LWK2866<{gD1ehPY zBQRps3?&`7r^4hx?+`buHpYc3>8ow!kgJ;^^SS^$9a-`TpRI8W`4;`?d0A0NMc1Bs z(Xj`fjrJf=(VnE8iN}%}_?2Tj71=Lkw77mt!(dvvbI@NvMo@(wv>Q&%Bu|f%^SDij@lda=seqpB!-V!8+ekH z8VOOYGh1~Z7uVn}IL5wZFg#Gdw$w=2#3O)1(eTNzwNfZx(`a?)J=x-}7v9uDeKzV# zjf8h?>wTJjTWJ*m9HCcTY9!!W*dDqicfxr@4BZHDMX8ZcSNtIilUfvap9pGRN($7| zbP?g6yMB&0c=9^}8kfR51D9EMre0G0Xe5XxSHs`w$8^*^;N)yJ*1<-9=p@~vCF@h-_P7$%iP20lC*Dz!i!BMn@ z<`xQP6Gp`GR0>~=UcMT(Ve1KRrREokU}Xki`L`T6qmsu1Kf8dynC<7`L5Rh4$w~AZ)JH1U~U`C}J__;>F&u73hpw^2V`1wY_FMurBg3AELzjNRh8Ueou z%vWxYBYBDD7aIY;v`}Cp8c}s7x-q`tdye^~M!+vG6xXM{B z`J#4A33@z8Gi^2)y_UC5R822Z)t1xQ;>7CJXtWzHEH?5mg$bkl&IYvC$mO|57Du?Y zDyD-c1HMR+tv`ui;eHrI?VQmP4)la(Ya4BQmM zYmFVgn34qJOdNVR*PoiZxRIj5;`QJlA5{U9%`qGV; zN+OMEy%7VakNUzt=t3O^_w<3sWV|Rn6-0Ipf|Q#{@7BSlUQdC@DRjg1)-HBXl^EBC z$NfzlUB!OR5LP-PpFd)3Hh16a;CPS6$SklO%4>66s#H}o;^=?^kFx=Fh`3HpbtUyA zaGyjqJsQxeiapRNs@Cl)>qM$5_g3~1p5lpA9#L0j-2VKPnFEPuaj^rhW?@9Xx%|18 z{t)pE{5e6Kii-(wfg>SMsPzfNF@53_|3^On=_7dtV?#zhivW#hYePo9h#-=xkdYTr z$3jM?@x3l&Cf%OpTgZ2LO!&!Y!!rcQWY%JM;U>uPdO=OjXn}8w_^=KcRi+MZWh9AVSNXCIQe`BG zL8^RN2dNxPVqnT|9E|2+Cdu5JsOBsVDGoXb+{f&J$RSKw!*Ky8RVy->Zs~O34Pd`t zTp3~#+NbdsJG*mlr;_7ogqQe6Kcdi*xV^B=@+?e$vsw5dn zPZCt(*i-femS@DOi6;tZOV=Dh6aGj`h8 z=pKlE!VR>V{fmz(1jOsDrxgBS^nkC?MTRumK2AbBauD$zad|yw4TV6Cy#ABMYUJ=v z8=jHFIdvpP4(NnY7kTwl##Q8Co?-+=4*JRCCvu3V51J@JdYS4pDcL6YX6Yp7QE_Dw(6>P=<3{YJ~E+X zhikqmG=Za z{Q7;tO3a;0rylQg793B))5I%OA~v3+%}`TvV(5g#0wVRLZB@WKA@OALZ%VszutH$$ zU__uoC3Q~J@>s4l2vYbcuoxeqa2hO5s05mZCwvsBG>T2AL}dKvX+{s^Qao$T@F+|)jY^0cOvdm4r>089^tVaI0W zAr6BfpG$P6$`Ds{^7H-`HEIvSH7Q%u3}No|Tsi<`G-vb}lI(4|v&UO%$*31c1n+f@r>9M#?8dUa3X$mM-P?f&sR1M@<(suf)Lb((7fM6 znAjA2dD-8$lfPGx5vsd2b?16o%qbH8_$$wRasvG-e_W!bh`|*!AIrF(0o+8OmJpx3 zvU`O5c^RQ&1b%Krt+7phF|UmD4otx3Ga_aU|Neja!QWt95PyDtY+Y@BY4v93t($jO zmzM8zZe3el>#SaT>*kHlSC`h_oS2)Po&%qTw|hvgLT}|7RO(l{#}i24$LrsS4Eb0~ z`RB%Afw0A_6R6=o%-xjGJSPCFk0s-0b1188H%ByDQU@%KZLO@zU;VegbKzHzc#1zI zbzoH#w`iD5%skxR>(0EpKYVz!F{3mb&TJ2MHfE4XamJ-4otvGTc>uveHkFy9{s#x* zxFQn86q84ffT39#XQJ$ksM9|j9v<^HB~+g3ZTAa5(@hJ|{p8W`@KG_f%_Fg!yItg~ zrVK2~AtiTaX@Ygu1!GTP|hTMkyNTQS)9GkOm>wDWDeg|msr=-{`YAe>Un!A4Y=Cw7`ahIp( zdq6RMU!w+Z;r;^}eK&dsqeiifKmc8S{mZLs%XhtkotT?GOLE*@{_@T1YaPLZdUtK< z_RZC`YqwV>?%i3sv$VE!?bgyS+`NIJe$rAE4G0{KcW8&)_zK9zp}tx>?|EF!8yxlZOG>q} zz8Ea^KwJ*bNZZr{foYKO1s(98^Z1rX+Gs$*e5%Lo@@YZRBC7{`^+~|e(5nai#*=~$ zHe`Jx%tm`EN|z1Qim?XZ{!`NU58-1TT*wIU?eA^;wc4pjYcw05uJCC_DB>4$H^BEl z{p;VZRT@&h8B#3T0HxC61)iylP=DpS>wlBujXxzbmc^SPM33N;sjJq4eM1nfk?glvutY zN<92IUdNU!|Mwpbu*Avr{;%HX{l{9%->Ni2OiMSwtt4RYBX2_ma^JuIg>Tdfn6J|i zJ8hx?dL`0X4)#=8K=1ocY0+d=6uJ7EC9MR%P$oH_|7U;e`?Xq$#hXz8C2KnW7ys!u zfB!F`FZ}tV_|YuhH4XxAkjL(XN-st14=MXg;b%7 literal 0 HcmV?d00001 diff --git a/GBZ80Core.v b/GBZ80Core.v new file mode 100644 index 0000000..9bc60a8 --- /dev/null +++ b/GBZ80Core.v @@ -0,0 +1,169 @@ +`define REG_A 0 +`define REG_B 1 +`define REG_C 2 +`define REG_D 3 +`define REG_E 4 +`define REG_F 5 +`define REG_H 6 +`define REG_L 7 +`define REG_SPH 8 +`define REG_SPL 9 +`define REG_PCH 10 +`define REG_PCL 11 + +`define FLAG_Z 8'b10000000 +`define FLAG_N 8'b01000000 +`define FLAG_H 8'b00100000 +`define FLAG_C 8'b00010000 + +`define STATE_FETCH 2'h0 +`define STATE_DECODE 2'h1 +`define STATE_EXECUTE 2'h2 +`define STATE_WRITEBACK 2'h3 + +`define INSN_LD_reg_imm8 8'b00xxx110 +`define INSN_imm8_reg_A 3'b111 +`define INSN_imm8_reg_B 3'b000 +`define INSN_imm8_reg_C 3'b001 +`define INSN_imm8_reg_D 3'b010 +`define INSN_imm8_reg_E 3'b011 +`define INSN_imm8_reg_H 3'b100 +`define INSN_imm8_reg_L 3'b101 +`define INSN_imm8_reg_dHL 3'b110 + +module GBZ80Core( + input clk, + output reg [15:0] busaddress, /* BUS_* is latched on STATE_FETCH. */ + inout [7:0] busdata, + output reg buswr, output reg busrd); + + reg [1:0] state = 0; /* State within this bus cycle (see STATE_*). */ + reg [2:0] cycle = 0; /* Cycle for instructions. */ + + reg [7:0] registers[11:0]; + + reg [15:0] address; /* Address for the next bus operation. */ + + reg [7:0] opcode; /* Opcode from the current machine cycle. */ + + reg [7:0] rdata, wdata; /* Read data from this bus cycle, or write data for the next. */ + reg rd = 1, wr = 0, newcycle = 1; + + reg [7:0] buswdata; + assign busdata = buswr ? buswdata : 8'bzzzzzzzz; + + initial begin + registers[ 0] = 0; + registers[ 1] = 0; + registers[ 2] = 0; + registers[ 3] = 0; + registers[ 4] = 0; + registers[ 5] = 0; + registers[ 6] = 0; + registers[ 7] = 0; + registers[ 8] = 0; + registers[ 9] = 0; + registers[10] = 0; + registers[11] = 0; + end + + always @(posedge clk) + case (state) + `STATE_FETCH: begin + if (wr) + buswdata <= wdata; + if (newcycle) + busaddress <= {registers[`REG_PCH], registers[`REG_PCL]}; + else + busaddress <= address; + buswr <= wr; + busrd <= rd; + state <= `STATE_DECODE; + end + `STATE_DECODE: begin + if (newcycle) begin + opcode <= busdata; + rdata <= busdata; + cycle <= 0; + end else + if (rd) rdata <= busdata; + buswr <= 0; + busrd <= 0; + state <= `STATE_EXECUTE; + end + `STATE_EXECUTE: begin +`define EXEC_INC_PC \ + {registers[`REG_PCH], registers[`REG_PCL]} <= {registers[`REG_PCH], registers[`REG_PCL]} + 1 +`define EXEC_NEXTADDR_PCINC \ + address <= {registers[`REG_PCH], registers[`REG_PCL]} + 1 +`define EXEC_NEWCYCLE \ + newcycle <= 1; rd <= 1; wr <= 0 + casex (opcode) + `INSN_LD_reg_imm8: begin + case (cycle) + 0: begin + `EXEC_INC_PC; + `EXEC_NEXTADDR_PCINC; + newcycle <= 0; + rd <= 1; + end + 1: begin + `EXEC_INC_PC; + if (opcode[5:3] == `INSN_imm8_reg_dHL) begin + address <= {registers[`REG_H], registers[`REG_L]}; + wdata <= rdata; + rd <= 0; + wr <= 1; + end else begin + `EXEC_NEWCYCLE; + end + end + 2: begin + `EXEC_NEWCYCLE; + end + endcase + end + endcase + state <= `STATE_WRITEBACK; + end + `STATE_WRITEBACK: begin + casex (opcode) + `INSN_LD_reg_imm8: + case (cycle) + 0: cycle <= 1; + 1: case (opcode[5:3]) + `INSN_imm8_reg_A: begin registers[`REG_A] <= rdata; cycle <= 0; end + `INSN_imm8_reg_B: begin registers[`REG_B] <= rdata; cycle <= 0; end + `INSN_imm8_reg_C: begin registers[`REG_C] <= rdata; cycle <= 0; end + `INSN_imm8_reg_D: begin registers[`REG_D] <= rdata; cycle <= 0; end + `INSN_imm8_reg_E: begin registers[`REG_E] <= rdata; cycle <= 0; end + `INSN_imm8_reg_H: begin registers[`REG_H] <= rdata; cycle <= 0; end + `INSN_imm8_reg_L: begin registers[`REG_L] <= rdata; cycle <= 0; end + `INSN_imm8_reg_dHL: cycle <= 2; + endcase + 2: cycle <= 0; + endcase + endcase + state <= `STATE_FETCH; + end + endcase +endmodule + +`timescale 1ns / 1ps +module TestBench(); + reg clk = 0; + wire [15:0] addr; + wire [7:0] data; + wire wr, rd; + reg [7:0] rom [2047:0]; + + initial $readmemh("rom.hex", rom); + always #10 clk <= ~clk; + GBZ80Core core( + .clk(clk), + .busaddress(addr), + .busdata(data), + .buswr(wr), + .busrd(rd)); + assign data = rd ? rom[addr] : 8'bzzzzzzzz; +endmodule diff --git a/rom.hex b/rom.hex new file mode 100644 index 0000000..61c700d --- /dev/null +++ b/rom.hex @@ -0,0 +1,12 @@ +// LD (HL), 05h +36 +05 +// LD H, 12h +26 +12 +// LD L, 34h +2E +34 +// LD (HL), 56h +36 +56 -- 2.43.0