From eca155089c348ab013b397636eeadafa39092454 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9my=20GIBERT?= Date: Mon, 11 Feb 2019 16:44:56 +0000 Subject: [PATCH] Kernel 0.92+ --- .Floppies/A2OSX.BUILD.po | Bin 33553920 -> 33553920 bytes BIN/SH.S.CMD.txt | 4 +- BIN/SH.S.CORE.txt | 113 +++++++++++++++++++++++---------------- BIN/SH.S.EXP.txt | 10 ++-- BIN/SH.S.txt | 42 +++++++++------ SYS/KERNEL.S.MEM.txt | 29 ++++------ 6 files changed, 107 insertions(+), 91 deletions(-) diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index 9238fe4b11bcdc8ea89a7fc6e070ca24f0cfafdb..2a6b036f33ec9b5afb1fa3aab5617bd21fbf6bcc 100644 GIT binary patch delta 37430 zcmafc30zdw_xOD?3=GT+!)$McMSL*GqByd+pyh&qg0cy?l@%x`q=EsOmNkrtnu)2E zS4(RowJ09|V+iVfHGV0sD@jvI@H^ZR*K7SWx-o59Zd(OG%o_p@O z=RTVL>d`mB|Mm+3%E|Fb&s`1(6#^#5tHU1pTa}0<4;y5R~&eEpg|%egLD)8 z)4ylq-(=iFf;Kl)AW+W!1oiY>fT9T6xJYRTQ}(>vbC!?*1qp%=qI~WS-TLT2IpluZ_@Ox z4S%fjShsYiOH;zz9d05`?`l`$_t@i2|C65S+JoOk=^2`ypo|UrSC=G(OaG#?5|k0P zR(v=vwRWBK`~u(hNZ#7@0IJ5O_k=^k7ZQ|?@XT}TR@z#cZLQ>RPfvFsNa{k<&uu;V zr#pHQln)Ngcq*8TiZ>Y82G@8Y zPH%N9^FS+}b}MJVhpP|Qr_S=aR zk9zkGPjGW<(>ZAwJ@S%rl;YQ}jz3>gKB7?R&r5%H(MJv|Z!mi{X?8 zz=Idt!&-YDm&}KWxjXQ2V$MJPO}TXE7wsS9doJSV+xguWJHn4B9}^T^UGz|=a-y-h zt36(Fe%id<-E;haqT33%^hcEggk^NtQKbun)^Svc6LQRJO4oq#m)+%U%2u)4Usuk9_A$ql(eN?un6j|{lnbvA zvnP1ZVZrnYF~O9|JhxKa9PAbjsJqQlCf#>TIX>v4t_>=b#4pE`4+tO86>lg@;p5aB z%4dX+I##@?3=`r%>O#3R2e6;2gNp8flHvS`0o^L;^ADQ3TXj%klMEd%yrukIp#X6| zcT#!C3M%)^hb?;3GFVu>Iqn9?zNM!Nl_u03G_bG9*OErkYdAQNZSeQ_3_W zwhRu~6t>o_+!(g|30rXOt!IG5HhaLezwpK2b)G(w}eoL;~IUwafGA1^BW_aR$a6s4njUNtEw#>kphl zX_98)An7)pObJ2IKT+3=pTab$pz}Xfj)X3EeX9H%K30APYW)#?bEm)g;@n&3PM+I+ z?pF49;kh;NcQgE@?O!VIqMctV13LzOr7QzuOr75V`fU2+H_Drx)df`xN5>7QPA<;N z9zCFPR{gA6a^@y5=%?QNbknER_@hmMKi!YDebYKaB8UITD1W;9({}>Z8x)?8_^7A4m~XG=h5`Eqi$wGw)4&s!hcb=)IFtQ^xkR(k7Pd;0o>u9f4Pv-ZVyftLQK3oP#G zZ`yjwbEO#iSC{f8klpn2$|r-e&bO3xN?BC6pd2)y<^1sj>U$RTZ&`m{3hjTUMcLU} z*fO=#ogl3}-&zEK_>E4vpq!=n>O6h+g7WUvf(vZ{Fx$5kUD#H9p;h&5jk5jb!!^p! zmR|Ohp7i|eu4_|DH-EMv2@Lxu@5=@1I2a7o$E45iH%t24@5=3dN|#$RsLR!hTZ+9hS2bIJvI@*Y(0S^mhyUGVo9 z{9W=1{ycUO22|Z0((;V5_21B;<5d_Rb+-}}cHfi>V3lm;EqxH2x)^wA$tO3$fBf5U z>48gq>wmcz40U7W`bC$H(T^@EXAb7}NE&vzJ#cTOa$l7aR_|oD>VSF=_K%bH{!1-u zFJYfOJ=Abn8AaPKD^+y)Wu+EW`~J(y3^4TTw3l0S^!R1vU}1d6FPD`eiig6q@w=}m zhuXtdg5s~d)O>lZd(y@;(w_MIcVeaWaZ=df)_7EuU!%u7XOTLX<58pwkzM*T@nyQJw28f zb!FUH8&Lih{k_LBLeSFvtCWL;yhm;k&&KT8cm`a!XEvU3@7;K&+`R`xHmCI)7=o2& zo4*80cq_eC5FNrZv_%m6#RH7{nFD7cyr7Z~6pOnJ?!5=jcmh@}3OKY#m7j~gEiHOM zb)Na@bkvKg%R=Vr_?J{2@h=4){|V&v{r(_XUZ!V*lAvJpvq4f23h*-pp_TB!q`7*{ zvqA7*-LdA`;H9T-!M;Wzy-f~I@$Y@fxP)XxxSx6dj3*eF1Hk;sIQ)=qjo)IcI@^49 zgQDw83Ccj5&Tj1T{JzD#12}61z&tuwA@&pY(8&rh(zy#6-GyodZX!8c-qx8>zVp(q z%PYTa{%+@$UEiVNmNqB0e-7x?(&VIeMNS&+_pS z_JkUXHLa~U&j#&by{kRewKR3V(n8NFMcpkp_Q+j_+&*RyI( z$f`A(-D|WV^Y=9AK>*6N-8$f5gIWqt1W|4H3W@LP25di+AMEbdN|A{NyFI_NkMiYr zF)osR-FU`U-j*rNO>F-yzbvWkWRs%pO?4-ix9(vsQ(*W_;5bf&ueAgIjK2av?0!2jGN>ER^l zwIsmb8j4~UY_P=5O@f`xDfd3KSs@!wmAm(WqFHjWur&>!SgCs-Y<$iD^utMR4M6Wl zXbnQ|r+27C^N{^={cA~XE!01Y^;)cdmSclL85@+kpY2Fk4=$1u6d|~2;~7+h{K|wj zq4gk=6(S9@yF(A08ny8h?AJ06oH>!#o#74!3}_KrS0PLymV*I!dhNzDFf4g8U}m=- z_?2|YSUm~{C%=DkZ_|O$6b921u{TB9mnzZeL88g_LF;nFcpQ~%)i*F5&UymY=IfH_ zfk%`kdh0ie5c))rm>}rrs13?&B{Zi7wKzu5&|?0<$b{E=8ekLgF!(vk&w_6g`QDh07|BufeCBiD+Bh=T&?zK zr0BnN?IvY(C^RW%tK0_V)1Dmq;wEL3v;FB^pVW}nn@}E6wq0jxctLN6h>6h$Vg&?~ zu+PL3r5-i(SqeQ4JW=c!hK!|L({)oQ%7BgDTK8lo91!KJ?#ZAaz!V~Mc6UcGVjGbF zy}JxI0I)1}&hY%qAfT5*98~B!t`{)I{fZZ`(*qk}Tz}oKFtumjBUpnF)2mDLj$vQAuAWwrkx_9XR9OX*iQ_N`iS0O^g7i-IFvH z_L)Iz^O}&~wl`t=!Yo%iSuu#qTVg@LWKZbYFlGLCi3k&zAD`5AECXb8Vz8$_s#2{?TRE&FsGOkrs2PDf&+hsX^c8-#vLP7PN3wf2OXK%Z zN!pjtzF@8UX&A!K(s8VB>m7=+J`JQDDedDC@tf|>HQeTRzCtf=Rz~#EG)=FjmAAc> zQSOE*yl43q2}XJB-nG)c2UwRw&jz%ooIJTUsmcA60kj)?miDfb_O-C;a86NdqLh@{ zu694gCO~rAYkfHE{(kSn(!NI|>1N>J8{T4NYWo=uju_uNaf|0|Hb38h(SQOqr)Ir` zsHEFc+cV{HAK8?Sk7-TG_%Vo=cH5i!U8N}HZA~y-1Pm0g1y)|+8Pe9oq=yXb`jYA3 zS^UYwxDFKQc8Ev;$P^rT>=giWdk1B79~t+`et^5vI}MI`qJEZsOwYwGC+(>o{Xlwm zfR_xw*wJ4vZWiK>!I#V?v?1aSy74a2Vr*sPLw`^5 z{t|Z5u}97E&RsxW)g3O!NTS{?Y^?-NHBb49R8I?AiMmbL+E}rS7@rZgqGS>mWmhy- zBqc8+;@<1^sNN@Rt*Hh0{a3@=p1lS>gR!M*$9@h7TjwkQNgw2rRy_xW#^Rc|Bv|3>jIBkFg6C}2nZE)cm4*m@61 zj`1*3iRyg-)%*v^;Og^%tUe!7-94h+`H_!R^(lGS{(JQ>s87p+{#a)13<~;_p~SF7 zQIMYI$Sj$-$uYjvHIx{)vVyXLVqUP4gg&ashV58k_IgK7Hc>yOV9M)@*LI|=5ML3T z?(uDQ>D?HqUTVLw?WnX~YM;LT^|%(Dl%&sfALVubmfBO?(QR=EcT-GzRBo<&7Ju3o z<6h6cmAmg`u;uQN{5jYC6Dzo)llJMP6URL}!QaE4%9HQwgnzbuf~VkUoYND$PvI$e zEzTokB(Lo(uY_n+tMZjm_58R;eQLI^#m`;f zZ*~d01nA&+M*05NAW%{#&iD4%oxvC zw(={}Vm!(#(__FSkMjIo{wAEVyn%9t5K7pQcfyW%#ve8udB_jN48;Sg^L!R=)1$*p^wb)h*NEe_8B4LuX4)>^@^>OJ?l8wVnHV z-rJUD-Gq~` ztpT4^$Fi_N(@6{)EQ~!d%cGHQqT3P!Qk*x(f&ga4mRDw1=a$|XdsnPr|2tM~ZzY~T zs#^xz*E{UnhS;~I*tezHTf=?}9c*_v>}oejd~t|<*%15IA$IlgPNkZ-+ z&7GWP4-0B*ze)P;Z#ZNL^n99sC8kA<)rIgty zl`eqV0a%_@SKC-Ir?IAXo+Q%&1VFD2hl3Q>NhMVci|T3{s-y|^&`BQ%DKRGtqNPcQ zyl+KKUV~IryP&4F3hMw1u$Ns_Dpgi3shLwHHDKozODbv>RLow$K)hV#)xtuzU_n)- zlqLf=NEJZsfXd|TR4JZ+NkgP^3%Y1)_>GtfJ*z&!{9q{56k95+rChS+Y`o(jetweyY zyT*_5a491iPImRDD|C1jMh9cWPsZo--n0ea(z`m{I+q+ownJf43;f8{M7d6;qO{=KaS z>_|B?5#7IoVJHViH)aFR<)}?y2Od&tCm(uV8_L zJ2G!_#mWVvt`lgFCF&5qY*{pZO>;_0RxhevN>o}{j|@6o2A8eE=B`@TOkxbhb!?f- zUg{`@e|gy?OwU#}CwL^qrRa~qN$1uv#ZyajGl|N8ORAACni^AYxf#ksE%NjDJXabC z7vU*CduC>ys}CDQWd&H#COA^*n9`Z0S(*9yu0{1VwT*L$Is!2-CF&^fIX*n5GdRJ8 zGxYCeW)*r&sS;m}d(i@mD{vl;PDysvS2f_Qt8~p?=9*kpUt6_+sA8Z;ODrtU3m3Ui zn)wwCjR;S)cJvnJxE!e|M2v&)wN-x9=9C1N5Y+%^oD@$t_R}XS5(K)@q&Lxb`{_f% z#YAYZXhEL_B}5!3P(x6tSr|k&*!8xMWbXbA94ycS;d%=l8?8494q6(m9~C$RP+L=I zilnzF(o^Z4XnmR@O`vxe^``U{1r_!4T@?+k2_-o>M3c^WcBB&3P-tZu<{P$xoC3%A zyh0K_96PiIsYXD3Tn5!jdb==^BaaEW|2Wv!QljjmweIyttvNGTBwNw5E{^onMs z2IfLDOCCKc>CM6<-g+{pDJq{DV)T&_1pr|x?88oRSqT|f#AGefSuuKJL^1aykvg0K zL_LLj!{H^2X{V{QF9108AyWlM24&9XG}$AYj;zjr;*`xyH5s?LHGq|vW`eqwmd(s$ zWxS7@WQXo%-aL4gFmMQNDh#&>16_94#HvPU2|EZ9s=pOVGF_uxIIoE1HX8G6sHrHj z97<;xi-YOF)t;}_J;nNQ3WP?b2twYYX+U1iPOnyShq5jUtJa^ubttg0l+hN*yrhu9^l{255O>6>Oj8@`-PqCv0_O7cm~na7h>) zmywb}LaL!SC%-g@7;A*BovN7WnI(mJg%jZ$3BDcbCV>8g&F5_y^3fS2WPz{I!rn&V za;sXomAa1i9J`1X+VwHQ9dwah-(RR_%5P{uYXeSqqdZ!RS#kIhoaW$@-zj_ZOF0hv zGJ46bk9FR~43KLGNXx;v7?MFOcMDr98WzCT4N42<)t92&)yn}v-2!5{=X#a*%9YOR zRW|WTtBdQ6KUxu#N4)4D{k1fc`;LBd+5DhlfZbYr|;bgq+CAh^Zb z?|SUe#hQY`VLwFsAePBQZ18sJBVwbs#E*zgSk{M#hp@zFfMxu&bAVngJS@}n2%~BK zW-m?DOVbu;E7Mf!rD-dc$uz;{`zpaa<}LA~X&aXHp=mq4EnXibJTCYD1nYmMTkhYu z0~P{CXl7+469jC(M3Nv zC+P9Z07UyVmT{)cZM`f^u384_S58cO`joNZeg=#BaJ3gpu9kEoc2G_%!al}qmAGFR zxPse?!m6c>uyi2-!OzOPi|t;%fKzPB`GUPYtjvA+3Wtq;-$G6S|HY0f^FGZ#f%S;(w^)ki#r_qUeF)+WbZvNs$bX1~#A{`4G3*ilh+i8FxfGi=v zj(FaZ@mP*~@$k0b?tslX!Hr5d1O%=t4)fdIR>g}KEXZ7g@rU4l%fbnJr&l)Tq9_^{# z&W!)X&irK_aT-hdc8|@V|BqQa8vksl-g!puHS7~_uLyKMhTd3o!33c<42G5Fl$GRU zW@k>FK_CF1&M}IaJ+*WpUtHs`67&aHI^VaD&$|m)$YsKCm6Pa;SmYDR#47s4 zAbqHCi4Dkrh|50RfeqB6s`|!du4xqu7FUtrZ)GvXen-0o>0_o`;p|R!0HLtd;4)+V z9#n|=2Hs_&Y~dns#Ja(qi1^`Z^+M9ImFh>R4*#D(UCDZ@@h5pD{8?TJf8phMzw)I} z^&0@Ieup2XKYYUU%2)lTEXu#U3iCHGYj=SbaZ!?pe+2qvvfd{2Fn-NOq8PX$E6X*? z)v$QZoT`QfGC-g)gY|Jvg<{~U8D2*vM2TRf;9Y0~6a(+WiJOx}f>jFchx89rOm_G> zS-+riDQpvFmdcVLrXa;uM{cPrEvtEaUYRR%d?^W5E4Yhf3|1h8sBtoh_7LbRlO7wa zkA|bO3T=SNsnJ4FZ5`}wiKv6GiD)JIctoKxB{6!Sq!-y5A1PP{qeS`}6zB&}tmD0{ zxmvM}ifa^Gm19ys(9f)3v1W9vE%0m-Ii$aOTYW{n>TOf7xOKk>`jSH*6&2~_JBsn0 zUsq8n^F5>={n4R!2+=fVh~7T9Kk&(2hS9FFnZ-FPFghSgex(IP*}OC|hTbtmA0fmt zX(_CBx?_l5RKzK$>!VN$eRqi76f!^-P;5NCJVYO3Oi;+tPY8b|0y|MjG&)5eX&$Ix z!DG!JsE0icaBEAZ1u1%~Fql@Q=$B%!G&ho#`}r+|m#NTV;O z=m#gKLqpwA1&d)jGN8gd%!{RW2C0SvRLlr!PSs1dX2AD|kqYz-SApSoWi9}hxB_A; zuKXN085pHt0b2D93KqB4-l*7GQ8~wznU+tqqxneScl8*+046(htgjwAA2^O~O4TPh z#{*#1oK*!CHMOp?I#=f6r6eqi(*@rP>XuXyRW{I}$>EgSQ;2y2M-KMTH_V|Ed08U# zm_*FE{0Vf!2cgPSY$N?9DPXIC_Q)PLckas499p+UuT{iPrnzbQ0nU76z5qZ{Hv3>o zsu~y9*EYDo#PUspx{zy>stBM%iWL|UhhQ^{3>W~o{OWk%;is)c^(eR(mrKkHNy2N1KQLz zGUd0^n4x;hwE4i$(h8zl0GNXpD&&KST0RV#MIhXa&8T6Lm zJ-}P7^R`NXRxPa6EtUuUTRBFqM&YP7K$q5yeQHX|N}KV#Pqhi^ED!am%UI1e>ksn* zP(LC|bTfT^xIV^7QL!LW1EGj5&{ntAO9m4ED6i}*RQ+RKkO@e?W}A!wEd6%G@VK`c zrS!ygF}S@Ta|4+OcAyAEDfCIj)+*SQ+vCzw?ju1v6^_&`BzTvsLUFt4h7o$Z<0)ti z2XCsUp|h|yv=9}wmCz<-LNihCk-2<^b7|j8zZ?Nu-+f$R66I~mWafBd5YD{cr%FEC zqkdLK(k_eY0Fx(}UGzc5Lu8;C*FnFfEc_rhcV7ImuaZPe&oT6&{@!53^K?UoK0Nqe zGKq)i!3-d=qc4d*6y_JMrBHm4Q6%rhkRnIwT4H?(SED)Jy_nZw(!2~~fQwTG34i5! z5HN@#hn*-$R3Y`NoG$SQ>!WN&83b9-H^KcAF?Dik{FpZ!m6_+D!1QZAioLFu=5?Tf zAKdDXaT+)@(Yzs32h-K?rhgUc)>~+=xg|c%$?AWCk+pe}Ioy6y(Ypl!*D#H!-`-ZFs; zMIo9-xF}M5sKhurOt5#1o^5OsbzHxaquUg166ZeME@!GW=EzpkI%{?;%D@> z$!5#c&-u!z|AMb}Hx;v1`mSEOR zv7JWr=lxoz5zPhPj4)jEufdsc$%pqcjaebCIh1dn)fTKNClCS5blGX;&*sMt{bJsn zN$Cj7?YlE9yLW$K5q5uW5e}WTs3V-A#^Yq1nUKBGeks5nWe-hDN=r?fk~T6eH*H$l z?6fUu+tXUpcBk!0TbSlddnE0NIBop70qt?Gru}bV&7gjR?;E_!@!{Z8j_r<{2APKp za-4T0BrkU;2K66o9W-vxVvfrBS$u3c)5$9%x<96IHU(neqT z#jK-WY}1LxfI*P$l@EDmw@3>IN#z6DchkFmF-I#`Hx1?4dn32&Vgtq|NeT3}?Yh~a z^|ATp*fu4k)IgH=YWm)Gofv-9?tb#XnXq#QySk&Ly9ey-+I60%7(QpH|6YJ8VA#B0 zp;Ii0r}}>^%ki`2AB&{P@#b^?nM5z|SH#ed|FOKS_;Gm0?jDOrk$`!tE3Zn=9p#2Z zUdfu+ejDWFhDb4q?bB$JQjC}Y-!k^{+}e8*+JmHLAgQj&BIn>jiE1rt`9VUv0b9Yb zRAT#kkZK#y1esu%7@VSnv|74fDLyDD>6id<C-9WXwn%g&C>In2~BX-j(Q0LTyQ8NvJLKg|*7m)UApC zM-u8giPE2tqjgmh>N|;a_XEmg#h;0^LM0{(NgeA|VzHq3JD#2m6mJ+>l&~QmScRm{ z6LN~@J%f5vJRcl%Rf=b;AQdIhq98FDqcvYQ`BNY zP*FmAy|i)&b*ja*8Ss#gxo`*1LY8JK%LE;S>3Id`d2_jSndu zDZpl6E6TEWad!8YlNJHMw${A|Ou~aH?IG?q%vfvDvRwywfF$HK^wn@<7Y5FrysOJ%Nr~X`v0WXwdfb*?K$d!dT*2&eEzmIpDV}tR!kJVR2Qnj${>NJ4$o&CX_wE(5I3pJw35W z8|e%qJUj!N7z2SFpAk?&qGL(bLWoF|Hr8Wm2(m&{CaAWUiDLwW6}+eOkU^G3!YqUl z?LD1Wi-hGDhFJ*eLKoMtUW7KXi^6BvM88U=$Pn@Vz_;~bBrT^Zn zjTX}g-#q*GE~X>%Hx309>S3G^<8UwcUIMHm_$aYat!gZ;ubNx46mlUlkgkz*3e}1U zqX0SV^$a(#u`ezv&UV07_d%k*5yX!B-O&JSA4AtuZEWyZPFTNj^hK(TGGux?Eau`K zPYtt-;-D-)aYM2yYAiztwzSyU^tmEcKs(z5mLAODs zIAKTvF>SmSZWD|Iq)F)?;&9$^dYEjba~{oSsb+{&aFJFjq$~G|rVK(mLQe%cJrwoi|JW zyEY>30Cw(OW~y@vr;)IOeHpSohgQkrG(7J&nq?(0Q4gU~V&@Q4f(T4%5)nI~ADki? z%{jG|kPqofag8Oq7v)Y+pF>{ujrc2aM{;W%-NU}oRUd(Q4(ZzJPCh^C^hXIh4&cy4 z{~8w~dxQ=1>l_)VrQw)AAZ(ZoZ}@{kf$B{dj(%?eKm5#*^W+IUr19{R&5)UDkkwA+MqI z&YH$K)kO2PESup(^$ql@JLk1HSqVhbC9@Bc_dHY@FTfDwXQR!Y4ZS5F0pQGJi?x`|^L<&j!YI^z#qIKB4~tUt;l zi#JWs@nTUZqWPbU9|CYc@s(X|{8?Vfe*whdzY@oAN;6l5m;$W7fra>CtY~st|F|wT z^PhkXrh|9dP0T4Hs=ok>?r*PDMgvd(`0>;OwHhMl#HEsOfoDX)4C{4t*^;P$6g&)> zq9B|~I6k%p_+4e`lalj3!{A>4~Th8l8B(f0|_3tlG_GD(>?glVMV zMp`sRv^rIgMoQw$LLbsrU#Alh^Gm&bOodEp-V5ZJBFi0 zNXRW_fD(12obLzOr;N&eNM$s=b*I)k!rK43jEm5mnU9&7&5O`*)Ph8aI)h-n&aq!dsQYUq?lrd>UiEPEP=6-omrN%4xIu$B%0zuJA@{I zR1%iNs>|{Ua@MgElYy99u!xujVK>b8DXUpng}#pwvQK>?!$JbL=sCfDaHGM$z*JOq z3ML~gBAQg6OvE%9e7Y;&F`)olARvloqoPqsBetRRon2b%+~ESO;BxO?&r5_%RA2A7 zyI~ZlGN3CHM4PXIHjeUx<__--vRrPI#W|Wz8YM<3#tNIOM6>hi>{RP`;kvdcOV(#F zH;}PPbU8c`*q%@bvu*-ZdMD6Ctc8SCwvys1Wy%ARa*E(o!8JQ4E4Ro|NQ{$sdPd@+ zLEim=b~4~VX^dD&RQZ4-tbhrF9rNe8Qi!#Xj$IXEQJ9OU!KE@SfMizh6{RTv9$q5A zHqUqAt#{IDAgPrR2e!Km08LX-XxvcBN80w zV;9KrD;=I%|;g$TfFhXZ#XaJxE1tpg)WjErE@~ zc4A%324jF3l2CnA$`&i+POmsrOL1V9p@p)U?&5s+znk%mM@8!x*G?_upK`8U#Cq@b zwGXmS87V`FuF0!-rLYJ>;wc+j&`QWPCA$0k^=>87R>oFD?9Ne2RLuaSSp|)lrV-U@ zVQVP~TZ5X$*Tv$5`-tX#87qi%Ei|w`aNX5Fvkt)6XpzwM(3MYNtPe8bq?tGP2}c&H zb|W;B*9Fa{UP2y1Nj*%z8!Ot1AMtC}(8yu{>di3Pu(3B&A5Yct$^j?2*cNVWURV9C zkFt3_N%NS@6ikC{(7+70IOS>J!=!oK$C3I8ZpJlkrqRrj?|^2uR)L0PiK6*QKAh4{ zHk_sTIXT4-u<_JscKNVapJI~8H9qafQf66QKGC!R5LYhKGf;{7m-)EgTu@cDh^Y6< zi^x7cX;k~M>t}h_rR}_H@c`?(ICE-g4i6Es%G}^LREs8lM*#BTnN>*D&(3j}gmZKStPPMK}Ue zy$Yo3j(GJFC^U5TQka9u{;Hz@VtNfqxmofyRlhD1eoU6a8$|%9e-rHvx2}lot*fx9 zk7IHi7@QNlb;wEYbX3318SnRR#(04o^3ZAC=^e257@u~N2eHccN(v@t*Fc*1`!W^( z!Lj&&kA)GkFHx4!A2F0AIfZ^m<;z`tfzAmGul$Sd;b>FNPGN z`V{)Ke#U4Uiusj3+DfXpukeLT+*tq&`w}>Y%L%AcGc#8b+gF@e10+!*vHiZ`#Ck(M znseTsh^h^JDLP`yasCe&V#-e&)1?{=#S<4+d@W3S#?J zpg)|4u=#Ji*6=&4%_=G^%PX9kvxeCI-~g6CIe_Lb1~8$hgxLP(RpLLq3hr5<^H`WO zqwGFnBeeUx)@l{_VQZ*Dfpyb!^YU|6kO(D>zMu_{2*C4NSRYbxw#?2nL9WsRa6FKWeM{eTp2 z5F0WT*%fb;lAO{2-YgeoR4o1UqBc@%_jMFKfVNMB_Y}p`m?b*Xh(w+t zrb~jea+c|mK7oWn=Ale}-UQ;yKO9Na$vpjP&|o@$iEiLb2R~8o-J7X~05u^g$OZFq zA^VWo@-!$mrXz83#G|kXFsmU2kvS`neaL+2;hgBm5%kIuU4%2kN3?1rAkdBSr}2h9 zG~Ou77uL|xD3CE+AnLI)0ppN>%xef3FB6a@6Ohdb=$C^ENQdUZ1$oFYl!seAQI=J% zA037~A013ziDptSDU*>D$RxzIR8s)uaPtf|^@UJwE4q3#7c9VSnW`8nty3U9iMf}< zm|n5bhW8t2OT5&8%LXZheboT~RAtcGGIjGL(cEtuXHGjE*!HFz&fpB%XVTP3qJ^rf zM6FYIlgvWGVDNEn?j?T~;L_ZJ=PfL}8-A;ti*xmkR&yJ);jW3goXbcJS%VlG44?gf zwVC7X$4OL`(2*LF1yN2q$QR_!5u|u&<{`hZ)5{?GYH#^nEHkVIYrq_25Z&#)nO!6j zG6b)6%Q3-(L_*Twb*fUZE@YukXKQ7ZsYC8DqmY7*Lbl)?vX0ba=Eiqfu-CYi-M^gR z$SumxCdPZOo(yUyPz(nQ#wKRY@`~_yVJ({vF2EhTf-ZSijLExCrV3**MUEmo`!cQM z%%K(J&4{s?k2XAlN>F@UgT}y_o zrQ_ZchfZAQSL#Sz3(~b74S<%G#dbh;)Kdx} z1C9ZMsJck}4Gs=6!ILy4@ZRMya}*Vm&_swnj@&GpLsb$A01o=Dol~xgT6Q}hh6RGi znnBP%?$=@4l#HYf#&9O{(a;C?3RLf4w3Rw@;V$w}@HU3&`$RpG$9UDF zWXKx;(tabMx7kcFA){eHA;&sm4578NVCN~H6!ss-)E#{W?(Z8laA@cqvhjdH%%W5B zAtn-;?I**l6lX#&4-=t@DHjwPld*?3-|T{9)|i`#CeH_=hC{>3s-^6p5I$F>A_zN) z%7?b<0X6Ku{~u%lc3TK0Biy^R-poiNAL!pxGH z1oP&+%2)xdEwf>SdFZFtr8CaChNVh?72%kW`GpzH^T3^~t{OIHzUvlZoQDB+*-6P^ z2?lUfh)#;8hABTY-?syT@cC#)m?ax)Sb+NHcVwzsh|JVpml;i6uhbR+SmGV@@jcr3 zl*oEN@T;WO;A2$XC`)ZIml_@$+U~qcJaDy~$p?-RW%*d{x}Iq6zFIWl_u$mLc0v=) zy}d*`p-Wv84}-_r6K=u42-LEO90W$7R&$?xwgO@Bm6!wo?=#ml`(V_oWV5`Q&nNX7 zeoQgoe&3YgBfRQ5ltixeQi7KiYOCN13fxA*?K4rq2_p$#M~h2DTW|}XmXYh}9VKE! z;)ZL+bt4~F^(J{zKLm}F9;V0lY7>P==ns3f5yEB~Qzl9l%6awQWJPYFnfm}@E4`yk z3=dL0N>-Dk$LR8X(0Cg*4p$7`j&(MAdY{$|Z~g}4Pteaw;ROV4j=Ys2k9hJr$agXp zX=*8i&vzk~2;nKZW4~4uo~E6D8qG>;8@Kkc#yzNc^1{XTit1-%e)f`wiFF^L2TDcL z0C)wJd;kTP%W>92pyFA16xw+M>p_}2RTQ1ic~7dE=TbjSv7>ji zxWYC2?_9u=W@$5AM=wNM7_Y{WQUFQ zb@i*@a$U__7m%lWv)57*-CIPyKY-*Mr=L#)n{`4K%}H72Z)30jzDCvFkyY(oS%U9z z30gf@OOP>cec#Uz^cq3Ue|ow50Qxa}NOCcTlrST{>D$PY5!?&`_HK`Lo`Q!0WHGLataYm7D!J0C7#2>3%b5$b1(cGP@x8h z;lK$ZyMENg&(iyyr^^bBQBF8JWWxl4G+w$!EicP5{Z^LgchI5v3fLw2CRU19FTa-o zyJf&10MPj3HNyWN7k=i$q2M4u{9*vF`Tgf?n`U}ha4i1}wf1m5)@jt|*B z^;a42HvqK%F0cQ8a3&-EddA9i8 zn0^BZTcJu8*Rr_1HxYox@CV7=fwRQu8Vudt=Vp2!^@4T8eItBf>v{@;7AbsA-sLkduEwLRNx+wxDjw( znsUw(9pECi3_9hU#d;$+MX)9J4j-JnB;3Hd#R#}xFl0qVL&M^QRq&#bMtHMJ#R6gl zhlw6|Uo_dH#(1^MmvfNp$|_CH91StJu}JJV+VY(xN}CCA+=1+uMGr3!BM0iU<)#_U z2pyUuPtGhyRteFd*M#t}{7l?j3pR~}=!St{QwOfz4W85xiGr zepRh2XXzsLf-atvWvd3y!iTtYe$67>wl_f5UJX#HzMVTh*7?`dG7=9i7(Zrd_L7|J zs;qOtM#NPC7gkw^M6AW+0v~_4eB>38DDcQwzfLT;iX#p9Xv~B{TErbdhpqnlM4B7@ z%0WdY6%-T8V&1lodT5q-DJ7~q5#dtIOJM!meCrw9cOj}}P#b<1=99Ad;!L>P4;>~E zK?1^-c{28LL;i>&`!L^pPUBB>A`$g=EmW!7LqhT*giMTo&fqTxd1&( z8%C{+eg$H5WtAkmZXmZY-_8ua9TMxE1sDUctn?!cZ5o>f;P8LW=tW|Z^B`Xu zAh(&N$ZDRGDFTk32k?-8c`b4XWTP>QOw=8Gw1>U`Nlgt^74>tfApz8DTwu_K_=g_7 zccvThrAb8nqO3SCaV?0uY91S2MrQo>Xg2UKaV0g4Bk8abJ!d_?D=@ zn4t&P4>5Bn65LGYIHfn2*3ZHBwcJ@(U+Jo<1zYj96WslN|L!yCOBYqlsVb_M=YHfn z&>CZ@*J%xoDKWk0-(f0t*v}((IJB9))2UCFruX>*BopYw20kAZxc!jJ6g3e1QeruU zD_k!}tOHDoV=FZPfqzQO;EzJ;;3_X`@H!C^e1`dX_mPlKP-B=!1a2uYKrY-+NY}$V zsURUIwasdr@O)cE7zeu)f@e9j*yYVuitC#CW&HGkH0Px=d{;(@t!0@76w(wiN_tzEq z0=BxF&oA{4T%ALHgsFf&8oH_MJTdMk-V6&JuuiPzi-Y(x^aiG#Sz4~NU_2sz_3B(R zzGSb_6&ve6Q7c(?0i4t|-dP1+0FVShLdb#Rn*yRz z;Ynnm0P5oN2J(C>SP&kCvJ-)bV80VxD-%cYVs@95s6qfmq(%S*>0E$DQlpid!C2^^ zP8aGs)=nX6JwKDQgb7S~eNb5qa`KSB>4AJ%qaUpIJ}9x6*l9RuB;o+C8Wa;=SCRvr zqd%HKtdI}K^|BWLGd@Km2UHujCst0(0LYE=xdYh2Dwgk%qJfM!ub?3QK>9`ca#;F+ zvm*~{6g%B^Xdo?4_J~!{D4PC$qGRm(Sg=a0$%GJi|F?W;+s-Lc$H5zHz+FaO)+O)r_1quy3DDE zEqWFo%jj$$HavmCw}`LCFRlVG7Q_k)%&bgM1m@n&X`rr^qB&?HjEFT?po@O9SQL2z z72X#kqb6ZKVg~#C!L$>S?^jHeKedL0%3cc}-6>jQR}l4l&V{&ua{(!^ z-kDlBo`f%?8}EeIvet48b%?>Lh+Kq^wg3`w2fRQE@Ho}=a?cGMo4Ju=%c`!LGan5F z;4&<}N*o$Uwqu57BniFKSCfK~EBeCK->i#Cce7o4f4O1WAlV~9APF{L! z4_==l&4yk(4zF}XD+y_Lkf0AQnVwJ7@cu?D8t^dZA5QfT!7n686sAIi=n_PTEY$Fb z_VS@C#=8R}40jN=1Ah?T3;=rwVy!1^Gx1=@&Yz4*RmYBJMWrA>Hpd@EJAJ!d{5sMM z9vQO~rH+!Rh4AtRIJ0Ay6~qrPY-~vem(1(q=N1*@IEqV(CP0o&-@qY@BAZW9;V+{p z5d1S@J54vP(ON*=z&pEcdlR^5eKs%)h~^V4!aO~Ac^!9LqCTT{{AG-U8w=obFdK>L z$5Ze$5K&}f2eFnfp-=S9Bd!B({K&AXJ|z67!h1EVg#p*&ENFqtj78UgW(Fo zdD(q|MIK^|#13v5)%6(rJ2enyWay#hGPVWR3^-xQn)3Ap@X#1U2GM|@#=IGLVFO%7 zNTV$A^#>n@upgO=wkmH(k*f-9sQD-KY`y4s7N7>bG0gUWsKGD901gM-K7hyymx$#z z#*)+YJ3yf`GYk%)8u1*1sKEup{!D+${S9U5PPo4f1D6bx+1IZMTr*<+2mRWQjbyV)S_pGC&|M>IN+KQBe-H-XjwQa86<;f z1K}&?Qz10?V#J^p9K%yK%a#m8;&5VFlZQWpnpFv4iJpg(PNBA2G$Afjewd8oa`n0ZU0 zL|XGNF*4FB&v&A>$@VXtPe3t(KJhR3O(2ng5<(eS`3@EfC6H+KeveTMM{fx=Z6wk4 zNAJozY!co0b$~e`2CHGzz)QCCv}jWt6rl`xavF}7C7z}n63u}Lz)5r>opea-7n3AI zjcm>W-voRex%aHxOt_vzk_Xc@hr~g42Y|_$Lg45SBRDql#w9Bsd`fUWQy=-#WXVkD z2y*jEaUVd8!`Qg7^8f}&%)|W_S~<5@GXkjx=HUIjG_ylA1rXavfjZko%Lq02B$$I^ zxdGd;T;^)8$t9-IeR6&w%tKUTfV{}D^uZ1>B6u8^Z4~_8Xu%X|0$+pZvizl&jnXqY zP2fy00(xa-1W%%`C@gtC9fZ-DT~bw13A;=1Eo8wM!JFtS6Ad^OOzprtfHOhN;7Q0@ z?8`W|7K0Dcpx2nDh~QZGEY{Roa1QbIiw4{arj?+9;9(F;8SZ0zM@X_zr(Fl}bo!;j zBu)jF!iQDHshSChLT*CY;e`+N&3N$xQmetExSBl6t$xkt!dnvYTBf<2X1*wz9N<{U zLo(Z&UOpQztHHrQPf1xpBk(hbbw2#o zK9e|qfh@XI5?m|))|QYuoIJR8f*0Z4Bc_gQhBsF?x|qFfAR2HhWRdF{y(!0dr~|Hq zmsU9`8hi;{U~PBOiU5;1#=MLP*3SaZ=ye{35gp{{_r^u;K>0;h!y+y^uevZ=y#7=KR;QG?fj zW3Sub6&9SD7&i6_i{)plH}MfwJp`n}uO2OWS?rI$U5Q8Uc`!}28S3CR>w_wjC3p+B zK_dLhAGp1$us=#)cv*}!JO)HClf*Odqqft_FN=}zqUPE_lQriFKwyGwdpQ8bVuvO0 zrh*;vypp4Ks#cWOlYDw&$QN^PVB=8GFpt=FGE{-Pke1!F=@mGwhGXhLlLd~c4L>PO zis(J`=qr$G`V5wuN?|qH3$TWL^62_H-G5c5&jOUXoqN(&$h+_LXK+`?Uq*KjU}B%6 z#X*pQ1FuI$zbf)yum^cF&^AbO2zW;e3d8e)Y+C$$jTdFfj3fhJrmqH>lANyqGRNoIr2`nX= zH=$F0CKYnrw=SLF>r#mNBBRUSuatc>e!zdv5~S5{t%Jqb$J#`q{z$GmbyXEnLw-Hp zQ8%8xrsiXr7I=#>4u|CvYS5U>!yua;tU>QFwc)cq1#r3i3t1spuF_c$cjTA!fg|vX z8o!cBW)VJ&7{Ya#uYH14eFLB&=g^d}`^H^dWAx`C-T-eO<&B8`0v{XsQF9U6YZC=?A~r9G)T- z3SJt7yNzfie~4iTaPX#K#1^7bz+7aeERdI^1u5wBN5vF{T0w>LIurd&X9^O6sqh-? zokKQtW6jJi)#4dMfZ zG*u-h4ubTd*)&!uH+^6b#T8keAGTE#oVHOq;98cNjSq!=h?>L^7v?nEG#v#4E#f27 zaj=mMO|hy!Y&Xa|rI>a7gtJR>gI|DxQ#FsvgUwGUXL)~EJ`yh^eFg0NL?&jJdMiwlE$Tu?|ZKv=h+ zXKqG$5(0wcS#E<-HqHrX*E%(Rd$KJ#0pT|>vrQtN4~stLCb=0ENDl~GXisZo2ZWD1 zcBFvhfGD8xF_{o#_TbJPP?Z|3h{52UVf zz0;}IEnO`myC8Mej%3Xyqzr_uv>3tJdZdGq)Fp2qeu>$=QYFXVMfP9`FcASxRhl#x9UMWceU{)ZyU%9A`0pE6mT%Gt@hIN1Wh z^g_eNEqSXe4g5z$`aoR9jdm&xN=NxE^T}BKe?-}kLs3wZY=U%~)FhoC-3kl5&qxGI zy|^4IWV@BpyfMK)wdQ<6BpF1#<}q0Y;p1lXpTvUj@$fNIh{!DnBYwc()sSJ3{*DZd zK9X#53Jz_DSzOfRn8D$?;o=PTBd)hAS-ZiAs9ueciEfjI1yf6t_>ZKxq-odAo!H}` z{-{*P>Y4RAjSlbh7p*p47@n|k@7!P~;_#bSo@|4>t^*4Thh&r^*C4NN5ea)0#s>ES zWW-c7AfwH=)Y|HqCo(Cwe;4;BnwUCRJ+m(NSjo=HtUY^DV(6g(_`=}Mg85u6Cx+6U zU`W0=I#OjyA{r)_Msek-)F5?lNnAWF5$(AU7gw1c#e?Ix>I|xfna|;^3fW*{W+EOl zj;7=BTbH>cJko_by`@{oTpAt<&y()| zvIN(%3~kfz*zz!D4nF;ktq2crp&K74m)_bqXH}}h-ed#r{uQsG3oC5dlT6GWJRl=y zMLMM-nx&6^3ix|w$I5@_RIK_(PDMB?pNhU~byugG3+CcW89V52lk)7Q91nrR5lpJ$ zh~(jkT5D4M4rFB?b~PC$HLgibIFOYrvv$?<$vU;xMLTI%T_5gO%L;&aV!p zviHV+Z^5=HPKDV_W98T}Ii8fiE;@1gcg(U|qC}%3t`Dm-DStzdBC}Oa$~EMga<*Jc zt}WM*>&o@y`f>v~N6wWS%8lg4aud0!e58Do+)QpRA1$|#^W!+)3^%cagiw-Q)tfyWB(WDfg03k$cO9av!;`+)wT= z7syx$->uQu#7j@_c!L ze7U?(UL-G;uaHaSCGt}FN_m;QTwWoslvl|qd9{3%yhgrSzD8avuanoy8|01hCV8`b zt$dxlMZR9XLB3JmD&HjEEZ-t;lW&!8lW&*rknfc5lJA!9k?)o7lkb-wkROyEk{^~I zksp;GlOLC#ke`&FlDEq{CVwt}A%7`>E$U!a|q7fRS37X z9FE5cXoc1|5pB>G?a&?_&=Du$WOPDjbU{~iLjk&@2YR9xPC;)Jq7V9_ANr#R#TbBr zI2D617(;LxPRAKI6KCOUoP%>Q6vHqaBQO%9FdAcU9?r*DjKg?Lz(ibt3o!|kaS^6q zDyCsNW?&{R#w=Wd*_eY8%*8xhipwC(#{yiAg;<2exB{hEf~B|;%di|PuoA0~!fITF zHMknrU@g{RJvLw?HeoZa#dX+%>v02a#8%vdn{f-a;a1#++i?f(#9g=>_uyXKhx_pW z9>ha<7?0plJch^d1fIlG*p408iCuUayYUS6U@xAM5wGC@HEgC>e*$!5JY2@{xgDn;ag=b1qI!vOM+X@zpv;!c*lZKi277cch$tFqu>p zRu)%OR~J=P^Ga-^^*Rtk8j}Y~gnXkXqf?^8pZfN+P8UAPK$?>+HinPz2K;sArDt_l z(HFMsPU+^fKlG3;`aRto`qH)fdi+Ug(#yIFba#_}B|^E)`sw(yxmiD`*U)qOKJ19Q zHM}EaY^#3nhwcl<>u+^;^k_A(-}F?o{x#i&_FXOd0eW3a``1hKJ$3qo)BBg|hXh#@ zPVXeGL7NlSY)&W{);{(|{T#h+7;U>*U#5GTUc6bK>FRs>`hy29DnCZmvM`u4ZHeu`tst|Bruje$&ZKzpqy!@9xNRkB@Hiv=aACC)-Ty zcf!Ht|8>8Aau@q8x!L3dobRRrTmHbuLdf8hhzQ=p zV^i|Y^GQP0Saq`u&DM5iRH1dhERD9(r_B$k^TY zyzhRzecyhARo`RIiLs9?abIYE>siA9onAUiFFt1&&;C|EZy4F9*Qt&%hmw_vvmV^( zUbTI@&5elJ#|D1fk$O1%*F)KgX~%;~$g1tjPq-hTuRL!UtnYQI{g3Ajcj=A&PPyYx z(YszU3~~N^rp>UM*lXODQ}-o)dY}7KV4=rfG9)554SCt{czW~ceV?8DY(tCqvsnCD za@xJ&bX)j__daD*o5q6r$LX<`4Ux&uoM{W+e(`>{^CjZ!2)>^&1h6^&OGGWqZ|-tb2g=d)43r z)7oD(u&FofHG?m?{#iRWH7%t871Hwd@)=y!UpyXC~b@bLdYkc4-9%f@TcM;nqqY9)KO zeR}bta^zqLQGP_G{qGt=Lv{10`D4RiG;{RFhFm)<84`4R_}W&(=I|X4M3u~=Ydf~1EdJ;d!wQVx$)6e?(CO0XuSX1(_%rUPVIdm{&mT3! z4eobp`B68FlZEbAX^tl2-q zG+9mOe`XkjDj)gG@HzghJceQY2YvCFVH`rH&karJ@f$ujG@}jQe{Ogde;)h7Fdlz? z|HANA$kNk~pZWHTe)X#4ea06dv_jBYYS@KxAXY+$!_w}?*nTd>p1j}VACeO z@|x(omv~Qa4p)Zn3r|OPbl6%AiF?CE;)R{$_VC^4>O>yS?)e^mM8>$bu=hCC641JQHI(2Zb>88fs z8=gMp4(okngWx>~19oFxRA*1xz=_N;(9KG?(jc1k|-FSxmH?U^=8#_bY zo|iX8W;UM=@7S(?spa&xCk=(3zXx$TyE_f^z#){qo;-D!0`?=$VX@r5(*;J>r@ zZ^=>i?^#-Q)(};E;rQuAn7Lk@T`^PFKIMEUyMa~tyL_H%~5y83qI zoFP=d<2ysX@vY^)6}Q~+L*pNMT`<-8Oc(Yi1qEg5`cPv$wnRgLvjd5R`is4L{}spb&!d6AwST-Y&vI?q;EURfma z{hnWbVhJT%hgD3d z8at(cNM`!rc**ItSwz8-MT_PyZY1U~6q(t~i`Y=a5l*(wY(y3LtFH1bYVyTjMa&WY zEG9eII;(CeiE!}0at_OqGu?(?ofV4-hwka&?opIt2|1?kLuVm?0Xf9H zdd;3508{&#Jt0d!PH(6aw3pQ_Wqm)fdeQv424Whd+uGF9OiY7y83$7OlE@)C>RT>3 z3?%XjI()d~^2Q9+ZJoEU(N|fwaM6;ws+OkFO^X&X1jIBbA~UIM?SHNQ{Muj~Jz6tmOqNTAFf*u?Vq_(K=5KT`;TG z=S`bh!Q#`2c??R5u^LgV^W@UG4Kq;-FJ!(FX=tG*k3@{qZS73ylS3ROI!_+Q)rqQ9 z&7Mn)WvI?p9$1E$E7atC65$;mm;`jjN=9Fm&Xa!$&T2n-rip4>Cn2hFfzN|dlUZA* zpsgx%IN70B={y7J%mp)vX`1MV(CIqQAlh7qm}_`U7BSTbHmBC=GJMT-wM{eY(d^=e z#>Fk*F7Wu~Hu$Dw7Wi6fXDq0b*M!Pz%sbXtLbs$y%PL~bVr*XCdr@p!qhEQ~6)mls zS+umJaN#UsvJyTLoMEJ}bd;xRZ1L#ob*v{KLwbhOJtsL6W-{otP^1*2U2!sZvr;Ol3A67?l;}6{9?bRa44{(G3(*JXOB3x%wvft8Hf0 zVoQp#Hl?btproXDTuEtJdByn3s>xHPHZ`}r@FJx9cROCS=)68iM<^QLEO91vmhd&V zG|hqllpqwC0KBALhzJr1aWJg7tPoS22~lvbx}b0zF+o7I)S}st2u$4BAr3B)WsnWT zoXKTbDVNrLMZX13EE3^iHP7TV7mi}1DvR+eTjN(~4#D8z9Lp6P>zzk;W=L^!@*$(q z*NK5tN&ULzUw@!94G;v|2Wkw|gl^;@l`b|k>RKwA>SoVfT0o40S?h;TPajE2y#keC zNJk9i1BiD`Wp&kUkQbsmjl+>SaRi;;M@q042ts>}6qzTDx}Da3W^_apYBg7gt{X)o zrrD*bMFIVR2>`)0S{)-}1fqzs98uw@joP|b+#M&cyo8hP5}J`I_4bwq;Kwj1YFI)d z$}Y)kEC>Cr3gqN-xx`acHqldAUS3U{<1a5BUdf89!)4MaVyr^xxN4P3PtJO6MEaWQ zYE26oYg_7xYXVg=B`0JogvKO>GeAH_PiCWMsStg6E30ak)cNW$UWsuEvYV$e#$onB z@Li?yP?eyV0hVbXhRMmCTwvD*G;{r#w<- z=?c`FzlBw7x`kkkSw_q&MaINz;#?Kb^>gZ47NSEeawi8PR(I*fTzbrCO_$ihhHi0e z2&68T_6oK}P3A4!tV#;buv{)XZx=1H-l5i=3hEtqUY_qR@U(s@v2E$n7#HO%Pcz-E zvV5zUH_|~I?IXDog|U^2EMAU((n^xLk| zqZTkfq!OD=LLMd=ck?Ch5q0M7P({F_^s8*CC;cciB+}dKaZV0fmpoOF>#O++RK$N1 z(-Z12*{x!DQed#}5p5`{zFnLAZQV?M`(D;9LX1`wRYQ)(K1DKoWs7{ZO>;7RjZJeK z=-M2~9RCa>T3g8KG0RE#{w|E5-v0I|Z^W|!U0Yp=iT6Akp?twZzab`_NH3sHHbDli zDr%TDw_%Pi+c%t8Us7vegFEyU!j&2fhXZOYYH5rR^Q-Fc#JqhS^L7~~%Nv3Vm9{sb zJqk|CN9WIkm2UQCE45oXZwm7`b9#FB>)s?k(Oi?v4 znwYK~60ome)4~|aV$C|Ch-&lFXhE#isuSu_>QFEwOjZ6FLu^RJF}#08jp$lDvp<$p zdq92%@<%)W7ws;Uc8SxzNQ&%A`-C#IfEc5IBRm?LE^OA>mXbFq29cInk>A58>&YT| zp(b^=9uV zZZT%77;`wn{?6P0gsSFd&SMOl$)>+4A6?A$S^d<8^=AzmK&=C$$b_hY|ATkf9P`08 znAhQ!h9IBd_o~Ll&GkMm2uxRq{aNf#des0aCT18%h7E0rr?hH}ke6)ja1N(?Z#Fs> zVmHiH^a4>Vd?at{sDkRE^-TA%VOQ)KTjd*+y$ZCG@KHRuy12AxJ#PTE$Bp%kY=?~g zE@CsMdhWtHw$HX>gY55G7D=RHY8xoI24iBWwjpG*xP zu39mF*vRY@q%+iX$jX^OV4bB+`!Y=XIwUg9m`$$PEOm}b2a|S=dQc+HZe|n}jxG0; z5&K--C7ZaC=y}N1oz$|-S6P~~k{A~-+7~j8G7T%N0cF^j8d>biCZD9~GEd#7H$RMlRP9&W_yc)WQRZaVer5%b3{ZdQ_pOs-mEVxq=s=Lkp$CeSM5U;T>RsadxPp((xubQ*SH?zKO z=6v7P#Ed;CA1+wLve^p6H=(M!R>ZdCrd+YIoAa>d4%)&x-G~h-vGx;c63z~>73kmH z0*QSn)0!j?7%&h;EQ7Gds1h%2Fb%4fQoObyqNH{{c?HT~ML-eLP_e^_9)?l@ zU}e{mOqIk2RLyOw1{x+6C#Z__M4|jdPx2ohi^EKrw+g*9`LbS0nM`7*Xq;MgU7fF? zu5OlZ5vCHfX=2276!VyDr8(mzY1}k)2v+adtAPgR5ouSlV{uP;g{UQSX*#iA!xXbF z!>2|JA5*O$(l`Ss(`V9OCP->S#NEV_F7{X{9s zM2vIEYLY&WK0Xn}=dpPeRfnf%#e$b5l2%o9R81fVqWZ#);_? zs!Wn3-F5W9A9kmgZACSv%0hQ z#avj$+kqqYHQltse5=;`#Jo;zaz1e-uJ11I27lh@+r*%7RN^$whb3WVeQgsl-_R-X zZiLVZyD3mS8gFJo(2J-5O~=0~n3k){wT~~?J&Y@m+j)zSq$@k|u3|{!|0PLRtCDmL za=C8hlC)?oD-1mX8u&UEyjrxw}^}Oovp;5Az{wct^K&|I?PBHeCia&a%3Dj84hN9b*Q~L?CE%O24r7idoh) zUHD*=X3F!{{IMx{=Jqvp)}{I#bFI29HcJoMqu%=4j(OIU9h-SXFpp@zxY>H$9D7eP zFdvp)X(rrt9vohnk|(WR^P9DO&2M41hv{Czar%iZA+{JA@v7zI{!rV<2yae^Zk$KG z#`hFeR*ozfwbD~C)t3->wcmN;pFr|MyA~K-SyVJ?#breTtN{{;$*j%|OF&uFw7S{L zv}>zhyB=9sNQ_}RNLpJ!PF{tNi$(1F*a4amn?7Q)3$;4}JG{pFWimT(_2JruII-Ic zI3&V#2TqAxqU*Km4yVMmQLk?tyLeTv7A)BPX{rq0^O>;cW4fOidp&i=8L{IdVc6>N zFf_zG(v$7^*tv5tuyy4nF<}qLRs7!S5X~WRY`dpsj}FYw+ewTGs6a}j?w&SRQ8FvN zl$cUgVT0WrUl!5@LnAUe*(5Vzk<$m&Ks)QC18k<(_q6pIiQOG>^%b)N?e&z@Hn&tQ zSkyu+9!475l4TPqOAPKV<)K8PY`+u-2As08;FBiuHZ zKJN#x9QQWjHt(j=T=++SG0?Eh_b3StQW~q9&*mBatJi zkoI)j5_O{l(u5-VdYmmj7~3?GJcgc)vnA=r@(Nsii&^DYGRew>QWyT1$Eo!~o5n_s zB$W!RWgKgiRE}i6$gBc8W@Y;7mddfPH}l~n0%%ZX)MFc-F9mmyD@AdpRD z$fW+01SdVYtJnnc)y}D%+Ys+tuxL@ExUO_e>C$Fso+M)`Z?iTw~O7;sw`HWv{EzM4fH^~%?U;Dqj+1Yw-H&ZJm`Gi z+-BcE-;8A~b+~=HR?Lk^?9M!+$~n>1>>73`EE%#%DE4cfqLQj2V#fyUfH8hjL1kHS z*%B}&^r@s@wyx7{sdcZ z{Y`@NPGY*52`Zctd)fUp`eeCCi6tf*b9CDA6$gX+Y4 zcB9&}&fCE3L|;|O+~$^oS+m&XBe85^af!Zys#0R#jNdhU*X(17HN<(l7Bh**6pyMQ z_B&V{YfC-HR6}~*Nrxxddg|`tBSRm#gz@sPW<`nR&WME#K1qJHRH{`&9L zY8$E5f1ef;Q2#a-*QNgZS&Uy1<5Z2Q3*i;iKuJ@{Y87NXsFAf@BkLg)SIL4BB*=Q0 z#i?w0grV=kmK|D509lW+xGrQp#$vjXRnPL-@(oUBogt7O@qz#Mt zlUj^QFTYiC?V&j-HmA1@0tm{Filt)lf&~R6WUtoPeITl{4@NF49z`tB>$Ju?pJqg} z#!m8$t6PQvSwkGpbcy4GU_XoM(%NN?%MQ<+9t;VRNXnQQHBmnvyBPG7{_mnfH&#; zsbI`ox{MV}ULn#~Qr9pCSHcl*BW`l$6cGzvgd9{UjX0!HD$tOS!&-IkbXKRHj#%Dh zQDV3_|G^m1m4o*85Z9**zk2?YW$QXR1U3+?aPD~{-UoF;#)4)>-M>`oTpwuEi88CX zQ2J1aoam4K2OFIqYo++8Si|(9kbkSq3jc()LCnswy6cGLQwxg_jfy@(`=;BXbVmhY zVV@zXV5krPB;=S%mF;s4KM?px$QLT=h%Y-)^CivlRVQlu*ZAFqH8J0?n69j0#lV>3 zyc|v06K3{Z4JA>w88VTR5v)=9kZyCj?0cr`qP!8&4`Ni7p!4*Os7@I4POtNL0~)<2VnIqVO|~$&fDkPPAHEdTxe88CWk0fIp7-a6P=T}qA{K(B17JnJToC*FYe_2zaU}CT2EgoCXo+%prshs|j zMYXe3`m@sLK#$F%OQ&-@w#3K`&@5K8p}y)V6-6sN9<-zneb8fb^~^*fx50sGS5Q6H zhqTc++-*q5=7TpsCeni}LNJYia0nMV(nTM`*UnfrK2IlVyvalB-uw zkg@B|Llb-Ev-T{-<$a$VVQ*7fP+TUoOjAEGqRjnKh@G6^WMlw~nko0m@y*6{X`OoC zPm%`G$FppSd4qt`IaqLUoTqaXnTKfglCUeZ8ndA?dxlb7wym#Y7z$d4>$!TyXd%uK zv>@B&2rfWE{75=A+vW}~#P66QK`8?P{xd5 z#tY5HVKk?<2h?=y6WY1PZ%mURhN{m*-&9K9O$Bu_Xsj zVhx>4pUbhi$4n6e$~YBqp;zf~dd8L(^E7pM4kV_lMYBxPc?*c;8f4=44=Z6*sTcOH zwbY$!lR{>Qpfr;X&$YS6%~BaxCm83PEf_PZZV8lMb+a=Ed2p6(su#6Lb1%ySCZ^4U zErl(0@O%&{EdVxVDXpRzI~U3{F)c)S5H2-<${90#SzS_lF4~f3iw$l>ap$!(KF{Xx zHZjgE^##%*H8a+Ci9_9{7L~Hag4Y2hSn3kc4`W2*b-*36RIeK4EE8Nc-vC|>+`>kM z{YK6<-X%qz@`mzK5^@u=vjfSHn|XHd(<>O5uw2jf$5>jR2NdE&cgiZZMGTOpF+MR& zaF-FFIB_ee6@t!yWl*|>#^>8y!7D*y%qn_CzAbv1j9G$H2UbmS^QgIV=C;6=*t!P1 zWfqR9*Q65Z*6y+x*8)keb(}u6V0lxCEJ|IU3YJ8zr+f2lk?9*WT(!WpQB2CN)fsOC zuDDI~hkRQvcBG3^!*16~6`<4|-Ia>DE3op7qUJ%o<}DnDmufh&f#dG(aJcRX#NipV znstNmUXT-cUzZe^T(07~>upGL-QOi`;A+01en9lKsa5T}2kGzqZ1LXhtX>?^;0WR& zl(jyr5ycwzh)4`%#~@}BU&ElfG2N`?Vz%U&W)k=psit5SLI38g$m%R`mj(0?50W&w^ zUA46$D_Z#vKS5e6&F`T?%ud|C+WyIxL7&J?%nBzZizP+8ADF~O%)glY233$G9|*E~ zf5^$A@Bd~@ZBHF+duws{uq5rc`L%L(?!5Z1J+}70_JpsyIYY9Lt)Aktkv?3%XH`^| zk1DV76q876Kx}DAF*|f_-|dMg)9uKP&<717(eCz(IT3Ti!+Q_Hxe6DKHE|M1RV(0ksLybQr!G8G#)A&EG>8FEEW4J?L))cht06Rrqh-0 zpJo3fRhLOWU1w*HHS7`Xf333{YIdBr>$W^^r`5O!KnSlpOYuAy*b> zU%2LFPa*6d={t9sESZ=-R>$GLRVIBRx}PQTGJyzkiT%^A2r$-;s0fY<1n$rDrPGAK zX40Bfi_1P(>I)LmNz5_Pp={VR!oHZdQG4$$Y`iSk6P>x|P z!w&SN)Be07r_2PyMAI3upxe%hMOr1#c1{dnHE8}8Z55I);(S+%N$7X}dGo!>x(;d^ z=j9$y%p)~Y!*U$UEbeUqjZpUFV!b!*z?kC+JCVZRV&Kr_fm^U+TT;9~Y`n;CBU3q)* zp3ZwV@5MZC-sZeV^A;t2mi$ce@+2kiy^JgS4D0)F-_WcC&)_V5){s8+SvPsE%ra+w z?fEieMBkq>;`=<5wIge1))QHKvcj_WWPP3WSJtHbtFz~1Uz@#{gEuexmh46Oi}QUs zo1hMR^B>87I{zQ}=kVY8{8#fn8Ze;Ww0?v{)wug7x+kQxhVA{hqlk__Vu+$I{_M2U zFYdES_OCN`UTiJdd}R4m?(u!x*~x7?==DE4<7o0WYky-*y8D*|TC>es8`hXmVo%s< z7+B+;p5&fH-~YoUrEE@YeQ58I@Duw^cEq{IB|m)fkyG1c_KGrmpEO>qho>!v&W+^ttr5-mO+VcU?r!KB-TjpI&gi zqkn%u`;Ln)MNfy^YUn>XDZOp_p~Q|UcmUd=MC|K01~c(t&i+Ik{z5r{7_n3@Y--|Xm}`(nYio5k?yFPhtEE8ZsoVD z&OiL!Bj2y=SoH&*pMK|Fm)6$*P@)p*zALS*FWsh>Vj}R%_JmeLo8iWh)VGVAQ>bAAV7^MoG z{>fCjAXplbN76Qxzz0IX-Xn(!I&6>aJ>veM4+{<6d?c!-#E{tTQNx{SUAVyvyLA(~s*z=?iyRQd!K9O@`5Wl1A_AAr04O_NB*qNU6ajt*yzO zNq^X6$YW{4O;YS&#KpU3=C(!q9{{(a?p=g00O{5>&$I@~tC_0hdYVm33(blUBPC%Q@6@$E%1fuUO?0C&&!H;CgvzQ=Rra9@r62$e)rCqKPB3&| z>$tr~I`q5^jA3YVs1zLrY!_S07+*OTH{D^#$^svPx0_h=P#NB>Bkc6EgqPhuQcGp5 z|LzV$W(nvUp+=VU$n^i8ja6g%@++6?caCV?x%tSgBk*eebaq=b8?1*i6{Gvbv^GoY z&b>!kABi|p@?9E)f|ah{YKie;NSQFavlS4%^DWG8M7VY#CQ}Jp8*V5$n8sp)OLXZw z-xyf4@9d$zN(^S;*$(Hyy=N8Mn!RTa)ouztbVHlI7!zV(%@a%AyO*(vgkgTYyM|BD zUs%g`7PvQLw|!TVmA>;Z=zNQXzAUj_9T5Ci$vS$>EMnsuu0wD&tz*O!Yu&ro@w)qc8Pt|@`0(2F<*hp- zFgQ4WJ9rOU&wg)Xw+xZ&aQybi5W?IKjPu%I=eHYJq zR%CrQr|nBMD_*Xpb$qb$%T-_P`|{A$$|3OMOXYQtfwF0Brq*2;&o^##Gj#49Ic+0b z*P|C~%HZYsESR^vFaFRMEK))N`ZJjI=g#F|5CH~04hC-zVuqK?o*dZq8q<&0dO z+Brs8CK_jjaWbLqEryt6l*!!Q0(@=Bt*TJM40qd5Zi?>ttD2h(tf*h6V_<9?KWe9=9Uxr#P}W5e#iHE&2mDsZZvmrjgvhJ zHT@t^nXxeQ7n#`G{1>I7e$>nzfoJGgP_Uskc z+Z~^fn3O!Ho<=+s@$Hs}Bp2-wEuH)O&F9~5KG~~ab|>=pn@<=||NZ9k?>C>qTo^`d z`~~*kZ$1Sh{(kd`1H8ZAeE$9BlU>>T{pOPxVG;cIo6msv82*>18LCD4-)}zue)Gv5 z_~6Q^+c%#vx~bx21?-9W%RRiHU=KX4S8LBJ*!xUa5{s89Fv_@wrPc^LRsI^?0aM~j z-)F+AxT}*L3m$#)BLnsd6L!WVw9fwu6Sl>}9Nf-?Kf|2EOl0v46Wc`g40EnZ7^G^a>0I>ze-)C7RD2gMnpTVz5E#_tcU&fQvR1vupL(4F&be! zOu}FNflu1lKPx1St}(olKk1qqyxhZ5G8$u=(YN+IMvK3hGY& zf~VGUm&V3H#6>~OWv`&{wo1H6;Lof0E2w)ArM`l?m%W0zkJ;+;X5banw$2v8WZ-`B z3hDtwUh)d6HJ~#8E2sxGYKU<=*dslpBJ27J>S6W@>Jc`+#Ve>Cye%2dM*~pe%9rg_ zLm$&PX50yc(YrX?#49LR>N5T~p1AxK)NY2UyH`+80*MK)t@!Y1=o30m35fI?LcLHHgJ|c=dacO3hH@eGQWUA>MJO`t|H+tUGfTw z8P%%&@e0zT5B$$pP_L?#zb57$dtRl!1;+C#W@Z!irpj^g-uf+dqQ4!$S@p%5<)Bu0 z5HTO>r0_7K;2q}wO}nhcidP1gAUG!^&UXV4HKz-YVWxk8DjZ}w-}AS>UM)k6{{*^N zg>HP>5)<;iO8vh$^P02Q{FOh^@eLB0 z^>Ycl4^%Cvt7{~tSH>n=eQ->`=86G{;!{E*G~ad zvj>L->;c%%pws$`Hb_BF#IK$76tUMe#@~>|!R$>1@3o>P*qU-O|5Tg&m(Bz?DHoV5 zqrT&~1u=1JQwS`buuloqt5y!gWDs}A5kY$9qM)?XTN%txFMlK+%+8JZlXhbdcGhje zwZ10DO2>_wi?ss?A)Sp1%5r-Ox#jQ)G@1L|dV36t;F{wy3r*$?seak6}GbJMcqwuCk%ze0J9G_{Kta*KT z^O(&kYhG9uZ{A4Q#*AA*qOxhnDNAHbj@tHIo>*93R$W{+p=b>rw()dlzDPIs&qqZ>i@7D`e?0UFF?E(G;R(2nP8pA<@oQAO+;C2(orZc5|E(DzPTdU?m95R*3W z-BgT15m$=-(p)DH^Ei#mB)U`&Cs2XvNpS;rFd0#%ntBy_IGu1`pz#Mfj5ZIdkTJ5F-Jb+j!HJEWKsTSUNc|=P4NL;LI~)}aF)|BM(`0o% zPVvvjse*q!ucDuwvBYM;h*Yg84#uN1=C;5ZH9vc0V{KDiLkoKV#+}p-C(dhV{1U5U zK&`lxvd(~c3HM{0H=2aa^tZEkG%@2cOI^cEuqtKCL7&-l{t|1(lsW2!Q>SO!dJq{p zmo<(Hn0e|HnvZDv0!Fi{7L}C)GczFNYEgq~HnT{yCAN`%x5OIbz1H6rV-pZqn*(Wt zi6}QiEc7rM7yD^6!a9_gU>eE^SgH~L<50LQxQu`sR03{P34nDd8~?p-W`oh|DJd_n zSl_in7c3xVub(c{a+Q6)0Ma5>_(@ZT$t|7KF?&$cD)mlJM!f1}bv5Fn)^zE2FUHS; z1#J8nZ$)b4T9^=a`r+W?0@PU6Y1BYXT;Bx&FHejcP}sGxOWOrqCfI^9{#!O7Q8O>z zELf0qyWSe;gJuogdnCw_NvwCMjZ5tdo$1cbhTVl)%v+f3;qE(PsGdIfMNnj{nHhtM zb>6rYc}(}P%f@9S=3XtseVs_Qu?+X?x#Po_2Sf(1wN}-pSYk9>98UmpTR>7YvAdf(xYL@`6I< zFNV2t;+~N>Q_6|+$$+V@K2aLFM^GTL@M0bqv#y{Ee{>}$xb}+9f$I>FfjJF{d`hi_ z<=!&e9y36bNPb13M|a*ROz=jbGBpIQKcrCM@!Dw)$gEOjhAE*Yd%}>{VT1FGOWar*5`U;oN@ax^Pvt_-IKPgVQx_0&s$gH&t?yq^vU>%sKI?PGpUTFMo**YEOBm-Gw zia?_ASU7JX=2U<4jcLf{N(Yjz{;u6{c%5-sgZdzIN?LkG9~k)PrkZ}+k}jFpt?aK} zDO2+&66jCI+!qzGr3>o?ToMs`)@3eZ;E0G#Ni*|BqD(PKexs?cq3BBglVwKIXEKV$(oAqb#1{^D zAL1H(mFichy3@1F1mVxMR)R0~yybR%y2=g*DL-hqTlW_zL3G^~FOL!To z)4UALW?qKo2ronRs+Xa;!pqP+hIzj5GPFQoZcs5V>IQS8@G^9*=4Gf^co}L@y$mf@ z#{mZPl5Uu2hmTzUUV&@ECio@dD(f=lW$60uy$rz<5!W#^hy28JquQl6iPDkY|KVk5 zxmwciWyq%%T%nGITU0MYD?7)+C0>T$kLa?&V3xJPK+Nz$#D_k-48_6u(B*m8YI*7A z2~tci>js3GoX=S`6n=SB9_Ox#A4+;|qP_Q7V`pscY%htvollHzq#s=F66>9Q83N&Z zS2xvLwxB#aOPo?b%v7V5Htw@ZUgy?;?tnvaj3W|p4>+@^NybCKxwCyB%6f0-x`4wc zqOQUNvq|(e6c3Q8e(_?uU*+-xYUj3sRQrRMj&iSwIp$?&Xb-8q0dKraSBre)(%$ft zO(-Si9V+=~>Z9E>)%=*oX=2>TYTOmjJaKIBxIc$$H}Q6!8)(~TH8F7sC0qV*9kT#XubNYOwmif4wGR!G2ml2feu_lR2HXg3Ay zpIzD^mSb9nK%@TR(jH+)FJCh5d?k>v6%lfuKRq#ijfA9cn44NnU1Z5Lq*St}JC6s{ zuC2o-wW{!>8bo4m6?2-7E0v;S&WhaXV9SMj9%4KP^nJgjpUtvo&OOf+1WmE~4k`BU zFKvmr!;jwepKcoB_-{ZP;0Cq4f|!5w7cu?>r13w~YwPUph+kMVx&oW-UlASo8?CK? zOR3*ER_+5bA14KWs6pnIlTltFTxdD|MEoU(%zq(DI|=e1GGFMd{32>`5O#J|#N-*n z#+-K=bvV;9>D7a)R0BfJAa;Bb#FM+bo-}ERy_@$8r(tuN|WqN&--D^ z4C$ZxxD1+l+|`SJC53Mi{Pve5GL!1&NiKc1hc+H}W$ChM>v5MeI0tP@%BArqT~7Mm zahJ`Whjy!zlRKD<>_@*pjwc2EJL93o9k6Bi*p}3XuU+_{EfeD)at}!vO#7U0CF_RJ z@h4o7-YbCHHI(t2`%*3}fw-7eg@aD(Fm?Gzy%E~baA0OC4^C)DFisbUkx*RjshHbX z=P7O=mXTU#;L-*<8?le-q(FRw#aM*s=+SIh;c7){Vk-UZxXY|h7(;(N;fl9FFH`q} z=~uGmrdgnq@p^MfWGQEWfy9>41t(oG5#|0Q?hA6nc=~4@9t2d_bbLK!j#JC|=8N>5L`zS(GM$sz{9h*5Hu&nAuwKC#Q|~Es!zou> zFcdA4cNN`x%9UGlwfO!Ae?ru02#d#J*MKnAI|Fi76_uB;XWZ5rjh91k!B?viJ^+lG z0fa87S(+;CXMZ9bKAv&Kdn4+Qn_n5^uBwBRcoL2;6b#7TA{dCS=~=I$%UM<1u&AXT z&y8Bx7jIa-E@)tvVK&Z3oz4YaJFt9l3$ZQ)CVu*wjeEle=yi$k4SB}ZJMKo}YV0I~ z?c_Kq#%o!gCYC2*PP4j5piwQTAZjtl%-M2T?NQeuK6i^>m0?bnG2)12slRe!T*kO^ zeK&(L=?1#;x*ZrRM?DwdAr>O$|MKb&z%AuB{M`W6~~))nPl z#YP`HP>`T!F(J@thRp0dEUQ5V*PwFn)K=>?e0YF6e^h4xv@V>Zs0_geCXDM@gEs&( z8Z4Yibk1qlM&1r_7*HOIZ&G19Px5XP{O4zOLb~5VUpnh@>o(EPL1!@ZG~&6P{(08b z*K!9i=WSuqKJrdlGY6hGx6qPvn8TDdopYrp-!0ZFBUCODc~2+X*axuGv&g7>>49^u z$b|cl#kx(?x^Q@ByI*Z&Av_9HlH>>IZ|7V|;jLsH358abOIfw4+iBl#T`3{ZrQqU- zcpj$HzIFAD*}=TuYl0)NvPWswJSlPv6eYGjiG;4CZclh~(SCN85&8t%y|F$t?`8^t z=sood2Up+=2MlB7;)eCK_LwV2*G7lWlpGeF_aNgB39Ey@Ed3wFX z#tbuUm%OCc%VL~r)bSIWf}z=&zQQUJ_KK>)7J3RRiTQwv0{#nLdZ&|m4@MajDqbtjotaK$e#3kTaM!X|L z;k#TEM*ZVbQD}S*nUeoWYwPeCl<@Ce7QI4f-1n|@{l5q;{@#`5{ou0ENz5OLhI{f! zB-5m@FJwnktdrCZHA0snJw740FeJuL@!NO=|KK|YqMKI|*Ju7tWo%o69$!UF$HW9p z|6C+8fk5Zalj6KzT;A1=FA=Ay0Zaxh!F8QV7p^;)K4txek2<-q0^WIyP@+iGiLO(k zqH6SlTF5IGv?+cn#lPP)+B3GiWE5dvJK(&`PbbFHC~Z0ee3%2~v%tb8H*UtESn;2@ zT1DS}OLOK+j>Pi;q^UQnCg@pQt$?aU;yMVu*x~9K_5;HT{fcc*GX6_9&zI7NL5hvHiXs^P$|>RchF-vr~N-wECHgUg9eS27L3OI%Q&E`PrP1xg(w zkrysc$J6A{i)@(l^91NoEHCfeOFp9peTuaRDwWty8N?^is_N&?7GGPVo0dyK@DUuO zepL;c6&ov;f0xS?EKs<62o&mR$mL&EgC2$rf%>JfP>{y`0urMc@e$C%{AWAtDY4Ot zSVtJMV_*yo_^O%>C7EO&L?R;CwYy*u&dc#C8%{4dbMRF)Sh;nkfGrN^#s#5pNpwqS3e#=*zBiS}jKDX!1e;Ug-SYqaRW*Fr8rg`ck0{hLlSata*el@7 zk{?7sYGr|v&}_zE?lUw8L2E8c#yLLoAaBfL8S({(achN8d5%|e8C_JDl00!5{OFI-e%!SCrmiK&O8pTW{VB1uL%%;)M z^4T|N#t4%fX)ILoAg3N59N7CPJn{4I@iB67L_3bKV^ z=|&y>;W~VMG8%p?7tNMj2GaXxk>AVmN9tpjvtU#ZiSg;^mp9==?J_@>&Xs~5zIkDu z3Cc#2h*g*H)GUiuL+mjVHI-*2xC33|Pq5wUPpB>!Nz7~gDW-KuVH((M3-K=ka^f&v%Hofa#G{Wp~_WR(HRSTDqf zxlXH8Le`%V;@u3}EWY|e*uW@@n7&oXJs&_W++BRvNp2y$l$gI)>CGh(9Rc*_Lb95F zKpI~tJm|KBIg;Qs@bGI=PrX4;&p&33(kBGbtHT`eIwSRlL3atJBVLyhbv@`S zVUE;+CO!M2j_R79yDU$hm9T;tY6%T7RIhzDay?IFACOESk!Biab4YzGJhcL!!{mwh zkw9El5m}X^MposZKp4FS1#~tV`-YU{h3i1Z!>9;7pUq%^z+P59c0xr0vBG$ZBP;|y z8;rJifPMA{L6~pxAp5`#f-u|?LD<_RkOMTBAIB~sZ}X@LsnUOdb` zkA&oS*p%=v+mNuT60|VB4~ulzeeq;&l9fOlNorWL!b1JYY7}<;C=aVJUVs@}p*-x5 zc#s=@AURD9v*Sc?Bwas5q!*7yA`HfOX6FAHiG9@I=;8!?=@o&oRX(_gHuV)fHpD|K zBOHUhSt4l9RxKJfavUiM#FC>TxB|#>)!)O0At6r-fc$**cMeOj_Vb63)L#wc@}vR& z5Xc#bfFQ?f8YBpi2J6|O`^cg(#bxU_4e?i@t|4kM{5D_VFBLtMXV$(rvWDmHI|~#H zQ}g$&LtwZTn2pjSI!hO5rAHRib#_OXcchvzekkZJ)JoM|i_j=7)BucOMOtV<3qqs) zA(l2q3(a9^WBnndnPI%9Hdwl{vvPJL4cG3~UL0A#kc}-liOJdMq_C1Mp;CVcUhKol zv`|iV4he%Tn<$sV%E6pX4Y8cCYtwKdXQe-ckETXeX=IcZRC~vYUhe~jS0fkuL;}8L zY?+|`&Om!6s=sH=U4js-+ITLwF-PkrBczV5DWW%{ry`2Ex0+B@nN?L;m^GPSEL4%6 zS6!A+RGC&;URi}tRG6lT(ver|i<)OLZKWB~q{^2%YGeVvJ=l9X9p-ez6UFy)5YePp?bAJKjIBk_?VLHrd?GE@SBcM{ z@pRsjY9cM6U%4EvsY~^^E~qao!Fk#`m4am~3R@M8g6mlrUUk*5;|3OtWK8w>F-KX#tMP?@Ias^VxwKcY|npT2zzpj4D`}{<${rlvX?cir%lM zjZIQyUi+nXnWkr9DhIXS^qgw^_B@Q=5?;^{LQqogPcB!v^F`IFjjO^QT+%m?sF%96 zY9scSg*_YCh8G>|#>n=HhLEeO0}jyLS4#bpUqyMQq^me5u-#!~RNSMUs_BS&5RBXjzGol~`HnDJ#8X zB~Dg)%Zgi8;$R{F?FrmXap6_2cB$x61Yi87V7;vNB3miezQ9 ztc;PBv9eMuD_6?OI9Vx?l~P$Lla+E=sgRZNvQjB4RkBhoD-&d8qO44kmC3R)MOLQD z%2l#5O;)a!mFco_jjYtjO0BHSkd>LTGD}wKWM#Ij%#oFPS(z&<^JHbdtSpd~g|gBh zD~n{MQC6;%l_ptfmX#J+Su86{WaTm0M+Ht*oq*mG!c+K~^@(%5Ac;Nme$?%I&gphpgNwD|gAt z7FnUPa<{B(m6dyBURl{ED^JPF)3Wl6tn8PSc3F8=R-TiU=Vj#uS$R=b zUXqoUW#tuFIUp;q%F1i9^17_NAuDgn%3HGXwyYeKl|!;}SXSPVm3L+3AF}eEto&0} z6j^y+R{kX`AIQpwvhtCvd@L*fmX%Lr;MPA32*@X5q0x%RX3@{up0#E=L2`B`N z0u%v81I7Tx0*V1w0>%MK0HuI3KslfSFdk3|r~*_2CIBV^CIKb`rU0e_t^!O0Tn(5G zxCT%Is0GXb%mmB=)B$D#<^bvea{==J^8pJ03jqy)MSw=YwSXo-GoS^q7_bCz9bhS7 z8Q^-r4S*W~Hvw)2cmc}+KEMjVEr6APRR9^V8n6a%D_|{P9bi3R17IWIHozvpX29)$ zI{MTUjx1Y90!~LoCKT#oCcf$oCTZ%d0)7Pi1o#>7 a3*cA4Z-Czce*pdj`~|q6ds4Zm^ZXyl{1T7= diff --git a/BIN/SH.S.CMD.txt b/BIN/SH.S.CMD.txt index 1ba5931c..d7a88c11 100644 --- a/BIN/SH.S.CMD.txt +++ b/BIN/SH.S.CMD.txt @@ -222,7 +222,7 @@ CMD.SET lda (ZPArgVBufPtr) *-------------------------------------- * SET +X VAR = VALUE1 op VALUE2 op VALUE3 ... *-------------------------------------- -CMD.SET.1 >DEBUG +CMD.SET.1 .1 jsr CMD.IsSwitch bcs .6 @@ -525,7 +525,7 @@ CMD.IF jsr CORE.StkGet bit #$40 Parent is true ? beq .3 - + jsr EXP.TEST bcs .9 diff --git a/BIN/SH.S.CORE.txt b/BIN/SH.S.CORE.txt index 41a10688..0ae69012 100644 --- a/BIN/SH.S.CORE.txt +++ b/BIN/SH.S.CORE.txt @@ -48,21 +48,30 @@ CORE.Run >LDYA ZPInputBufPtr Save Actual cmd for looping >LDYA ZPArgVBuf >STYA ZPArgVBufPtr - + + lda #0 Reset ArgV Buffer + sta (ZPArgVBuf) + + lda #S.PS.F.HOLD+S.PS.F.DUPENV + >STA.G CORE.PSFlags + lda #$ff >STA.G CORE.IntCmd assume external jsr CORE.GetCharNB - bcs CORE.Run.RTS Ending 0, CS,A=0 + bcs .9 Ending 0, CS,A=0 cmp #'#' commented line? bne .2 .1 jsr CORE.GetNextCharNB - bcs CORE.Run.RTS A=0, CS + bcs .8 A=0 eor #C.CR bne .1 -.9 rts EOL, CC,A=0 + jsr CORE.GetNextChar + +.8 clc +.9 rts EOL, CS,A=0 .2 cmp #'|' bne .3 @@ -89,18 +98,21 @@ CORE.Run >LDYA ZPInputBufPtr Save Actual cmd for looping bcs CORE.Run.RTS nothing to execute... .4 >LDYA L.CMD internal command ? - jsr CORE.Lookup - bcs .6 external, add token + jsr CORE.LookupInputBuf + bcs .6 no...assume external...no IO token Expected + + jsr CORE.SkipCharsA + txa >STA.G CORE.IntCmd bra .7 internal, do not add token .5 >LDYA L.CORE.IO - jsr CORE.Lookup + jsr CORE.LookupInputBuf bcs .6 - jsr CORE.GetNextCharNB - bcs CORE.Run.CSYN + jsr CORE.SkipCharsA + jsr CORE.IO.JMP bcs CORE.Run.RTS bra .7 @@ -108,33 +120,36 @@ CORE.Run >LDYA ZPInputBufPtr Save Actual cmd for looping .6 jsr CORE.ArgV.Add .7 jsr CORE.GetCharNB - bcs CORE.ExecCmd + bcs CORE.ExecCmd.1 Nothing to skip jsr CORE.IsEndCmd bcs .5 - cmp #'|' - beq CORE.ExecCmd - jsr CORE.GetNextCharNB + cmp #'|' + bne CORE.ExecCmd skip CR, ; jsr IO.Pipe.Out bcs CORE.Run.RTS - bra CORE.ExecCmd - -.8 clc + bra CORE.ExecCmd.1 Do not skip | + CORE.Run.RTS rts *-------------------------------------- * Input : ZPArgVBuf *-------------------------------------- -CORE.ExecCmd lda #0 - jsr CORE.ArgV.PutChar +CORE.ExecCmd jsr CORE.GetNextCharNB Skip EoL char + +CORE.ExecCmd.1 lda #0 + sta (ZPArgVBufPtr) + + + + >LDYA ZPArgVBuf + >STYA ZPArgVBufPtr >LDA.G CORE.IntCmd bmi CORE.ExecExtCmd tax - >LDYA ZPArgVBuf - >STYA ZPArgVBufPtr jmp (J.CMD,x) @@ -166,18 +181,24 @@ CORE.ExecExtCmd >PUSHB.G CORE.PSFlags .8 clc .9 rts *-------------------------------------- -* search ZPInputBufPtr in Y,A table +* search ZPInputBufPtr/ZPArgVBufPtr in Y,A table *-------------------------------------- -CORE.Lookup >STYA ZPPtr1 +CORE.LookupInputBuf + >STYA ZPPtr1 + >LDYA ZPInputBufPtr + bra CORE.Lookup +CORE.LookupArgVBuf + >STYA ZPPtr1 + >LDYA ZPArgVBufPtr + +CORE.Lookup >STYA ZPPtr2 ldx #0 -.1 phx - - ldy #$ff +.1 ldy #$ff .2 iny - lda (ZPInputBufPtr),y + lda (ZPPtr2),y beq .3 Src Keyword end jsr CORE.IsSpaceOrEndCmd @@ -185,24 +206,16 @@ CORE.Lookup >STYA ZPPtr1 lda (ZPPtr1),y beq .4 Table Keyword end - cmp (ZPInputBufPtr),y + cmp (ZPPtr2),y beq .2 bra .4 .3 lda (ZPPtr1),y bne .4 - plx - - tya - clc - adc ZPInputBufPtr - sta ZPInputBufPtr - bcc .8 - - clc - inc ZPInputBufPtr+1 + tya Keyword Len + clc .8 rts .4 inc ZPPtr1 @@ -216,8 +229,7 @@ CORE.Lookup >STYA ZPPtr1 bne .6 inc ZPPtr1+1 -.6 plx - inx +.6 inx inx lda (ZPPtr1) Array Ending 0, must be an external Cmd.... @@ -231,29 +243,29 @@ CORE.Lookup.9 sec *-------------------------------------- CORE.ArgV.Add jsr CORE.GetCharNB bcs CORE.Lookup.9 - - ldx #0 + + ldx #0 reset "" mode .1 cmp #'"' bne .2 txa - eor #$ff + eor #$ff toggle "" mode tax bra .4 .2 cmp #C.SPACE bne .3 - txa - bpl .8 + txa between "" ? + beq .8 .3 jsr CORE.IsEndCmd - bcc CORE.Lookup.9 + bcc .8 jsr CORE.ArgV.PutChar .4 jsr CORE.GetNextChar - bra .1 + bcc .1 .8 lda #0 *-------------------------------------- @@ -262,7 +274,7 @@ CORE.ArgV.PutChar CORE.ArgV.NextChar inc ZPArgVBufPtr bne .8 - inc ZPArgVBufPtr + inc ZPArgVBufPtr+1 .8 rts *-------------------------------------- CORE.ArgV.Next lda (ZPArgVBufPtr) @@ -380,6 +392,13 @@ CORE.GetChar lda (ZPInputBufPtr) .9 sec rts *-------------------------------------- +CORE.SkipCharsA clc + adc ZPInputBufPtr + sta ZPInputBufPtr + bcc .8 + inc ZPInputBufPtr+1 +.8 rts +*-------------------------------------- * Stack *-------------------------------------- CORE.StkPushPtr lda ZPInputCmdPtr diff --git a/BIN/SH.S.EXP.txt b/BIN/SH.S.EXP.txt index 8cfbceeb..d885fa72 100644 --- a/BIN/SH.S.EXP.txt +++ b/BIN/SH.S.EXP.txt @@ -5,7 +5,7 @@ AUTO 4,1 *-------------------------------------- EXP.GET >LDYA ZPArgVBufPtr >STYA ZPPtr1 - >DEBUG + jsr CORE.ArgV.Next bne .1 @@ -20,7 +20,7 @@ EXP.GET >LDYA ZPArgVBufPtr >PULLL.G M32.ACC .2 >LDYA L.EXP.OP.MATH + - .... ? - jsr CORE.Lookup + jsr CORE.LookupArgVBuf bcs .9 txa @@ -65,7 +65,7 @@ EXP.TEST lda (ZPArgVBufPtr) beq .9 >LDYA L.EXP.BEGIN - jsr CORE.Lookup + jsr CORE.LookupArgVBuf bcs .9 @@ -84,7 +84,7 @@ EXP.TEST lda (ZPArgVBufPtr) beq .9 >LDYA L.EXP.OP.UNARY -d -e -f ? - jsr CORE.Lookup + jsr CORE.LookupArgVBuf bcs .1 @@ -111,7 +111,7 @@ EXP.TEST lda (ZPArgVBufPtr) beq .9 >LDYA L.EXP.OP.BINARY -eq -ne .... ? - jsr CORE.Lookup + jsr CORE.LookupArgVBuf bcs .9 txa >STA.G CORE.Operator diff --git a/BIN/SH.S.txt b/BIN/SH.S.txt index 4fc85d6d..9933e340 100644 --- a/BIN/SH.S.txt +++ b/BIN/SH.S.txt @@ -190,7 +190,7 @@ CS.RUN jsr CL.Init >STYA ZPInputBufPtr lda #0 - jsr CMD.SHIFTA Remove $0=/bin/shell + jsr CMD.SHIFTA Remove $0=/bin/sh lda #$ff >STA.G bBatchMode @@ -374,25 +374,33 @@ CS.RUN.BATCH >SYSCALL GetChar clc jmp CS.RUN.LOOP.END -.2 jsr CORE.Run - bcc .7 +.2 >LDA.G bSET.X + beq .5 + ldy #$ff + +.3 iny + lda (ZPInputBufPtr),y + sta (ZPArgVBuf),y + beq .4 + eor #C.CR + bne .3 + sta (ZPArgVBuf),y + +.4 >PUSHW ZPArgVBuf + >PUSHBI 2 + >LDYA L.MSG.TRACE + >SYSCALL printf + bcs .9 + +.5 jsr CORE.Run + bcc CS.RUN.LOOP.END + + pha lda #$ff >STA.G bExit - inc - clc - bra CS.RUN.LOOP.END - -.7 >LDA.G bSET.X -* beq .8 - -* >PUSHW ZPArgVBuf -* >PUSHBI 2 -* >LDYA L.MSG.TRACE -* >SYSCALL printf - -* bcs .9 - + pla + CS.RUN.LOOP.END ldy #S.PS.RC sta (pPs),y diff --git a/SYS/KERNEL.S.MEM.txt b/SYS/KERNEL.S.MEM.txt index 50ba530e..d3b60baf 100644 --- a/SYS/KERNEL.S.MEM.txt +++ b/SYS/KERNEL.S.MEM.txt @@ -262,31 +262,20 @@ MEM.NextSlot lda ZPMemMgrSPtr * none. * (X unmodified) *\-------------------------------------- -K.FreeMem.ERRBAD .AZ "FreeMem:$%h=Bad,%s\r\n" -K.FreeMem.ERRFREED .AZ "FreeMem:$%h=free,%s\r\n" +K.FreeMem.MSG .AZ "FreeMem:hMem=$%h,PID=%d\r\n" *-------------------------------------- -K.FreeMem.BAD sec - .HS 90 BCC - -K.FreeMem.FREED clc - phx +K.FreeMem.ERR phx - php phy hMem n Y - ldy #S.PS.hARGV + ldy #S.PS.PID lda (pPS),y - jsr K.GetMemPtr - >PUSHYA + >PUSHA pla >PUSHA - >PUSHBI 3 - >LDYAI K.FreeMem.ERRBAD - plp - bcs .1 - - >LDYAI K.FreeMem.ERRFREED + >PUSHBI 2 + >LDYAI K.FreeMem.MSG .1 >SYSCALL printf @@ -296,15 +285,15 @@ K.FreeMem.FREED clc rts *-------------------------------------- K.FreeMem tay - beq K.FreeMem.BAD Slot=0, reserved by Kernel + beq K.FreeMem.ERR Slot=0, reserved by Kernel cmp Mem.LastSlot bcc .10 - bne K.FreeMem.BAD + bne K.FreeMem.ERR .10 jsr MEM.GetMemByID X,Y unmodified lda (ZPMemMgrSPtr) In use ? - bpl K.FreeMem.FREED + bpl K.FreeMem.ERR ldy #S.MEM.REFCNT lda (ZPMemMgrSPtr),y