From 802a36162a7a5452ad1b276399087df11b46ccd1 Mon Sep 17 00:00:00 2001 From: "henryk@ploetzli.ch" Date: Fri, 28 Aug 2009 21:54:47 +0000 Subject: [PATCH] New FPGA code for bidirectional LF emulation --- fpga/fpga.bit | Bin 42172 -> 42172 bytes fpga/fpga.v | 2 +- fpga/lo_simulate.v | 53 +++++++++++++++++++++++++++++++++++++++++---- 3 files changed, 50 insertions(+), 5 deletions(-) diff --git a/fpga/fpga.bit b/fpga/fpga.bit index d3a418089f1e52de233b83eec20819cbef352b10..503f041fb85c92101a5a0ae945b9d228b73ee4d0 100644 GIT binary patch literal 42172 zcma&P4}4VBxi0+fwRhsq>`7)5f+tnMok_p}C&@4%B8JJzpL(Z2CH3~+k8@6M?})Ue zJ=l|a`khOAdfSzm026{TVrtRSo*||-TIv}BV)#?siK!hBb>!Hds2n?TqK%3gDQW@% z?z3i+ne_L4=lgx>udDsqiw|3{?UP3G5Izj1eU>!!Q!`Pzn> zZ{M?l)|12k4@-Ri_?^W*AKgQS-{-rn)>>ZcUrrmS$iHO8(%V)n_R-gfdRnjI=gCL@ z+t+<06e7CDr-bC6x=*nb67|(SvgN~Vr**`?)7p4E%ujS`jJoDTC?{h@<9G>~(|NS3YLVkY5q!5); zAt?d}>*%kjfT)HH!Q#{#7_#I!cENf2$Xe1+JleF3Ce0<}OsS=GM%2H(BdPkRRh}cv zGxmSea2ZL>36YdiWKmgbY^L<%4Ulj7TclqS#i=$M~V4Rhc|Uy zg1MEv*IyC1jz5lxZo5oY><21<^$DC=y zNpHjg_MLTxsb#K{R*q>`#lLV@y5YMtsnoZ*;_4;3N;lcAF?Ae6#Sb@o#h)7kWihW?t)gM_+s>ZKlxE3uk_9)@(LdmU#7pm?BbGZ{+{2!-Iw>;X>0{@yfbf$p z2=cyWZ?jRU{g(C$FV{`xR30L?t@zkDmKc64uvIBO66RO1ih=8BLrrc}{i zlb?GZRay4Cg!XkhOeNgtVng)Twwvo^tcso>e}f)VLuAV9lq(Bx&VqGCU2H_3O^Yxz!bU}2hWd-sbWsGXV!_fh z>|qY)U?fgsEq>+{l{IQ+-gnQvLK6-3Ev{j8(wq-tOFy%YuX3f-cM4nOb;=7y z=rYywJ7elnx}09JvG`G}!wHPbnKBBq^R?VeYyAk!a)D^-7jE)wQA0WcjiQ2;WXG-- z44M1M8*-RTGxvw$Un(-$4vf^pgXN568;H$bK3o^G+Y^uMYk5?_?-k9pi#+Qel`tk(TZFKdiBi4kdr zckWV8X5-6acGI{O(46gRnvd&#-6>Ry#+jei2*aUSa_k;$5giY?5_+6nq~pO#98fPE zA-8aBVB52E;VD>CzMp$No(1d$I$(QV)t9=Rbbu_osD`bYj;}fNG*v5lOE^W(kjM7; z*d82MNuxD9I&~d=9(~fbGUNdQsq$b-R#M!JVv|eP_TMPPq7xhg%;Y5R(1nDV^-Mug)mZv z{H{>hZ`<~3UZ3t^tHh&Nenr0U7sUa~vOl++MYHqXJExb%?LeQm*SMEX(h**ANS#kt z?Z<3yzq%;b?a@N?RovmsNzj~Hx(&{Ari0bVUu8tOF;>#{LO;^n& zcJW3`(??=S(mAXyr&E*xvaxCWI!i|z+!u^q1le|~wDl;{}t6!5+C;1f$aN{&!YeLiu*Y1WqepRh*^UE3B zU|-?^+Zk^=b6FyTPy=%d_!C$_l=%t>Qn733eSF6xAd8#?m+GkXeyl{Y^ZC%yl;E zy7e5;%H>nn;5O>Gw?I8b=S?4XRj8%e_~LVc%T)h-28Ach`p`9Y69#D254qmWS&^Xz5Ar7v8wBBKuuIN}Hois3oF^rVM^pRl!4Mt3Tn-1IV2ED8C?O2EHZ}D_B zrl;_$pi1db+}wyUoTFon#Q=8q^Z70MtL*uy_|mGBHjY}$WD*oCj(j*oTd0ELi4A7s ztG_r@loWlIOXAlU^;IE1r&*E?k<(T`%*NO5xv$c@Ht;K@0u=Q6by#d~Cnh!q{>Jri zWE#KbTu@#FegUnj0A%-Vbf(lQenRm#tcf)hX4fNJLz&)n4G&J7VQt z*Sc%2wI)Sk)Vom~XDM0|_l_HjvhfA{(vjzFmuY+;G6xBDltwAghKU<249V+I!4-Nr zCh<$XXnrP^40?m=G630!`)c&tE{r$34!>E`q+z&37se&m;V}ImdIiwt zd+`2t+JINOC=|di1d*>$=V5t{FVDaBiO#6I6|j}& zzXBE_7PYyl>Sns4)pOTGo`3D*CqgSqQER;&et`lhr(CPJPV9ka)EFKxev$>ndgn=Z zi_sqb6H;l-m_CX5dVr(eIEX@$%X88NP5!oK4;fze9I3X`M*(E9uw~gs9qZ4=m(@^6 zJ4Hp@2(r`GHc{IR3iG=5K&)bK(dKFV0{`Lzv^?mt)EDVFy^g%T$fy`3UkhSq7gjWW zfM4cSv)*>4XHPbx@DLKnEHE^)6jRO2KreO$qd_ex#j~o@KT(kjJmx{E!Cz z#Sy@WciU)Xk8a<}5kxKF9RK<`J>7QiTR^KfXB`k7X=6FtE*=*1)B2=4hhL|B2eeJ2 zNGUH`2gq~5@UbX8O71dG-QYvn_!^z_gmvXh^$&SNc=8wN_Snw2x|`mlTYH>6Y97C6 zoaT|Mod#$#zZMURr#0jaa)~^CAv~2tE3#-68=$^M1f#^SK3;;{lKn2BeS=URhV+=D ziaHQ75~Q>a;ch{^=kRMj9X8#Kdd!_U$Cl^FlN(uA9=|k{A{NKWbjBi7#SJq&(%oj^ z6Elxr>%kEH7GTRwNy|^J?P^-so&=SMJbrzkU*`2KwJG%zI?Qk9@}A?DJ@u=0?#kg; z!3DaiEa7robRycvUArT10}FgD_~bA6ms@y*17#t1lQG23vS@F&M}Kd79>22poI9FA8qXBsQH)D{Zz?~6dTfT&>a0z4!`ES!zYBl#kpI(3Ad3c z7$i3N*Ezd#{7dQ4C(OE_YnM6{{un@(nG1<%wXxYRP)M#-kGYqU%_~fx)yM1<%2JnY zSirA7(>bJ0^RI#xp{=~K+v8@VsC(UAMw~5Ti1)Z2Z=A-jg0(Ch^jP|Gc8W(#>s4a` zipdDY(hSg>KMX{s`K=%K{uNcCrx~sT> zmD^jbiXlwFQofZQYt|d`{Ob|P(RdMHOKGROseCi=tBv;3O#DjH{#LKAsGKSd@`hrIhDIsWyoga8epC+kBDFs`0MFb0Nj zki#!zevSp720eL+me`o4<$%ot!aJtg&6!#h{L4IQFY*e71GOP$SQWa*$4KmUgn#M25zdXPKM<%@k0!lTR=ebVP@kPZU+$yRa zp~_{0gBT954haR7ovjb!pBvMV{m9j#o}tg^HXC_1q^7vJJnO-tirkw*os~73k zxNE#=QcQ{^r%Jw=!!J4~wwvIUf-Ryagx@xHvyb>;QF+F-t2Ca?EzyEgT!35YrA*U^ zRf$d?mbE00$P(R326yaP`xut7jUjufS6d+S&pA3g3s_Lj5;^`wCr|jmY7LX_HpGD(hq?W2!%z_=9TYVG1!9=|rBly#2d$+I1g*}bGMEnGw4 zkavK5sFhpfoLb5}dRqK_s3^!B8@I*oj_coJU!|Xj>U7a?4!_9BLAz|-R5j|JwL6&W{#*HD6cZ77O&W#@eq`o@(gqM+B|(O#!R!j%S|UgUu` z$9rl{KSWqX0w&PP#x$)USKDlS5)9ByQa`lhGtBU>Y^q!Upa(8@H6gFYfYh2%U-9ycs&h^Wn@JEi4$$Z zFAtzT+@rp&f6N1+oh|q-B*sS9>6!ZBi{#_ZM&O9@asNgRnB z7QDPDmd7tVRngz#>?)nlUc-%fyTVoSp1Hm!k6-QdaeUbbU~7nF@GF7%lIH-?ruml{ z&!kFcyHOEN@&FaLtI&k;eAcw*^uq!V9ZxR^gKgc0lBQOm5E`|PD>cFu0yc3uU(gTf zK-xKoEMXwMdj&MKLF5fo?^YhaZs1GlUasHA%B+Xwby^EkbWpqZlo7%c%UlQiOME6) zp7kz=D%&nr#*5cIbXvP0>PFUlYX<+KOWLw^2Jp*?B2cV7q^9HJoTpF*Yx{r^_i@q^|<+Z9sZ%jPl3zn-DW z#-i5379Q6N!ul(XUqg7b}Kpjn#3q> z4>}X-A>~x;AHv9)uSegE*V)c=rPAz^bJ3=4(m|<0dV(!bdg*@&;~=}2wzt>V#c?$> zjbC0m8mi&t3HFOGJ*h7e#{R+)1+3o=O7$Q!7rN%e4B{LgYo|C>3Bz~C8YY=$k>zO2 z#upWAqCabhf-$3qdTEi6MFpKy>TOiQG>u=G?g`;mTV;9|F8Rj-svkg-$?>lXbR}GG zLBkJ#CfBE3<0y$=jxR|TpEsuXmut;Qzy1|71i6UIh%nr{=x{4@BM#!i<)Ewt1m3aUC$Vj-FTEBS!1 zIsBS?jNYMo%{8Eoa|}>GHXMh#3r04h|20DIQNVI$c!BU!F##_w`TWDqgX$E1CDH%d zirOz2VkWiIVgeCEqV_?kU$$#XKNJ+6^LTr82>h!Q@jlzih3*i_Cp5W4O~~_eK+92V&~0G-=%)bUmzo zy)d&@%fY`cXNMyt9lxCJrSzI5$E6l3nP&+7(3GJC*h(XTpr*Bv3M8W8lPUfcEEqx^ zg*k00d=>W$sWSx<`k)C-#$;;tI^}a72S=;r`YY@L{RaFCM68P1a8A^mfnU}H3#{|T zR0*|x+#9Q`!ZYl{{TNgIuZ>Di7Ok@9WMc47mTd3=(en6(N-tBBWPvO*xuXaXr)bLY zujS@;#VbI&5J=V00TFs{tgw_)rC zC@02V&Hq*&Y+GDmJN(l*Q|gD$1GYfB9;HulU~E+1q>ti>G3WPHHP{jVL8rwkw` z$hkmzk3+-1v@!6C>tIukf1Rff+m~3*pn4Y#2^73$42INPvh5zsN!UGQ7PwCPE*sl&?N-} zoYDU}7rLS>5j)asT=Fjg2ndMZNg~#2=*^k$658KuN2%KmCO|7dsj%XiD-86s^@PL2 zO?l6vz)MeNS7sVZbOB8zbFh*`;|%;dnu)l=Arw^5H)O&;fGZ1m*(clJ_%~!>_rM+Gm9Na18bQRms0X>Y0p?_%CB>y0BH=k6rL7zgiC2FsWXl z`^Bvm`0}UpM{#R<$HyRRnRA4Bj*eQu<*0kqdIEU^ymCbRO4I~_)amSV2LHkxqG}>` zE)4xp=)T6$_(N1PsQdH%uO2$8;1k5D2K`W=;2eEyp;iM~hK)_tEpyKCOH}t|XRmui z?+n$Eb3a3ktt?9;@a<{*Ixa`SU2kDre~j1P0nYd-yK4T`80KpR|9V09r)t`f+1@bw zhIT%!K0)tu6!!ab{V&B!JFDC&r@)HpjIFl;zN1 zi!hb{itD(1O+)nO2H6q2Cg1;}t7VW48}Q^mqZq`ymg8R|^g>yJmpIj` zI3(^OS6^h5-r#{T%=>%U`GS7~v;rwE6h^-QjWD&fahPq>s|SInr?byl`Zu=4Z%#Xc z;ky7f^EVlrVdU5RvWXj&vXn{JNO^F7&?u0go3}3yELBz${lA4xk^JwKMPwyZ}h#J))kg zI6+_C;5w#`u)j+N?41wJ&U?sfX^(h=6dzimryg>Ftw3-ao;f1^O7CkSYjU>l%s z)HG)J*ApaJ+YJ82+IR-h-bS3F=rU2j?9Ci(Z&WM{9sUh?PK2L!2sNZcfnP2$+s5js z6Hugc{Ob?;#{>0zZH#@G0V&+Zr^;(ovZ`cPEA%_m;;4}bnq{}TJkS>02j)jl8Mvu z|JEbWy_M8#gm>`nRmLuuJvth`)r_$}pPdWo-#AQt-*rBW`$5C81;3gfdd>D@6zZs! z8M}vi0LOul>k)}@0tYdf7qbE|YJ`zSt&{nY{Hu>!Ek(Z4b9%z`q>(dEvBwDPSiw0{@pS|K zdZk??`%MS6yG_upGqjE0Ya6XBnT;=xJ}>@h`(mqj9boH1c>22guKXpZ?FBe#i^1SeL~CsE$ons4iZA!8JPj>V}tN zKYH8sZbK?NU%jXgkD0e@1rnXXja8Q!A#ujuW>(wAci9a7b&x7kMJ?=%)n!$G1K@k6 za2q;exOqGK3`1q7ct)Wz*-KWY_`iXjqR4pwy^p0dQ{J@XUl$c??EXiQpUbIc%;lj; zWF$PFn0hulry2gmfmSi#@;DEC&UG+y4xX;StH_5l_}3M{miKk!%t?t~W3!IYN3kWs znab;jnok6)?Xc`S>~`1C z(e@1g8WkvjlgK1iHol?-BVs!(N<*@EK*L<54PWUg3yvwf$X9qzHoojRPnzK<^o<7{ zQr4)kjl><&FX6@C+Um>B1)uYde$qZ-L+0(3HIl%%&fRcT1V)RGsV&p^6$gGDL@Jp5 z-3$@C(MF%>s(GUvX%4@hqTwjY-3Jkam#jb#rM}dJSBR3QaUDypjbuRyb@Fbm{|sg7 zkz@^DE!ex}kvN|7T-KM3i*!M=0RI}6c|-Ks-q!1hy~KfEw&R98eqGCVh{}+jWPd}? zi0ZiUgT~kC*>FWXI?STk>jd>;I=vXWD5)9#6^4=H6#bcw*d^u+{{}3e&o-l!?biX& za+=0bfq;L#qQ(kC@}7H<520+^J7UHIm~NyLJRf*+Fw))A{3|#sLG4O4_i%?Pi5M9i znDPvv_G@wE{2TvV&?9Q%o+R5vzZBILns;wfUt49mBgk_6>qAZ8jy;m2byKy5bCO!0 zY3=%ES$GEj`Y;%PTSM)w0x^uco>WKaQ+vsQ;*rWc|MHFUdY|jJz-3rlO;=JTJ@_|D zX5iO5;zUs$FWIA3(FEqph$)YY2{<}1gVX&l`nm>4TIVV2gpkNG$*o*1O&g{O%R5kjR|a>ssDCPKmDiE{>jW+1E)%pXQyZt0 z5qePsctJ|NBadIu-X&UD05S*^Hiq*gp$HT+^usy#)BFZQ_P-1xVu8qSG8_Vg3 zb9&mg5hPPo9B^yZN^BYenrF@_oWieJZ)+#Q%htJWIIuuu?q^Q~l>-law|bWv%Ep&R z*~%~l-1SJ)I~?b1xN#ReLK8F(KnDB@$#F^iIzzXUYY15a+79qt?RJjy6{ffSxg7sm zLEEVt{0mFs2ra-t>63KC?G}0njRc;#PQe%Mjs>6CWi)qlLc^%^ddqPNOw(iQv-0|3 zIsIJ9;5Pd*9n|Nu&dmUY1MO%$jj`VBb$ay`^m}nz+!ZwLq6=cB1tRvQ^_jT+ER2YY znEa}Y|L}dp&f0{EoIuNL#9)sA8y&vUcTJ9ey-EL$eCQmu{2ci(?HYxV<9~@;)Bj^! z&GE0@);6>US-qcLM(!vyfy4ofq@|jj!vS4Q|_G zvI;uFWqxL96Z*5=d$2J+jb96(T_8j5M|~)B`1Nu2o^{xShx{N`FV8$@ZGqVdwxuUv zq?e@Tr#^<7A3OzB<&?fb#TyV8_t{`28)TlhVH8i}049w@o_}3H8GpMd=ExhFH8zHW z%d~O;L@cKto~Jv-EqbAin&g7Sui@GE={Nu*V>$lyAw`9|Oz$tPq2=v0meKF-*7`xj z9ML@g8boDPrFalOB;{+w4vbP7R1quBzaD4kw#PltSGB`R%`3)!_@fSoYRVn)@D%^z zbKaw5a+%LrrEa1LbDoL(>wM0rn##skS~+HBreI9HK$D_A>>8hak+9eZc|M0< zak{AbWA`W2N)R8|4y7i1DFl3P$8{|EoRbBbI3Q4O^fy*P&veI(#f=|sIBL5^aV&g3 zI~U+z)E9HNFD!IuW|%zGS-@;F(bChVm$UI~y&?NwhfoAR7bMgPwUh8(;8mV7{IeYg<8+pS|POH2Pl` zp&#C6! z>L{mNkgfXCyncAZ`cy|1_wCuE;=Nel7p`>E&EjIbeyj6|y#EkxLw>vvDegaL+=MvX z9(l`>LZYi(&G`@CVUmB9>{h)p&u?^rM9AF2y}NVxrQN|hVpd3h1ocLy{`na@ClFt) z`Z1QnFX)H5JM^stNOh!65UqWRU@K#`E|kwZY%Cx?VLvPbk3GwxE`np!x=&)wKT*_;r~Uw?t!2W%L~k zaJ#9Flr7W(T#NlB|AJdX;@1(WA3~rYkUjxVSDt_2R#8Km2&*S(Jzr(A5o%L_P4b?z zSUE>>D|dsZi^0S~XBz-*Bda=i$&lkgn&w|~U|qQ253PwA3+SzsFIe)>?BD4pcwMV= zcg1KnzC6m~9JK2WmoI`T5X-*gO5B41vOwCkdnSINY*ruz$0^ym0z%VlOCMJPrZb%5 zUj-}Z&~Qae?`F&S_91t#(W8D#9BHYE7ROPCbGe>91x;3;uu_Yv*p@pY9Cfc0)3C;d z^;>XGi##W;m=?H<9kkgz+DY^6)td^x0%4)n2D=%}UZ+>T7P4VQx+JJROxwiD(Ass8 zdDdr9boMtt_g*%>q<{WAJ!{`w*aZEsXvI3$A*cXQdxo)7ActS)kx44|MekLA$S*&5 z;|26nmhr2iHh~zlv-L*rtQZ}#ZfW=2(|E(s)4u9d+(gb zhR#>`yLUL%ubCJ5vR>)eGO-{zfNYBE!9PzILxC8g>70$Suq{i(bet1z3Q^`diaBP2 zeX{Tf*8T^t!b`0SAvYo>(=bqlK-&PD=IfB@6!sv`mBX!lKaVNwwnQhkA40Qr2Y*iYiDEO4Uq90(wUyjuvlzWfw_$+l z4}!A)Rq|RMziiYkD+Hd8O~bfn7pYYW{78}k<@_66)Lx+2pj~I^cW4i9>0+JV*!Tv8l!WWiGvq?Ok#l@$>Gf;i;yzaj*xct?spx71-!B zXyo)m?Cs+99O>d6dPOe3-8je?&hbfMtGrIO{{`Dd3wY%TmKorJ_80g1Lpz4my#J8; zsawh5SElV1M*$pd=`NeQrF5$Qr58Le@r%QoA#Wa(QyMwiw9G+x8o!=G+QB(eDQy#0 zD@v@Y?Hw%h$<`_UH3vu(_1)o(sq@8&5R8ajOK@X&@}8K{JB?pGW=226T(Ai`&TC`F zhxqn78zWssAvrGaFFwu#(%)M_2rD#bDv2i*KWQ|>e~1kE_x+F!JtW&+dffOsG=tnx zYy@*;=fYF4);h2kB}BEuSs2mcvPI%_3)6bbV>agehd1cY=<_+sup0z~@l*PrOW~n{ zp5R%U_itQFpNVSAwOOr?zZ?dE`o4Od^}O%_zw-W#9{4v~#qdj<4ACZ8EAo-_jVQXBeTo7EiulJ#M=tz%19gcBl>QB5^%Q&#=wdfouYBR)`izky4VdH!{`EDI%!?tpA)$+k`f+n#pIWNuCIFU7-;(zlaF zlx;%I-z|TI%}{OK16XxA{-tGT7tYDbhULDT5z#RfUsSwNR)aS3*blUq>45DVQ!U&N zbfm;hG>u=NCsKXls`MYOv@`z0D>(R{sT_V4d`gqC#TCv|O)Jf-Vu>hDR-V^k9JSFA z%ki&ws9#}(yipyFdT-tZsdGJT7nP^b2uo+{gy`poVD%@5zKb~r4_Ka95f!GD?PLuG z%^Ca)^X0a1j<@ZJ&?2E9D*YPY?ugqMdyao$3q#OvA#2sLOW_sbi#w2=Pbz-f+aAgD zFF7v0bNuF05HSKm%7)io8GwHy-IT+xU*q|}-jD#kzrpL;z3q_qFY>+tFxHfoSwG2w zDzjfhbRWTU?x5O(y}R5WSbeDUoc%n9UqM9f0#QWF$vPN-OfUQ$&av!o>UsQ{r>zX% zYCx~8vk#5#ZXeW!OkRFUt0Q9C_G zo)*Uq^vkk}J)VDL!*obrnDX40?|&VmgJPkjpIIGZJuQlRQAeHc=o4#toAUiH zJ*i#GpcYCBvm)c)pm7VCq%DtM?}$r9{*BJq?5_)iCz3Es&M%OU1ITjv;RYT2qE+vj z{SE5i%UV3YVW+g$WL7`Oa{SAS`RY!=N?PUX;Oko);2@Y>H{UqZKdi-x*M&Q&$J1#vb7*K zTMARhTP30uPT|)%Z9>B+x`1DYd0z{L19v(G2n3mdUkTy%c(&{A(x`aMT9gqIl|=+Z zdqDHaT!;P_?bjBP;Ji2euq{kj(uhI^)C%L(c zP2<-rNfrA-nft;1LGCrx9&2I%2iI0k`8PbuuW?SGg>bGZlVci|fP2{vgKwKSfwp2f!DNNb*d$=&yhE$`^; zQhGjIpLTAHe3fGZSNf*!sd@g@E-U=M7Ya6~7X)k-ghd>n!0YfnpTszwwp9ElP#%`BG_$w$Vb{6QU_j1plG64OK|d z*}}HbeasVD^*yAEoo2;QQIPCBenoVv{G08Cw$htIDN??5kVg<-Q4fUr%)Ix``8A#7 z{uJ`qQ|x_yMBI5u{nK5~1rH3|&>zY1udG|XHH&AcP?Lx$5uA`Wf z@heI_?MTDdeMQH%<&)|KaaH%*o6=3ZIde{%_H8=eP)oYaeDr{FtLh@xGqBHb#qfsELAZWazI zl=*>w0|-lN;!T!J)O?5R@4Qb(ZLFVZ{`I*tvOR=+Tsg)j=|-;FRtkjWR(q$N$FE6o zl@3_Yv3&%&$o7t{&TJM7VaKH}TaVf1Tk*D#J8o=i^qR6h3`QH>1pQEUyR5>@*pmfG zexw|=dU<1}KD2cL7lw<{)=hVgfAz?}p3dNMhv{a(?kel34)0|GPb`!f*PM@Ovc=!; ziYgv@p$&B%3PpW_*Nr$=s+7H-F=byn)I#AR11%)6@}$dp=zWmT`gCos|J7o)u_W(H zltff-=?glxrL?ORJlTrA`N7#S&63}hEbvm;%2XFM7B;4x)eo^+jyH|`es$lp|1e#^ zNl=`l+tr3GCl)QLauaGl3+sR-GIva4$~@XCDnj}?_H%iV4*oTSjxG4a_-j0b%ui5P z$mTv9-L7`_90K2|fX&#Hcpf7BE|xh5`XRfbpv(a6lD5O4zyG*tl3$GhzgmG`mOQDq zAkD^=J_{)9VaW63)US7&NpYX;Dpwn+Ri2aeAKpTs9(&AfWXY1xsYR3udo}#?+2;)Z zAtgj*I=GR++$Ad9deAM6h}d&I&Vt$a3YL8+wnuwLq0T+Up|7U(+gJ&Y#4LWjn_ZWU zuhBV2#g+7uxbwqGY(oq7CHBQ}V<*w|aKS%6bsfqmZ(6O0;Gn3U?X+i0K|4UG7*A*C zLi*>y0$N?Wpbg@n*_p|i1Pw&$hn5_d&^Ba{$mnucF_;WnH^v%Act#|A1hJF(0sn%d z1AF>n;U2=)r$)3$BoTwqkzmhH#}}9jw;GHxM;FOFA8aX=#x{uFrQxag%JjcPAGxAx zq}fjSmpY@BXK7LZbHnO~*R;ql+dcO)`i+hGnpD3*6Lz3=XP5dmO-M$TQa>!r%*Afh zhcEVmf2Gu~(Fva6l@dV$wvkd_%Ffqv^Zm2iN0v#nT7U}Uw_DR9p|`CZa~ z*oN)c4ijyZEo|W`6!x#`PqS){b$B}aoXh95_IS2kj(5^rT`xhCtsZtW9ZA>pcBaFF@@^!4-ASEfbs0Ot zUf@^U)|Z#MVh55C5-m1Jndcl==F%1}w}FIBYUdT?3F6=&%QSYU>cd_=z+MJ^LGCM| z=i2vM&gH6PWGmxngq1LM7v8@?5$d^Mbg(9CJH^k!hweEqsKI*n8Pn?xG+lVZPG1~FduIIz z^E3Jg?!KL4s$cpKY12@XkItA_nV|?ZXV208k?vQz)2ok#1C5X@2K1#62|I;5*84<` ze<5ccR*=K{3(1P|O!CY$U$$e>TG{!6e}iF8ZM@+DzDg}lK|&f71c0_!Hr0_R{z}0o z3bJuRwSeasPNEVHH_5-^DixY?F5ur#rM%`!tMDHxH_F7Aq6@T=@X2U4zU%@xv<33d zc;zx0(r>dcap$QkveLrDP3wmyaIw8x+`k)e^P~+SvA6N82K=(NNAF5xpHH;l1Q6EZ z4j}>Xh4d3ae&48SdsroTZh+7B(^qme4}-96kps zsLb;RjVd!4USUCW`q27Y1^a+}$`pR3m0rTQ28vVar#(NEFI>71qS9_$o#KnV=!5;99bNhZ4Ps@?vQMRp$!nWmR*Da1s%`r34Ry<3^`!`B`HU!cf|LW&(p)|W%)MKkYGV7Z&UYZ{@ z*Qd}3OBIIXb$Scl!z{yd=&gTw=QCK(ndcmw^+;@+6D{KwR4phA zlg4)%hdG+#HX6<6v(MS4?F8FK2)4u5)yG6d&-MQlezOhclQcd_XJar}mZZlTy}?da zI%=UTOdCrJUuwo)FH|;p{?*UkYk~IOqrOWYzUGf+4le3}cI1RS|AN#B+lEla%yF4O zU|O>_a~#aj+w)vPvD+MQ6mK~)A|0_Cty;6kYrnQxgo$yr1*(Z@SQXGm-KJcH#<}4 z)xL;dWxRa#HL*T3pyKv?1AOv&HfKuz2K@8PwMD*`ghR&`YB~mUY1PiQ zJpXdA?NznHNH^lO0Ms2@4ZkrR3e||tnf!|)qUwTC!aigVTGkn3dFhL^xWSuVy`1Iv zS26uW!|DyOf7c#vLmBpE_ZbbnBzyH=@UP!tyB5&u3cV^8hg_Q@uUjzEhg{#B!N2Hz z>qc=+9Mg1`=A{7HX#xCd!9k9HN%wXA2=+m*DDM#m4qh{E1e!mK&Aza6m{QsKlKw;Z z`BOlm)|bW8i{8UDj#w9Tv?C=UVSdX$R0jA6Xf;27P_uji;qEE&sE zKa3Dwo3PY9-wKO(sMA$w&r0wrf~Ryin^$}1?2z$(-@XdtW=acxdTpFjs4 z(buUBHLaspT~EEDJ8HDEA&QEc-{W9P-w*{}-f6j$(O$O5irQ{rB({!PoxH}x8cSz$ z9q>zu5FBn63sN`6ic(}0;;@%g%RN;eO8@)|P}P7|9@%Inx%}jcqMcYsYKwe6@wsrz zvu7pdqW@KZhLP-lWtlutps7F*82%KK#7D_uN(ldolxZYQVh&gq9E6lrmD zcusWei*(`Hrfqy~w zgElxH2Q|Dnrv3tqqkD6(3$>pqpHF##MjZ`LHtJo4Ut=8{M#K~w@k#v*+UrR}sQpH~&mAg`fSx3Ed40$Y5Z!9-q zn~!%}I`l)fV_!GPx(@F@%;<+NWuLQN@M`?WaY%yD4{3{K@lFY35_5x6lgV61@~oQYr9whW)l9(4ho@JZV|`x8y@?YBP={NN~0Is50IAblwRv>9#cL?+c@5~@m)5Tw(^BG zh#35SMZd67kBw%pBl*`$Vt>4N6#H6U7KhW)e^~cf`z`2*-ILP~kx68`A&%I=MrIqv z$hX=rDJuv$VG6%^!KdOAu_UAqtB2@RmVbSpUW(O^7!yiPKa7E`gWk%yXh&Pw5psXU z+`71WNc~RUKi}1ROtLM`#t>gO**Hk?t=hfH^{u5gS#s>5vNR=h%ha7=PLCw3PJrzU zVktUk{>)y~ouL*`w)$XQ3{}*ZT7Ot4Dy1Hde<~OHb;7A$Us9p^`x#Z3ceLrzcYGkmHaVqRwE=*y@AqTym#X z`3^*#?!mJBl zY>CA7rhyL8>~(@LFs zz^_Brj|Z%@W0d)QPe*IztzJPUsd%?@1r@3aTg?%`F7OFitND7HD&u@`|~mP|4^ z|9n5a*}kN&Wc2z)bcL@>ct;{{xTSx?HRJtKuQNqPTp7ck@~0pD zWo#FNEooY=i$1L(;}W`j100gN%vLr$@T~q#y9gVvv}bsQz5TwzjoIs9|FZQvaZ9{ICph8tID?h@GF}z;!5+<6m#mskSAdlJCvFj$RhGrXfhq!@+^H zb6ll7|N1xc7OsCsT?Znz*oMAwg9j03f3Y?1-vIxj3e7QgM>*{*uNcBy)Ny#I(ijD0 z@yjZEQ9RVLpvgDvfR!SFq@y#ARtmIjEjf{*3+?uwV+m(EkGe>f^;@P2=q4q-$i&SY*<=D*VYc zV|o1AL=k&YtD`qOs&yt8jG?W3jvq}gO7|ulac;_o2>!+3A#W|hR#}o>K9HIZ=;$o> zfSqvX@T&${qL({-I48osZhL%8Is!d5a%MOiUm5;|Jod#{(CUdx$_4$Kl_|v{4`=;$Y`k4!_Z$hto1A{W?Ajm`@(0l^`Q+e{K%l& zt;ZczRfjG2D=&zL<0M}m^3z0P-oL?K6F#4}m$}W0Z7b%u=BkA}8TJd;*gdIf{Q3>F zT#V~2^#Z>t>fLM8>IHMst`}<)dHmXktR67E@oOwP-{=RGuB`IdpU1o>B02u$)xh5g zs;pNz+OkX-PwetwQf}?KVKU$US|i{aRKSIGEini#tS$HgJw}$mJDGF%HLq|>tkxCZHQ#8K<5F|_VP^j_86gLupz;i1**MWV z-W%0t_&1KzPBA|YZ`fDoY-z7p5B@bz>56)KqTgd<+4u^Uo#UNKm2LF0Vji(QgC}5= zYX51}Bb)5`{mYQkZ;heb^({%9MR7W^Pw&EX zfQ+tHYG>+);zV3#b>Pos1p&gcS(INSgu z$F*vRGVxWepg!awc}@XA*5H4OhMG9c-7s>j&+)HJ|EmRPRUjS=d4nLpn%M7KuqL`I z+?b88jQ7lz({XCT~WcyXTfuliPH@KlJ7OTE5pCs+}MS8binn|0Q}19hYTb^6{}q?rE|KM5O5io{%8VvF03ADrU+^C$mW1Fx{FLN>hNEO%Q-EI< zODyLpHHTlj>6vmRh`IPKZ#S!(LB#ghzp);py_sUk8Buch)z2=AXIr4$PSQN_S0k9Xa~WJ- zo675lzt+Jd{S%c zzYd?z&V}6n)q&k8#(d_~W8}TT@VRAE5}p%c`TbvPTdW#b;F!mL90ULQUg-_AO@Od$ zX36Yz zNUkxdAEH`*2{GsuC+)r!C4I&|fnxHEcgqa?!cNHw`-PDDKdfz5g&q9Ps^TDs*l(Tp zg->TOMehFs)V>G&DxsaCa)aah?C0W_!u#$M>+<;ZLG&oAI&0J{T0;@V8qpJS?Btbo z)HHsT9f2mZEaCc=0sn^P7bS7E7k=J=xPNB5x3BTvX=xPqX)?gj4PRnuMB?0`v}_;V2=U+ za_K7Gh)4koLdR2TCa><*%%?bf1^fm{$>A5voM@eO_8|{si2+Yfk*c2TIJe6|4SfF z2jq}dJeH>a)85qw$5mbT^WMIdpR_CMt)z7~RM4jnV28@iO0pphvVFal#1@>eU>n?w zr}IqxhdTounRZ&3QgU}C903B0k3XE0bk@cRgg8_-3AltwpJdC(Sb!&G0v%{k8AF`Z z3?dQ^{2M0rBKN~aJFTHFjHW(}x>e%dO8=qRt)WjX!nQ>t0}OT; zs%7WD(pWyV$*VdW)AU$;*+{IEWg^3#_`d9OZeOtdRm`GZtJHP$0EQNl)?u*m7%SWV zYM~wQC&Xrp@jeb*kKK&-0bx8(>*fAKdS31~8*Xj-^RA!Bm8FK$?O&G9%3dU*fB5Gr zT8H^-pNd)-4b72LLqE%|D)PKx!eDu+;mLCT;%re3*!H3qClSbj%$+6@>&?Ob3jBx9 zAS`Ny9owk3(63T|8HwTjDcZ|;o;nfw4_*6C2L%t9xv? zQ|89&I*spQey$tOhVh36wvfV@YnBPj37xuQh>fYUzJ7J8@NY;A(NS<3IF8rP z52H`(2xHah3(x)%h+bUnCs;vJ;O&oA#*NWU<4%OKZ#K4j_gI@rQ??ai0A} z$&b|+sB8JUsn|+&+U!om_YJktM+V{n?rfU&?JxKb2~;~0nW6u&S6>TX_lIMMNGySu zz5TB~W0a1iR;6$(WhvPP0_pENv{jtGc2yr{$Yz(nUIEPx*~^T2Rb47ywcAFV1KK}C zT;)}dh4$B#B!|JmnL3gMvrX1&ZRy z1>p5q>M<1xi_I5-*~V&kIuh{L0NrU~U57X#3?u{@exvbClg}n2Bcjh=(GK+;K(q`AJ=DPd(s*teWLt&`rpfl#Va$DwAr|o04Kytg=Q$GV5z~l2#9(_v z`>?pmY*-rZf4xcXiVFrm|6t^&+ONlM--_e&@A3Xu-_>9D^Ka~mz9oNEa@O+~$)kzx zDbUtlo{xTn}{AKRzmv=OmslNdkOv$2L?L78F@rKY9H9p zaX&nPj-GB);6J3^EKXscpwlMvSLCpK*X&(;_4wMd_zgREDJ_;fU6?Stc#-_E39m>o zJpYxJ*iRYLXJIA5ZCFJ7;Ysspb=ep;_*7H4E7N3l~FFqbyJ&r^i z$3y=i-sGjFx2P!#i8v$%67t*Rm-fZ3_4&)7hv*4&i>$RU#;`}G)LCOBu!rGPo;YZb&uD0@f!z|+!qJz`jYy`;@C*rOW3%?nPRzWdBZ_} z|BLfSK~s(|F2&x&n)(?9zJi~oek~WzH9UoyI`cF3zvL&>{b=V&yjJE#{RtRiL+|OQ z=#R!4-ax;*GTL9!{#oQ2Dyi?$D4gE8`x;Mn;6#`e+XHSg_?h89G;qdH;!L_tNE#!M zb{^-K4J3~pyCL8&qy^AQcFIIoV!J`6GXUdCX90my9)C&1Z@}9uVNKX*j||1p7mAa! z5tBp2?f1{&?7#A_Ho`V|8UOb-rgw}n_PmAsrF=Ys^QR?vJbKl4RBU@OzrU#Wm<=Dc z2mZqo_FXW$V!I+=)n6Cwv*`mv&$R87h^Rjp+F#Qqn~HFK#Ip~J(s7K#cy@?N0!$s) zU*CdOE;D1h+HN$wbXfZchv1GQNG$LlzOTYcI*H|OCxU9a?U}g*JCwRRkPa}gzn&EE zvlUT`kJG>8>3uFTiouV1&4u>YUi=ELO({f9sjpJ^Wal{68;9rszof~xzoM81<+73V zF7-9qx#bKVX6FnkZXQ5w#{neq`dao8wMrPW)w7sJ`UWlM#1@dE`zn&4u_a)$BdX2tH zmmfyGZsS0X$(?iM{Pi4EuVH-AO!1iU#Tlnw$1>f!P_NK`NW+adj6JCShxxK$;{AF} z>+F|}))|xp_Se0%vqudNs@oj2e-+7a_R2q?O13}=)7oi4G#O`d)sex72` zIM~W3wk z8K)+^1_Vo%2H76ukNN=f2BK>?x8dnY-u7zeSP1maSm-}|zl8WhmRU}3V@`TmPQ4oWI4|~$a4$7zw+zk zn4BG061QQKowlkVdck#f*DZ*jmq#UH3mdUc_!%B!bS&aN&rU=Hx%`z@_7aW*u>bHd z-fPy&j|#w}u5ABnH-?t+i{gvuFvS+s3{(6vxX$8fEn!@?hAB@DHr}QkX7^@%j`HSdB zG)k>>_f~a`9w7w(v;Fl1d~y1q>hYJ^{2~?Aj(CjPbPT@^i7K=0*^#f!g!b3t=Cs~D zwrFo;A6)LdjS}l6#8Kzt(06|=ddh@0alNJqX#pgr0?tjh$^`KEOEK7gxO!W|EY`hn z_?P0&JWoA)FvVndm{pAHq*? z(Fpp2=WvX%ap<7naftI@D*BXVbShC=Vj<0QW|~mJtimEh^|!g>r_>I=4P7c1&qbcW z%#R9=m)l?OFG7SQTP2wAQFn*PRuX{cKcuNOkwNjAahX;>;ebETq7#Z+a=zW=-fOBa zx?R~Ut~Zj00oFMnxt%tzL5bbva3x7qF=ftd)U_gj?gOVpn(lQZDHd&_B@~q&P-K)# zYAET;Oy#0CE1Tu@W^%d=kW=E{Yf6xXWR~8GrG22dz<=hP)}~-_U>YMnkecb1NMGj4 zXtt0qZAd5Ue4r|#kRRXB87047ab-Piw38Vev~<8A!1W~TL`K6>(D_Irf#r!t=oK>HPmSrXxcA7CN(t#RwKzAy5z=DD^eoy{1IeQvQstLu;T}07OzQ+N$K7691V+ z#DX8o**RzMw^To(SXlpYiT6BHSuInDn``wvW`2Ob&0q=!2oCWjiG@;ofU1JHOuC z5``9SiJ&jCnpH@d1A3wuf~|#Gb0C)pWUS~WWeIJRNe0|ZNlV$J3~-6?`>RG-BlA{s zDq2G>P->KGP@<)xy{7OQm-zRZ z8c?cEs{Tj-l+e$ap^X1?|2i9wXk9XH ztxq-EUK`?>%k;}rv_WXx568CXG zT1JV}S~6@8q-@RV)14Aug!M}k<@$A;I!Jdl&J&6%U1Hr}Q?oY3AkQG$C32$4&}{!Y z?a^%$Um3h^H2E-tj0IW|4Jb(n|6Y8EK3{A$?{GoVEaY0V@eN$!i%^}SN>MV>nhQkQ zE5R$d1DSYaJ-uYF$keZMKx;-{*R($Rpxu?J5APMd*`4`AE?DHTgY93aJ(W9RbPbPg z@j!e_yCLkx%&b)W#lWGvi{3f9D)!3zn-X4GAMh275mxJKvJ-zE* zZ2INlnRgw~Qw{=|%Wwbk>kmA2;_cH6?!WBBJ*O|fC3mE0|A|w#1~Q5|C>}B{)@mo_ zf#zD<7t+dkIUr~U1TtrvH=LOyrAhxfL}%esW?1OEFQaQWD=qR0GcjESY+vS_*P-(3 z%;#l~pe-Y~*CpDOg~n3fqls$Z-AcFP?$njR2D&qcl>v9D#mq((yc`g;CKPBVe{@^; zY7^*B2m%?+!s=px60#b&GKL~li+0gPR4c1M(YY0gexH|_jvayyf$h$R0-^yOR|Drl z0uPvxaWkS5j`Ga|wj<))tC~-}66xJb$)1gu-4%*-uaj5K#>@V7{Cf#4uQXFXC8|Nz zy;qKyjt#J|QVrb8Q0}a}>@l?`BfzKgcsU^Gdf{=3GN5fQv{+Z95=W|l?LD(Hpl+8B zSr?~jk5mCqCf`3WpO-_TpY;3docg6}(z_SxzD1_2nv}Am3V1TqZ)vwE7tj?lFGfuL@oc2%34>dmfBKQ83Itq!_LO(lg0dNOFkFDQ#?tu$tECOuW=*6r1M$RA6_8#VDuU@aoK7ld8s|bn$uS)>3p>1A z0i=H~(Z{^puO!X_{QfFiipuUKAR4TN8>TonZb zq+t8^Vmfa0dAS0t@kM^Cyj)4gK0*IOaIb1Q_DenqWGZ+$AZP~!GT64?4Odqk@83J1 zWzsJRWIR)Fo`vDeWT6ba@`O_<27Do9U_`VTflP&gLL{igc1;#6g8h%TS%d8xtovrz z>*bUuY#Xf0E}BtrhF{V$nw!0$kYw1yAiy5iBSy#naX-qm|}rU zWwTT?lrLk@qKty5E;LI39F9lHq&uRKex;&${p-x=f33Dmy7i*+TDePTE-5%(LSMvN zTh9~qI?faFC)n^e9_qng&8#XuM?r7zIlkcHhK5i1@^|&s>N97~*nIJ75Zto*tDxlf zR>oK1K$k-hJhP|Ej@gNsv|>RS2%U9|x!N7bgsV?*(Alq}vr1K{UZCCHWqwDx9FBT^ z0t|lsAZ3ZC%Pr4UDRm(8+tg*M)Ma0({|{Yu+Sz-abLg@=Rk_vTf8GD%H`TxsI;Sr4 z_Y1mwwyEI%SKqyU`;5w`Yt= z!g`5U@#fr1vbnpZk$@3kGsYxV5;nIHvLh3`I|vK{Y~0AQGyK?Ah~vc$u?He!*^!A% zh%NE^J=HDED0|MmXD7*VrzyIty6SzO_j%s8%2ebZb^k-;d4P;>wtVY>nwGT>Jot^( zwGThInpTmw{vYRs|HpUchQstA>Gk38J$2^7y863mH5Ju|7vaD2?xJrHb+_EaZ}*S? z`kP@A9wNFW?1{^NYGIG*A<U>;t|j z5$KQhC5Vo&pwQARtj6WLXvPSQWdbdJp}a&V?0UO+ranuYqy@s4UTUZr_?sp zY`rhc`mn_CGd*|E22o>aYuVfU==O@N9!9-?-QN&yx2fBw%!suL)}!-ug6)Kf68Cju6@^A>V9XN zenwBW)|kru>=HVUJ}+dq(i7sT9_dyP{v?RS_F7EIT;mf~bEfW5VdbRmB9TYxGS>(PeO6O>dB8ESqoabZwsNru{vNXmb zgjqff6UI+7hG;w)iTNH^s^~Z^8s0in38_mkQlFtP_gzB$CUtzZmKX2vs`Qo_h%euP zb=X1mJeXo88S**ho+|zftL5G_>ozx=)m%>{s^}TDnnzQt(47lSEv8ocVY_H%K&2n! zyDvBJz@4VKLc7(gIBtaciqF$9MW{qDOMYjeCl!+oxAb{^38hwX-qm^g`}C3c94|hj zyg`4aJGk;j*^v2GxH0Pg@5+T+oN<*GT*h$j<(SjU^fBGd{V8P#cj~z>r4+jJwb01Y zCJGRi-!S#50go;yOGy@>pkO8L*tLQIYNa68!)$;KQ5E{kUcnu6Nx8uio)%~9Gxp$4 zz}C}ji0+{P*MC$h|5ku&DYn6#3u}5eJD#fkivMTId;H_*f+l~eY=|AFUcMrwTdsWt zv1qPRq{+Wc8PcxWSZrzZd7K)!-%ysh_7yZNK4v;Im<{9mlwnRye5iWz3FU+;yF)?s zGj!OlOY1}ID%&)-($b${K{-+pwAcxEE`kLs#J*#pQGGUhMYAY4sNduDu{P?qi^6CV zlg}|dGwC3&!7?s=$J|2|U&dN(ppElqWr`lb7vr)`Q2Q+XIkhR9S|8YesDUcI8ylRlev;C_te>1tSPNMMzfmr7B-VMQl*VH7?ONfd^%<)8H#H^Vz=-FnL@vdZK0o%Wov0~ zkvs1_n9~!YA?s^bunzfr?tflc-1Iu_vwfq=#JdE+XHsN)-S(v)sF;+ff4?$9SK-|- zaaq^CJjN(pZ*R1Hwh}h4Ta8@1)^?3vr@8Vu)aQ60bkix>27L~g?p$bw3Rf8tL4&QpMJ-<*X7D6r z+FF<~*S?5W)0i5ueW|5!>7V5qJIkDLwJ4-G^KQ*}L%Zg=%k~eJJx`y&y{~9duF*|e zY}bt{!-XxfKep!veX7lC^$jbdG$0LaOljb+)4VR3 zct8B%R@x=BxRS%K6+CgDNn|k5)McBNHor+_yI_Nw$reu9S1BOCtSCBD$k@}#)!jww zj63M(sfsRb4dwAmwB6q)e5H!8e@|vR+_IYZ1BH`5Qz>=ri{HMT-DqyK3S;^xf7fX2 zR$BCH^e#0f{O6REYhOJDLv+Fu(R}I8hcNH>EDIGMoeb9}e7lq!ex+b3H4K(AlMaw2 zG~lbh5W;vG5J+chVKLS9}|=g*)?FS7eue-?il^yz!VX;sILOG|FE9 zDCpU6mX6X^p=@*Q3;4xO!nc&99Q>+Z?fZ#xfgh)Id~Hfs+;;)Lc!#eR-uTuk-VqJ7 z1Ur=>qk|5_wUjc6Uj-7;YWcDht74DRt|qwd0o-}ISu>ixFkxS+iX~bb)26fOp7p$f z0|H)VkB7UPw9-lY>MM>@M%0=m!W&>2QE9Fa%6ZBJ7toeAbM<=)eSB^NFPYg|AcbEwJ(WZzoW<+#8C?puZnqVe1poT?6^8l4FSJgypZ_SN42CS znQ3h5+fCI76osHJEeiZ%j^EH|z^D+R7=}|ot)_+Hu$Kk!E2lYZunE_ZA*6t&NAKd#c!R-pkRAp}=vqUS0%Udk=cL;l3hq zf9lQw7q&W|81jyLfL4Zb!hH_#3ux6qwe3o_%H{`TD00rhuNC4>ue*MN1^32}#%hIT zEng=d6Tq+YfSb4B0f1j#cP@ej%V?hn*`Em)MyXAh-FgGND1F@!e4W>|FUvF2bD*gv zQ#3j|LmRaU8(477e3B|N+9Rbwl}kU?1N^!GKVP(N>DQ=V%+31ODR1&$p5Hs}TMWB! ze%kGOq^le#410oQH>JBsD=&+y&3gtLfnO82Q*g=i>9%=UlC zq>2Hp#XEst=JZpZUb`Cch6CAV>dr8Gm7Z|@e9~R>Ju^1b)#SalJ_xZ9-%|tdOV8og7@eXKTiv0s^j?cC}yMw9p z3)($^`I^KpHAEJL?0drA6`0D^;809ecHzzx{3>2e83z1Hv(*^aY`Y|_&!j&BXC$6Z z;MZrst|8H9#+l!MC~~Qcp=)%0`~I0Jbn#}ojgdod8?1o0AIB6$#rNWVw}XUX+89e zsEzA;ST*(W+IHtT2_86)iwXY4Js+?SPAm$pOe!_z7_T+`VZDJ)^7_%0Y2c32=d7m> z#3I61+87Q7xWqrMoTZ!Ai?;ttj(^cJe4N*7hz3KHu_G$h>Il3|{Wf3f!9mrO3p!K4 zXdwj#qkd%-oe{N!Zd{WHdpcOpF1hxVEm$^fFPWh7?2BfAhS`{FU#90a z@QsQg?F05D+AeCc`a1TG@tl~|9sD}WxX+RN>ynu!Uxl)Qj=}K#VdWH}+yetE!b?vx z$G-UO&r4n@>dq~_PS>fC{G(31aqj>w1}E`rgnm!;rcbM^5{R|7U|f6XL%9;ddHi~w zHmVh*aW1oivb&*3P9Uat zHVuJ;EU@(*Y!;2_)K@PEt$v1O^k4enfMY5`WJ z#dV`_fc8=qE|@Ah(AZlJF5}EaU-23&iFy+e(RpnQw8Ag+fOdw$R4epUe*kX;KjXG5k0@#WL7 z0MJI>DRk%En(@APiy|$)?Vh2gq3@spV>Irf!lsH&GqszZcd>#rG+`}HT6#@Qrh7OBbOSfS7xDbzK^Ze^e zJe93V>I+Lx#r6uUu`rAXh$hN|iIc8dxjdS?bPXZ&ojaUg>N=SIMCYuDA@oMNcu6^~)c$#45qyBJF z9p<8Ty07>1Bi@&IZ>prvo8w`M}%f{VQEM0-) zTWq+>8#IsmvXztg1yQumHcc&A_Mmx0u0tCx?x|6T5%!oEateFSu2?c+y~Bh zQ|l0*9)0XXN+LSNovizvlLfX&80TSMfm8f(blw|A=i%@PaqoGL^BjAIWo}9a;yphE zE$#5E$^yiPDXEnxS}HN>&O4v>5oJXEu&=XhMEe!h2TRgRM_4A-Fx~e%o>51oj^t8Y_6{J4lvs8=}!K&&?q2~X;W1wnh0 z9ctEgwEZnYbOaTn?2jgtQsdDdHs$!&x1gVfc#k1nH++INzYvpR^$Z71Z;pROv<;8f z3~66ue@h$fx;P*J3R+^$`Jy!}$G=o&!+nLQ(%0UqHmHD`4E;%4n3>AIcF+wE0O6zd7xH+Wrrw;@7BWf$d9ST;t3!y%9Po>W}$)^7yrb4yZfr;uzau9=ruY zqBMLNOC(L`e$Mxi`1OML`Dpb14R<7;6E&v(efAD*6cyR%6#n%Z?~Mlr@2e`@0zW^2 z-SRn_+4TRq^FBPI4=em`%lDBI)Nb&`PQS%IfOF~knxW2l!6mUt^-zgszoMNZGJPC|Qxw5Lt<(Csb3~ zV6b43c@%2AHv~7BpbDWq4SU~Y;o`k1_yre-6;%)ONEqPwcd%n561Wo%Oz4M}r<`5{ zyYYUNou)_Sb7HvINDtU+;&>pJ@9NR+09x%efinH{GT^2-+IFJpSm|8L7tQ0BHEooh zC;yKy(kn~AzqTnO8vMMC1)0OIPqcx=-0X_8te0*K%#-o_0(wpSujbHj9=|%{8$i2? zzpTW>bLP%X`ghoN+7SO%ki&&rMQsPJswyngsm;0kv_qpX~-`Od(r1HVL3ObPSrG|$F*p2RQp??s=sle|xsLU6nP^Fm8` zYw3t>+QCiC;)Z;VD5#<%MnFbHXd{C;D^aB$HdkdmP!A^U%Lm!8+VmRCHl*JG7WgpB zB3ne0@gWs+bQSVZO37j!VlFI<3wP{dk;ktwpw->BpDUNuPm$6pcJ)IrGOm13=wgcJ z6XUvP-no(}6tf$m(e!7O8@QM!1CI&*Wg8>mxv4<>>zxP^kBHe>fbS_f3@-{Go6rw4 z1sNc0wH-_?+k&o!j$tlNVH5$Z!@^1aHDfm&YOR)TXAeZw*_oo=(h>QlDV|_$Mqb3Jw;bz z^@CqZ=yAdl-Gc8k!cK5}sPxha{&mJvCH9Ff?%N_vI&34yVFf)`u1 zrk$diMjuZL+jWMr0!yobLyF0mrw!*K$G`gMy3xoB2R(8)PSRwIE*e0zKTpN4OPJ+H zQ_lCnqFty5>58X5>#Nr%^ux@w9dxh&Q4?nd9b`4MnX_^_Ks#-%WfH#x{meWn0#;Fm zZKHz{zoP83bW~IVYFIx1rR}@VEY;$-8kou&P3J5~eTG@D+T-5&bcol*^g%Y{ z>A>Gw{y0<-XD&2#mggC&n8+tf#z9llZj;aa1osZ8p_0#F=n$ zV@N>MBWPb*o5!!~93ezZad?Vct3%eGs}@J$Kqm2PhRlD#^BagWVW%8q?XpDbX5iN( z|0>VIy$3wEIrt@G+N{Jcu`3u9-iiEIv|xaqr8#j7XS)aShK)WC&~wQLID){$1b!7f zr9MTVoP(^2zd&{J`wYQ>R4jqFnaqC`yvLrg7jgaevZuxODDs2H-|w3E*AKha8CZ-J9(lw3x}&+w2!@lN8` zLg8)df?1UY>9AERmUkhBh{v>5*-I8fPg<#8O40Sdh+hdbCCK8?n<`3EE{`7K3gkEMp?vfq#7+~J2&XMbd2lt9RGU0ePgU* zd+@K=?fd|`0sI=|&lxqUJ|+LvIqj*yFA|!~%GCq(ZK1dHpQZi0M$TXkzo5@2%q%>l zpTp0`kk`u)#H;UY4(It-7d>Mw8jT-aTGKopLoBgJLFcW=27h`o*Cvo(#<=?Z2lQbq ztvj0iR@*rUZV|Dv69b&UFRZ$vKHE16c@41^_h+S_hZg4_RqSS`jZnX(9pQmgP-AoG zFt0^I6zlLP)!7iHvXl5V+uTdLk7;|G_87n~dvkjBNF1uQ6lb#TTxhBaXoKfZHzg$& zAmv6f)^f=8M0`ll569tj!M0GS;7p3MeqbPJ#dht>y8W_tlU@{9$m`@9BXreaWYUOo z{OcN*GOz#4(o*_T>TVNl8u+^qNQ=)XE$(_o{f1g3YP0@SQ?0g1t&SJ{Pqr9-9z6u+ z7CK``{YH~iIAJo?hOj~&J-p4=Dz#joRgQn{QGX#Gw)KQJK%2zwSW&tOIwY;KlkF_+ z+J&s&7`7w!%H4{oX2j7dNVp;PTXUcN#d5`V`;+xNPruU|2TF$FQZO#l-=aW2qz1cg zL|NxPN7ip#WKp@dkbYrz?=M1(1ie>kxtM^Me2%Q&00d-s>kgLIe_PSdQq_M;~bO)#9+Sg?_I#ys{!(nZvK=>87!muY4Kt#tqL4ds7Z+z|)r~ZV z^sx8##73&HwePaiIsP>beU2}WvQNzQqGG4={nEen{3y9Lt9_r1lIc7L^&5L%331r} z0Bw#3cVO&3N{Wj%^n}x@Gw;LDgl}k#sg+jZ3cVIL)9?vvO23BScCFQRrNC(;^Iv`O zh^C7r=h>L&XA%o+=!d1`ZwG!k?{exl;NDj}FY$}&2a658n@(C_WS!t&P8*>Dws?pa z8-Xh0PhaG6qdYgtlhU{~B0jP)OXlS!lNES-~N!?n92GrXI$H-+HsUPlT zp?J}BaGAZ_vO(yORHC>{D)kqbvQ1y{DtO}vtq{6Nqu>|*q>^AF*2O|1&%fSB?AOTu zTc>9`T^DfpJIdadzC{Ar1$V8Mdn5#4PJdN7fVg+x5+s#Y6Brqo<`n*ga1I_I$+Fa| z%0iB1CMBT*fQaSz*MJHSz;#I#k5G_H&68SH)9LdBe*JYf*7L((bzlp@WE2-w>Q0Z7 z|C;1q)6pLh`SQx2DDRmc^J)&LMY1f`i;oFb;*8y?-`Iit*EZ#kH2##V@lb}?TSAV@ z(=WdcxE1nWW3-6Czbe!-{HUB$i-x~buc-;tZ_FIa*BR|WHrTw? ztY`vlZ{XloqApDoRrizh4UUlS>-3{?wBgKl*L+;s7q1eU#%!(4 zUftpimxfpZ*6mf{rga?{exlS~0FJ zC2Ju6Wyo<6ydN*#nZvKxS@o3G*k3%VToNy8_pb7fA}<5wjeOVICh)6OT}w$`JE&!w zz^$yn7cdtg+zANy`Qb_YT1y=oa%2+P(&laso`N>M*+47Yi8La)qOC2 zw1MBCDhi?|$K%We0nH$5@M0N4TvZX^Nnkxm^T}r^wmV?YkS@8t072ET~t!Y9-B$m_}Z3e#Ddrxp+5qD8(8_yxFuPv~Q_3Ho6ivLQrL5g_P( z6Z{MKMP0B#O&}uLM5ciFNdP6YsHilb|JoCSyw6c*YFyIrthuIzb?+ zJKN^aAct}?J+B`k7s*40rb3j>@PL77s+N8Oww$j&{5HbdwH{d0mdVs=6}44#wIYV> zbLY#cKOFdWi}nNdB(1kATD1Gwt!$%Z%36q|>ocQT4evJ_WDJso_>mSNQ&+8*JT1vB zrn1eQFDL&cr|BHx4@?~S??bHq$EuqG`eBU4NjL!7y6+! zML*QQwkQ}Yoeo1oS~A9DE)w``Pchq zug9b)mB!Tlo(fvVnM}x?6Zkcw&qNu?cHeG&4MN#^QDP|%CHg(RskPRfi(LD1 z>NjNgWXt>)K%qz|f{jswyp!i&{4FVm!c}_4F>$!Kz+|0XD5X#GFLkvEnK!O?vI~-b z#gYHIKpkcmFHSKt&%b^w+ngzcxF_o3`dK!_A0>rrgL(cX(aNP=_&)AM&-&_$Wkp{} z0LkP})^D6aR~=f>CogQ}oSmtv*FybDt;ey`PUwdpQv+XVC=#UHJ{zcWSXQ#F?fnV- zDv)Wf200uRM68$l3}u1!k#+E);!foYu6@b+jig#j%V7?3`H^OOD_N3v8QS{Nsr84R znkAt23uwKljB96@8r*4^JYxiy$FWmKKlIdbMELWevsKC=SE0V8OY*NmcP^0sLN|~* zPU$N0upqp^FFNO0AlXdZ?Q_uc)Z}o6m>gGKN*TZ%jABatMwj$I1T@b&7x+G=kU}C5 zf0Js;Zx}3CXu#e@(v-3xE_9RKLysAiLd)j)*F)f*$TASTx=c6dhF4>)WVQxPw#l_G z%QHjW$ZFymXfjEeSC27`)@wVH+A7xL+86j2d!=>pPTv~kZT5;-Y#|Z$SvuA_H$8Ji z+3nhwc6+z)stP~vxOc*ZrHo>+HCS~$N>gE6_F3k?UP;X}S7w%8BGdzzC{1aIBwZ^yh4HJ#bk&R~m4?Gl5J#M&|@#$TN^WYJ|Rqoh|yIQPHlg zW*q(xKXdwk25aiq=aib$lBl<+H zP0)KXg~a`xh-nd=#BuQ|JI9X-4A7#me3!>SsWy16KiekLUdXv*p;`To<_TXmuOEIB zp^;O+3Rw&Qgm~jJb!4S8SK^cSH5;*(ERkghN@dWMVjp>aDxPlDtU}YB3(3Er33G&4 z6G4~3PD#HZFsBpxhU8z;U7&|D1z9UEM(DS!UTm@Q`r#X3B@RQp=3Zo#Hy|V;v69W< zm*-kyKvZGtYpJ=};*4^M&I(joj^^>}_Z&6Uc1?2CtQ5*$Ev*j#4MZCR=H~Eg z0H#-+@ruIsHA%}9MT8{R<0!m==g;Yf-GIN{qnlIJdkFBC#$O+%%_fj~8_VI>AH_>z zQMR^Qc{b25db7m|#pY+C_u4SD9DeP>aPGEiK3w_(hJ=yuzl|CpEH=BYGml?e=y;$$ z=G(9M)DP)!s#vr+Ri-wGnBm%2rXVCb1ftUhs{86DK7TuMC4Wrzsi=BQ=kaTqFYyY} zX>&`P$SMm8;IW-bN1Z+|oW!r&Xk$m^>V?~&Y5F8q7|b=4Yd%crIAig*3W-#O8q=cPpju8 z+q@z3Eo+-h7`dRZ;wL%%Q1UNC7s;Qo&wFLLg|@%xBRW!!hzJ2y4!^`9j!KLa>rVWb zs+R;GPrQe}g*NcvllJAKy{akGL+h!H_i)WE(R=y`T3{{BY z9@zWg*n+>nuP>T=GgUSPDWtVM;N;Dveu(^62pH$Y38+7;IH=7U&_H1@V-@t7meR8b zx@KjmB@r~ZoG+RG+Aj`fWgM=)F7{?i*0jBCekud39*n5C7iEvl#^KI{ot7fA;Gd(5$CGpGlA5c(76psuRSZ%`s zpkUYShoMd4mw7|m*I#lBUj28TIx3M`+;tH-<{wmY{Oj+vebWNA_o#Pvs^fTVEZUwJ zHV>tsA0odziC+PUU$&NN3TU08w$qy`9O6>Nl5HmKi!h3SU7c!D4a6k2Muj#(7qzig z`(67Y#D`Z|y&bX?(+Lzy($Xi$pdwwF(+|f8Xk~w^W%*^pE!*%o`k@WMEyuscQm0z) z1^-h1mVPPbW|07$FHVWOWx$!^Ul*I97J_oQ@u3HXKZ`#Div#%P@XMyQAe8O2%&ik! zBDocesETx&f?sAEfsH~&An)YGGsbK}5-{!hIzB_zZ!DzHj}(VDodMj;Htn4YXyvnc z{Mr+}W;YruvF!^E1cCjaa)Dn5diqmPO5<1>032uqMnn|v#rJ`IHNpRw{I~|Zn1Wv= zlx(l<*3E!V20~q$$%6!o2Yl^B3lrRrn8~>x-a3QT?Au{FrSI4Asb&~62F$* zfsnYSLO;Xm)jgsz9zCSl?>B^92Ogxf>!_VOtvdJ*>pfoGVFSHmE2hY(O z8y7kK@F%n(QDJIp%+oOZ8Z#Kh{;wBA1?mr*a`@Fx31Jfa#)x@Dt39S!USwwD!BK5~ z9>0#*uVv@S2o12s(H~1$sNRUr6QT1{@QaO^M?F|k&hnE>%UP?;-`w}5A=uuu7)851yJj5OQLL4I7$oR0;MtnHvok6Idk7-|J1!8Y=XqjFL>L{B4zaC;X z*u+Y))YLLCJ|9;C>X;hQ;Pi6!8^4o#YGe;DsBYX_`APGiMdLF6>8bej7R}>+qio2K zbQ05qdOy@vB5Rhf-yk8aNt9+83OOifc}?0vT_&R3yncvi(1~d!2Z3}JW7FZx<(;N} zPmAm`>gU_rJorAH>=i;OP8>RbtUnAi!A>Xj!)fo)TPD7cjLMKNE$VGes1(Je45EJ(;uwlbHl@m>RkE;;;Kq-`3k z?9qFaHMA+&B@G|-hc-Mw)|<N$Mgv9;9^{{-T1I)+IF!~GAYn5c|kg7VQQy2 zw*HTaoPPL1g{-Jw^FNU4z#2>GUq-RwV=1Tj-zHP`8T`v=ceMpy*okFss-QB zr=vu}S@WnrWSOR3K|O4w@FeSndsk``Cs#a}g;+iDF3G>H#E{v4O1Vf^?TG2$qMSq0 z_MbEU=}Hd2-e9j{qm2K!(x<(~P_~f;KYhIwaqpQnYIfe$s-h&GSNG~$0)L2a;?M!M zvCmUd0Ka}RrT)+qM!)np&|$Qvva?5vfwyu z5boW>Jgn6W39YYGh1rMt!N1PC_GQoL!S=C$hyvOwJ7~5DrdFYF0@&?Mv(ZWXy2h}J zjfX}d8=h*92xQVK%yrzsok3UM$RhvssoKcv()W(3*B)Pt0WQ77kx94xm*M&2a_rpL zLMOuuZQtCoIa;P-Q9JzV2-a$Y9ZI(is-|p{DX395F9~3GLzBjn?UnnrO>EdayrRx7 zPP0qyTx1LG+a^R0_D3>oRkMSZMy1O@3xQt?*%&$B+4Oix2-DQ=D=p+tZmO`fHHGic z!B%9%{-S=vW($)(($%J)RxA{uxylNuKH0wdmrgU;9pbn5sYvI^;auh@;!XLldv0)t zfBi-M{7bZu1BF8bT{Km^P5HffB3qxqog98`A;f-MYgxL&*g$iVJuLvTjmDfew7=kA z8^zzr9{x;%RQH^JVmJ7ssfuCj!p`B>DdmZHm3?31XIH3+)j@$ov(y2Cb~2d5uW8TF ziR_}(x4SEMCr4{1H<*BN8 zmOa>9j`d2O55{c>4mG{t}#@H=VXZx5%T2>;UDs*h8yx_v7 z^~r;)U`-3etIss>Eh#4><`h`w@ar5oYGErgfnU`W6-`-3obg(vIsAGVxLn1PMnL7Q z^l#`hYllV*&S(Vk_(dHo5RIlvL#Xeq=2|a%kKaRU`KBrOC1L9TpMcQ_5B*Genm))N z^SFI!4!`y|x@euD4;bSJ`TU)gV8;exiF6*ngqbl900PP+zE22=W3dQrY0u@q3g*yb z$GXJwVdeYuSkmmlR?rV(uy;|so1Jj&3;8dlO;p)BC5i(moq7v}h^IVKOw-EI#`(^2 z|JTMZ?6mb};1__*)>;bBN>MJ;(E>uprS0@+B|w?G;{I}_gdP(w3_(adZGM_;91Zn!ZLtG28j9iD(x8(H09+@3j5`zBBP-ZMbeac71RlCs+EzI+;SCK-(?Ce+0 z(Uo`uHlZj($t$MhGFY@>`7V!fjh&nZ{bx{_uf0Y`M*Wh1$@&eci#9uLTGekOga~kL zVd>8cH`!f#qn!-v5V7B*eR=%C(gL;D`Vs-!oUBghU41ab1_W@ zz&2vPN&e-z2K?HW^*>TMQ~c7LD|{_&i^VmXOTL)W;>H`c@tXv)^$3!+m< z^oa$g*15`bzfY#%RkO`7>8B zPpg$cKcOGej2p5V{ItJb2^l9<l3*#6m#wB&pdxgAEuh895 z|DZDF;$SoQ*GaKRAjHCjv8cTS&oQs?Fb{2;)DO=TAXXQF1Bg!V5dSfF*M99^0*lS_ z$?9fpCP19a&zvn-ofH(z7MaYKe1cFA76u2wrlC|OgrLj$jd~>8dLX-e4eAe{6tgUZ zg?G?%k3S0_OGMo^QB5V_PIHl|_~_SoPHkBC(Z|Mq;luvrLZ=bG{U~?zLn%!=fd|HA zeqM-nxUE*MaC?iXF!%dprfq40eP#3(@9k_? zRES`UcV;^l5^M+6hH?2EK|i9lsLtqzXY|l(&5L^caV2P+z_w-hc}bjmQz27XH1Qld2dKx= zXj?JnhC3sNaaW6#}3qPF}{q#mB-SEX-{K{zWpe3l()+K z@nBD^TIRo;ANUtT{)_9W!rAmpA|P|MvyDSqWz(9$Jbuai7ox#bbvHwrkYkCe;)gVc zdt;OK1^z{61VZ#AberKsz3EF~_b=Gt3g@@1XHpVD<+%b_3snZ3mqIA!zv zGgz%~AQxTy>MZzFyef5L_#dP#aA7E`>3Yxnc<~u{+7|hog~s_L;yRL&g^^T|g0(Rm zSwHU=Y=diG(Snx~SgW$Dl2SSROX`PJv7+hTQujN9e@WlM?@u|p@tw9d$iO{u2VZQ% zbW^^|nlZ$Vw}$^m=%>T=H6tv<^QDXtWZlz1EptQ-gFIm5V;bi=zU~7iDKu*&GqMVMN zfi?BBxa<%A>q`bA#w^OPA7KOHE-6ekYOe^ne|c%S`+a(*rJ@_lYohuRP%7}Rf#d`1 zhjM@UV2!LlH05&)N-;qEV9T)qqS8w^T?fLV1AG>{bbmcA#& znL*qcRvkMPP~v`rYI(o#G=L!dlkLmu3*q_eZC{H%fnP%XN4b7%U3e=<$a;WO0HWJ@ zbFf+{ac(&8DyYDT6S7UATx?D;xo^p))_{v&j$OdjN!XI(N@CsvLNl4_5%53N2Ai07 zQ5?k-)T2MrKU1~sOFyWo8H_8G#@}<^W!;W#L=wMj;Mwz1XM=#F$q0Yz6#g|TE~f6y z`lA)6>ALugS$s)pnD%aPUdD&>qg?wE#_xHXxgfDT$v#Bhyvqt+FGcl)sLX0(-mv?9 zk_9Iigby3<&LAXSC4gUBmh2*|!?~<}62E#NBRrkNbN)bk6KI24BlQ=afL)%R#4kQ0 zOCO3wgZ`xFL;5FkVVN(jBWjZKm9A7L`B$HIqpk74;?N#m)0rV>$kHD;*FO@#TLLIBaZB{)44`FK~zF z=j&&kFIq@HaP15GmpS$?XY{#DB+pM{Hm8udLs1ber2t=H}*)s@1QbKKOddeiRiSVANoc)YzHMz zEo|n%KB^c*pjhwXyAAu_FLq_UV}-YB8^k}Dcizk1Id-ti%w`q^OxI4M(_dG6wZJ(o zj4aGH3dO6#^;<~p)lNe%!#mKZkbl0O)}7c{(n_d~GV9|N2(4wb?P53u13{ z!TnlF|EBR4?}}+ZSvASO5R-IpaOyrbgk;b|QCXu%9kH%2AVw;5=K}g+X)6!@3de2? zz`fUU4Cf1_Qk?@juxWDnIQcJIm6)PPs9i)Wl9fn6v`Zk%<-b1jXW#WUWU^w2H?GrN z+`oP4d)hcZ`k(fHVSftWI#@X${>NMrLTs$vL-ic>ezPa>D{J)80@6hj+yzzRrA=9* z6LK{W?J?KBQ2^@@eGmQdrEUqj_7(JWZ-<}%h9Bog(YRFtKVLay z%1V{GwDPuVU%)SM=GJ=p-|dRrJPX*8oEnM{t-$u{35+YammZ^CJ^EU9h95R5rS$|p zptqCAe|1mM4{6&b^Ne0!_&V)hy?%PI8R6ajctx;iej=CuDpNNgm!!8O&eDtQ^LF`n z1Mg1TN3;5i!g>9$6tFc{W^do5PjLa+@HP6hHJq*a8zsP;In{0#C@YSTp2oQTq&_6+ z$%yt-_zeWNIsSE8(ys23apel#6pORIF$Fu}wgJ(`6vLe_;1_KuM?L>{*>A9oy5@|u zFMDISW&n3~yWfWhZIF7tt)=h{I%wQ!m!pm6Nmi59V_1i#?2tMA1SNc?rB7!Ao_*QX zFGJt(sZYqr%48{b-g{DCleg5k5pYq||+VN(slgB3WMx7*JUDr&V1=J=yAoMc7uU z9`S@mgXzk(Vsi%AlvdUNlJOG-0Ru+}TKZ1*q36h#QHb~)3o!_Z8R#44gnczLvM5NH z9UJbV7VhF}D?C6n={J^n50iE7WOY+25c2O zeP%9UF%a0>GXHgJi)>>TT%pTiZaj2GiO{>EkwOE2t=C!s3g`3ZM`dLcXTu7rByS4i zz%J9=ENV^tLO%c1k2a=k6CzB(%bKT26}zBa=&gzB3H+L2i9TE)W&WRBGtAJd%Z7R2#o&$6nXreE!R+a~MF`AqrHq2;cga{$}D` zfz1);K#JpXT--qQwSniP$^cu_BBLRMBIV#I!YA4$Vw+5XDfu$`?3LqM8`rGFMMF<6 z$OKuQf2~M>85ECJ+?mLK#gPYiRHFGfQb-#`O}u;^`=z;2%!)^& zY$86C=Wl>k*rE9>#9yM&AP(X<4o3FfcAu3$KdKXM@I^U0SYs3OMV}h~GVmAsmx02F zTf(3@SH%K5)U`27FIgz?-Ts|-zG>See&PH> zWV`e+_F46ypls0(*a`JnF(<7DS$Gn^GW632z`Mgp$E2gd;Ua`?<}MpiiiLAL!ty)I z{mbug)Dgv%Ie@KsiASGR#>8&(PRpOoNr2DwQW>LEGQAmF||`GF;P{O!>=JW zk&c-yWPu!9$`GBbio~|&@r#-zHpR-f`$5EbD2{rY_Y&A$^?;5A>Drgff1%Bn@ke*j zR$d$RZetf{Gc-nUkQ{!^^0ac)Z)|6OP3yl9ipu@V;&BQ^;YlX+4d?tQ>ZKq!5gVY0 zS^KQ=`z8owrazBgs6T|V6u;$+BI~{yn{WBCas$;7_cr^_PU?r91w)wb`q&D2uH#9X zw*+`mg;_>a`L>d)-#9Ol0{fSfUe>k6LKrCEaGm0=#}Xxz`1OWZAFQ|!Q#lFV4( zi^gqv$VR??qg#w`i^yyj@JlpszdV>|oP&sU=Ji91W%vOKi87NRj5mB+lx!5=2d7-- z@vE9Pu?1GS%y)012YWPY+aKtJRV(yieVOa)f*x7XS|t@TpPCS+jC)U+PYBS1J&HCh=A-JYe(k$#CT-x5bm9!>i&D*?&J%0g=YW41uZX*MYQw0Xe_ia{3EuQ3`wsw+ zKd3*1&xs$-Ka}M|0{Ji0Y~!M?x9tOYAz8o#e!1r#&WmrA{_vDQVfI*Aqw%_cemJH6 zFh%R<+?Fk{tXiF5hL)cD{igC>Yv=sciH zwuw)Fi3EnDB$+}T7Px1SEki~OdsvK8&7JqY8UM~t#tU~lU+#o1SAo{x2c+S^7 z$-i3F`)Lc+i1KV{7)Mks5c;;S1k95Fpf7T-Il;d?RmNt|!`$)nGL57s3spi5UIww& zBz~zTL;XCCW%GuN6s;zmR;h&&m!V=!*q117Hu}-kAStp;0`5yxn$u2VE|A$L#hv%h zHk#893$9r*%s`oFJ@QTS`b#e94cs|DY7AJ=BEPdR{)o(9t)+Kj z-&Rsoj%wGvi<^5|t4+CQ&Hc`@ejduLz|o^Y!vAbt@L8ChDfzFPR44qS%AdnHYS>;G z#$g@s2?My3<6mHH(;yd%wqeAF*e;OK|&zjbcXY>@A~# z1_D4gp+A>gyT}%NiS}{e*TTYIq7%Mh1QmPe2^Ly~apm~e9sEUcr=_jC^=;aptjR)) z`VY+hXvMr%Kx>WNd;kmO;j7V{jw5GAYf{P=?BILiO z|3&?waB6_DRhC~h8k$2+ox^dcbE$m&#%jb!wN0Bln=Y!7H~A1yA@-}i1Z>LY@k{=Z zlA1k4&)}jbRR~0*+5xnA#hp`Gzk#*N^>E=UIJ8rykZvu|+SCwVo~w_N`L90d3Pf4f z_|OxvLP;dTWTFSYE?2*S(>4khbHubm+FXi!xnz6U``Sd!NiP2d2q4LB%7y@2i*W(` z!of`(xSY#>WvP#WmDm_XpQo0*5;T*z_{;i@7YIx$RyyF3onL0aZ?qy90wbG}|9Zjv zJlEbRl-#rSm^Z~#hOtZReq|EBBqW97_`J9%Mx2n+s~8TbiQ_v@$$x!MM4~IVDHk}1 z*piioGGvUK5t&%Y*Kg1@`85WVtSM8OdjuR&rX2V#&+m2YD_Br1aD1y+ZqXmaQM;zK zzyY!*;MbJ%d%r|`QECXr0S6MrT!h&Q4OOo;)>uCOr8(Oi;z)ZPY?k_=_v^^;)(EWU zT>cA+y;vOg%kz6bNi4RoujHQ-zm%SB%K1@y1crkz@4koUT?cnQqO{{ozVsQ0yT;}80Ok^XSgQO;EDo}q2 znYXUV8!LTNi-4?o(FQr_IsqbPyZGhize4xx<;*r^s>O@FRED%TTx49oD$nmdX@Mbz zm5bOfQ*YO%l?Lr3`n)1tIq@#J{|lqAi_(=N>NszpqOgKHac6)z{xw2QCSC4|x{;cf z@} z5JZELxNMWRuU>hCMVb)|)*{TQ517XiBJE|vzML~dcpdU7+BLSA(C6Vo2b=7Ik1_gtrF=a~*j6bo!jfsa7ZdoE1#AV( zWRjhSD{unWJ2g~vn90sO|FVVU33|Xv1_*@3&?-uiWl)1cBX7Ws5A7Mkbas1*#1J;Y zbu|SWSZI2Ow%fpmn#h0g86WeJ*u8e>Y_0L7MWDe zGsL|d0~|AMr0ypFLwWq#Nf{oteeKd+@G$whm01MlQtx{rk6)FVFaudFfylfg891dq z$!442!iM&I9=}#>Y9q_k!rqSl-BBymLyQcOMG$CC!7tFR3KOvP6M9-yWVQS0Hfm4q z%p#YRapx5L%fxmzhO&(G7m zIGV?=5jhImmsT{A^&7rK8^_KeTC-McBUs3mBYUd0kSGqEmwcUzg)w7wEVZmdEzW;{ofl7+^?4 zYz%^s$FFY*BTzwgnq09IYZ3?=jUb%9BL zh&<5{)?s9I-H(+KK5jHN`+qgbzfiwHuUhjS^1Y4v4IJFm>>RM~{;eta#hv_DJF8$x zVVYX7$pm`B&)ZY$4_mR@D~UbVeEph=HOa3a5%wH?n`6Ev@oQQ)&?>-#C=Z66Rz|hc z*a+qv#Bq8memUFF09)kbzqaeMB{o6)%;VP<`q1?QT)6MNvK^jNOubo1s#!-O5r8|`Mho4HcTBzSaHYO8w z)Lt48i_K89?L#J;fPZzHl5K5GV_fp0PGDcQya2(R;9mqi>U}Y1$oEgmQTDpnhw^)+ z-g6T>!Vux-@M}Ae2&c`XHiNfoDD;)sv|nbN<7^6k{T$Lq^bxj&wi^{H9OHCK7eED# z=kW{Wd8%WlDm@_rgRn1+_NC0Qerq1Ty6G3RNZR`r_FHNA&u^Z^$9V56{ymfL!ucDj zGYUu+>aZ3G;7gvMKSiOG?m)yCmSgvzcI~FXSxjTFz!h-s>Znq$;+%GZ^R%0tHm&Ld z#y->x0(agQIL6#g+5zB~K(?zZk6+d15p%Y!_p*z$3-g6oD+tC9A|~?qMUV}VHxIJ` z-SS9WMlGN8NSmkNR}@pQzy?|kk?doM&>j8o*i`&-U~36_I7;t&UbG(_t;7yyl0@v5 z9DaR5H_b+KtK9Z=O3bZ5;_?#R49}B#Z;pRmq!$OF7A9FnbR-}s$ql40wsd9xl7H@vj#MDk#BAI0s~9wvIw@yXv`D`uQCH>K2$&74|g(zq-f(kjcZ`dfn%k zgdge;#fwzZg5iv)yLk!tU}A(`q%PT?9RKUxZ_$2En#oCELITfoV%^+zJ0@{zX#eZM&x4jN(k5 zYZwkrP&qagzb-;8?7dWC;aC#nzuwrotLzWKlV-29%3S^74*HL1MUwszX0_f#5;?By z5W8YBgOKN6M?F8c9=ztg$Rg&()|%nlz83g|qmV=Pd6b;*gY)MxcHmb7s|ApSey869 zWBi4?GEb|{njfCATYLy&`lUUU3+aR`;w1;PkK=v(mYc z-Y6=izhs*@ z?o`o_nL|B>a3>)5K;`gDR^WiSIA^(ocEPL$XfHRpK81h9C0e0}mG1r&bQOITQs~Iz zmpp$Sem<n=W*U(`#@E81xbChhlvQBZI^QcY*q2ca7!v*L3O0{LaqP`^RQFLV7niQ6I6 zSJ=y2CNYIL&Y!2sW^Ir)s1QTi^=tCXVYGn_=J=OQ$gPv6g61SnV?j!uGBNfX|LPKQ zpD$Ft2657kEQQQl3!mWlu^j)(%Dmn-%!Q;~cQ6!KejvS{99Is%u7Jw`t+H*`7 zWk&i;$J<1rA!=_AIB;@)~4bwoIkW`Wh=t2!u{^k(k)`!>wfw(xvCi3-}hlKr-;9# zUrq$&1?Up>Q2Y$yuYaJ8y+~I7BZdk;g6p$6o35bT+>h9S^uw9oQpLfp)#O;`RP;Z? z`0I()bhY)t3=V*`Q6}H!T8O`b`cXK4=&yEgF4v}SIuBi`=XG6yiV`)4!}A-ce@MTE zHcuVuzTf_H&Uqff=G~Ee>u_d|=_>x3##ScQhrfY8e_nRZ)Sox8wA)8FaL8Go-#FFu z2Ewk+BKFPR5St3|;?YM7Kgcy7kH1y={?`naSR2{%AEX)EPcfnXVK0cRjK7eo3aUjd zhgo%dL#IbqxN~CDeh}H^;2D#&PogX>w!I?1>%uMX=@@VSB3&qSjT}90&NvQ_5B9$d zKhL(!?8#q*d-peO!Dv~qmF6!CkqeISjhH*=71xiyhU8hS)bS>sj=z3K+?Fr7oyQ_; z`)^-6-4j2C?Zw*#G`=kU`VZ#u47?bi#DpYi*8h`*Xc{yH9g$9)fJsD|T_ zm4}}aW;XtUUlXHSP}%v7H|cz~t;LRF7VYni{=WN$*Cz4)atCoCjwNOJ!=Y`XvRJI+_zS5I&t5ml-~WQI+f<6b9>n() zh6}bZchL*>Fx80~BIN7nnf_A#a0#l%;Pv@KktNosJX;((6l=1s9R94^xMz!szZy=p zeURHE+p&~&!C#_QHpAhw&;0Ia7=QWa54{a9#_u%$obE7fO<^N!{#*E%(bdQ`oj+u@ zl6Zdpg@GBHH63}*VIouf<k%|-b6a1TiK4>Mc6 z7%P}>(oJgjVqROTi#qKhb`C`5+m|#}j9+xVB*9nH<|5p$@4&uL|4_$YLH)zAr_ATXx$#v`#`d)F z7aTkJ{mP2?3++iaTg%@wM?5@ZQ}`0f#w+p4{V&k*!-yi?dFvbRG``t>+rWC`dgE-Z z=C5FUI?qPB8H}E#fUU9@(mx(=Lro^k<=Cb(f+h`%) zQ2Uy>-uM%_>eK^sHTSdR7TT=iuV6{MD&6)tje5(cVr!e~1?CieFW>({9$PjPBcERW zcke&)($-U7umwvxE8;Jh6)mCmnF0XQ)&lVt{3_mx!Z`;C{t_tA$1ipI0gK`L`;&vLpD zujz-A@oOW9y2|}8j4E$?S#wtq-agmPajyS9nvTCtqN#{0(H$`-5LccMJcj;Ul*L~> zrwx*69pe)_{Mrl_(iHR`)BLK@7{abB;;(7nOO(f7zCWBn`Kd=l7GJnkk-heJ!{679OV2w zB(Sft{9&Mj`n|8xAIu=^VjbTGb^OKl)#afixS)$;Iq}Q}^YvV4UpoF`KZYfG5$=6n zt`}(P>wcTr-h(|&fB%a;zZ?0niv@6@@gxp%d_WsLD2M!o_rH9f+3;56k1Q0Tckx2v z9csjtj1nTeBEESwc@kF4$7Ay$of7@PM6{@_L*JYeMR$tdy#7T@lN_JhiX9eCBt9ttZW-(|JIeBh2mF4)ZyZ2LC~TJ@QD$=?U-Zih`3v9w@}sSp zcIK}~2~-JIN~{*a<)xmUwHj zzK%2vS7uPG+$vN7>G~=p$;cs-w3MP!gJ_Pjv4-O`z) zMA)ymv7L5$$#irm03!gqNqC90C3L??V0mJZK?>MtA+pXyy`j!T&X0jyo=gsg0$>z) z9oHL<;e?3hjNig&Br!e=L{ir7GcvwJ^-Dy!GT(ak91NCH!x#oLkSLu#E1i$KTWklO zUjaw@5;caB2%CZwA*_BBaJup2vBV|+2XmU1LvFKeT~^?=C_*Eac&^VEG|?B$<@dO| z>|{ZK(P+-gutbJqIMEk&x4hr!ygw3pF8ZuoKIIPDi9!gRg4L6+a|bgCt&@xHF?P{T znJfV#W%RK`sOPZ8=#|-AODb9hw#gkV33^3@evuT|qqPE%WnjtAxlYESu~rU@&q}-pp-CHB5#eI%y0;^3_yB zNk{*A2zE|dYvi)w?Wqt~L|L*c1)Z=x zB06I1rQMYDe6XEb0BDFFgCxAyKp*8~%B`{Scrx%G*c|2y5~=#tXStB{*_b8<{=~UQ zQY~lt`u^0|ZcXQE|XD^J8usQvPAT47RU5%Dw_nt0ZB+CPYM8 zlLoLa{?-|e->V-hZNzB{Ii3bBBV_v$rQ+L{D7UX`v>ZCVBvgtTYsAnAj=@S z27Wc+w0P<|?a}?0emlME+2nW1fago3(jh#xi1hGeGmxfBbPY$ZqYkalq9*5`d(8Bm>C~mgwfx8>SRR zr^5;WzQnC1S|=XaPS?G4>4qU6w5DxHj2BoUl#*SdfG<-(3bi3ScuJ=|m6>$b9Da5< z1o7c^M|e%?!_T%V71}(%b^f2`e>VS%YM^!Q1$6#%Z2fCLIeqp3gUf$k4)mX|-8l4m z^G~l#zvqLszxh7Sr)#Zepqmc>lNS+|A1&LFZ6w zEc{t*eLmk*>_3&L2BC)S#mRSFX=A7gh=7{FY;-p-hZ13c^!Ug2wAlpK0{bZetz+ek z6b({BR)avtF@%{z&SfRlNepHHl%(L_io`&Pmnq=otS0Et_X?;gI$i+y7ZPY-8f+f1 z2_-4-0-mqp-|H?u)x?^Rfj<;r&b!tlnxNrH{GTjdBl+m-sCx-3YqZb+C8|MRaIXy2 zP_J}yR?4Ub!DT1|j;r8h$L`mXP)C4I6)zhKD2Y&he$YCYUzU3;m6)tiKuNr?&Bma4 zP@c$rDpfaG1wx(dzykcPnEG-!h70m?xDuA(z0h~OXPm1^890)D7YKD|AZHyi9;C-) zVx|hHX9M$9!ONPUnU}+RVZJJOSrat#a;SsnP~;uA-%glSfKA`qnR09enG8{ugP=z}& zLxK(*jDI0vWSEYbg?(Q3fe0m1-AnXm6D?rjLKB zSV?}Nbt-sS6SNPs4i4&a&4~J-eozI_I@m#l0hC1;I@Ac6i8T*XD=*rd1%SGc3Q&SS z#|$CJ3_YS!36^`Rd;~GzRp7MEAowXGG_&Ff3?EL`vKP3HzmVh$;;%v-hPZk;N18Ov z60K8z*nE*rA<70@x`lwzGd~VwB-M-&b`<&m8W%xDi)NwW9rE)JrY`?b?)Ih+Ts{YR~mJ2onN*s z`_`@Oi>ggHkbDJcbk&|;u`R1{4%@S!Ei3ERQ&H{1N|I1%AzRjezi7(~xq@GWjL28H!Lpnx-QE9oABOolB){sqiBI E3t+6VH~;_u diff --git a/fpga/fpga.v b/fpga/fpga.v index 8f8f3825..b22c9d5c 100644 --- a/fpga/fpga.v +++ b/fpga/fpga.v @@ -138,7 +138,7 @@ lo_simulate ls( adc_d, ls_adc_clk, ls_ssp_frame, ls_ssp_din, ssp_dout, ls_ssp_clk, cross_hi, cross_lo, - ls_dbg + ls_dbg, divisor ); hi_read_tx ht( diff --git a/fpga/lo_simulate.v b/fpga/lo_simulate.v index 7eb910ba..9e3cd50a 100644 --- a/fpga/lo_simulate.v +++ b/fpga/lo_simulate.v @@ -12,7 +12,8 @@ module lo_simulate( adc_d, adc_clk, ssp_frame, ssp_din, ssp_dout, ssp_clk, cross_hi, cross_lo, - dbg + dbg, + divisor ); input pck0, ck_1356meg, ck_1356megb; output pwr_lo, pwr_hi, pwr_oe1, pwr_oe2, pwr_oe3, pwr_oe4; @@ -21,7 +22,8 @@ module lo_simulate( input ssp_dout; output ssp_frame, ssp_din, ssp_clk; input cross_hi, cross_lo; - output dbg; + output dbg; + input [7:0] divisor; // No logic, straight through. assign pwr_oe3 = 1'b0; @@ -30,8 +32,51 @@ assign pwr_oe2 = ssp_dout; assign pwr_oe4 = ssp_dout; assign ssp_clk = cross_lo; assign pwr_lo = 1'b0; -assign adc_clk = 1'b0; assign pwr_hi = 1'b0; -assign dbg = cross_lo; +assign dbg = ssp_frame; + +// Divide the clock to be used for the ADC +reg [7:0] pck_divider; +reg clk_state; + +always @(posedge pck0) +begin + if(pck_divider == divisor[7:0]) + begin + pck_divider <= 8'd0; + clk_state = !clk_state; + end + else + begin + pck_divider <= pck_divider + 1; + end +end + +assign adc_clk = ~clk_state; + +// Toggle the output with hysteresis +// Set to high if the ADC value is above 200 +// Set to low if the ADC value is below 64 +reg is_high; +reg is_low; +reg output_state; + +always @(posedge pck0) +begin + if((pck_divider == 8'd7) && !clk_state) begin + is_high = (adc_d >= 8'd200); + is_low = (adc_d <= 8'd64); + end +end + +always @(posedge is_high or posedge is_low) +begin + if(is_high) + output_state <= 1'd1; + else if(is_low) + output_state <= 1'd0; +end + +assign ssp_frame = output_state; endmodule -- 2.39.5