From e0690b5de45d7aa02e8c99146e274091d8085644 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9my=20GIBERT?= Date: Thu, 28 May 2020 23:13:52 +0200 Subject: [PATCH] Kernel 0.94 --- .Floppies/A2OSX.BUILD.po | Bin 33553920 -> 33553920 bytes .Floppies/A2OSX.TEST.po | Bin 819200 -> 819200 bytes BIN/FORMAT.S.txt | 22 +++-- INC/LIBBLKDEV.I.txt | 9 +- INC/MACROS.I.txt | 10 ++- INC/MLI.I.txt | 32 +++---- INC/NIC.I.txt | 5 +- INC/NIC.W5100.I.txt | 5 +- INC/ZP.I.txt | 5 +- LIB/LIBBLKDEV.S.BB.txt | 106 +++++++++++++++--------- LIB/LIBBLKDEV.S.D2.txt | 133 ++++++++++++++++++------------ LIB/LIBBLKDEV.S.txt | 1 + ProDOS.FX/ProDOS.S.LDR.txt | 2 +- ProDOS.FX/ProDOS.S.XDOS.A.txt | 47 +++++++---- ProDOS.FX/ProDOS.S.XDOS.C.txt | 151 +++++++++++++++++++++++----------- ProDOS.FX/ProDOS.S.XDOS.D.txt | 70 ++++++++-------- ProDOS.FX/ProDOS.S.XDOS.E.txt | 141 +++++++++++++++++-------------- ProDOS.FX/ProDOS.S.XDOS.F.txt | 30 +++---- ProDOS.FX/ProDOS.S.XRW.txt | 89 +++++++++++--------- ProDOS.FX/ProDOS.S.txt | 33 ++++++-- SYS/KERNEL.S.DEF.txt | 3 +- SYS/KERNEL.S.SHARED.txt | 11 +++ SYS/KERNEL.S.STAT.txt | 28 +++---- 23 files changed, 553 insertions(+), 380 deletions(-) diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index 5ee3191cfeb05d1f77fde5819d9ae19fe927b854..937f3a422d7065809ede5d650557766083623bd9 100644 GIT binary patch delta 76329 zcmZsE2|!fU`uMqXXJD9NU|1ax@v;ewh{K|e<-+cu!=hj=Sq>@&xnM}8whWXQ5kn~D zk)9aw#29jXL%kRAlH^sdhyKcUT~IJkD@8=1DXq-q^8e1g!$_~cDCeH!4VCG=lM|y(tcXhbgjJFUdl9i1w|`lMqOdZ*7I-8S$qP9-g%iBoP86 z(&>V7!=orae6m{z`T;RVBg7sbc{z7WMQHLzL+*Y5QJS66%fXRyPG|-C=g!yj^gnvO zho!0hT3z21(I{KHr7w&W7z!Ix`&nNYb-VUT-xT;Q@1G+2Eul89pMX{fl`^Od*1iuF zuC(^Q{ekW>3cVC8RgSVh{91f8!nO8(f0Cy&nk_^5VLtNFPF}Pi-;c5{+9b-GYta+o zu5P?YM4gYauiU42eLl(__=ki_uccfc&=RM~P~P1$B3&ISM*N>>CYsSOPcz$s>Vi%N zZ3^BLd>ej3L+^y$2}ej}_^@xF&lIBOi%_8m5{h88B}lDmwozJ3u=;g(D5VSGPlUh! zrciZl{sh4E&y0d5Zx!6qiBOBE1cWOO; zWQ=+SWJ@14%~FGGP-@i;$Xt3tqa2x~X6X^FdLjFB7dvb&C3R=0vm%v2w>V*ULcv1z zMi)CUkXZUXuk%bn?rCa95n@$XW~yc8icQh#mJZY@*hXlH*dL=d-#2O0j4jBFjLg(v zGh){K?=R-bV7oU}nGCBp>Yj8WUXt)fBeiE53ylF%&x zx?QFH`)r;(3rmdpb;?FZm3G2k!|N0)VdfiyOVv7NesF<5{3;EIbW%jCUCLT4tAkCe zf~!{tTOxu@VZkS=BZ3W4Wu5TXpl$Rz!9KW7vA^+Jl_wD8%M*DM#0x^s7%!`#fin9w z+8Fe`b?MHe^5p92>iu!*h6E-%gjo?Xhj}Tafo_jgGq*x2l)o|0gfuvjmi!Q=GKADT zpf->=5~sGrsgEn!Z_H><5+e?k>MYaMwSTkuX#}exgD!H5DOyeZ%B8bBbzMp$eKbtn zn$jPsW<5?QZxzVQsIU^oqxOz1@R55V73^I@gQ)%4PzIirzmex{2fv{SDM>ybVU%nNXg1BwEcN(Q-qF zsk5WHQC=;v^ovqbAB#?jU6Q{xZ)4$_;=Gdl zSEExGm&It%WEWg|h?*#lML{zB?jdTDI35Mdapxf_P&^Y!UGaOTeeUmVrWoov4r-=I zNW$sOR2V6@KxrIp_~GQzRpIgS%_t%xF?mT=PIS5uP|)2W^CuC$%FQT@bQ>cD6z|?eQgquDx<$!v zqaR$K`ZQvK*XGG6G9xQ9JvVE~Sl_!8<$@aAfNPBVXabHigRs9f;FWwih|5T6%f`*5 z{7H%b3ng{C?H4npQsdS&QjS(gNo@T2<8zd|)0%+iP+fFNR@oCVb3vY*)ZDameQJ7U zT2|_EB!3>&ZCsaE77~kGwn4YF^h^}6eSH4~f9${GVgDEG{k>np9(|OT@nxu|W+15% zsXM1kLq4TQU6z);v@CUVN%8iw?4rWWB}iH(G;~|Lv;w6fYMU(y_ zprz&}E?K}U9Uou5K5yN+PDwNh-9OftmY7_LnTyl}>HyYWq#~o=>S&5M-Z@`D17UBVeN%eQV_o40vA@^2CvvXb1 z*~Q>YX-IlV@Fv&y!Syl{iMJtTGx5-EWg*1Bo`^xd=Dn9FACDHhbABLTFo*G!OVnhe zMX0(R5eVp06QdU(>EBS@+Kp?Gn^kc3Eh%{=dC0XD)#a^QTNVODr5~cYlDzFm`O&x@ zQ)7_p--SNYNuPh%S$-_=@MsfwWG~Ip@od~aLB_gyJWH6H$h95S%_EH~5|Q+ucHB<| zT;)#J)eTC}QmcjO!jNnc6qcVtb!#@~mpuYDK5gfA#?I~R7&pD1aC7Z;a6^i7gcDd;uTMmt z=TY6(l00MCL#s)9P+j5X?Z~ay!D?zel3#ep>{~mtK0CAiF=jcsG+^d-(ZOu$3?#ec zQ0(%b6#LGum@yH#e(zw1Oh&+{DZj!X8l% z=LtpCltR%S{Xbh$C4`c*c@($WByUQE}dQWM>{3Nu_pN7XddF zUgN-6HV#)#)#VozkH>Yj<0=TQaT;=S6OiHELXh3ZAuFl6wVSq#NA|EId)gU$3Al+V z$pqJX9Ig*&3=wObkNetjC)jaSP&b0cIY~US-#BD{s&4C=KOj%EBL@h`?vn(@Fwzi8 zkXs;CH;*5663wKODSkG2GC-!}4~7e}lL@xVUiQjU-jWfyE3(Uk~hB;lRJO=+~9+4TQq<{Cpm>>%%C zHIl~K8OPb>j~5uHr1Ij=_=ET}DF~S${;dC{DAn4j%%+UI@3}wXAj8Z5=y*EvIS=KZ zYbQDHPbBBtHA@)NY)mm(A`zb#B*DRx7q3WDfUR*+fXmNs4x=>n>5OFg>GI|Cg6^A@tY?#$044tGAQQ5Xk1_@?@o%gb+mAEJ`*uMW@E#_ne)*;-!m;ia=rs zA(e+bbN(cBuATT&fw<3O*y9@IZCqv_lH~#~@-|IG?kjkUm2Jr>$y>Vtd8{0x#@8c} z^l>|}Rd(zr#<0no!sE#?4ej0CSMy#nMowz5W9Lz7BU$&luNgzZ&2w9$^d$&PH?Jcga4OG-zs zMS|#L#UkJGkmoaYv|_uyTgPD`MG4f%ZXslDEOL8RpzuUY)Dy8t{+xq`?0G^%pOcE@ z+s3*expBLrgUb%+Kz0+-7f4Uo7QATZ_7c<~;*j@n5>mVjwJ~mT@I?Fj*{xI3EdB zVaKnsgdM-1dz%@q>ik3qaoe$ZiTd6NUGI5Y+YuG04@e0zwRV9e3!k-UZQh4oq-a{qt? z9};R|Fu{KhJH(J$gn2GM0?}>DMt(u}H@iSqyFjfE1p=xc+No-g;v+)U?k$SHkI4ZH zHcI~?#3uR2@aiOMMp(tQJ&d29*g3S@Is9{s1FYhZ{8KxJc;tTck8*cBl>0Ng+{dVo zZ&EflqhAWj0ehw{hhO^C%*2e;a`LXwAm7xnhTIj|snrAsJ4sdA7<5tUitOAaukr9% z$Zx?I9F9Ad=A@?V;u~foAKh3(YE~M*3yY0G6Vk_kNy)kC8L1VdGwdt<7LLImOI?za zo|VZ{iPa+iMPm&a_7+~s*x5*>$Gh*r4j#6bei>t(5|=I~Li5;hz%FyFA;ZBfE)J=( z#=s!+m@aX%kWcm)JTX}>Y#cR6vKXn6#}a!BZ;p5^lI93YHxFYjf&+@ZM32yr!N zEJf;tIoXLzQu$3Q0mdQU$52XQZYmLi-wqP!Oys=`<*dj_U9yCyN?^0mgyl#Lz?9U) zTphm)CE#S_wF1D<^UX0vX~<_Kg5xC#$e*(ZciyLbl$w;7F-mZ7;I|5YeVtmG)w zQ%^hEXN_x5Mcx|--OQyKW3qtH1Z*U*qbf$~^vv8POS5xh z#>P~uK@+y(Cr2q?V~L|R&e0l=COqo^$2-8_Gtcp!q|X|Ydo~;qJ&%ZIjf254)Hb9~ zeJoW!<}kD2fM`2XCoN4%cc?Xc2J+c~BGkOM#*8U28<@O+;7n1Mp5kBvGx5c@CyM<1 zUqWi3DLOYgJ>5jy5iSM5o-eXQCJF-~W5~gpI!B+Iv?AAGjoHYz5~;J((wBo{j!oX# ziOBa2;HghfOwJXK!oWLbCn29Iq)yIANlXz=x(F~Cd7FT0;$x}H1#^mMaT_fXO-c~m zR^s3!QJCn*2AmEhHHeFnL~t?HfH47&HsH@l`C9_MN}6wDd9ny@uW&3BqLEU(GMOMJ zw3Q``Mi}bvZClofjyZY$E8n~o&5^8QOILSX_Oh*Hv^a5tXfvh7)(xV5DjHXB6h%Sp z(~Y7$C?;(Zg(P1mJm4s)$C^||_Z@cxPC}1P7Q(hNMbS@fH8HnVu*F`auwr$;Y z(ZRskRgzf5OhPD@NoI1wmWEY@;jj;;Sf~7bO8b;EQ+}G_79JbEJbVM(n;lj$7C)wO zAA^osY13YuD5YmmTk-Q!`X6%dP^%xaDb(uC4B=TW^dahXe9?t23jDti>vcwXv{A`$ zAx$^G>f6(IcyCyvjG>QOH?14S>tytjZ~!O?Kshk{)sHrhrjh(xEzI{JHFY}Xn~(yn zp%Foi`3CpP=wGKmXDM_x2*jF32+7KFz95ucN!!88AG^|Vhdon=o17b*PbsYvO`i|# z|JM-HjZ;6NQxvJg4Nk2}U017ehyHTg-cM*Z3M|&tPHVtY=i2FeR9f5Vf70a?HHw!X zrJoZUuQ8)-r;pN36xH3<+dw8`8GWJeooJfFB)Pa8e$pE6}F9W z`ncJQgsTmPxnVuDQ(P{o+A?H%W(cl4^v1t4+F`zmOFyT>Bj5_8c&LUR**bK1%aG-n zp`A|U&WDSKEL(>Na;yUx|MzoxQfLvO!F1nb#2>2+X0Q_ZX8}pXP3^3I!!)=?W3ciI z+D}Y~;b~vcx!%P?+Uujh#7dvsI;1l2Y}(%bf=&hX+rIshb`fQPL_0n)z3@pR>KGlh zIRS&g(q9Vn-8UOb&8Shw1mCbu-WgCnsk-$OxO}7<#RQ_*8CX6UZo2|2_XLS@E0+Kr>vhfp!UHlyHQuC3;V0Z zh?u*0sE5u4&z#>&&oM^b^i_H_c0=D49oBOV7BfvOSvsTfOS6oCzF>NXFmUV8J~t>>-57RtlsGsfA&a)dta&dQk9^HvGt z`fW|1-t*i5Tu~aBbU&*{g9yTctCH65Kcjyazk30Ua~z+zKu=Z#cXyp&Z&xzG-5?MC z^#ZMF(JE_k!0)bvCC~u?w?X>~{Ao zD~`T-~{)J&Tw1Yj%a}5ANy#P@0N4ctcD^p&3t*W z2Do+1^Ri6>|C!WJPY7FouGDStaxmL#jxg*pl6d-|wB^O>Zs~;!=PsO+UKltxaPBp{ zqMx3q*n8f(6oLs1L?+XU%lhfX>nENAm6-MC2u|p^UGOsqKhg_<=L6608L>CaJ$Dd5 zL-3FMgr3j*(cbXbx%UA$Y;OoZ-#SumB;F4~7#bxv3u&ucMFH2>d6`}Sh3j_!oP}e)qeD^`c3VA&3%Y^}>da09eUGsB3V1&ZHXZF{0?%3f8%Gbk z>(ycOvMCQ3y&xhGC!NI1I%k#h{XCg$T=yOQ50AGl%sVf=uo?c5pP=)Bc=h-6c3{-| zJw4OC@Zv7Fa`&BEn8R0CT7MG<{y>MVbH8SNyy-xBV^a$&HZ$cdOv9BAMK-@i*Z%N6 zo8*M@PU$S>qbrrN7Dm@sbEtH>IjnTb@l|Xv5U~X}y7b5Q*}S0F@ontu%*g?(JK#4R zD5X2*^)VU!HQ$(bX!W1q_kW-#2b}Az@oZ+jbY`(##e*AnyQvOtY}y1pzW;#^Q7`Jt z?=$x8>NE9y&}ZqJ-yhNcQs2(LH~PNqyV%FPf6?mMAeHINDm9aVr(dBNpI5FC==XK? zsDl0FP~*XtDfP@kyzUAeF&lXQ0)t~N)*2c{qZ&}v?>vS1&b%`y&GQlV@Dji6Dj-S6uPg$e9Xp^0QbQH55OmLB){8G+ij+BcT#YOA25$VO! zCiAEYT3-ylSV*m-(nTqvjpAp;1(Z&-RTO{m;m_QQb1yEw*x_+e$GBfBb><&V;?b-0 zYU+KwdVr3g!g0j_{U{V)4$w(qGi;Y<+txIUHoA5Vwu&G+!0V978?i1X9$oeNB~#_4 zBQx;SYxGpg124NqM<{35M)oyr;x+!xuP}n5obro74ggT3jR( zPw>$WGf$qi&VhcF4YJ)O4KA&Sd8_R&GI0u}f+fJ*l?@YjmsAw&E~#vA+Fb(OARHZX z6^kRBnr$NUsDEP+St(3h*)R!^C+{vPXmEYTsUd*$civs1(l5o6mEteKtXGuc17NvV zJ;c#aeCQ!g#m|VdeA|3I#Y0nFN@tM8kY;D$-g)Aw&>l5U{1%w%U-QK8LM?B;ILJ8N zwi{J|ADHM)rl;Q|>TGoGKvDswGN74CiVbF8Vb8EOHtv-4RN<)ur%#Rft>lglg;q(QP7Lxp}{@bi? z^ZPgVKhtkd6M+I#3F27emltncjJfpnC9m%2ZhiOT=Wd>#)U&MT z984NqHHc9C;BNS-AN+K%cMx4i*C$?&yFT;!((47+U%I}J{~a;(=+I+Bl|y^sr*Y^A z{QPt1vmxfj7em@%2*Niu4U_T>^oJkZnIKNa#}dSDZFHh|J8f*7e*l&=%Da}EzNWdf zVfwoK=ccbOTwnC!?JLr&va5+#ldnE@b@|m*SD(D9h98wxD`gH{Z9t85gq1dLk23#m zVy?FKZ9jl^_jR36{$gNcSD{0*MlNZPyem0ilb9)(O9meCtEFfqsSZjzIv`;VG%&naV>~ znKr=rg{ixyf9o3a2Huz|W?Y`Tc7naAGC=k1RB>9E@tUf-VxX#JV84i}aZxqBrxY{w z*R<>F8^tASPAKo)X=Iq^_NIxwsS50qCT1qK43tVQyV%6$QJXTfUg@GUPh-9uSXW=b ze2KHu!~x5U*BVe)tH|cVcwMn7b+FbYEbkUb4wN4#9e{8EiCpfC)3ufYK9x&z{E-?_ zp_74m<(le4QTjAi4DT%M=Ec__v3@)*W{5Ef|$x}#qSx8!0zDkur;(Rk2W{?q>nbDE|&JU$q$T<4zjmLc40;@j-Ynq zbiH`$Og>Eihshsi=YFV+Gy-9U=SN#tM(t^ZRj=fM;j`g?RIP&B@6cIBp$Kx4p=p<}Nh2`AV0JBUc39Cjjv97?47z=){CUj@W)n(UJ6;kj1SKKgwKEuli}w- z;gh0i5BzTd7UYX>5*W$bd+m{SN!ugsPSbu-UY~-V35$?IPV|HfLZa>YBhKf8aK<^O zV7%?V)JNni$6I86-YP#=$R|k8Oe%w0=;@GnxMt%9h@sJixK%8UX}iKY_jvkv&9z?* zB$cJ)&E9+}Pw6Z%BrOIc17)wUJ!(?Bt`--zl2RE_& zJ!8^Cg5)li+@8zfF4ler>8W>gvvY8Ri&+6Ny(|uSXX2RqBClmx4q3h6Hr7sfOgm4w zn6-l*E83X(>?Y(5SG0DBLmf}Jq~&4D%2sA)mlVe!%~IYf_?ttN+=%3lIe2)$g)IpB zP;#aH&UQ>~Ib7PV$$zFST8kubU5h+d304ATiv{DkJVB}Vk*qCpVN0?ea!T^IY$@FQ z6e2gYC3)MBBo7cL!0qhQTZ_w*@mE)!-9zAVcFo$gWzjK6mQO{`#^i2W1$VN1mz?M& zOEaTC9&kP#1AZ1JYdbeVs!lP&IV7BeR}1HmD;&qVkdF4IaFO9x1DTI&i`M0nW9~%$ zBpe>n;>c=*zw7ti1E1N7Enu_)M9Iw&pm_Bvsdx0- zaH5@*xCkzC9DS3~guMW@-|dW@bEl;sUyR>dCG}D5Lu!IR?t~nzAaz|EB*=PFA3rJm zt5ng#SlKx zugZjR4JliYUy@y1l#-Q`oL7=lxFa7;%ffk&8KUIbq&cK487*Fndjn+I{!0WvVonB9 zz$I6iTAjZ65w#jk$;FSXG=x!0u>lIW&{DrbG6a&!=9Xn`DJd-4ycPK_!_Pdg^cGEA zj{iAH=Km<%S-r9%DsgVov+D`ZS0Xm$Z7U0nkJo4-k;_V?UPT1-ejNQtxJj$9d!Q_U zdICq0;z@7?gRjVUHO>o^`A`P@=yF3am4}~PZio^EtiijN8~lCbYaus`%r>~yT?ZLg zkiin3kADl4O`+D~z{xUZ;#2kxu}E4VbdVLI=vbIPTX5cF*`&CQTZ@r&GlKk$Ey%lw zB%rO`H8rLzLairwv~pU0Jw*FHEH7pP1z%5 z0?p{8qM{OjAl1v536f2K0~OcD4GdL^r#)_npvv%Lj~k{@uV8DCERcE?|2Igcp?2;K zmQ9qE+eadN7ykWm!xXq8VOAMbxGY%aBO4pqNw4Eos|*1imAnOz^bMg@Rbgu|@G|iu z#K_+yX>X9n8b>mPA>5N2baL^j&x+cHChW%F!8m&FAt{;Lkh~Vg18&e^zyjaK$|no~ zM*qE#V@Ps%%Jk8KR%y$5y^sfn7LtY|gylFSud`>^K??9YcCNAIv1MEGp2~;$x1S6w zpDM+N@i>wy}g!D}g{ zuvoXQ7A^%TM zbev`{NnLwLYjgfKNLOyhL8}cazX|^YwtwUW!4;`K#q+~p7&~ynYJ;~Cl5_c)6gQjC z#U%!k{0qS=91?L!USCLfUO0070(z0xP@ERILkh0Yup=Clc7^;~e$fC;5=g*B3dp`C z*@PjXa0@Jf#9JhVlw0!N@;*VvF0V|V9Gz5Hl99Is#wk?}`L}!$gci9%>a9R321&jF zL|@3bE!nzeoPtCFSID}B&sTsju}A`Gx5)n#o<2q9XFLNIiQP*$goMJCt1sl*{ux_( zj?DQy6wm{`wf|$k%)CwcAe00$Y>_J@*7AbIKrSj|)(QiFGTLRZ-YeTuQjEN>qv-gUy?^k(06wwyp@+Vj zNidQ&7QtFh3dy!)X1bCz+f9YQNP|=(1h#e;amm7>XSYJv4Q1&m$OF=Ci8c}7>I-0< z1Sx5dato}GH>BG_xyvC+;W|VTZnqR{L(*Hs(!c={Zh7NDy1o=rY>D^!-oeHQnUCUk zXd*)yAA>^f;`btC!Q@6ILNtM{a1`QWH%O;h0F7uaOp#S3^Rf zhf+MQ2RNtP$&ruaDW#%kXaw&F<8P^DE&zd~Lx@f?SY;6#Xpx(%eW6E|vq-Lh1~Tbq zBBk571|Tg{QqeQ<#;wL;B=@lQnt`OAq}O)j3OTPlB7CmE!<&kp#mA=*fw9t;iq>K> zQvB)>xlXWm*2W;E-yhky`af)wOoa8JGysx@$jg5c#lQTG^2tCgW-pmwUW`4F_hHcU zf@IdQp(7&)-YpFlvKFNwU>tZ0%0tIkAn6oAd^zN<^5V}z9+84TjwmNrLmL^hSx7pS zQah3NdT10rp_YX_I!#Dfl0{R=Ink+^DM&h9fVgWY^|+OfM+{V#!)hXDV^K+2@@6zS z7Dr5#1-jT%R(<1f)>L@=&&2stW#OV(6rQ{}-q$cu3#`dF%`WFxUu9d0i%Rm>mgKKP zBs-OaSV2tW{wPs<$5>SY>8Xh9f*!slcvDE`5sSjMhm6^x1T2n{EewEN5AuMW&L5_d z1a>_rG6g>!C5s4$Ee^@GCQ)YRro0XLWm}&u&M$+QHmj_l@TmeMNrTSO3vhcBOj{i; zHOBh|yTVpybJ3Pv5wVfT9rif931iD6;v$hGgL(_;GI8)U*#asHKRrzr0#_r|(`3`B zCHS*xvPdci4^ESXQn`Cyjh`S!)0R>=@6C7>PKcIyDPWTV((`mx%djCDV$ce_En2o_ zB5X;<>+ovC4B+)R1-T5X@Jfv=LiE&=c=B}FdTKQu*2p3wU>h0uVT|K7xNo{lgDufAAAC{+tC0-?uZ<7; zyKZ{;><$T{<9NYhZC;G*De4&<{c`*S+z})5g!LC2Bl8J|oKOhkyVe&MZ7KubF9SoC zAt|JT@{{8^VRHCw!>+M1l?SAKk~N}qhX9Uv5zmN~g?qe2GVQXF^kuQ_ zP08>Ub*&UCola@UizI*oPHcRvHa0m<69=rS?9IT+$0R(*Y2%XPHSzKB+IV0IS)l|6 zSWbYXQ1UoKGb4V6c1H3{&CK|jTBNBVtTmeD%i(Zb*36Edt(~2Wt?@E3wIBZ@UN$|v-qF?lfbf_YpQud)aY)XnAkKsa z3Kw1T@-eOPt&F)BWaT` z!XAgHb(;&~)gZG&>O~58LZ;q@IL4EcUua6RXk8h8Hm;qVoJ>c|a=iAnB+?pco#IhCHleBmiL4 zB+f)0Btw;#nWSGOLPUooRXY&^05%^vh!8+B@_=+zzDFF70(>E3)lMT0dH~;#9W)34 z_(B3J-y=o?fFxL1LmI2mPJ}=p&$eCY0*P9&N%6?zpAHhBUeXNY@u`CZ0f6L3?Et_B z07%|p2M~M2Ce213pE+m{03^d7bI<^QF$t9GbPyq3K)HW8h=9?OK)KHyLh!6m%cg;bB06@J#2N42*bFb?{=!qS|7iY_2Ty6-}YTH)bIvQBI59~!C2$*i*D4!Gtt=EV+t{yC4d!r2lAx;gcbi(f znfbUpNfr`w`!sy@fwU>f=47#UGyP{GAkmR0sky_kVru(r|4GC2}-ORJN zH%S&9-oh0?=h7}qSNAuq-R!@ck`~suGtOtMpPCV?1z{@S>V-Ouqm$trY$;xpEb|N4 zd#Vbb(q4beN>!NNI8{|O_FQ(V>J?m?45rV;ZOO7Ik7cK;3Ql)bm7lKKd%EhK(^ZzX z(PY`p)t(d3Z8d6%@b`qP1lRPV5y7&y2Y;0%?)6ll|4cy55mH}hn7xX8Jxg2mBXa9x z{Pp8LH$*T9TR)ol}xm5}p3qnnKtcWGzXJPRoH!sC)q|4TU2liH>>=1;Tv- zE-g|_m;_%F;03E|a&)jLI=gU7J~@j<61Y=9{(4MVJbb<5kVgg__K!bQk{sHi5cwaP zSH1dlwdr*A!PC`Urw!T;{`(=|&Ifkt#R^}q>oC-J%-zi3X>$wtWnl)fwpekHx`F$P z6)~E1XG|}hG1ZJFZ<0swqEgXC!$(3&Y8%e^?-W=?W+VPDfw@+IJyZ`qaNz%@iM(UWfv+#u^@HjEjNivUoA4&dM)0(r@`DZQD z&zhpno~WLF)?oiW5}9f1**Wc;l7b5^#X6^Uj@%)`_cI)AYx|bTmIO)nDo`KQJA*WM)idT#bZjzGR)?R!W{OUbZUSO7UL- z&sf3jN9S90Hr??=Yl>+jH?ooIYSl#=k56aCCo8xv^JqOfZ`#RK@8Z7R$XUZk+hEu6 z={60(M|N_o41O`I@7H_>c}dIe*IY0sz;!W-+Q})!fOcXKy4h}2Z{%7mJGtXZ>*Wha zc5wi^%QmSj72Hx*V!_93|7QU4Y7~djd3H$^K34V4F}N+Yr<^)p{$8_M% zZpEBn1J_*8i+b4k?eZRG$GszF&K9<7(cs{&^meMpq&a43#)0R+Agf_)%y2r@V@}o@ zm}|EEP2B!N9L%ePNE>vsIYatq6UZ@g2uR7iZBNV*{C(YZp4+ z=AbiE`<-PMrz(W2XzuO_<#jWB0}+#a&H88~$zc6%=*ViW#=W^Cu$OhJN4@pR-hEbl z?3}_i_uMtBhk04lE1X6KeV93e=IELL9V7m}plf&L@nx)A*O6Db4rTA|%>A!$=4Dz# z2kHfDAKt~m!|u$%u9IN@+fW68JTiA@0$U@Vd|okO){I+LKT9EJqxGMDZ*k=m3K&6i zdX#xllzD;H(3GZYTA*V-zkYYug1fuYtRp5-UlrX4Q*zUJMWAtT$oeH99Z_&ZcsI`6 zSDtPbt4`QlHo0>(zYU~YZ%nea*S>TWdy4@iTCe;blDQ9{z5}R#ko~Pe z-kMN1m#g$hXsPIQW`C|^<-!*zrE-wI)0%KxY*yBY%q+OdB=9~MfA?n9rd>u3zNhGX z-8Ak*1^X+*+=t8L1k)n$*96mC^1E&U*XhLm3c05VoF#%YE#WMYoGFJR4s_WT-x%02 zjjI=vOtEy0N!(|C*5us>IiVpZeQBKEfhi1w1S@$83s5x*-(4nhF?!Jb+p| zFI8o{I#hEQ(i0iu6{{xUb$|pb`G)SZ-8ce1_T5m;zYXA;>_i9L!=&acbf0M|VGzZc3OOccz($)> zqReS9IrRg!CGh=4I+B*n4mNnS>dMo)Oc5NE3rt|Xt3%ccmasnHW|`7wdWvJ#T-6`D z(&%aI@b0Tu@&jZyBXPg*zIs;zGguf-J6ymOB4F8+1|l>q00~qCZYr?*e7VlLjId@E zL}ESj%GHrVt~4dmeI%cQi3pC{53wwMuxn+f6w;z~N`I?#$LuQ)Y+j`U8Q-8md-qETfy`5pwvL{uBlLegC_B;5WDqmNF2hvrgdzcLa*2Rqr4-f(G!kjjR z6J;7G2o8fCp1pNpT!(*eT?p5nhUy|X;xOxBk|?i$xvF+?1_%W0=)88*F0Pq%vS^IQ zAY1}~1iHiT9E+-e7gKZ9Ys5=+FvEIT`Qg{N0#zYXW3y&}HoYL+@L(6Tkg)R8-RjjO z_CW7-3(TVOG|OvTGXyxBQo9|Uueoj63{%BY#FZ}~10Z2uy;c(na*`jE&5>xy5Ny;MzF?@O_dH1qeOw4uD)7<`CZvRrw zJW6Iq)sQuVbnx#jPwSZ2D-6M-%V0}G zxm>+>Z-;lUc6bdTKfIQ!5vlMukIQ4C>Rh@yZ?L~Mx*YX%=?HMC`_1Kq@-}2vhPl+g zDudL0b8h*PT{&hKcooF&UNsr^9}6!kv@X+J*h^gy+;3y!N;w12hLv)Enpu7ypS`FE z7j1Oedr83H+`ADY_ndMC5dWgvWD?!a7F*>7|?3XAoor401QZa{~!`Q_R{ zmn(~HUi@lpS9T@yHy2o}opkB4UfyTRfDGf4E=`M>gD%#@KP=d6PC9?4-K7AQX;WdD zHV1WD4!fAlE+?uFPjMOlRdF)Y4=$mPDXE2pqlQCM8;m;>q!HS$5^O(X>m`M+(O}lW zP6f52K1e$Yy55fZ`4YZ(FRGAJdV&oVOF5eiMnyaPGznG)S&eigm%J;Ma**o#6B)as zUcE43S*l_mNgXs)Kh5dLfO++P^E6jbv!Nx@xw-wy13<3Ke42ZD?4M~1muY;Oi!SDv z6+_lk%kvy`xA~Is)>@wCfC3rH5{{`KvW6dq&c$SaYovbY+dA~E)yWTCs6!XvD+af6 zBPJqHHCg4Xgcu6sLLfiA7~;VN*1wCrGg8crJOj0FSyxhfhGSBOYWfXTTU4Co8P2qn z+b4@&%8mVN(OQb}cRM9M#$4`5F~>@Pjg1DLJTIadI4XV7r}v^aak9fpfv=!1QNKT+ z*EWL-=mk9vujblex|VP@H=Oi2?=?NkwNLDYK>i%OK%yX4B|+HHft?_@Se_+e>NyBg<_pXS zzVe+S#M?;LOXbPTnTu9BLS=}6*=DF6UNpgI;06b^u)uf@Y})VBQ$w=@Co1-(Q|yhy z2Cm(!2bLMRoMk(_H*(2Sjr(ztRc_hA^?JiMXzE|N+3wt9b3QJH4_W;EX2U`I;u3(S zbzHl&2l5ytO!=_2kP!2>6WhTPs|f^3{;Q6x<4&;81A~Q%9US{ayK7H*TDzi0zwIVL zF9q~{!`7+L>oRQ%1HKETX6Fd@Nv8Sc3EOcde%R^`q?^*}+D28NJganlHQ!+1s{vS{Ih59jChBCMp_D ze2Ip8rkUh^NTYeJ5YiUQ))wTi-LMtX&?GN|_xT%X{fwE(Gv6W?bIX@3i%urZInX@4 z3?DPcM~hyeG5$O#ShSPIpMD+`BAQ%|wO15@PP+hG^BP`tMKN7eLF1q=f`XhSuLE#e zCH}`1MHKZ0{{D(WJ-LeJZ%zL|TWX^Do8{1I8ovjKQpuZu7+OQ)e}54aoV%OmZ~Tf| z7qU)PF?=k;0Io-sCp9i)Rt{Sg!T>4B0D1Hn_y!$ma1$ErBL|B%SZ|7=%#_aTsxV;P zfI{sGrscOV@D70O{(!;{{IwZ27zxAHAoHs*ml9z61rKt3%4zIO%U2p8B(I-s5g$?gQQoB?k# z!3r#oYd(@k;v6^^?D-UxY(y1ck3s_*xX;C@xzP#W{Zlwr32NMiMO!;BvPfkSwT zOCOf(K(E=DuWdT!cUwUuWecl`AiR8fhPQFB12nzBwfpuAZ|6*hIMa)q0``PnW_^@7 zQ~%!|Elr%_5U|&u`;qJshnb&kF!^acwt-UCi_Gwk%mmw(@2o#rUgQ?qZorWGM%yVz1jQFK~(% zIa@k=(E9bbDO{e$Phywjh?M|Y8{Mi?eU)xC!ze(lQM#>ZQF*Em=}PM&bU>&;$DI2S zjN4#z(t-xVFL1jPx-5sd;TPdSKc9p;ZBr&_U!G|deU;TdxkqJ_X-zM4?Xn)zOWfgY z9GUV*Uf>LstQ0h}Ee5eqwCZ{p>et0O zH35L70moQTdZtxB?PV_GC64{7i=%vu}Y`5JvS{)}MLhCPXke{V~7-wrBUk1InJku1*pAv&sOY26^`6 zz`*o^Kfk5qhn0-DOAnl@iQq&gv#a&vA;mx3+)v2R-6_Zw&h=&%{xia(?aMogImyNZ zo;yT!vY<3@DiRU5aS#+=YU1j1xyp2rP24re4tC^nz3>ikV#N?A;X_`_f9hDy)%o;v zJWgUK^aSuQK$!_Y!EbQ5`sG}W6JS9fXc{q?Mf@~0*qxI}`l%pN#2UrsOg4duxMh8G zy#HMT*Rx(F1_>oj=4@LBpKVyk-mhB2nbvYlIjlDcTx@e^cKlr9t7HEABQxbEGRFW4 zlbHGVXX_9ny#+MBy6sZRM{tLm4Wz^Rv1PaJt8`1Q5q7hncAc`P5+WEezU1fZ3YY?R zZ&=8CL*{OMr7f_F{bkG*h(ohta|XMMcZmK^vO|eOxQ};;iqez+A1@#-KxE2>cZ$lg z&B%>;1M|}F5eDXqpRLJc;?bZ3JkKIJ#1hGy;k5%Y^Rg4siO}vKv|A4o4R1<)=1qb| zLClFCt~qWXc=L%Lxc2A>W}Ryfyn1z@c%7ohjyRBButyA}3J%S4V}kbR2q6!kQb<8$ zY?t=9NQsOFa+=@|BG-=Q_=%wK&z*>Ko^+dNd>ta22_kFz#GY^7I#%NY!HJv%+_EMy zb+^dblTBou1<{l2$=8`fPE8$$BTimyRk+S z0_;?ig9#9q5aK>|ibF;fp-I7*-?>~P*SFo?|2jub34aly;&<%Aq_D47 z&XH&P;^Tz<-2jr;PXP~Re}11NU)28QwpZ|%3*k4wX1qe z30%8hk13IBM8xTnxItLWxPaN~;dF<+*)Hjk!5>&&k@FmP1+28D@kcQJ#0mjDk;b}! z9yn`(H6$w`Ye@JG>;_5)synF)KzT!feGy_XXM(0ABwK&sDOP#d!~Zohd%g#9U55;A zY9m?I@UstQ-LDPeMu-70p`ijtMKERix4~g5tAg)sZV*F6861RWpPmyHog(Wm`j>tu z19adJf5LcZ;Vv>Y?8_vAH$j;E0EExm^J}Iq(3ZW;)C^kS^|G5RCXJ>VSUs8cka)k) z^d`5thO_ME6ni*!lBI^zUZa+sCN{;xjs^@`;t5fxK4OT`{?2x63f0aWIa9OfC^qciNRK}Ke+qm>nVP*Fd z#F854mV$^%tyIUTegQol)q)7JVh&p710z~Lxd+bV>Se_5;V4&fJOLtbh-8k122Wr+k{M#0P9D6 z(nuTYR8>w+-6L3+L7w&?d~ZWJ&@jS5PC0}MV5fw0rVi9c4tC(&rVrS{;X66i6O+T- z<7w6%ce5?`i)=mN0$V%}MVZ`B$1jqh5b{dhjl$Dq> z$wmRr()p8XIODJ6&-mZqqk!#rLXA`DQ^eY)Dy~s-pbGX$cg-RtOoI`)`FZpAlP#Rp z?Z_K#qb4`_av)13oG4wl(hweWFk_~1-;kr+lfm4{Add0-9S(F`3Tmjz;}qGXT1?za z-o5p(ajoWF^69Pj={*q8YpD6;I18^?*f-C5Xon~`W>ie+W5eKBnVioCz!Bzg3Qjdy zQO!xhQ4WA3w2?pMyaE9T>o+;uV~x&mE&=CXesC(`0!I_|^&I^F z02R>24s^jm+5xC5jlWe?)pCu_)o*cd?pB^Qsh+d_v!mXAROiVI+_fr*_|hY9LGND8 z0mI=pxh`h#uJu;}{t0R}Z{S0iT!Hd4)K89W;cEc?ao2i=$aC^=4c7%{Ab|1(LHP{o z4wP2oLmZ`n=yHu9{z4FKhxc$cC-`cJ!@K!aet#Ex7eK5F)ay_m)WCNPFn&kg;Pi0$ z@CH|@gPIPETTq@>P`<_9Ipak?P4VISLV~=YlAGtSs`7t))$|CmGApAMO9J%MW{8-)c zV*vU2u%Xs%m0x-@*HLuLWabQTt<-D_JWzD(z~*CczchxBJ_orH%Cn%M zJd=6r9{HqhYv%5SUF`3$S;&GFrOL2Bo!h@qcuh9LEd%_g6Ab*P69MTAoZ!R%IU$7; zCf9VX)Tte&=RyvqXF6BGo-=^giE-TfZsERH9z-#HHf5<4dPD{F*__(NefoO5<$bp$ zS>X>@Swqjxlm>2R>bkV!G%ISPsuw+IO6GThaNlauKj>)ZOkoc?x;WF62aV!?B-iU7 zoM7SehzKouU=2J1B>ax_a)&Q)mLBZU>{c{Y`Tedt;lJ5_-SBI|ck?gTU;cPF{@2SR zhM!j6I(94ghU<+}w}XGZbMN}SZ+=Z{`=Hq^z*)5}zqoj3NkRVRGI%H|jz*F_u-l$q zi}zktM2p^{vHHuPpm53C095Ryg@pQ0$i{KQ_I)@ZfF%2%T~&wOtZow~{DmAVZ08RQ zmcpSz`eu^4?6)7!vAU^52WWih%OIb)cWFK=Sn(cROenm?r#&_bKhaYmlAoWD~KGc$O%0g3S#KZp%fuzj>W|SHCS>2|(v@!)i2`=hYkoY<7Gi?rZU--DrL3bbbXU0Chmk!@r=v~Zz2C!hOaOocnpI0ma8cN9i zBsl|X9?LH-T)!Pnge*{!E)2QITPj;}|TK!zytcumM)c6?e<0$&Y^ z++P>S+dmqq{C|XfcX(4r*7v+73Y<@F zi%PD#4+n@@zcGtf%l$?}oUG&rc)KBPr$z@-)Ptf4EXtTM?6imOJ{0w&9KBfeyY5{x zhxy13zIHgOZ@CiwC(TcZ&QH8)*RY3?3MS;?8!WpnefYLdGEe01I`!wxH__!O(Je_+ zr&rgw=g*a54hY*SU)45*#Otr9ygN1eGx>l$`WUGzSEdXqUqyc+ANVHv;y%gprC4DW zDb@NFi?GRTsEyFP=C66AUMc(=oGc?W`M3OhOQ9#w1rJ$z693d7Wa)R}P+7jmcZ4jR zRWk>!5bO|5pTQ$X|0s-+%|99Se@6X~tU@X47s}Xd&FuSCw2%Bvv}dkT2=Mwl8=ivY>9_($H>8Id_+E`X%YlWDZWnv|9@U!X7pT18`Hb5D^T*4m>)+yJB;vNSu75tTN56{=}VZ+QwlwJ&^p4=$biC0&)+UzGmkW-fUttxeL>lG9o-8~A@2vzalcZACL*nlla@vN~wvZBbME9v*@aVjeNA z=Kg6s(;)x;P6P`5i#!8M@cd;%) zV1}LePnv$rnlR@n(fl;Ccgxd3yp!?_Zx3wR-Q3a3VQe*qneeP=`xldV?{jqDF{?*@ zp1wS0t&2S79}JA(3tym`7pw&lFLIa_O-*w_?rU*cYwm$pbH22VS-vcsVAP zHojoB%P-NDFTjoFW%}m}*1W!diQbq2{VU>MpherOro6T#cm{eeGDa2kn)uOgQvbU6 z%GN6U4dbUODdJ84uz-`}-{Rw$)4ZZfU#ssi02RM2W^U*hsO!_1?BsU@1a5tAc{jLB z3GdO-Ph;W}-#30AVufGfk-Q(!`=7>mB8~?eq<%=LpT(q1_((J`Z1F802WzB!B1YBF zy|lSk_`(NP{!`Ja(o?BdmQ_|&c@F$LMv1A?tKdWMnfQ&{?*E(ieHIgI`CJrXy%N5l zqo2jZhkhwutn9Do#m{20!oJ2Mm+_4$ufKEu7cr_6L5`%96Zk4j_xl@`G&VK26c&z! zc|9y{Q%=(OFJh9F?@aXkoz6s4*7qi|+~rIUGyfpK>Oa!;U&LtUp8%)iXS|k=9*uPF z|1!p={9>YK?s66vn|~EGt-qQ6;vVq3Cb99&q5Rn0Rg)jsU{{;fo{O1o%tH z+ywp<^9;BNoHD-q-2|jz;&Ju63CPBGX7%)q&uKx6;}rpMd_qKpFci2{r~IskzcVB}V#fUO626R-tfumTut z$Mgk&uo6rzHUNYbU~+K*Aj}B>lZy`kVFj36LI4IUz~mAGFi^nU1d;+U3^##fKMcjA z4gP70rDc8bk-{rBebRKK4|7*{uV!R(RFp{6!yM!~;Po2~ze$9Mh_;H#8C94(9*qzi zlwYAS@Iz&8Pa(1R78WNVP6Uq&5N|l8hb9 zPxY1tP68Cw)D_jtsFYmEblvJir<_7htWKOHr&83KL|1;=5Li73oWR4G=M@HR*v)o9 zy`-qLa7|)zhGR$rBf!HJF)p*ysOh51QL{8%5nJeyTAV;HaGwG3=rU6z+{YMhtVQRQ#h})hxG|}VtugT zde7PNfxjm{=0xzBhzl6i#tEJ>DQq|MP-LFSA$vflCGG_q7q7(bBX3huOelQXMC=#Z zb3;^ObmT=r_6|X2E~b?s<{14FM%#nJ+AkT#C%wA7V$^uh32HVSi`NX+_Mc2x0G-@W1a7ANeWlw z2{=JN>~Bj7msyg(9|o2s9axsUtS^v4;SqyXdDLKVnE#cL(*eW{oUb^8gA@w?VC)wL z$r3z7z~zdu$vj7c`ANY$hyT;apa2*Br^GZ_(ygbB4xTYOV2)H%`zrctrp-b80Om#| zX5Qab2}C1BJufJ4gUO486BX-8{Ah*)6%(RZ;5Wt64Kcnj3NBN;#%!Lj#mpS07%%cK zqd(>zg$W^Z+C2D(zRC_ugVYxVpD4y^`MZHbRInT74aH|#>F*cbP%KV?nYlqR;BO1y zmUjejaFJ33^LJuAmUj#W1y`pbtZL}{_>FN&5g&+3eW>M=qTt;$q*fGsn}&Q1Wu8sE z5%XvgkntkJn`ua;s83J-`q^n;L;vju@wp$wSOgaO0yGL%Vc@mof!9(7UQ0djT3U(O zK;*d`k*gtj43X#m6_Fd23XDpHtdjfxs8qx&)gTf)ULEgW-xI|9KumGmH4Tv+@LYx= zwu13e7W-ey662*zEv3B9*p$99o(PRSk$!Y1*~$ZD{%3RK|9Cb>1)t5)tkW@whS1t2 znaARZY;Kd{5POITyiR)*%?Lfj0@9c(j1l%#`iGcMji)>Ke(o^tNKCB=y|OkqKJ!G- z3M`AyB#eLs$-%TIvk^=Yu@_K%~nuT?(IROi+`uX0s>|YX|&GG@AW0r?a4c#VYt{t-u#VCzGP)BD@h^ zp-P4^;GZ)OUFOb5Gz}JmfmDm#IqnPz0ZWEXX zN#+$II+LS=4yCwMWQRDG;>zgsti%ol!Fsv>k|644w0c0)ZJu3ISKAMn)Fh;0sg^w5 zr`7lU|LVu}o>m_L-dt(h(^6gdOUGXZ{xb2Gg}-e4<=`(De|h-J$6o>d3i0R0U(sM% zs^_DrF=g91W=HTMCNolzZo)?e8;X1hPu-bq>tEgB`eYP$}$Ob~YLA3*Qi^Zr;d_IPh8@j~pU}ZwmYr*YAg9^OJy# zP}~eq_AT^gvMa4`tHdKO2&#B1j~^u_S2bgdJk{h7J&-q=fSX ztvaNb#rsLv$%@zFUIxbCLvi9R283p%xMKQt|D_?$5RVkJS431v-1ip<_?>|;UnpWl znGr^fEw}sP;C^W#_s!guq6KMA(+ZFqI3+~lxwjmX2eS3e8zQt z?0LO`J)>_xZy@bhG&B|>EfjfBd3db28|jf{o>=)NdUcscO}}|aSgg2Ph6KX$2lC6j zl@gYFGUS6adb!6b-$rsoRBZMk)U2w46KKyWPGL*2hgr#NlvE(7NDb4tNI6I7vgMxa zu%mw7=XQE#xyL^7jsW%+w5MddGf*O^PsxVNsK#UL$MA#VlyZtzP}OwphIR4rTq@f? zXI4ek6mN+exs|Zdare_BjwP`R9>97TjMIbCb~vj8YS07GCq+Lj4vIlpOVN+A@9X;w zB3X(@)FqDQ{op55%)m+f2VJ?slhA;;OH%TaYy%lGpRuZ!$)Q-xiW$A#xPXYlBqcm0 zM$Jl_y8~9HAy4DCa2||_C%}q(&L2R_Pq0I}82>ztU*UwOO5fPY-A+!8{!6Cnn=Fv!UI^;(dis?!z z7NMAo!a!&7Z}0E$#L4e)xP9-Usr5aMQH+=`*oTn!8Nd%jsee(Uj|*(z|IX8!vN%`Z z{`~1p*#So!CLV-|hm%6M2c$P;)EWzcg!M%rmCsNi>EB{tdbN)Sq~UT!z82=sjprUA zm>33(Mz|#g%D>m~UrBWG%dnV*=C2KW_znB)lEO~-U;NOM{%iG}|5|+?yjCp8VCWD2 zYxN_KI>+xE9|-$3^(UI%=}AfddFUnk<$qkVf?sJ@rzan7-~4v{{$IE2kNMRR`#iu*g4 zLv(4-RaV;%>PcnY-K>9QM5se#LiN%4>NR04L$7$ zuO%XhhW{dJK&)c^RitH%`<-n_@CYOR(cqt}Jc?57mO_!6md9sQPl*HOKSPiYf%yuA zN3}^9AkT~F7Z`=e;1RPGnHF|=GFd1tV=7@G0k(0tSk9;s2nSR##*f(jS!rWJdE2lm@vuDqiqQV8g?T^w_WkhL0 zoGGhS0O7Y-1CEHYu>vDd6ci{im``e~Op{l7lA95yi%ApK^&4`O>9w;VbBjx4as{>l z0vYglgK#pVl-K8D8vm^yO6P>6IQwpF?b5xHGVE2`&*P zHa#F0oZZ}x0jINKGgN<^$o-Ge17szC3O+0lsLOoHkQhMwCulh-9NIqP5XVEi$L|Qg zaW?;zb3xO`i|3Pbvj@SZyu%eb_J&8L2?ylJGo`Q*ior9*hAIeaChD?4aqO(eK(8=m>)}r&+&|?Of)(gBAN+-_)da4AlRpn z&xEI7{lq&SktXz@>Dlh=1Lt~%r%Q46A@%VXR<$-jj!dfG>{0u&7(5;~*_N%aXnaGid3a7>C(U_^;9>Lq`(Z8+OKB@qAc?7-j)ZX2 z=A6&SJhR(a>>^Pk!NY3IoI7dGh5Sh}&`P)$&?7`t)es-nB2J^@HzvmB>G(gkn5`(U z&L263hr&zHz+f;-S^Y9zKfj#)KT1QBK0DY>`CFHj0Ol5IU1D`#?XxVl(@98 zv5FrFk28ikUJNy*LZLsm&re!bDHdMbI3ByrSkH3Cd>Edw)@o&*$-iasfRqCkla2#Quci-$-9tr$CrkWeuu zW3mBx3Lpy{XRb3KPcu z?luO8Al=3pWpUaVz%w|&zB3JgX9WR5+0O9~f^xGBOj{(MP9zVoWn)MYURf-mG7Ca! z@C(t4#aBNCXBik>K|d`s7%pAg@4=3nX9~1vo@L;X*#eJ*&0#2yN2Hu9O48;j z0mQV^U2$f=D-b;2g=DQt5N(|=^c&^{qT#qRl&PfrBQBnPKHrlipGo$eU{KGZs-2!1 zB(FMer)LUcS--l|lYYnc&IXxsc6qKg*VPrIFR5D9vwycIRc@!W-JUV>3OZ}ICn>Z; zfJM@v4ZA(+k}l|w5G6caE8d3l#vaw!l}3@iEf6x^)@_t|870jQX?%|Y>nzsNt9!Q2 zG}?ysq8?NwSlv~kpXAl_C%PTE#t+mJ=x43JXh=Wnj51%KpY=3zk0-A0oB-f+4Zs_? zy2D}kakz47? zeV){uHZcZunG!tX=X1by?UhR=wk}vZZ?#Jry_}Bk^CaATp(k>f$#FoU2a+`V_?s99 z&#;2uLI>{z+$F?KxW!<)alLK@yJ;0*NxT)=in*L;B;+GZ?$u^!l=f&Z~X+x+7MBd|jy zzTgg>hnnKtoi7$Ad?!kps^?CfdWIBs0sfyp3znRgT}m~#NSZZAvhC*DKX8OX*;gXP z?NvAl#*~`Rh2z^k;bXulja2>mII>gLRR7i-E$F3oC~(p2EiXI zn%-9{ib|!Ji+QCvAdvR)T4hqqCA_HCUxfIdG5dMZtm)I|@LE2k{3TvgIkjSjC@PWS zFAWq;s$Rh7fTY^7m+{i+wMc)==G%`L;%On5BhPi@-`FpKiCiHjl6NH)gt>C%tLUMB zc}n}P7Ntz~=N6l1f#{EIUIrE@`tOo>ySM@u60PgRcSOm=_V}dO>+yY32Z%+GA{>wU zq_`VUHhmT2WKrmEcq0lsfbER$wwrjvsg{PG<%ae+{$}!~#Ka}sf?q1@rnmG=tZeJ; z*}*!3$n93@8c<@bxFGxx+-6*XL-f)sxB`di*H=7_gd;+RGo*VwT=7TA^QtGV;CBCy z{_#qQ5EU{qU`EB1sWt974NKaaVI;X$iocUqqJ?}HZGY9{%)DFl6*VXgsVJq~V|<-d zS3T=|_kq_uN;$JE_FFb@V={-BJ2*qlGAjfa<2yk-Kztc~m+@1DlaYWZf;&ar*px8!SMJ&#oZTx4(%|W1eU|ad_O4TwGEQ(0fTA@{1X0PpvS_8 zSdSUB=YTvsMlwHabo_|u*zqWZy$M$3G1MO_&kT7SBtZB-1Wm(44^Y|mHXxijw6#+F zKS7d+c=di68hfvw5=4dtDqF#$B4+$EjNpLImgyY%@#50+=NJ)(XyQ=TikeBN3RSJd zG_;(Sdr=I}{t`XUIEI`sgBK^=XB5LKdMCr2%sQIYPr0AM-|-|TKj7c$Su^?XlV;5n4IiX&?|2eR zA2NQ2N#}y|836W=fbg*K(=_C!=0CB2#7~dVZU8TR)TmMAufhHiH6Am5f~LUB8?%4J zPmk04XzY7J@=uOW2%BO>jD9u*UJiLRkJs;>F|i-PtUXfhQ|!XH#vpqIL@SUJv-rr? zXC<)`JbwvbL_H^9pp-#~d>&sJ1Z1!GNZH2(h^0_tLTJnY*j|#1CF7(4AVfn{>|aR^ z0#aiRq8fHhQqC)M?R%c|(cNpHJr^KiUY8aiqY0Z_U?vb1a~Q0g19{UAq{ibR^?gs? zum&mrZ3ZiQ*b*uK9rj|$WZ2-eRR4x7t+ zgM^q5xt8Su&-sMUdTd+wO34gaF`xFoC2TYsasURT!VCs0<}e@~Hej%6f5~Bt>uy*f znZFV+V!mN8_+bgm``ZAJ1sqDm2?Gi&`J~*F9Eb)WASAvsp!^{D&s6}*j{*uWXJd)~ ziB=v5R{NQbe&ER|{KaVbn>5EbZ-JJ-iD7NHN1@{}B&>8zEn||3i$s z2DT<&?EeV=F{_g=4t(s{9Fe;PO@|2+U+r-I{W&pl{{^k~H!0aCxfY{Z3G1}*y_oxR5@Q+?3xd7Qnh)Qk-`vSw zscDhF-W72V}?Rg-ukK5C95ZKqUZ?HjE(|jPXPkm@l1%Z8aM?JGbANP?x4FvWF z9rYPVA)8dUC?j+k8+(IPxSS4uWY2f1?HCh;EI>mrnXg$eY0egwjibA{cU5^~ zywT@P>=YwsD69-FQLCkpE=(wGB~9MwOO5TuL4{F5z%yjFl-fh{W*1Mv;O)?|Z4R3;(gtvy4&l=kkx z$7OV|->?#_u*;g8BkdXFk=>3_CQp3#G3Xr*f zrxlxhIr4S1ueUx|zMdZ0?8}l5P{a9lO>y5usat%7$bCC`i!WWimA*Y6-5#Xao%Sqf zflqDo#nX#hd}jF&ow?JVkp$L<3DKfK;W3IWr$Vb^sV*{(67967j{t24nrDC>-D!8& z%#5sKpvIx7Ettwk~=Y2H#OS=Qfj2kYn=cMB0 zH@0gVPDV##YkylyKV)`pso)_}xB2p8AO5f7<$Z(}ZS#3zpzLL$_~5ZDdYrD^hHLu| zdXarR!DgA#2R$wmB(n3f6*8!?P-sO#t;+<`OB$M>%aY8`z*Lwif1VZV9)j0diou)A zxJp#$UD96Y1KAn_Rql`?M#-`Vn(Mw^G+4)%jJVK&JJfFP=>Nxf_;gr|~ zj&9Fqc3J5eUSvyv7S1mLl;z7Miz4S;G`6~?a_$5v!~}wP0 zfT9oEGp)k~$=|r5sTV#Xk~V^B58HjAW+5y0hT`t|JXWaR*kmVazEURGQ^VERwTW2zRxK~k@bi@I~vM1HYVf%!7fQ-Y?QatHyUxbHyy#fjiYOaIXt%bK%MU9 z?&cN=8BC7t^l3Jz&e(AVj_vFQu9ZfnP{C1qd336%&j->kCD~z<>qrRoIb>dPG0pt7 zBc3k2z!zHutr_cmX=i6sXP1Ehed*yN%zo;yL_%F zZ{R1aqDv!rHOjRV!suPqYv(|=gZ^i+Yyd@^CcDG=t1q*SFyvr%IJ$u7#4 za%<_OJ?M2J{k8`)m_&tp@lH)4&s}z}Tt_?i0_#kpeRtVQkcH;tUJPs|y&LM#tPsfa z&O4g;?%L;&Gt7||Id@1$_IXr?ve5a)8Z4lD_W4}X&oHLc(Zn?UTh}37TP&pT%(S#_ z`uv(%RTZ;q#=whfp?{bS*<0H?*EDxG!Z3H76nQr5xv?K+XdRuBqn^IK+iuT;!yC>w zw^L0sWbbTTOIEcMtliQBbMa;bT!R`;YowJI`h2lX0K(o>WX$T6LYi6Z@D^GS?nqs3 zhX9_P5Kh%h>Y3Nj-qyqe%X2keB;@g|cO17$e;B*o%CrRtV=gid-pJ*1R4Xf3H1P?xm>_j-r}XXad1E`a^<%D9GR0(Za$tGAs`< zJmY^O*0bYZTYWKmj%*ORvpRw4ORjV2(FliA-njohdv<7_xY-CR=ef^b=(B7#mKnmR zs4Z-K{MNA(6}OF>v=8(&z*w`Z6VC=r$Mpf)d!JoHlE7~+_T?q*;3nz=-OXZ+{k7cZ zk@ph3)jO&F5}#eZfHqzNa$^^@M>$-eI`-frb1ym@a3KTY2?clVnxfZqBQcA z$ybx(L3@&tc`dCZUxxg5%CkC(L1ZkpI?Cl6=yEH@c7PtVIuhg?Nq)$l3{vBS)sY=_ z3r32=g7N9qQvN~8vN`f153%v;)fY2qM&@B!WOHP&L@UfNjx9agpM<0I@I&@^r0%=L z=5S=#?lN|-c}-W#+OA%Zk9Qk;1=QExuvAJNq_=I3l&E`*;(Da*m2&PS@5A=&K1go( zzSbkT!E&A%g+GDyEl7F*Y{D|51b;_C>_hBIusZ&u0LOBOZB9QN=10WsG(XBdp=p5x z$DlT2{~;EXp~wENXpFH9USIlSW?d8>>DgV=h2XyZIT0$cFEqVP#+XEYan@ z68SkgcDb*Jr6w6liK)jZ@^3zS9%MD_g^Ygj^q;MUMg6LtZd_wb$cHHMu?}yVUvh(| zSBiR7OsH`Qbelbr?{zAQb9kfQ5C>TdP4c`&U2%>g`E9x;&Y_3CBW{4>U3xdpp&~oq zf8rdB#8~{8T?dKr!WB3xAJMVLKvsT2MOOmneM${if@=OZU2r81_2;zdaa_~6M0qt&W22Zl4t+%zG;oz9> z#T;_POc{}y_ybK(bR<}RG}iMcaUWbi(^psF#rTCHul8jkHHZ8J7^2@veZuaX^@o@< zC_wg*nqm6E7^Bcr3`aD=lOHA@oWzB%HxnkBVfVp46XD&B&w&-I+I!o;8TKz(*RT29 zQuZ)~rY1Qu!(jcv&Uh+}KF&>YB#n$30eu?CPbMwLP_1UD=5RZ320DOdTclB8N=rvm zOCvVz0=C_(UcT2`ux<;bK52I<#o^R(jZarB(Ayh_A_NWt$)g%6A!};Mh{0g6rQ3v zo#n91b<*O6jvP6ijz4A3ii?5i#$Px_XBOo@4Xz-YjxKaK6fKuFT!#lXkB(f2(~?gw zJZ;ZNF5sYtFkFQ~Md>Y~h-d6Y4!cK~govfy($m_xroW}Txw#*!>y|t|T7JE+2o?r~ ziyU?6Y7=9M$tEm9HsJT z+I54kKpsQKpT*F}(%UxxPmbSzz?U3dAx2`{vy@7j`5X{rHN98wNSAAA?{oHIc>-O1 z07U&HLf+Zzv6DpyMvI6#Wum6*S+6$tViGhM$^GRctE7WDzW2xd6 zur=+p_eEft6|@)M;yd|88vsx+b*mfNSE2vXF7ke>#nVT(fW}=(Sufe$N`4RNw*npY zQvI#I__WnZcW*Zv%7yS|IK6fL8a9w5dhR8Av{Jl|9=z43C#)CRbu4sw%~n5eT7ItR z$9@nSxPdAT0_*kBzL)JTBoO8>4j=TzA${-@2Yn;uE&FftB|r*M_%FLXZh&oUMa9L; z@Md-661Jix+iCH??7C96gZgjtl|mA6?`^&mPy^$aIvk(|{MYet@5Rcm=%TvAzRc8dP^|?{OI6L*j!s;Li@4#}06qAMJ$LlQY{~g> z;Mw23PD;2$?7?5|e9Zp;>L{DYaTr9#Wi;Wi&*%Ibn_N{5i2BGoWVV}F=y8r6Se7!(+<{S9frKkhKy2~K% zB5%YbIqj!cmrEr#Q`-?=v3v_%eFUuVt@QK}pF98He*q1-P1z~g4xNr!dL-9jTC>dI z2s0ls(8E!xI|}r0J6&+phxk0cX=x46yn(TSz}Wh@siS=b^lbiuiho>kNE;vXgvsC& zFElD@Pm(NazMOxWnpSnSvjy@8eTjL>gu}pB-(O^Z#zZGFT&c~^nZykJ(4(I>b$8(0 z_`?%ekFg3U2vm5%w0dX-+l!{I?v}MJ?MwXwiGIn{2=mzhh^&9nJF=G9_o}IdC52kj z?yqQj%_wONl)P?Y#B1-mE`LeP8>Xgao)0- zn9&FRverPE?YK#xQobmxk2HuwOj>I0M<)M+XRP!#DduB;nE-$x)_r24U$b13!pxtF z_yiL^qXQ;ShH-^rB1c~a&VWd3b*M$wl>tO3t9qy`rMKN5*#%HJ3* zgki=G(WvrUI_tO5B?pFSu^9*#%|~;8yBtdd~;q!4gRQW6Z9Sfe5%fC&%ngY;jL+CxWDqtn#1Re}VD zl*EWxB06_h;g&kq(6~fRjRg}mv}cessq1)rl|F9I)DX17fJ_$56}Lw^*PxPN7`1^h zeH$4N_L_QYwu;Q<{UX?l6a$9qFYr_P|Ier}hy=xJ15jD<*2ZoKxY{~9`e7&5T*LyY zNa|Kr;s1=@lDdsWZ%OWxLXr_CEIb8a#F&hzObSm$5Hav}%vmE1KgHNt=&*+VHLY!p zt#C8K18P-GJURAK9H)Fn<%B!X2GS@NMaF5`E+x23h5@I)Rbd%xmwsA17^Y;*Ll04z zCLY;_nHnPXwl(XtT2Rzxqmntt#9jd@B3Fbb=hRhrp3yHr<)cz@feFTq5bM*TMaA(X zCu<3bZk$6N7bwERCc@-kIOOp@@+50{zB!J6)HM`!ijkYdI!J{ph#xsuMmIsTFFf;`)PPi#2EHe;_D? zekA2jT3n$fBdgvy6{<%;I=$N})NI8h(`yx~FJ_qF8QMBUKmo}!T&BZ6sEMRis`1JQ znWj{#PQ@%!N2QvQ5Em+#19$m$y!f2La7(G-w6R1>VNyIU@Qo16hC7OGDbWh4#~PZT zxMS!9z9?}r&8SjyBi#vprjpU5bY2xYNtEeem6|;nGCM}Po0A2@V^0CxE}`bw+6z&5 z4-j;}2L6I^YT>EI4T4D{jNbVGR55@8Cw)~4nOgMAkqOGEO!AazBNedyS5~XJO14Z- zRjcV?Iija&!M7Wb5| z!ar-(!Zb+Z41851MU54s=xOZkZEThD$B}h{nwLEurLbI#s=z121jesXm8VrMs3Pwu ztsfG(k0+=FUfZOhgJz=Uw8>)S>a-eN-})CFLs=bFO;k&)qo&FH_dV>6^FdxPQO$=8 z@1BX63uJf`)ijXRzfV+Ekku)Z)GUzI)-jrHje@w2i3kMGA=wwud6U#M2c&kK!#`8( z(ddN?esMXdJ_G(!lhgue`hJ|Gx?`-1f~%8XhB15UscbTqbTPF~R?|I@&@lno8n7`< z2&|RJq;bGafLN_FlGHe$r7f(JlFEx|50;)@ovg-MiVXW$KBu22V=}FjIt5c}qlr^g zuNx9MHYB$Ht!>*HTUT`~htdXuIll7k_zbRm@d~8qyC||wO+_;4{5sVY z3R_r)>GOJNUY(jNucl3PYJMUFaEytL!lS{o2%;NFUq_GE;Z&63c?c|sX(|@vT=Gm+ z(=1tdBmzI2HC0WKH`1D^s@FPd6Psdrb#NW;pQ`4k;(-u{3E9NgH1xnNY2!52Bk!QY(|}jbqnDCNeCdE&)<9R?a%_?P|`a3+k- zk-V2s-V8t`I%|fSlXU5jVGIN}uPXvdfCQliNIb66l2Q)SrdevT0}{T| z$|G-Q%M)mQC*6nEQ4sX8ce75bMbyHwK{Cx&OXYj$*c2_zWxH2QEcjGJLb4Zxk##?< zpRHy_Juq}Gr4P}e*=k8B#CL2i>5tIYvsD*MTg*i{kl8U2P4?sDn4@M@L2ehEQ8Wa0 z4C@8v3(G4u1q`kjxc4a`42y*1E?8RpES)z;)uWypIJ<&$@b!CBUfWGjgIL}`ZRWDa#0mP( zbomrbgP0E|#$NX8&|OIST?Vti2Ivib1A!}ruA=`CNVVIKRR2Tu3vioH(das@NI@Rn z6?Ix(A*6oXH2_jS_8BouaLPhB5u#wlO3H%BNIpX?R3P~CoS~)_Lhi@5Mm()}J#CQu z1@_&`(7YMZ9+`Y6BTS)+shTSqj$Vv|D^Q{odUmRoG6pig z0N_>$*?JA+=Ydok0>Fl*#{R$>MM4J1I_>F%P*HNkDzxZK)vm-VwDC-Jl%+61z!Fd1 zG|h#;O#XMdOe%ppmw&|c)HE$$NygmHQuCEmh0Z=p%}RhX7gI`Lz~xl~P))hrZb?%W zs-LcTt&jk+XDgtd-%2l?1^UOO&<|&+qm*gw<9?DzW0Ap3ADbjR7MI|<@K7Ti``s)2^~H4W=vvY^9&=eM&}pQ0(`UZm#aLQ?p@ zx`~4C7Q;iL8>zHZp}s|Gu>+z*wk8HtgW&K3A2&*&R~D&b(&4-{2xIGTrI=VNdbZe5|2yWLGvqiG%+<2Axu;cN z&)B?Rm3(h0?nuOZHqKfff4|^3LPs0aF%f5qYHVEYv*@L{S|N<5PR-Ra#zI!fR|Iwj zRbpIlK019^i%;uS8rcx+lXjg@i$*RvtpXbs1eyMeknd%$tGUS#lr}4MtSdge>ZNpS zo>paQgFNfh2{ln(Muqb=2jrI1=4(#5gSzHxiII?78YsI;%IKn%KdCO884fB8b(`Uo z!uY%59(raz$d*-fYQC0i@vIhY_%+R5pk>NyXzBvZ;k3fxBtWA>XCOtw+k~S`-2+2= z$9mekKvU&&=*R+%2`V4@4z$@u`p*K*Y4vVmL)W}P^yNK6bH?$7zFPQ`uPma7cPX&II1xMZ11b9Wb&w^aE(#J@noWYNoPRVGLZB$-YlvJXtE}tHoz&3ChK|WhLM^ zB{O7{oDG6dlDz_sOKJCys%pKA4HN!Omy6<&S5VwfYPozRP5%i*-c@Y9(-Ry>l=8cpni~GBF@4zSKF=CgR&(sbCpoS`OH_{;uk8z5wID^lh?QpVA*(8t zyiB`)SBpU(9c;jveubWE(DFiG6-!(2I-SB-OW7O2Wuocp!OXr%8`i_X<1N~^M2m}h zJ8(S^Tr%TbdVW3hG4IjI^-!CQX=y}R9!I${o6jRpR16W#j6tz7-$ZRQoSDi36YZVhOox87qf2vzoh9x_!9v^(R&5dD9nW;; zS(@vEM}z+C(#}*Co9LREP8|l@dsb>Cwk5_EH;NU_X*N;XEN2#swf|hH>7h&c9!U09 z8r6-P)P}~hoY~596Foi4nG)J=?8Az|<4TCiEbt$_yI1?WY;i{k8%n;_M^~UGad?G@v+KTl0GXQ`ht$%*&6c zDb#eiw!~sv7i=^5%H`UFBP=Xxr60`T)qmG^VeDX;{Y5nLdQG?3z%~0z2G6}-+ZbYD zj7*@&e2X?^m_>!Q-d{uwhqM%n4gS^slEL#2X~Pr?{AL52KqsD5o%G-lt=)b)G08-( zHV~73yh2lsYP#LFGzcxgRwiqT(>*4&|ONV76Z&k$*H0Y%ZaAuZdUQ8TFgPAztf zZO4#$J}#Hygr9*ReT+_y0PV*ZQjUymJA(~q@15F>mUOOp77Ye#?$Yj8aI|ahzDEm_ zE%t~ZCo}P0t+=VDp48kXi|wjleLDQK7H_e^pEOYOUr%e3ty$MI03}sH0G?;G zGc4t|45|3^$Eus2ct$(NI`S~9UFHea-u8)_H@M+htrGX*!69uuV~R1s(Wzxi<$|D z;b%6En%clP2K!&q{sbC;t#hD~ST_tQdEg!GK5NM~Hcs%Yfu@J|II`&QyV_`r4JM%e_JhB^tJRvU35QU<+&2V` z%{s3AX~}>{(_fPoeW=x0Y%o3yl-%>7)-{6J^-2j(GYiewk#J+c@8EsHpA~X5H-aq# z=SgYL2lcv8)730M6tF2X=FH0XA&f*C96+h>BQ3r!A9_m&E2WqhnMp1ids97A^@CK5 zeo6G~rx{qhUM9Ihyk1T-GWSqMNHKLOObn&)*Vwv2%UCKULUhS#kJ+N@imJN&Qr6WQ zsAqdqr1L;jxBBvi#&*_~fszAVy=`;_#LRWcOoqw2(j)}vm?sCOALEyA#;D$qjnP(&D{F|whHf|x|XMNv`N=I}@3@ej=E z6xb}VNM@H1=dlPye54uZ&sY@5wxnh$Oi3KZSay!0mi9x)=a(s$v4AdI0UZUA z7efwB^$op{`!HKMfh(XC&w;?}+W}{$nTIR#LaLRp-C4v0SrfNA$1*|Ij_po&Is{ql zzy;Q}>Mv{Stx@PrG>n4y%FvQ(l4}B>?QlAjNeY$kaC()=3bpS5RaR6-Z~mgGr9#>3 z*N>T*Gz-@wVj8%y@~T?SBim-MFVzgEaNTRAls%K4{YuM9fG~^8Ht}mYlP)sxrc^M8 z%wIzgI#;3T=Q#_)%<~LWw)wRDYi+c=fNuI)%TUfl#IN(5*>LRp>1)uyXH)z);KLTt z)NdeLTTE^E7TO?~U2O^7^bM$)Mtb`j$cmcjk8i*^w=ny%L|Dd6{uVrX8?}F{WyCLI zLxtTs=M|O;pux=wkPYB^lh0iPL7f}9pT!K{p9Ts*Eo%5ZRr9fh|a<@~H zFQV7KgDM;nqvN}sPPpS0e-9zZerot0kH)36=6m#Y8QuInTK@ge!m4;)@Q8{ba@^SbdnG z@uM3BDG&oB?7bxO?M(WyRw}%Mj_h+5$ahlIPg?HqyKzn`O6idYVNy5iCoMjHkQeCU z;M`-3^gi176GnPJt-jD%tQ0;-pZ}y4SRwi0$LnEHYxJX(^|Ln0`52a+X~6(jhXHN@ zJl5C_`mfgLf6!)BgU8)NKSLz)Bw;_273WhF_6yGR)0F=UN}r)q7dh>)Znt0TEQoyG zk0fB0o_UNGTxq5IFKjY$jm?&lU#7HQwWRoev6+-ZkitZKuZS^vU!%HT zHIMSTLj6gLor?1fy7pIe`zCoVamFieD>Us4AcgFAX!vhh7Nk9eziHKw_6*za^vTDm z6d%gS4{7;+XKAKnhM0$ixwd^QRyug0%%2ER)40#*+5OJ3o_}MdKu-kG|K|oy{zBm7 z$S(tHhEyl{UsE|@6yNYc#?m@++Csk-+gEUc{`_6bk3KmRqEz@Dy+GL1@97V6=F2}) z&ZSOo%unoGtVOSeA4B3V!a}w{ivJb;F?9&vBQ9TH+6*odS|^Sk)Y1(dOPl-e{!@E3 z+Tyt=NSIM-=Hg5;N9n3Xy<`Y!R~)6!c3Pr77(xc^_vpD67ZihjQe^OXkA6w&h>&p* zN~Dgb-Ba}>q*baAmTwhW8Qd)^#TQSpr^JKoGF9ShS(#q0SLl^e1f&AO?8jFPhb!@A z@QtbZ$EH5>TEpOOovCw82fR6!2doTj>v<8BJbt4=+c~_X9Rdml4@k~@u4o>)0Z`#H z1@ePM`rl~cPbm+JQznJ>;YVh_l)nk(Fe7Uc5Mee*_s-Ijm3|Yg_|)lAHbX-6sne}& zfq3UrXOU^Esg+L7(;alqY&`;q>%7@|nKA%@$Y;)C`274jTQ30u^UTrpVdnwze!I&X zZa!a(sAQ*!bh}GeE-=wDyUVBSGSO9bSDCWgL~qz#d70)tqGHNklQ?8NvWvH5JC~ZV z>n9cNqdjx=0tm++n5$eAr=lsHe%2ga+Or)L7=Et{v?VS8}iJiQo*@8Nkm zOnd0td3qWAk8|ehUf{no=j$HR6{gGfI}va3(0qM3B<6R`*Nelh5`(C`+C=9$UE`H& zO!O@3#9eFZY;R)PXt5o`JyPM{O(eTq`F+TX`yZrF!zlcH{9-&+IrqBohiT|tk(zV&9W{oO|0Wn$ss{nJfEn#g__8LnvPf@-3r zv%j|ifpdB!+r5C(fNK}%+6<=Ei;cPa3iSFmj~m z^kSb;?4jck_BhjMpF~9)^>{kDNYBXCq|4w{i&Qt_GoeJ_J!lWNHFmC8!D&^ulvRp& z($ie&r7>lI&H03FAp5v4dNk5gF#6Q5%CwDQ--jA7mXD@O>-DmEW7!YFicbn34>z|RF=#&!WG?8%Lc*tJD=p9NV`l63o^qe z1DzTD@vT-&tD-u)>Uxoh7Ws#;hDXJo*uT)j#w4{#)neUOw^zkC$xyih6T65y3FQE zaLL#a1b&i>8TIO%vg=vcCPI{#kJ8>5cYtwz!yTuZqM*hk6CifgE=}B6-Oi#2SYJ{=t)d(B0TuOhM{7ua!l++DqXIR%6XaHxdzFK&=3B_WMRgnNW_3J##ml0>95iI z*MkBrdxMTG*Gm)L6fqV~zYtk((exXfnQ8BcZ3pIp4{<|NKREC;-EF(($fq-fX}FKg|6lxZa-HIeQrcr_=170)i3r>l?OnV(!Zid4>+Al z;nzef^n%=PPTOq5=0>uf;EjW?g6|}KwE}1KJF<7^i6DVXJM?V%2dc+M5^TiT^09ZY zsiPSY+r7N~XCDfu}oqF+D#N%fn31a`?L9|Z8Bo^3@``@Ct zKmY6Z1(N*~ZRpg~m__*&oqCa55q4wl@@-Ac?aX8Yrsd3YG&Y3!b~o%;!JOy$Prwr+ z=+{oYP&QL`7p_4VP3*!|3#ZO5Jx#XIE_}p92Ex2Y3D*yIG(Fg*7Y?_|dD0{so#@gh zA__$LN`2h$SQL$qqmAtUc>F&tfgWF}Pn8qN+O6k>CJ6vzlc~B}AETtmbVH>pOG%UI z`AU~l0SS1b(v_{KG9^{H9Eww>QB|&dC0(Z0Dpy)k1|#X$^>=l5X!$1aV;ps^Q?Q_BodVMay8X=Ym4OJ7n zFQBy+EZ|8UIUG1@kog4x|tOC!&sht}xj%0ii}6G8DWBKKOL?|M25AIf5+&|{?y^w3(pFl&hzMh+S> z6W)kM|6FRTV8|qfh4Y6h~2MS8Yw9a6v| zx>&ajDJVvPc|h2rnzxHPn7ad>T1Bqx5$EBWPCj3z&LY=DWv5K{7P+R5xB!J2yJU*K z0j{l6H|UYWccWzV9%|U2kHYhRF#81NWP27 zy;1jCE-}R7@cSlOz7ezq#7P_VN(BKQF7Uc0ltf=4v;c^QfrH?aELXBQAlyM?yOemf zfS#UFTe}^>EVu<}0}$9XbZl7XI>{Wf_g^|lDJr|=VyLL4xG>| zH}IpqJx9-#)EnvjK9CnT(Vu;Kl5(?55BXfKNLZ6YZp~Zf-YU~KK36s@pjK`|%|o*HYE6t!6&FFy>M4ODuBx;BFxdW;Ti*3&^7 zJhNH%4F3nT5`|Cf--65ZB#qyW06Y2H^zbOlKZ67JJS9^@vCFMIgX>=m|M=(NY*g&Z z9TD<88jm|hZ*S4Zf(S_7s*hD(!c`pQQWeL`bk0^?O@YFMJ-iHEiIl|!Yd5p?8u<#` zf=XPaO6IHRJTXE%>umB;=4*k0Sd`asL`z+hls9BrR_e-7-jr!?sVmDI0=0=W`fVJr zQrAf39k}_h&-Y~VmbpeL@58aF%vGWsm+1h$BW#1bUC)p|LRSeUDdl6bzfZ(8BR4gDUSnj>*^g8 zYq4dOG0gUjMg9blPq){6E7EU3gMSCsIX2thi$(PGqu6x=KGjc(mMi9GH65uAlKu;Q zpp-Dy^sA`65#Q}Mi{9^wUf8gcHZi;*Z)ofvp>neFQ#P@w0aMUvn>f^vSA|vk$A-K@ zs5E8z^Ng?zSZS~=Gg87?W`tcd;q%%{BE@`vUUA`BO7n6ReT%*h{Kw8y_35bY@TO?t zz1bL)(O2_kdw#=Zl&&d8+=Ta}ux(`mm2H(tl~dSO8!LH4i9xp-5fh-Cts+(HNR7QBObL1QdR}g)u2P}3i}AV=s4uAx0jC;RkvXYf(Yw_ zL*PrFBi7!AIp|z*;5NfkFiO+O9IYx(`}vz;jc?`DHu$!ny?H(>8zbV^;fys_44|KJ zqJ5o_QwA9pP4S(rHCUr!p^vSfYU%0x;8Pu*N-q?<))^&(m6Zr6p{tXA+ypC1TRW|S zaTDngtYmt`W{#Awu|bTv1i#b{1*XCBE)^N;4R_P!nirmQh5cN!)~mM@NJnOf;~@C5 z$f$LEvPEV}h)gZZYZcdmOnJLSW*U+4Y5hr%Azy)U(?euv@0c?~99?f@$IYUc)z!*w zhB+I&@gr`ZBXf=ltr0DojimUi@UbA4rFd{xJ=ZP{AA#M?dHNHo)GQXtGql3#Eq>-g zvF0yEM){&pLdYz#AP6JX>wIihSNcf$i3>0RVu)6<(rfKv;8AyR>=H$WWkS{3tTn`* z`;mQYpqoq+%UmWZH(>5vu2N)+7mvCVvv^QS*95PI9)o-ER!Bn8-v7L27a7Lo&R+^2fQP;9vcIs+k$xH46GT@-L zi4}XqW5?ZPk-oiXxLVb48T*1c*0LBG6h~oCT(Dn!bGwnB`#3d3lewO#|G6kn2=5(6 zBIIX_PPt2M2gIB^Fz%ibcidrkJ&>MJ7wc@TV~%HZ0b-v;7>Uq`BpfsM$gk*-IC%#S zhKI%3r}1r$h=H4p%*Yoh_aUO?zcGpZSnNxhA_e(a41{O8?+tB+1xhv5v%*)!rp-n{ z?B7*7XuM)YNSQ}4@px#5!<#J z$#oE{{V84sq-<0R`Ytfd4sqnXaTZtgOSNFJ^siw33Cx49MZ`9vrt5^&1Q@yB1=ol_ zCys!^HFNx+Wq{E?qS3+mBdr$5-I(KNgv0QA@-N*58aoYU_P~5*nZJ>O2$>Hcs^_bU zS|y5x3@+W0tw;X>n#5eLX69+?84HEjW>mSMe9hu)TJjZi?`ua`T^N}K!15(N*=Bgg zM3C;T&f<((p9OmXC|iUBiISplLEqw=>H^MY5q4|uQhM<}SD_nWr`QupxbgfxhvPIOh;%azD4fss$a5^_d z(a&nmfSPr1)7!IQU}Y;^OPAak$~H!jw(`uH?_J?7uP!&sYr)+r$`pI=F$%l9*}WoG zdij}hgQdNlzItFCV{!Xqjke zf75q>$HNrpeG}KJy9t$(Uub@_J|$tWJU0hCB(mgS#dpAx191->>|az2ddIjifH0rT^T+EiTwF=qun~q*;36y~>28H4W2q(dzgJqi|1^puzR}9Oy_7T<1sqpnz3Tny@nY%E)1q+&J&;Civ!zu5qBRp%jbvbP2vUO zs{61>yijbt4}27;te<=eoMfo1d!BZWwNJz~jN6P1vH59tP9Mj`nriwbV(WIyikFK0 z+YN8zWhg-E<>Kq@MoRe=Vdt7PxLZ$LmGl;rTdh_#O)#uNS14hP;@mMT0*dU+HAQ%K z;4s^YNSGEn;TpFSW@f1muMCj~ z3p`>5-XucDowi(*MDtHs#4Lno&K9S4;B3+%GVaGQ{VLITKbS=;xIPuT46k3oGl+T-mzyS*Ra8ZE1TxvruxW{BiE3O zt&~A2p>(78@*$%vqOgwsX6`gx{bTF#SF_16!AJGS6OGcS2K>RPfyMjr2LlP7&T!s< zi53X|Snfasia9%t%{j?23QULn_u-=QVZ%Lo1lZM(`=yUmzdUpTAPatNb0O&?Wn>Zz zS^~lt2ne+S=P9t{1}Py8>{hIn7?`=E#g>PSoWwC&j6Ph!GF zd{)bhHgEu7Sm=C_unQZN3q<`c@b4}X(|19KV4}F20xuRvcNy-qOSEVayAP<2VnLV- zchcZVT_)_ijl!JEwb&%&b-uuytR#ihuK6vZdAE@lHCZ=N|0!b5ZlfLo!v}X`L)k9g z*=-cpO=GhbOz!BIw~oF`F%=ms%>YZ8u4}eFSl^XjD7`tcj z*XjK8(NRahi%7x}O+i17g^Fcbm*{%LNR7N6vGW3A^CLL5FBMNc0$IZ{@#Q0s1uWN% z*l&f%-D?!a@u21I_WA&;S}Dfw#kT(jv2?HDx#&isj+=xXIQ6v$SnN&KbL+yH0p`3p z^fYY+^?}&cp@2E4{u=#6g7Gph+GVZP;;vgn)IKA(&#l&T(QU%F&*;~%&Z=6$loh@T zGte?GP%y>g39y9qM5x6o1(Axk^pK{b9Q0f%#QJ?k#RVJDWY|DW#)Jglj8mt>+Ac14 z!|Ibdt5ky2?Yax<3Q^L8JI)M=g{6Hu_*1z9ta^(`dDQTgY_(dcCcv_`Q8rN7YsJ;< z6*D_vuia7xK>I=U?@^;N0nXcLXyI=C^j6BI-#uc_qhP$=C*FM2sKqHKP8vCd_p{jx zsh_GIOO-*@9=vh_ z;Y!`3n?cj|1z5x*=nI~`!rYIMxlgq1H;N-4MNqjE>-HOEkub#1>K_x&?>Fk4PtZqz z3>Q<@-w^CQAYvXfJSkB6r&9&GnYPJ=dl0PPDKY*rBfk>*{>*WZO0;d??<4UgqB-G6r&qN<7CB93Kio-eZbI&#irGzOQIsXA&Hr3%Z8F_mnO|UK zQr!R_oE-eYmtW<%ZL@JFAnhwwTIt~|1At97rv2J7DUdOk||flY;gw54^Os2^;`jD###6%gAfQageAM@z1n(W!XiM4~xk!im(%%pQGp`LZKGOt%bk8IpY2tLiRwo{^M zh?#ulY4qNiF!3A3l*|Tm9LaQb$0ybr$cAazOGdb@w7UV|{&0MtA`i`!#|k2PzM*DY zp)>4`&Ke@cQ$x&>?L*C^q(G5Y+5@ky9h<4vB4+FpPwnwl+aHBdi}FduxRsqX!K{Gf z;_L}#iT!cAxRXMk5L+jhxv>X==Y0q({Z1qByV_Xj&Xm zZF+~Y%IC!NiJqWiuZh9>^yL?u zH7Upbqjtv0!L7m&h@Ju5{%(~p{Xa7OfBe?(!2r8T1w86)xtW%c8l=f4;9d~W3C%NOp@D@v?O2=vjY%0{B?)2r^Pf0shKt%3Gro}678nz%U&56l_!KnE)s2@Sn1trF zu_Ev&UMq4HWZ+7;5>~j=!VtY>o)<2Wv5Uh!iS3ikr1Bbk;XLh4Di3a3W;5qm@WDWi zPpv@aaOgRsB1$AKFw3FrF=&D5s*cw8Tk{P}k$o+>do|{s7!sRe1LcTCAQS|n;z)Li z08hMFx4^9OIkj|F@1q0EooEUF)kbRt?fa)qpE`|JIv5(uM}#Et12VKFi{z_KR~By1 z!PeDM7L|&0bLmf-^(Q%9jJw)Q>dMptR!msIvn@->(wS0NkbyOW#phUAW0IyxI4)Pm zYSmJL2p1%eac+vUP)Q>e2VnYAC(&F7I3pV~o3_2~f>564g<+=MzRIhJVw!Q- zyV;`$SwwIl2MR1K8j35_o549GZ{sw5L^LBjZkYD4666{VM_3;?8CP6GmUuQ*s8=Z? z&Or>g6)#c+OB{7Z!QeLqdMh;7C@x{fSYf-?OuL-)R%j$vhWqu(!S0}z<{6)G7#7M^3howQAMG-!OQuuix@Pu@J6sL0IA?TVNWQfUi9 z4IAu&mBhXyD~(p44~3J2O}Q<1K<|cD!nDPqeiVvCiOIyTs_wPAy4lxJTZ|e{-QgyT z=#>zb21NW4Gb#;gI4q$nIBfF0(CUDEHYXswOU!H>U&kylU6D||VFk;@{3T{S?o(`9 zVrF%%?50ReXKG!d${ee7mMJ$-gy1B$2D2$A2HlOiR*FHFa5GvT3_8Taff@`t9AgoJ zl^v{GV$7{Uw$W?RJ{Du{7CdL)N@Z;kMwgjVlX_dvOsE_yRJGUXG9<6JS-o&|Xc}aB z8^l#zraM2Wq%#Hf4@`bJU zXp805d}Sv%;EF-BptW6*uQI|ml)5Tn!Ti=TH0*wIYQ($GnAr(1jY2z`DRURJ&j1sS zW!Hm>t7pxEs6pC>hpS0sJZI+i z!JQ|nvN064Jjz_Y*5+Ud)t%}^%rRUS&;jN#wMiVYifJ#{sjl`Uflb`o$rF4ugI}!n zhss~;5Z?tu29IJv#A&?>C!W6;$h`r zJkM+u?~1HcaYg@0@d=j)se+rb0H!L-uMky-%(7hYp{?)Q0e@>z;6AI1S`o0L!U|hq zYNr3Bd?z^1I@0{PEmPZ=uU+gsWO{v5gTbxSz(sRT*A;1;BPkAUo% zBK|PG_AF6x7)S8gV$@-?&^{+jTvzET9M=hJ{tGB+r}EPhy7%XttI4Phzd=23p4Ic_ z>z)@(#$v7xTJ47QP0vE{`C+pvbMc=WC*m4ZuIkz_QBVa_LQBHL_$rsX3wPA0wEA2@ zhlqrLuF%3()npX1v`3t3I?y9WKx50zz33)sXFE09GWj=Z&1@RgcWenBk+#H)Hx z!4>X^8xS|A>qd%#EwS1@V+zGYI<&2wY{P?N5OEXYWZq1IELz}u$Dxv~?m@F!wbB}0 zvgozCWF*151w^85wLY=A&dLyuK$f@67E6zqMb7m^hOR%hbb=qW2Ag`+yA%BFsyj9uH7haORvk6->|4XcT^?8M_-%+4JSbGNxVtnteaVtJ@21B^ z-FGhI@6qq+NC@-gEa6@q!Fooys_*MQi{#*PTTkld{UYZ@)5w1Sp=!9dwRS+b?)<9~ z^uZ89JJ=VXF<@tyIN){F$3NUFdHHVf)Qe_WpFR4#QvFDnsP)0@(q7ym^ucJ=zA&-U zhhx#BI2QR_xpDh3v)9zst8<<4c$j$C=kkHAaQr3HmwO;g-6ozk3GB(4vsvtuloNSt ztEq#7$EQWkF*DnKkj{0m9QtgS5Y;eO_8e3>u&6z+^G`VxW*He!CZXokK@Fyj)g2bk z95ZWUkAyy9HLHJ7L>@QmaDigrakC`-nAI_lBTvmgSF)NV$r`lju zC%e0LACdjO86WqD&UZw0tqC>~Ea<*(*4SCN*jkV2%N8z<)2}^ToUDg2weWCp;(aqC zF(TZWeDR6M8&yqYxXAv%G!o9zFM^%Yj0zX4`@5=>`h=_bM^Ce`UJxC=>B{XNnvvqc z56rCizTs+&=`z&EhKry2yK3$6;i75)tb#ei#pnST9Ess##sIW(Qn=VWz?IXS5{?Ab z+E9z`x|loSQ*{YK-#0B>^#?~f{bDDSfxOUVRZ`ZNCEokg^xLvU_Gf0QJvUs8X#ji6 z6)vuAa1}(k!_}#&JWt&6nVGS}{qkA1?O&K@0M^T%7W|iejs%zGjo+%B6UP`+GCFk1t$r;H$%hx6ytj|H0%x)NKEuwpE zUGE~DJ8YJ0ZMAk>()fTF7eKuq6l()!w)3yFfqsbmQeH4>)I^r?uy`_HrjOiZ0|(Z7 zi{_151c--_1@&&4{W@Dcz1_#+_@DTQ4U#vV2=6OO11w{&$emD^Ub|0k+B;iG;PEK3 zOpz9UrJ$u{1u5SJd;=lE+8?CuZ3(cP$3(}3x@=5(t3f02Z$TPh!$cgQeg2c;@d1{OtaYx(N;YPhC=DkLL&K_on z#*ZD3drkA_u2fMSaJu^|lASwp{P}?~qnZ0RQU7~`D;s0d3Zt7PC-Kw_F*?Q}n{+Bn zEcm_Qve?t1D5IIl#0S4OyaE@zj7i2?22 z3q{HwFr#o%)c#T3A4VikZFIXQrJk}_l+?j4AgkYP*a)y#=rYj?s*De?bQ^5yH4XEu z|I-H6{(o&?!ADe^x>~RhqrR%n5%DJ*Qu{>e1tt$xCA}vbT$v749a?NWEHQ?*BBA{fZ8#!g!`3rLoIcGs;x%6}!AXgF`h1K|z-)$Y zP+7-fpxva72t_SLEE?QHS{yOE$E5_r7Z+j7MW?FyFP>gSq~RMttBH8p+fOy**fUp( z%iv)K*FG1fSLfh5h+;vC_p{=Y_cvzwAFyrD@#jR(MYoT58hx?!p!j`4T}j3>G;Vx< z9yhtqipGg`Ilkvs=l;=2bDd!9N;?>-RMH zGYfFFfu=iZ}b<46Ak_>+rLDN-=7)(R(B$>NX`F< zI=|oO^R~Ke5ny@mhy{MXyU%+TbF}<@%zOSa++R5E_orokgv4qRp%&;dWT67EVX{9h z^<%1*(W_bkmiCFLn(R-7RBZTUKe?xzkDrV$sDfti3erSX_$AD6`wL*I9;D2cwQ44V zE9Gy*x5xq3TKi1#SLS|8Z)>cKsO9N%IKIIp$&} z{7Gz?f`<4x*buGrFu4u*RUDb(@8AD7V%daZFIRVAVXc^M@St!}zgz9(JgFO5g_B^e z`VZ02>i5B%eMhU`@Y|sD+B(mGdy_>0>ju$Kl#+O|ads`@P!S+u3-8vZB|<*jlX$S;?b6|cC>x%pWEJr>l4S?{5h#kJDOKVpx&jHgyaO=vS{}w+LP=erQJV( zY}$`+_ZQhy;dry%pEUt@BWPp?3(UwK7}z_y?WpEanNWP~n7NcWv(9{j+Y|atPVZW? zs9Zar=HEW8F{f)tGjnEQGNsww>#6qmh71EGE1;SJhT;fC}=+`0Pj8CW|KLKLNq7uH9Xpd?vShRb_i9nggq^dY1g<{3jo zD8OLO>JSkMK;?`O5eh)%Oe+9wi~v-wCPae*P`BC;4GKWr>OwRqU~m_6)`vq5u!K16 zs-r1iY+kxy8Qm3>^f1TuniZQE(9GANzRC#`4n`^=;8J1%g3n7l&&1{WeX-@yji{{X zrh@B*ihs6Jvxbvb*}9bO3CMYH=@mC$>ClVSMG*w+lO^8Nlc1rB1um$%2MY-T*q@3Z z7@x#zP6qFjbXh>J`xdS9R=u963)6GSW9)5unxTNw859z+4p}+YYhup7=q!U5+gQW~ zyiF3qyWEr51%@Y`GNL!>i4J0nh}-cx`VLB@1uL8JoV>+WX`I=hF<^)48@y1@cWyhg zSa)_8OO?uTmsOyh-!bhp6+Dk5e|n1!X)XWrEv#9D@uuvUIg%Cj$COsZZ`_^||HEIZ%cMM?)8 zOvUL_uxAP=FVV!P#RM2tpfvCUEU6z&biq|fEjUmdwomOK-txL0DhhA}2RS?jkfTIr z8iRXRpZs2f)(4kF%{QlmGQZRmE((p`j(967ebRVrh+{z<| zQusBaHi*lTS^+?;Vds#9l4Tt{ro?82ddv~Sb^^Rej1tPc&- zA&>WbLp!=BNP>kDEN70tX(CAnY(ss@rh&R;pgNA@N%T9oL`cKVO?6?&AXJpj%JI_| zx3P$WC{)@rR47akqV|Ty__}9xS1s_ujLjnEc+MIW&s&AT4icL<7JpcG+-aal2e`Bs zHhk45WvCPGhZ@J9Ke0(y0z1*8x_6Q|2*RM4mvn=Ylw6zsbR5U|Xy$b0c-d;vS47iS z@dF)XyKNxL@Qa+x>h#iqv&Gpa{aOP;TRFemX>`(6&@4Oe2zc;?` zbGCDW>k}q<8lL?_Qz->tk{=M7N+|%7d_!m|r2up_f4CCNW;TkWD;sM;b%|~JhQ^!? z4Kd;A(C7D7p4&W{#X4}j96KUFIu!6J9VJHXYbq)h=8u4u&eq7g?liU-7N0uGp5P(vh<8ld?U0hzzWq`}2TrT5s zIhQNAa`_dP zUvv2lmnXRVmdo$B{GQ7nxcrgJpSb*)%U`(smCN6_{GH2_T>io3DK1anC~a$`4X^`Y zKsXQqL;`044j>BX14ILTffyhbhy&sQCy)Rn0!ctJkOHIvX+S!V0b~MMKsEr=L^2nE zmlo*;@_>Ax04N0d0YyMDPy&z+7M+ zFdtX|Tn#J)76FTaYk+Hk>wqOd7jQig0G0yFfaSmnfCDRmRlp6vjlfO7&A@744X_rt z1-KQs4Oj=P2mS(V00giR*aX}T+yQI`wg6j!ZNQztUBKPIJ;1%deZY2L2XH^|0PrC2 zSKuLFC-5+^3)l_p0UiPN0{ehR0SW8}9s?c+o&f#^8~~mKo&uf*4g${r&jQZ@&jW{m z!@vu`5#T8BBJdJ$3^)$F47>uo3cLpV9ry?EPvCXn4d6}SU%*?yzk&Y%Zv*cD?*i`u z?*ktI9|9i%{{=n<{s(*ldh($ delta 75802 zcmZsE2|!av`uM!O1VTa}oQ6YufC53paHv76avLxl3SO;kV+9MX3RT-`uRvF zJJJr~ml5Ia+i!?N#RnrMxo`K9WWs~5a{Dq#C=_`pw{Mob1P_7k+lM6) z0z~a}P8mA`6^4&<3q_X@^JRpW@^dfe(^8T1$mav@JwGVxozYt%YB?vA#>=;#Ia@1k zi5Tnk`Kw(lO`+|&o-h$Y+e>>UkOT|K*F6)U=yFdO{Fe9f72ySmv$ z3UvQG_wqxEZ_nqseP2knQ?4AQ3gyGwhNMqlr4j!piiu*PnIh(u;F@4fh$f^3ey)ao zHQ}ppgj9z8J$*f3ju zn!ms4m;b`8r`xIz*Pc}$Q~uT%!C2JH#?*?mI#e%ePTiW=!T!;g)|YgQ{k1QtFKOpj zYBSw*Reg-5wwT(~&B?Zij-$(}1CPFLRb?=`)=ww2ORW;upVVcvYmeGo22Vvbht=&y zclOi{7n|v@x-PQyEA`gI&C1`+be)LMJf?A*zAe$;|J;2bx;3%vI+Mvjb23Iu_tnrG zNFS){kh$!bMmcm}&C){;)S2wB9qgdFjO3jm&x%wA-MqxDiA9<0^$xbLFRAPoUQK@p zO|==-3>#u~xBQ`&nNjiPRkzgp+EBZo(K|w&+xDt_%`0`ta$Ei59koqm75Q7In{KOh zj4jywEHfdbi182UD7&!3=4(cfRT-LYsh=ooe_~Vn6C2x~c)ML?c$cy%tEDI?J!>`g=gMD1z5QMIz{H`>;)FwDAf+2A#UpbW2Ul z$fdm^tsu3YKGd&nPVK#+W<8E6Zx<0oZW&c%kvT$Zs6%a)?Y))ltYkC$yUL(7n2pTW zp_|$JhB{HJc074j{zjf>JoY?m^x5*eI_o!emdic0>8{$a^R9Zk=@w(0J6_kEs;2i9 zjeQZG()p+N#%J9nmG-qY3CO4FP;;XC;h&%#?2V?oYN3Wf_X2Y$w8&-Ow&cEKR@9eb zSYJ1Q6D}jpSk}|NQ2z% z`o_+RlT{bInDmxOHPmcbNVa)^sa9J9stf~_%Lhya19gQ0#HH$$fyxa7rq^)!r!(_f zF8-aW6$OuzB7H`3vVLxA+QR76*sPLQ3U!6c3N}Tj%`1=5pkNpLe|xC0VX-Jg_NR*Z zYhGNmrg&Xp%+$4i;p@gDsl4TrPM;v^!@U$kh2r476mefTV=qM<94>{_2yW{5f~Dc{ z^3^CJD=B4uPF{3|;AhbN0py0x`++x$bAxIjPcDm)xUNRwS^A9VG)FCT{~i*f1_?@@ zFi8&8o?1;j^=dSMR2wA)6z|_hQgq4{szs4%QO~~{u5e#H4ym(pvNQ5?=8x9BPf;$Y z&JDQ6xPy>!WvbNKw;|TSD0k8PZ9FY4@_dhn z=yT@qkT?zUtmGki^MpEavB=ZJLyT#QbA?Lr$g_$ErR3xZ5Fq`&fR>RhK!9{L56Mpw zAn_phRvwZBAYP*QSTuIKfR>h@G=C1?==k`G70U_=+9lCw{9i{4)00xR;Ii}780tg3 z<2yZCP_~v=aZ}Cn6$1dTNsTFJ2 zE?>5K1@f;I3UU_Y^N3Tl6}fA`n9`ASmtaklA`Az=|51-@|DYx+g?IzS$S#dvUSUl zs~OcSD_CA03RI>0P|dn!8<6tT$7)QBL9UHLoynw*#m=%x;NkI^z$14-o{neZW<|!D zSv<>fsPEd0YG#qbB}quS-;VpafUErHBiv+=(De(#cLOhr=K(>62wqHe)CMGPu~Py< z2knGf?S#I3L}*d;93yi3%0UU__dN7JwAvog`Wn>~6mCGChySNi`=d(#XJ`10o#D5S z80tZC_wOF@i~oxe$-YO^V=zzl$p4W2!9muw1G=PCXt4Y!s(Eg8Vfl2>@i9BMf7!YH zdz71APq?}M=-`GF#|bCUuwI{pJpY4g)~;J-EPtdmDT``~S8qUWCmgIM#v^&>BW5S< z%ud;vogQVDr%MNBZf6|KCQd=JvyO&!{ZGTX?F};~A=h&bc1ZryBW68zX1#W1=SP|8 z^@N%0&kkltapCcnUF2K#c*B0NH|&yw6UZmO47`kXHD0kZ>l2u{T@{$=Q^{~}?SI6| z^V)y6MLJ-|y>7?7A>iiaKS^*0AK}V}1l&;YVmAdLjgP6{W~Xz@PUqKAI=l?GAJOr= z^FJ-TYsbB3$Nf#fP0CIsGW`A+?jJBfR~L+G#|WcEdf$%xz>fS-K+c)ZGah~nnL{-t zYnF{76WkFyE~5BJ&yAvZPm~7pEie{Qk47m?)fASjc^p?v)fo91Q({MU5|CkrA;`{; zAxo*6<*P~`M|Od_WVV&rapeMTQfdmpb$tw1LGfw2NhnL5Fo=-BxK~Fl*4a~7X*93 za{_7XpCk*jGYkK3X0B=q90-}2Bat-H&Um6-{3wBOY8o&8q(6xtO@ZIU%~vRIqf}$Z zi?ItF>%ij$j(Z$Y9{)(-DTD^7VCsKMC7ov1vG%`PB1<6h@>tXDSkE}-2Js?OQ=XAS?0PwIf~9t z-14VDZ-OAwrBuzj4a<=H=|`Yv?AXuRm2MbC*6U%`moMXM5;>&L0WvHwbdtbWwt>*#xxMD7B7c3f3UYY^%7Ga;k2gt8;P%$2N+8d3%hN4-63NT# z8qpwmxkFa@+m1)+U+nlB?f4as;e$pu3HW3+Cx6F*<+@n_8+lE?>wrtQ*r~l|Z+qoq z)R4jixzV;Ot47s0QPB1K4k~WdqeXltY;_dKwh{6~EsE`Y6(cw`7*X=SI;zM&7{x{M z4;@e!42XQ^>>w0CT{U(AKZ3lya~2`_-*^mSee#_SWy@1ifg6;~ZH!MU z%7Z>hTO6IgBsZ;!Oez{QCJhHa0KbNO(??5_7v!a-ZYITX$a~HxG%Y8c-;7N`zPeFZ zN`6LG8edb3{4z$N3)AN3W#nWFryH@zKXbGo%U)7JXvf4M)!fmNB>d$AN@k3SM}B$- zY{6n8r$A;38k03zkmcYSGYzS-N5OEslAAyO9YQ-c2KnTS!jn?;yx_3^mE@vGhv0zYLqcJEa=J!?eDYCbW?pX6{4{{AML2xt_3GxfO zXQ&8g2YyeYNB|S4CN*Z1Fe!Kn-*`x={Fge)V;?IAB|eRVhN1i!M|u2X<% zG&stqK31NB{FXTirae}WhWws$6lhXoM>4BFA`Wv zcD@4^vr$t%X%;cLu`5ZLKJQUk>_#X7VdB!!l2!OKj#^Bu#?lcga$E_@O3TVmO4g5d z{uHgf?$mVTTZ-q6P(G@cP-I4S{`>{G`7xtitc6jv2ER2z`5M$s%&| zgfRg_`n5g1LW)DNJVg`+Nh~C!^vM*yR!ez`Xo#U2T1pEw=U#%1^gJkR~(FDbj8%6IjHs?CJ`4n@cC1;gr zl?aO3N<=}B^puE}xv2*?N-JFIsAj3nn^CvSEfsZ8)EMl&M)VIz4y_TTLPD(-O@b5K z$!kTqq_AwAXsqX${;lKNy=>prc{PtedY@G=V_H62Cz|IBf>3XW;;A@1^$pP>ifOt1 zhA40)uv1@`sgrEV#>CfXg8P$7v$%vgkCnG{ApA$vl_gz5>q!^~lp zu>E2G4jTw_4xbo4FT4OQ%NkXT#gD1q!JtD{+Vnn7lG0PCmH1UD{e@gH-s;D!7;p7v zF5zh|^d9PMeBOmF8S`DJ^%|o*RIg-y3oRHl*H;YHBj%@2{GyDWAMyT#dN+nXWL5SJ z9=U1rXc#KIy$=ejYjn(!&?2pYuL_U2Sx)<5PDb}o@8h53bbtq7$^g@_`$EITjlWb} zG9PfI;~G7u4mLQ~IiFBk15BR}?A$-V9KmS^=~Ttk!8)gArLLn{`I`Pj%ZCSP*w@G5 zhE`ewsyWk2KcJ?ybbd)!P?QZXK19DFF1^awS~?HWP84;drMr!$#ZHC+TLkFtm;a-q z$@3j}_Wg#Q8gCe2BkE!q&1JTQaXPTqjD$N2#^btm&qi^Dq;lDS>A3;8%g`JD$*2eU zEH3+o4v&DljpYN?^iaV-5tr~D>I{d9piP~I&NcN#n`ImgK%F+ z)r$#4u`#G(9Nc;ZZP^xR9x*_(NR|D8pp&>C=%O(~e)qwK*24<2YHh5LV? z$AjUW{ee!CQeJp0OGiRh$I@a6bVSx^=#O7o-a1XEiKyH7yR-Di04?aEpC4yB%lz#G z@E0+~C#+xBq1NupTTw^53wzIEM9g(O&_(A{FW}kT^b^MV@60l0Nt^X2hUv6eXeOq! zUUJCT*}9KDRM}aB=ws}yx`SrAK8#t>S@%zP2-2_Ugu461YTHq^T4Gk3D7s#HXk%xy zcogH;x}at;P%^6k?U_z*kduI!zAR8VzN9)2uPB(~D#mWj%wWyCi@*?|oos(I)RjRj~(*M+H`jqAs zvKBVHP*JpBY?}tnv#}E9->1raj$UBh;DNb*f(bdz{O42| z&GZU6oY6yTiatNJr(}y>J*aDV9xMV3ZTG5%)r{M9tJ9_uVy1?ADym*&jt1$DvG=#= z{Z7{fHj9-LV2FuzX3BKyRGoX#yCXWAQ?uBG*(!Fsb&3^7-#S&ane7Kz)b9JBnPSEd zU+kfMjL_8fME0(M3HBow%oVSj#T9Q9yjk!T^ZXfWPF;zaX1+RK4Gi06dD+GiYeN+j zTu-8o?qZsCJ&M>nZO?cyPoF7s>%S1fcAFy%n~cP>?w9U+qvG^P_lYwn&Wv>Tp6NZa ze#mYf)js22SFWfReep)EPZMvQ%mL-vCBGk*inMfgX40?y99X)nk+vkQQi?FB(+>xU|gM0^mkNZ5?yM;u51*$K0;E4z zm7P8G&e_r7sUYMw8S6*dw%~a`(@`+6-ujuI;tL}glrdm_6Abf6&$gaA*XB+}f{&6a zbMU>N>165^oN$4j1-bPXU|{Cq+6(k#NPfIP&w<3}A^@ZD^ow+8TGDB&2Qg$o4K(OEj6ovo6to znL#}^3G`IiH0JZmTV(r~**(>J$|jp9l!YB#%7y@jEu`M1cVdst3u+x*&%VnX?z6fx zb(b4L1OoY4x9B>m_;|^&@64(f-tD`1&O}G%~qoY0oP?Z}x2Lsqfj{ zGqrbI@4BAXd*1Hp>^a@T>^g7ttdq)gW>qAUinW(%#%JwS0{x|?7Hwwl?y29sFRYfC zfmdCoBecNhE@<7n2JY`iqUunkji)fXf+8r|3bY^Df*Nf-<`Gu1qZ8S@JDQQr9SHw; znO3P&d#!W_`>TP}ou-4|_pKV;7G_58eQU&)G6?}Q%=JE~?sf(G(tu}N0Uhnf%dXHt zR4XpKLWe!)eBLHI2C*k*J+$^bLAhJOV-8h_8S#1R)uEBzvIg^r3QFJbJ6}u{P#L0B z(Ms{l;vz~XS}U4({?SkT`S|m?^KH`eItE=WbLJloV`(4#EVT<4_0bVj5Z>BH&w%8| zJ}|2=th`ElE9Vbc=MmeiEc@A1{&Q0pj=xGzq@>tzm5xw`*@pPP23Q{T>|=uPj;pj0 z+`X!wev3MSaX%d{hgnd*QB*;nV+{CcKfOkUu3BB|=`VH>bB4z4FpyF$gK*w8dI=y~ zuF<8G2M!v5UOj>n2Ivo|k1#s`v&<3vV1Q17Nq^>b`c(W4bh*$1Xh`R+LUq{yp(b}>ryXbMn+&##PXXkT#n$(n{=dR>fnB*@>dXF zX}dut_J5r={rfabO~|8rWQ6VRa6#aGUAkcw`Qco(Qn%+Yepa)^UNvh6HNNxmO2^0 zTmV+lvRfujrGjBPpZR26z}9t}i?*)YQs=aF9aIBf;k4H#GLQJz2k&tei$#nVmMg`9 zR634OioXN#29@GnAYP@1I2w|#Jj7`(WmCwyMYFLOza-A_ZSnOK4@|@^v&0jj!jxI! zze3xO%@ThMxff=OgDD1A&K3tP2v<^U2>UjBlC`mMC!{BePkhkX(b>?gIqi97;+fPl zH_uACZk@C70v&A!wU!5N~AMx|IKYN{yKCM6f)R`M+$9661dh4f=pN4<>d(YRsv-{)vvmpGe zs{d{Hsp@a+Kh}Q>eq67OzZQNi{o0aitFOJw|MnY*8kjTi`oKHzvwh%W`1y3;vjLCm z{~S;c9=YLh{h2|MzK8zwgAXT)vv7N&Slr^8B;G(9Cl?gHGI>Suijp_3T>j(ogUhj3 z;;+oPl5r*LO3sx4_)%H4QU+gvC^0(1N}D%Cng1|(TxssvunTSN={Tl@8S=qpsIXTf zm()ol83fQ4JS$B+Rf(@KdjaPzv*oJ3;wtk7-k2t4T%Nyr zj6JV1K-Q8bPM=l!hrI@L@s$EfAFJAZDG3A5b>lx@$n{s@u(nV*U#C*|LP+P=&fs4|` zfs0D7)}fAOkD8iQCj+zg zs%pO|V-hQd=|a0Y`D)z=p%TU%Le}6X89n|fT^#ONb@ersf%p_1EaZSN^E~#RBhG%p ze6{VW>ml-U6w)8A9=&=TewZO>NHepyOjZ%Y$opa0G<4N+?rRg>Zj!Wjj<->&6&mJx z%dR=%R!YS$<(pv9eqzuXTjeug9w2_poQ*y9NrKXUsdm;e-UG0_Fu9R6KPj^;7ZRTV z7_tPggNM2e)K7(2DuSRO2b75<@14!vnpnjF&bJWy-vd3EY$V-hd_y$KBQtiz6H7*Pj{bQjep1#$55I0k4$mS z{HcRw$ql}+nGI<0VFN58sV(w*Z)+HAb{NSG>tZvrO$b2wp61AJe?fjnRiHe!L zA~QxRl0h^`QZhzfgKgHzEb(|F8mbZx5seBMM6Xw?o3h1wvLyx|tM7&Tx@#jvR=36wTUCgyDb!{P#gm#OLH?a*L0M9pgzsOn z%Dho0YL+T#{bXF&BnhFq@#ZGU5-GBEFt={%PvUD$k{AF6d?r~XxplJxW?0i_l59HM z7LLzTtj$f+aHt5?R?yFMj;vHaaj4Wm(OB3Tzo#ad~JDj0`h`8PM$?_d1_u> z9yz=7%y)nmmaNQvc@^@8i%)wchju*S`qM7klexL;*2EyqB7EYKbBOV=@JA$vOHex} z54ipWVIS#N2^XMnXFFG1HM$#P0lgT}!9=l`b{k>aNcKDxoq)+jwW?2KeIHWfb%kOfj{*e_7Vz>;rz zplp2d9HFWPNp*r|T{B2LZL~foDHVBU^3MyhNp1`2eCb?Nvu52|5-8rEDyiI$R<$v z*zlxb0$dP9zD@4qlgnq8=ajB1E?Et2T!>$KRp~7XScKWJGJk3@zCKnKC|iOemlDq2 zPhyWCnHTjGp1sr%NG-)nml^^@s;BWMOAWp%-)GRA!gaZ8N>X$3QkJdDD}JpILTf{x z#ik%x2yCvbL9$8IGQ4%M!QV$t)-S~P;l6Y^1T8@TM|c5NjFW{?g?MnWfeBqB>^%y_y7aE#EXTraVFrK#e>~9>MZ*^3*7- z6dxW3?SBbh87GUO*5EOWOfzMzUAu7G!E4v|Wum_FM~R>jgzZ zv-VqF%D#u5HWkE1+UkR3J!r+48FR`)ZD*SE*git-bdi1iEkoTiu#n?O|<#=OrL%EolYZnePI|5ULj)i##B{l{j1h4=&<8J^_GX6hZ<5q!8=M zi~Dy6*4W+9vCs+Sq*EfGSIVD*Uf~@fm=FZNI!F=%9{>0+K`Cq^>e#ia6c%8 zK-P8Zmm&Wa6dkAekW8JAD6TGC58=TFaqzRy&tqEgtO+t-zb`?CKQks**~sS*PJGtj zZG>=De#FHkAn9S!j15Qv(WyuQaj7JPE;M{uICA|4YLPi3PK(^X9W8h*9NO**@u~dW z21SzZ2_l50lEA&t@o=>&`2iqOh(#rnj5oxgl0MX@L?;)o%UV_nJ!X_cL@FPPphd3# z8YLBjBoLU2d?6Zj-P-3KYax-`^*B_6sKRKt{+2*kD)MJR7cn3HxhCI8Wha!xen^;x zj)$vFUx-Nkb2V%XlSy14FqK471)jyGFj+tZ#GfKp2s!2Dih&>m2s!1=3GB27C?HPWG}@g~H8ZBj*gGz&2y9} zbT$br<$EqZ28I5CTOwcrc!1AE$eu9rQKOIBay~>qLHMX(Nh?+$w-G@`exZoQP{OL{ zk?rRvgE1;ZLeOaFc)(E7k1Z{sP%a@j5cL9!J7+3-ibk-D3FICa;;N+pg5W>!S`aGA zYfOvWAWD=dS70i4g#zMLrXr={u>znibEl%GVwil8TxqW~1xY2LBfcBAl^kM{!Jk}-BU_OWtVw^%iJ4F7_Q5Hx#L6Bb_W(Q3}9ua~-0!^Y+ zHI$LTIE{pO^3k#5C*li{vd|e(LKfyM*axI#ry^;z0CAs8MUr(nzgk*@JT#D949ktY zmEdAiR-PkuJuheiR@@S%w^ z|I`Gbmjwxt`*hOe*97+uN}B;n^Lj!sp2yT6fo%_x!d8d$*WB6IKT4Jv2>Tr50b3i= zH;x8NV4H)~DYz^O=Hygtj*>A>u%$uK>G(fU(AGJ4I7;RpoI%yBE-Bp<5vxY-5TD7b zD7GRZPK_jb>aR$bg|(Apb6~MnHc1vr<>1|uWRt0R_|znsnwpQfN#IxVu<@OEm1t5v zo*6BRngF{G5RRv)f?Wr120$@Z9T8VvyrO*dYihK7F|LZ1Jx49Ux1wd;Duk z)yN`5&p(Z)OqQ*np20gO%hVCiJ`&Frb`cIym)S*);YBT8jt3{piUJBKn0-gYb3C$@P%MWaL=1otSMPl4yIiWYAh!alY;5LESSFEt7J37yL#b;utoFp zbLZ#eBk6iD0a!^&Axx62m?K`tb7N)U#y3c~TP}%-r;mScqQNgkR46RInO zPx5q}(vcU5pM>hM@v++2lsHWsuzAm33~YQVh37bJTuQtqK0aO>58O-w5V(zjm`Z{^ zMKdLSigrrMRL#`*sam9Yp90-$G>aF*HkdR3{}Lx-WYtvR>Vj2kUR=8kzx5xF=|)!w zwB!YmLU136v;<01fj)#29HyJsPNj)y2=Pgitb&4P27P9sv;N0Q^G$#5(|cjZ}I{EEoq5fsiJpS>U0G1#Krx zLrRF_`+h;s5}Azi`kX z0N{JTK?4BEuoQ=&P@|m)fk3G1L7@r+M8zh@Bac=G320vO6y))xg9HJ9qiF-0x&{rk2{DE2uS)L2N41QNm&OG z=>Jp@^n`;50MejiIvq3!07O0Mpg{m2>L~|}H~@gCrwPCaHWjNO5RmnZg9rhDtY;lW z2p|QycL@N{M_d{R+HEff(+2PW zcMu@}Xxz^ZA_M@9yWk)a0|02;MF$N6fX4mepg{o8wo48g1ORQj%me0-=>S|c_z{mQ z4k82q&FgazApmIJRR<9Qfa9)y!S%#m!*>#7F)jl_Hsv~wo-RwKZs3=u%cfC-*i4ck ze32wKvEK|xYaf+aluDPBEwXYY?_N)#Lv+&t~e=4rg2dS*>P_8wIo@Pue*>{ zC`FF_0E+d%O-XQ`no{r{sCjNwNDU=jtT4`qPiMqtfuG7p4d^uSb9sUwm1eMD=EFGtRY(C9?-;kVH z?an;xw0>nqtai_=CpN?F$h{LdAw?EAHS>h7i2pi)Ibt(AWN1j;ou(=lRZ|_N_fAw+ zp3q)fXr(rr%1%_4k3PS0qViSzUJCR;2L2{R78R)PtbDq&qw=-R%J(`e-|wuf@7y!1 zD!;Sp?ar#2mXQ?Mjb}Z5(PcH-7vb*-7Y2cuU&2j8%kbZ2NgsN;qMv=x-Uz8L6a+s* zt{Yl%r^~J5T4p{e|C(}hHGd2jJUah<{`w7fHo+$cRCvsJg}-R0%ciCBJxg8xjh!PD z&x?mh)qHA10;Si@rxid|#hp8)qJA3@Ng3N+k&0U}IRhx2hL zTEn6BxI(RX-FZ3_KaE+p=0K#PB+WyePQiOi^V3qJ;gzFx(HZaH(&t}N`FO#_0Xc}6 z8=YHRS{OY)KM#dv;Q5Un6P(}z0R_&*Z#H@aDD=XixIke~sY0Z!YU?y;g>NUoh0U2x zOXBH@>E@Bz_uI!-w%3UVbVa%%<~;QE@8;7?Z>M=5`DI~xampISZt4Q=U!#c8EIDaf zbJDc=q-p0#Q}apEO{S)km7kr|UdtyP^x?@$49|%u5@<=#U#8CIJ^7QFFvpQJG5Uy%cEO090$Tcv0{^egS4WB7q2o;?ihdoXzGy#6Y?5d9D zM2Jg+4^b3VB(^0C+X6Zh*{9n4@Y0it^-iBWuu7Se_~LqrHy%2vSS~s`jPp(@LZaK2 z49iS&IQ8s(Z6(8|nxETBhfN>-Y-UV4u3EzE{@FUlZ4P-lcfqP~n}h!WIK~`qCpz1# zv+0f|SyN4M+)y0X(X3M&k4|RA$8)$2=rwfKG?%N&;{F}SStpRP{*I%QZ5n_N&E;4b z{9?i$R$qiLpP+};=gf(4+l!*+a!N6v9qWf`w(C`K+&;@(?x@mw;apP|2eA8WgUXV_ zEnp=UeAxCc1Bh3xXhdh(`IY!^_JEH)XU^T_(+8O9>7+1L_HbUNXbk zRhKzMYhW(fcCO@huHs-&C8}*u&E^cDmn%W4p;d&Bb+Q>XuH-gv&1N5%vN((8FdM{7 zx_Yi{DF>CA_b*zqIEaRXqWi~`*UShSIs2-0Mm>oV?Hy+{bu?viZOZPg**h~h z^CGPQaG?ttvp9Izn%&=V96IF=WI-;E?5)|r{q@V$(MQwSs5!1Q{<6Sib|Lrc=YDRi}r|Jrx;dvFe!3W!0JC>fib@thXz45C^W?uz7f^u46}r zioMMM60LXr1tO?-p`Kl+x1as3PTrhYBj&bvB<|bX?#%wWg_R56D01Z>l!{1fR#uD5 zELhZ7Fj6oR_r0oBSt%TR)aPu?o#A7f*?Y{@2XK#^Xz~QJPBe+h?;1C*-HE*iF`v$y z<>s)-kF(f@P5vCQvkSKP`k=Nu!+2ho!Yj9KxHg1DZPkmaWL(>=;o5MLv-Ay{B730q z)@ddQSLwu6q;H%<Qrx|4-wv?<6J#C zVz^*yw}zX3C91M^G4Ee$>>J+PdI$6Zp)DZY_vx%Ni1+;*o070N0H7utU-{EIsnr13WC%hi!^_ zx^6st@Cg`!JkWK|bSwOf7YC{vAq)@WkL^d zvxN1SqB-W7EBdc4*LxbP|bHxZ)Hl%|H4Rb&O z6@i;3^MXSdu+F-Oux1rRVmUc+ErQHUe?K?F&+j-3IO8t8b3N5l>@Wa-pXv^y>u|Bx>)L-)WE%y_^vo?g{uXm|aS6+10<+jRWHSo0Wf9P>+J@VdoJ`y8zMcI%a9VH3@Pu zaAP_}7zfe9*sE8OVw}LS^1X@)1n{sIb!%A(c(&WBrU@LhW*<2ax; z*N|2bzGq_FyY0+Im%i}6nSC>1d$7^v5Ultc7LXdb4Y}XXvw8EMZ>z{bhs4x!y0emzP9pqgSOu57(0B80#_(A^|_2+s0`rO zb$ce(88;?MBeX{nZB;7iX4_r(_?Z%W-1|!)gd9n+|F&77M))LJE9!wDva#1%Q7@mu zck7}woYE82s0ie2GUyoXUUW^qv6=1aOebc$2d?L^SvKo34{40m~ zTvGzaN`Q@x2A(`G(lW4B`n*r~d2eE8je)>dXfJ7gZ(z4=3K!T7?Pv_+T45;9;B0QB zRY5}DG=poL&S@m1U2*~n?3S6dM0TClpt4Noly{ky0jq82^jVx48Ax@$l4%yF+Th=9 zdV*^W=msZ06K1a{@MFo~l60Uaa6FbLhzpwuF3fz68NmG)6`|hgWI@&>n8^>%%8O@;89Y{B%*SK{x%&Bqjs*ZwX`V9jA&60#YE-A)FD+jHo2qN%!VQ;gp zFXM!cP29)MG*d@10M}32RU_@n%w(3{s7_!q@zP5Qjq$e|)(D^j#T^~>qE^qY+7Pa7 zHdo`>1uGGosv)yN59HKT;oOQW18Ez``a6&@992N{a3{A!nheWZ&E7f@$@#)u$= z@%%;6DMf|LU(AD8Ht8lBZh|+U@$b<16CQChAdY_*pT439Wwy}#_0pPx!Zm9)t}7~B zT@DW=BslLqs5Q9~tE_I(A`^`xzY7jtCaD6T;(b~O7Z?xchi=t80jn6^jxd1nQ5DJc znGjrRRR}$#Bt7KOW#9{Rq`*xmuy-9S>0mi3iZW9=v#TN;>-!XuV4lKe2POi$4exY6 z{FoWnXPT7?*eSv8b1uJMNY;{0 zv_x>WJN57e9#}ENh5uo8+GiwG+6IRKviTUi7I$ZujP89k&RrHyPEB7>up%{8<%pa zTKQIpw1yq(3$S`($@cb=(Z+Pxbj)2_k(#nisE#1Ke7Xi_bFiZ{C3CI5U4x07X%%Nm z;S{jP^fK$C%-Q;X-L$Oa6sv%}zVjy8a}F{?Ht-R&e!C4?Wj)VayUBRjN-tV(SyH%6 z+jTe*V7|GdPGm1aFE?aYWH#hf%q2CAMSXMo<{nSs;O|f(`OCTtC2=sEGpNktb2vDA ztFT#;IYkO*%V2j~|NYoNuSn;Iy30|-N`S15Zq})eWLVA6F_5d5u5XxIktUc@Sxtlv z2o>p=&YPgzIwvhOU@)26YE0~~tl|b!xUGr$8N?%M8?vGG71>tNk(}0XT`HSQYf9r< zWnHFJu5mU;979twXV}6@p=GvtAoj6l{nl)&W{b`5SOZwOu@z z8%?VEb+Aqi0AOjr*<5zASwAU_%QB{N?2!&u_6R9zqpfl_S4#C)C38~Mj>7DUYb0yt^VSXUb9JaG92UV{TQhelyZSrYMeMIC z1N0gM;giz{=vcB5CB5pyksf#Hf?99QiGSWpLwh74xWJ~A*3cH?Ab-6~RxSg|>q zH6}9SZ(CMT9bm+_fyOs?T*`Pq?=Z8z3|MOJ+p0T~0S(vjyNNf5-h;X0i9xvk*&vSpf2@F*0Ffyd zW*(JgHV4LF4pf>6pkpv)q`# zL3p)s$W}~&uWXfexk!nO267_d&wPWKXWaa$Z}5y~+@=|G!Ks;`H(LX`e*EjY}f|IeF2Ub7W2|^Q4moQhrwhKJt z`5@RFS)&O7cB09_1c*xraUVOy0i%l0q@cU+T&R}oKfkjxmm|lIcLj%du{E$u<4jDU z)OMOA_7%+;@@!w89D|vH*ds_@J2*@x3bG7)bP58yUEu)b$D6~f&rZx3GN13g+ht_xgct&Es_@ntJ{sV1?4 zKQ7PUS0IT;6SeFjvkiK2r<&UtNj5sreE1F9RPai$xiG<&)vMd&&FNrUW%7bGGx#fK zt_U`-b>_s^$9q_RxzLaZ1sZE?G89wVc#N>1a;fQ=3JN#VP|;O#l|@O zZiTp7D1ofaxfXSI^q1W+Fp0lIz83Xpz_*v(A!L#TSTE|4s%@-OrJfwkN3bsaJZ<<~ zMx!2R7~xDuPX^6dRtZN=ZK#Kw@xT#I53q$3dUC)gCP%q&`g;q`-bs_L!K%%iYyE|+ zz7knyb9R(D6HYr|Ou#9c4UXciH;Dk>0E4g5*&Q3uSwbILY+t>pZTtNAW7rEU8>E8c z_$DWgoX2eAB|7VJfi$uL4rKKQagNC?*!bzNE7Mcv)b{sb*We!5`Y}C48BEy;{pEo= z1V>LAx)C3)N4&aIK{m1moG$bzOe}C%tz#z^XyG5nU*fE8O;CFt94lS3(lE$%VE1>1e(QMxWGw7Z2<>g)87nbY+nbQsqKQi^0&>EPjdCnRZnqn z0#}hfwt%yJ*;ZgbwDV*v_pJ&dy|n2msNAjDWoTT;bugdZw;Jye_$|oVynzp4av9RE zQ7<{cg;(m|xNkj48Bi0gnO55W1BpnMH^2TJoJ6s3VQ1zzI3Z@o+KY>i7en-hGG zp>Z+4R`2a#?*oW+fqV_>F+vt>#{j(ueW{15hxyzV9prSN+@gx~qKY}zCOCB?#({dl zfx*79=e`!yc})q1!JD0Mvr!ofLkRi?M2EhSlfIEP#&S@*gT18M2ZVs!7K7y_SZnUH zIYBk3UbFq*Plb+q`9Z?s!)(Omx$NzJ_;ZYT`GMc!!!?T!1LW7n@a=9({W40pwvxl9 zQqBN3PkU`ayGjo4T74LVTfmD#_c!Dm6;*%Uw2HH= z++MoW+bD3{emMt@1YspcPQKRdSoz zGX^k0F<$u(w{YK2hohJto3cy_HKKxhY)-A>9(@5e|HEy5&d@_vR`>D7)H-fsT0#0z znibVkRi48QDP&sM2luolui>^b&UE8p+xwhp@L|39i8*vgzq%cCU3&e;J3;pj zKd?Ud;$HGS3Lz2tHe9hi=$WtQa7q81$O~RM`KEPjF-Bcn>Al5HpHgUgKrj zh@`Iz@ixA1kdS8bY9o9!o4kvdkrBNRsouoF1%AFW+}`>VKO^MeLwYGmdVRV5JM5A& zpz2vJ#JU#o?@%VcyaJ7R8=n}G_=tl4f=e6R8Td5V)&}=+iyEA_f)D8KWucLNm=l8i~D$ElhB!CKBI}H36ZT^_y9T**{ZP8kvm9^gjA}U z`8p13tQ4xDfc-pNzijO~Qnp}iVZlawk>Yc(ED{w*f?-|%X(t9I=l=zdGe5L&`LdP8 z5JA1J(9RXP9}sXL)QkkmX19EJ+#_qs!N&ygYNc0|tX@~Vs&M62J0q_zM?poSAjMbo zfhPAOlyc6v(U$;Q^GhNoOIyx-=5BmZ)cOC|y6(Uzs;xgWOJLKp*-cNjrMJ!Q&ZN5~@mAAPLe@%(1tpSZU7^8)AQ-z58s~#iydevsb>~y?1sKeEtEO zxpU{-e(ve#4>~U?DmT7u=dfe9|GqQm*ezi@uQ+z#v-DHBJJ0-idmCMq6xBG8kR0{7 z+aV!Xx`e1o_K(+r#mR2wOWsxw5;nYaN@WaHGEtybFSZQH8f1!s?=J z-4HA}Ov&+0Y-nxhfLF}yE~GbD*6Ev8TL)>WWYn$0!Xxkvi`F`O&MYY^5)W|aOdaXT z&&fwKQFtz!?Q<^jIHfR?GBP?4sXAJ3%1pk_h^+oS5y1n&TTDM?X1dDi>KZybkpiW@ z0kJ#T9KjJzw?&#*HQB|ETFMN1{w`B;{7f;0Q(Vj#9Z@*Trp<;2O!BP$1E!?B+2S}( zam{wko>Ml5d9KZ2ZoqIpITv_{`Ix9u&|Dnk)bnWK0h1Fhmnq3(;^_SZb-0o;pDsCI zN`}AXe)ei1dzCUGWfAaWOFQj4V2X7Z7wed+#&0VHZ$2az@iLPsDQ<~OWxGrkyJ@ND zrSOD+b3%9>T#6CyJvFV$&0H_%#j6=682sxF!$FPcQo=IY9k0gjKWMU7^ONi0hUpKB zBl+lX7^WW;e-ANC4}WCH;fy;bPIkjej{A1%2Q>asdgVn^obxg9^;vf7VUG_YhNLGb zIU+mXCPtoX?;8XH6wY+4S8u2fGyRcKw|3CWIOQyW=XL$2v_4OT9O%44g z%vSkXvYjwz%g@o|6Xu-A=LKM9&i(@aq?fO@jvZL@GEnVheQl+^ubO&ajo$yN*)k1i z3y3QEMMF;0QaDg`U8avD@+ASmZ~FeScw}=E`ilOlLJEJ?-#1{+*w^T#6XqECb^7dt zS)25RsKqVe!`>Vmd)&YEsY8w!Y&ZYZ#l5B1AGDBX2J)V_srGZTI~?)QIEqGRli#K5 zJ~tqmI+y5W4a(+kCvZhuz1*J_Wa=U$5 z%nuYkn5$arYdhA#iRM43o%9823ln@_?b5pXhQ|E-u`rW|Oo#8Jg z|KE#(L6iR9~1zhoBj_M1u*UArvD=X zATUH``fm(?U3>WBh;I5HD+(|l-1I*# z075tYj}Ji5P5%=D5OmZ3M7@B`2RHpsVg<@<-@u;+3tiA18ln4>!Vxx7&&?w|ttND= zu7<~CWRxgnj(Dx`H8#PUvv#c%6)nC?tAOn~{IP<}(2E6I;8)CC4})UxG$K}l^OY1E zC$V@5U2Po|Aig@{uz_ix$_b+CSOhfi~=-&Z{VJ~B=C zF|&d>quZp=bO2(p2jJwJDPY2VJR@6p!1_NM&8xTN`C3+WcKKTHt*@!K-O}40)7u`~ z+a9;SJ$`sJyyltnZ!cq*kO|9fQONqQ;1ne-h9<6#Pj$!o?axsW9?gBco)jN9q?oxc zi|-{{JYBUq-YO^11FPd5aw5IEI(~9!(qLtBpBovcIFo78ns`TAilEMttb-L?dLW0* zqM;-k?OYR|7;M*TI_NMSWhXtiCO$z;6{S&WikS6X;-jc^MQjWG*_5Gxb6Ekt<l)1y%coXXOpz?t=@lxGI|Sa26?3La=Ic@BXB0(I z&{TC!&0PdNQ!z^_b^T}c? zz~efj#5}M--d9eagP;J+{Yszm_VU`!1}PHmSBwMJ)0#v)El6(h()cetp-W-#w_@pf zSYnFEXY?8%k>Mm_e3mzdoEgvQ?L9BrL;kV3aP@>+74x!=eDUmN;7SET&?lNIu`1Owr0_TJH{+x{W6-H?_((DTV|^IG%tMMXMB&Uc zO4Ra7k?@NeQYrGCvmS$)PZa-#`9g_r;A#dpsG;A$32Nx$2l`{Tn2q2M{Vh?Rq#RL*wNY$+%YH&Avy3lV~bs5;T< zs4S2W^rCj~GBJ82-c(?cI1RzL+p zNDzx4kx(hF9Q32Cxp_wIa&)D!(S<-7uz!`}C;G4Jo;9@)O?eCTeof;2GEA1PB;WP3 zEz?q_;@0I5_+T0vdl_S@U*bqT!3A65qMxzcjTUf+$4x)GSk;TG`)jmV`;4<+dc;f1 zOn*DQ5!T)aTW^HDH^Q+$!WkAE=sF#oGCx7Fol8*{xUJoD#rRysJ#DSc>wL>=n;U&y zBCObX7-8r8+TJfGhl3ZClkPg`O{_n?)B`D3-yvh+oK3=wkLQqIVTb zK{bFCvV`66Y&RNf^%_e-cd!6h>}y05;)__1s@4X2 z%2NlYtW`2D7qpPGNum`S3T=t;E5zyq_7E1%3z0>9GqtX8#|5{F@Eh@Mvb`ej= zh?EN~WRksurX@LTawoMUInyGNkUhb_7aJSt$S`M0UrMqQ|5EWU4gb>dF9ZKF@h=Pi zvhgnm|8ns!5C8J<&xL;l11ZVwPo{OdJbg@@nN|mqO-fol6uiqjBj>tz$>+qhW|ri6$@JeX2&k52tX^`bRg^ZsC3!F_rSmhb@KmiWs+P%Zlw(0v>Jj)R36J3cHRLPJNubTH@+ybHZkhonj|2mG;_{3IR3S+NJj zw=-6Cm9Oh+&@{x50!emAk9Bhx17WdlK(HLaKrD!K#9Bh_IkipAGrB@hIp}V*6MGM} zwYg*DdwCa^-iONZNY<%WX7M3d?>O+F`%ypYfwNvpK@UpTN*1K-JPSOa$3FbOQ-P#D zM|nHlj{ubE7)K*RB7d;3NKuc8QvZ}jJuc9I|2fPb9SL-Q=#%>Kz&T)%kwTvqbrFEZ zgt$oTeiDK=1PKX3j3g=H8PQSN*Y1vXA}|tzqkmFM5n(BF?SnZ z)G;GsA+e}uA+IoAjK_w1)qmh#^B=g^2M-(zMTf{o;z-84`IiI7-X{MWg?#7xY6af* zWud%$Y9%CvZ|SFSI13^d^ENG6>9)x4(5jX0T=`vb;@_0l=nHlvN3*iVEjT9o4=I! z78RW1E_PSMeI?Rcrlu9Ux9~g4J$v?SDe|OP9{mnAB5o3kjbr>q|NRz;XnDaYQ4oWe zNG#E1Dp=$#Eww8eSQr}<0wl3D=AmO$9OKCE#Bme_QV`N|O38?r#Kp*JkLFv7qtfZ? zYV*}G23LyvNub?zKG9=Wb=7QK-7&x5z@5V*o%rRpIB_w*3U*enI(za&R1N)2-+`r) z5fPR+&i+$Bd)Sm`&;f@;N7lLRETB?tXR{Ql=%gGXmKjhqFrvf#3sYx|Sh~Ie%M85{ z>4_#8dgCFkKyGq$U($o3RV@v^Ruuc%R!FfRI5|p)0wN{V`~#Zd+P7YyltKHT(gjtw0as2R0OC{{-%7gPm^LmiUt^_&UTjKxRH~j zZ0m=7%2bCuG!p1f&YYYOw07d>^ih{PLH>fp>9kYQD!1ACB}Tw#iBc*0BqQM0`VgrQ z;oq1*-}VhnUFEi>d>g1^I?Wmm1h4Z*j_;Vl&bA~98XAs&+1F6$MgJ%!a}byjdKxy( zMyP0*XeIR5z;qj-ieVWHWBy=sJct}TJg^;5b5!esi$W;Az)V;s2mjS>3PMT)75 zj6$TQA?L~@isPbXcCjG@DL-CYb(u@7MYJxu>JR1X^j1`iYz4vA8K|11k0ymJJny|#@4ZcQGucl0J?^A#C+mQI zAF#_wTurHZOVHTqv>!9@-J15smqJJ9>Dm#LzQ=KA0qhvt@zsQ${G=_%VjQP48zYv}I)g(oe9WUl^891<}d$!>8|mbC~{hIXe_A ze5Vu}KD5XmCDaIg8=o&d97A>#4ZF~tVE;(3;tx^yK`Z*hopB`67Pn3IPzE<`M$ zDVRrb^uuk6;9@gfnNp0MSKWV+d$?WK-LLAZSYC?&X^y}b&Qw&II)MrnG{w{SP3~c- zX?(d5IZgaVXZ*GM_Dou~$!&9GG4MRRadb9YQN)-FV4TpLz}gz~6c*%)o|~Cam>uU; zV0JL`+{tq;<%EEaWkOX{7eP~lG>kH)kUqLK-jY* z{gJ$W?kM*6XhjdSxg4=)%co93!Z|5)jQ#-_)3K-&H;!i1B*i3$j92_PwoG68a$TfY zL62^BC&o+=Gb*krj>sHU3a#89p0K=t9j2iKT;MQy{D&zJc8eV*@829IRX?-Z;8`lv z&r*>%v$4fAqt_iXxzrDnh3sPBM*a=BQ98KMgW$&K;KmAYDdXs1uRFPWya=tQll)O- z;?Yk7nks}4$WIST#tAx@N&zOm%0Ku^8F?P47dc5_OmW&J(`5FzZjb^sP7xu`y2GXl ze4knZDsvjTE12jY=%giMHM=U-NyZtXau77pEUPc}!5}pvnYapChs}tSpgE`(2JJJu zM>t%lpE+D?lk*tdc>-?Ge4sE1ajdaX0ss+3=X^G39iYYlE@S`~i6Nwx6iPvhQ4muj zL-@fqzZjWqXpgR4*-P5ao#+x z7%{>Ah=p7XEU2mTFFPTq3r!hU31FtxqDi3}M2CXb;H_ot-)v2oA@O@~J>Qy1+&thy zR1UpJpI?Mpy%^6i8)(TTV=dj7Azh6R{oTgD_R9B{UKuy(9oqbt4q3MRZ(o9X*bsWf zW(e&=hnNHa`AJh91xuS+3p$sFHx7hub^jn6JG)?M5jRO8(?{pVxF_pa1dDu*eu+&% zk>CT3(|{=%$uV7ElDHWPc?y$aCd_0g1cC<^(KBooL#JzfZY+**Hph%GoX}CvxdQcs z%w+aAis)aqkB#hRybm~P~Pavp!beCS{VdOOnL?63KfjXZV zvv@T3mYMpuA*)fZd^WTc#xjq(%ENpd3c}q~IY=O_|%cq1rZf9(*!qNs*Puayw&##`c$SK7x zrI~x&G4XZ$9aDJh;BN&8S3PamHqI%ytfevoq4}6pS=^!rvVuYfW<2g*7^T>@(>KA+lBdC{!u z>N&iY7a40W2ho9a|6n%A%WwC{ts_LVJnc0{v7=e{^7K++Rhca zE;jaN@+6sK;%>nkP}Gf`lMt@Eb1Q2IvdI0^-m6%mZ$;nO%H1ZqoprlJzI(11u0Hbte_j6|q|56b~ ziwFk`DWU-DubS)GBsmXD+g+2Vm-|+Ab`*4W)ZreY=iYEfsYgTyBmXH4X;DhLTYsE9 zb;2xu6xkmz)SCjuBt^XEj*YxmuK}ai?Kpb--*hXU4roGpm{h@huU`}q$QWY04^$pR z$e{!Jt1`)RKTifi=fCBSV8Japd-R|n0v!+0`nTNnQ4a?I4W{@o9>s;cwpNOMM8By6 zsa8Ud1%T(nTn?E=nwYMgaim;B%3IJir1mHL8rB639c|bbo*ph<_6x7M&U8?Y0Xpv~ zMp8U2hyX|_nVOV|B!ZwOm13WvC2zZ9=0GpX$jh+j^qU`>Gw6A|XMrY}+K+EjrU@}Z zHOg4kFz7@DtBRV?h)PCiL3ux46*FOdjh=bio#K4mUr!2sQ}2T&Mg3c!0>*oi{AR?N zfiv&8WjWNxjFH)TCEZ73-*YFb1O64AHIuEEZ}O~}{C&dx`U}`#@)!6OA3i|a@nQ0V z`upify3Dr%`$N=th#o@?`C)nwKTSvVinA-HdU!?lhp70-;47pEN9%Y6jSjkJepK>r ztsU$Ilm0@8%zMbT97Oz5IHbrtvULftS@sj+DAC5_?%^enA+spOrl+NeGZ?&GI*dq2 zklCLoWe_4DKjsjSr5%==&j=7>m$gHYEg(ccFX=PJsR48&>IDIU6>}I6By$)On9?Zg zB>|&sZO0nP__6?EepQ->kS44nfx*0{Lt*6{%n3bhCZ4b-gg_7HwPbrf|g3T z{~r2WC*{61^toQjeS7G0gOvNukmoUw_Pr~*6@6UNS35Aa_eHN*G4Ip|dZ(&bI_#_u z1)OnB9V;axB+YD!qd$@Koe=;6Av2p}R?LBX768H~=!5_=zN5B9g6Nq8F@M2;%sXp> z5Q$%hGLM4^htN3?$2|L_fN~C?fF*&Xnf1l|t>oW?fq90knStTutT(X`Ix{eQK`K~g z07&7a?EmWUTI-NQ#0ZfyhxdatN8i)|cs~kwyqv@P>2Klvti$W#@P5(Z{U%lX72fXx z9xvzcAaVYi{{1Q7!Iql!4zW!6!}d0$j7|2v1M6@lrf*qOkSKWBP~!%O$yA^9o7_PrvB1L z);MrgDHnMQf*0csZ)lR7HHbZ9bs!B;*~iu#qyhTKnxe@|=|=WcM`gAYuUt=OKDH)< z6u-W;#tBk<+$Yu)km4V<)}(7_o)A|kGWXnqIOxT!sD|*T& z&+(O&&z6!q=#CBEq?}Ii-LkgMb)EQ5it2(&1=^p6wM|_u%}wC%1<8@Ln!erOO$=Tm z9`n{xbhkHGUPoiQy&2ILGU^7#iD~XasSql457CUztOcnN8w7b%rZGX4v0GP}Lcgxd zdlNTN?#h}3c{A1aT5YB+Od$!((IbBIdTDR3HAhM6qp=&kiSkxDwz4L3c)>QNw5M-Z z)?_QW+v&(gZw}Ps?``yIP>-8@-bCkazTT2)4_j)a{Ad$FUnJvRp}kMNjHda#PI(`- z`@9LkplcZso8C{mKewjIM0>X4=L&ky=S=}g`>W5JmH?$T*OGyx<-ee3nbM==S}NY; zEe^g;fUsUqAIw~w9AdmdJZIlX*KYD=$v4s7u9|H5A9QMyH$%RKYPVTc#dRx9-R#Ym zZ=>~_y{YmY^zAk@dnZ}8TQlIcRM6{dd(J>hH`B$q48>6*uInU70*5#7&j#71xH`nsW|LiW$G1}GRb%R{s z=V@?P7CcU`^x&XA(cg>zpJZc9>V_(r=}_42*#e2vSm?tTMZiSaOKa<)3X_abCUaF2 z?teDxLC;}xo1sKzB1cr{TH2iNWt2ClfFVVU!e$y}t~z^3Hx7AOUzu0L?cceMp6T`4 z$Gyt7%v#C%8vpHWZ)-=sq~?az4b8r`M*X-+Mvwzsvh#)x44P)Pb5j3JS$)_~Z;^e` zqRb$dWPe+_e2U$w;ErE%m({6w-ld27yl(k8o$T{w${&zrt2Y~objEJ=#>IZZW}Yo+ zeM4>6@|MnJSXJkzv|_8*VZklUg=Hr&A40m6@*lckt2Y@szoT2dDI;+q3vDeJG(%QunI7zG%|+rj#x{h zVnu!45ucQRu!ceQxL}|zUb2s7{?Zyt|J~uWR6xbYT3^=IR^QexC8o$cEEQnwU^md< ziHWevqRuYPX6X9AJUg_Pbm*Vf%n)R~;d`*eN$Yodi!G_3EI6*0jA`PHnodvc^m>tM z+cw;u8j~qzWqmu&6*zXbnyESD-sN>h<_2D27M=N2y9?9hqT|Eu*|M7s>;fk9(3`uw z9$BUCyRC(JOj`kU4f@`>u2l*zf|#D4WF$q3EDp>OdzV*AAKq=vl}FOIBkZ~IXnJfn zFyR=gxyR~C8tWJF79*p`I2}l4L8g>Fo;-WdYB?>~gAr8F&ONwwD#?AX)q`Y%U+n=F znM8Z}Dss6XDL&`RmEt46FPOUz#a#lsz?8-67KQ-6i&DzW@&24KMI_hA3 zIZlc=kF{Lqb9s7N+a&vZ`u0AnH767*1~}z0%heR<64+*C{aU&T_KTZ4Vfx(wI|(S{ z)J62lrCzTE>IHs7dKr+Q8o5uhE}?m$_T&*(C>5|n=*F>HELbI|7FcW8Ugbz$&zX0*Zyfk5iiHy34%DCMXg(ii0A7?YNv48vlSb z8v@~J;r4<`=nNPhLVF1EAGuNt1rt@ruryQ#j7bjfV%xoH!ajDJL_%EgTiv+ko~P zIwWl)?Rn6uB9-9u%e^@X5dH&;_jWXhIrZ0aZKl1KFe6CroC}( zdl$&U!}=-$2{zX*lai0nyV3Tf$bag^HON*jW!+7lW7f>>d;En;Lpe%=k>FjM|d{CTI<3sEh<|Ys}=~Sczq9r!f3{m>p zqtVAET>OwOvBewrnB3lfeqk1UX0}^wkINVl&c`mk$Dh!JH&2T7Eq;oAy2@JwcT3mR z-U61^d+pvklEo_V_4o7=p&2WlLFBZ1CxrYRf>fC zh*hfN=24RO6)K3ad!k-tE7Iu`U6b6eQ+tfPKz@U6h_P$IZ;C~+|C^4-*e{abqk?O( zdydnKkAqD7fOcOCtoI>3b}gvjkLl#K*yf+m#wT!OKc%)fAnp^?dL5AF=lxGwtr1_a zZBnlCqnZ6BosP3-6@4WJlz39_C=l-!BuMhDY3f?;V_4Yywdi%07#pKHg$Afvy!cP%-@5C(YhbCzh&3qo%a16a)V^5{s z&s*n%J~)4gJ#%b@XiTpdUa3q{HLY|XqoB=I0?3d(95GRB3|>hpm`uo3;zEM?Z^{VnTs;UJ#uBMH(_PppBqK`mZ&7ECXvVxiPNG-mZMPJtfch9B|Z}aA)LyOBe zj_`B+OUA}9S2T~SlHpV5c~o#a&dEHQdArwwBzLzjwYwo*cxS0S*8$}e`#x%s0xQlY z#0BWs!Ed3(V#deRkhRV}8gd5v9pELF(xf}Qc@cH~>2rIfG4*up4>g8}y>FmBF9T6D z(!k5s%(&%qfn-qHa6K^byywht#;=2WRVzrxT+nwH=_!iOa zziidyHhTU}Z<5^3x{yH6zhaG23OmSrmsg92+LzsWz>a~big|@;UWNm$$$N-_GWh9Y-ZvJFsrtUsr3N3 zhiQAlaU#Xa~qLuTYIVC}y(`>{N$mOWXc`dZ%|kVp!S&v;5V5H*@nbUVv-j zQij%GlOjbw%8Ke*YTJ1cWTvLa3|;MQoz2buuS}1Ng5`mNCwRf~ra-}yhK@BI4J!vf zd5RSjG^`x_=4nG~Go!=<-~0;&Ezl?W3(EfQ@)UKv`5A-GlKT6jK6`n)>dku2;NP?U za53iR4cMZ5i};JIFB<4nnlriKWrJ88Kk%qm3>~f5&AZvS*&ttK6;KeU@S0)u&*ETjU^YVJ12>|Hg)Gz2UMV%6iunJ6eGw~~mF{o9Rlj70*HIH$? zy>+(lAEsJ{Nw(!MCEjIY8 zG|CJ!EOyHcvGhuAi(&vbcFHxGYZSLa7N3OG@gb#R+Pn1?E?O0R
    3j!?@ShWexSd<=nvr`IWI}TvA8^ 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 JvZtE7{|9Wryzl@3 diff --git a/.Floppies/A2OSX.TEST.po b/.Floppies/A2OSX.TEST.po index 1f3355a1683bf730e3af50b6225c3302623e5ee8..27350bdfc4095e6bf2494530fc249ff782665246 100644 GIT binary patch delta 22127 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 EA65RF3IG5A delta 22106 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 DSSS0000 + >LIBCALL hLIBBLKDEV,LIBBLKDEV.D2Recalibrate + bcs .9 + stz CurTrack - lda #162 - sta CurQTrack - - ldx #0 - jsr CS.RUN.SeekToX - lda TrkCnt sta Counter @@ -660,5 +658,5 @@ DIB .BS S.DIB DS.END .ED *-------------------------------------- MAN -SAVE USR/SRC/BIN/FORMAT.S +SAVE usr/src/bin/format.s ASM diff --git a/INC/LIBBLKDEV.I.txt b/INC/LIBBLKDEV.I.txt index 385f8a8a..99eb4c14 100644 --- a/INC/LIBBLKDEV.I.txt +++ b/INC/LIBBLKDEV.I.txt @@ -5,9 +5,10 @@ NEW LIBBLKDEV.GetProDOSCatSize .EQ 4 LIBBLKDEV.BuildProDOSCat .EQ 6 LIBBLKDEV.D2MotorControl .EQ 8 -LIBBLKDEV.D2MoveHead .EQ 10 -LIBBLKDEV.D2TrkRead16s .EQ 12 -LIBBLKDEV.D2TrkWrite16s .EQ 14 +LIBBLKDEV.D2Recalibrate .EQ 10 +LIBBLKDEV.D2MoveHead .EQ 12 +LIBBLKDEV.D2TrkRead16s .EQ 14 +LIBBLKDEV.D2TrkWrite16s .EQ 16 *-------------------------------------- MAN -SAVE INC/LIBBLKDEV.I +SAVE inc/libblkdev.i diff --git a/INC/MACROS.I.txt b/INC/MACROS.I.txt index cf1b9757..3b6a9983 100644 --- a/INC/MACROS.I.txt +++ b/INC/MACROS.I.txt @@ -114,6 +114,14 @@ NEW .DO ]1=MLIGETBUF lda #2 .FIN + + .DO ]1=MLISETFILEINFOEX + lda #2 + .FIN + .DO ]1=MLIGETFILEINFOEX + lda #2 + .FIN + jsr GP.MLICall .EM *-------------------------------------- @@ -530,4 +538,4 @@ FPU.FOUT .EQ 58 PrintF .EM *-------------------------------------- MAN -SAVE INC/MACROS.I +SAVE inc/macros.i diff --git a/INC/MLI.I.txt b/INC/MLI.I.txt index 726f6641..fa4af4d3 100644 --- a/INC/MLI.I.txt +++ b/INC/MLI.I.txt @@ -1,6 +1,5 @@ NEW -PREFIX -AUTO 4,1 + AUTO 4,1 .LIST OFF *-------------------------------------- * PRODOS Constants @@ -65,20 +64,21 @@ S.FI.CTIME .EQ $10 * S.FI .EQ $12 *-------------------------------------- -S.FIEX.TYPE .EQ 0 -S.FIEX.KEYPTR .EQ 1 -S.FIEX.BUSED .EQ 3 -S.FIEX.EOF .EQ 5 -S.FIEX.CTIME .EQ 8 -S.FIEX.VERSION .EQ 12 -S.FIEX.MVERSION .EQ 13 -S.FIEX.ACCESS .EQ 14 -S.FIEX.AUXTYPE .EQ 15 -S.FIEX.MTIME .EQ 17 -S.FIEX.BLKPTR .EQ 21 -S.FIEX.ACL .EQ 24 +S.FIEX.FILENAME .EQ 0 +S.FIEX.TYPE .EQ 16 +S.FIEX.KEYPTR .EQ 17 +S.FIEX.BLKUSED .EQ 19 +S.FIEX.EOF .EQ 21 +S.FIEX.CTIME .EQ 24 +S.FIEX.VERSION .EQ 28 +S.FIEX.MVERSION .EQ 29 +S.FIEX.ACCESS .EQ 30 +S.FIEX.AUXTYPE .EQ 31 +S.FIEX.MTIME .EQ 33 +S.FIEX.BLKPTR .EQ 37 +S.FIEX.ACL .EQ 40 * -S.FIEX .EQ 32 +S.FIEX .EQ 48 *-------------------------------------- MLI .EQ $BF00 *JSPARE .EQ $BF03 @@ -151,4 +151,4 @@ MACHID.CLK .EQ %00000001 *KVERSION .EQ $BFFF *-------------------------------------- MAN -SAVE INC/MLI.I +SAVE inc/mli.i diff --git a/INC/NIC.I.txt b/INC/NIC.I.txt index 10ede08f..5a7e268f 100644 --- a/INC/NIC.I.txt +++ b/INC/NIC.I.txt @@ -1,6 +1,5 @@ NEW -PREFIX -AUTO 4,1 +AUTO 3,1 .LIST OFF *-------------------------------------- * NIC Devices @@ -23,4 +22,4 @@ S.DCB.NIC.GW .EQ 18 S.DCB.NIC .EQ 22 *-------------------------------------- MAN -SAVE INC/NIC.I +SAVE inc/nic.i diff --git a/INC/NIC.W5100.I.txt b/INC/NIC.W5100.I.txt index a71092aa..add39b32 100644 --- a/INC/NIC.W5100.I.txt +++ b/INC/NIC.W5100.I.txt @@ -1,6 +1,5 @@ NEW -PREFIX -AUTO 4,1 + AUTO 3,1 .LIST OFF *-------------------------------------- * WIZnet W5100 IO Registers @@ -85,4 +84,4 @@ RX.BASE .EQ $6000 RXTX.MASK .EQ $1FFF *-------------------------------------- MAN -SAVE INC/NIC.W5100.I +SAVE inc/nic.w5100.i diff --git a/INC/ZP.I.txt b/INC/ZP.I.txt index 1d248ec7..282af0c2 100644 --- a/INC/ZP.I.txt +++ b/INC/ZP.I.txt @@ -1,6 +1,5 @@ NEW -PREFIX -AUTO 4,1 + AUTO 3,1 *-------------------------------------- * ProDOS Reserved ZP Location 00-1F,56-FF *-------------------------------------- @@ -27,4 +26,4 @@ RNDL .EQ $4E RANDOM NUMBER LOW RNDH .EQ $4F RANDOM NUMBER HIGH *-------------------------------------- MAN -SAVE INC/ZP.I +SAVE inc/zp.i diff --git a/LIB/LIBBLKDEV.S.BB.txt b/LIB/LIBBLKDEV.S.BB.txt index 7e21f178..a7ca7759 100644 --- a/LIB/LIBBLKDEV.S.BB.txt +++ b/LIB/LIBBLKDEV.S.BB.txt @@ -51,17 +51,18 @@ xboot .DA #1 sec apple iii enters xboot 'ora $38' bcs BB.AppleII branch if not apple iii native mode *-------------------------------------- -BB.AppleIII lda #$9f make apple iii boot using block 1 - pha the return address is $a000 - lda #$ff - pha +BB.AppleIII bcc * +* lda #$9f make apple iii boot using block 1 +* pha the return address is $a000 +* lda #$ff +* pha - inc - tax ldx #0 +* inc +* tax ldx #0 - inc lda #1 (read block 1) +* inc lda #1 (read block 1) - jmp $f479 +* jmp $f479 *-------------------------------------- BB.AppleII stx unit save unit number cmp #$03 for disk ii @@ -231,12 +232,12 @@ bterr2 bcs booterr jmp kernel go execute kernel code. *-------------------------------------- booterr jsr clrscrn clear video - ldy #BB.MSG.ERR.Len-1 +* ldy #BB.MSG.ERR.Len-1 -.1 lda BB.MSG.ERR,y - sta scrn,y - dey - bpl .1 +*.1 lda BB.MSG.ERR,y +* sta scrn,y +* dey +* bpl .1 jmp $ff69 *-------------------------------------- @@ -256,8 +257,8 @@ endcode ldx slotz jmp BB.Read *-------------------------------------- -BB.MSG.ERR .AS -"ERR" -BB.MSG.ERR.Len .EQ *-BB.MSG.ERR +*BB.MSG.ERR .AS -"ERR" +*BB.MSG.ERR.Len .EQ *-BB.MSG.ERR BB.ProDOS .DA #$26 $20 = storage type + 6 = "PRODOS" len .AS "PRODOS" *-------------------------------------- @@ -298,60 +299,83 @@ d2io lda blok figure out track & sector. jsr BB.Read quitrd ldy IO.D2.DrvOff,x -erretrn rts return error status in carry. + rts return error status in carry. *-------------------------------------- BB.Read lda BB.HdrTrk get track we're on jsr BB.Trk2Qtrk sta BB.CurQTrk -.1 lda BB.CurQTrk - cmp BB.TargetQTrk - beq .3 + ldy #0 - bcs .2 move out, not in +.1 ldx BB.CurQTrk - inc + tya + beq .2 + + txa + jsr BB.PhaseOff + +.2 cpx BB.TargetQTrk + beq .8 + + bcs .3 + + inx .HS B0 BCS -.2 dec - - sta BB.CurQTrk - jsr BB.AllPhaseOff +.3 dex + stx BB.CurQTrk + + txa jsr BB.PhaseOn - lda #115 11.5 ms - + lda #104 jsr BB.MSWait Trash X - bcs .1 ALWAYS + + iny + + bcs .1 CS from BB.MSWait -.3 lda #0 wait 25.5 ms +.8 tya + beq seekend + + lda #0 wait 25.6 ms jsr BB.MSWait Trash X - jsr BB.AllPhaseOff - bcs seekend ALWAYS + lda BB.TargetQTrk + jsr BB.PhaseOff + bcs seekend CS from BB.MSWait *-------------------------------------- -BB.AllPhaseOff ldx slotz - bit IO.D2.Ph0Off,x - bit IO.D2.Ph3Off,x - bit IO.D2.Ph2Off,x - bit IO.D2.Ph1Off,x - rts +BB.PhaseOff bit #1 1,3,5,7 ? + beq BB.PhaseOff.2 only half track + +BB.PhaseOff.1 bit IO.D2.Ph0Off +BB.PhaseOff.2 bit IO.D2.Ph0Off + +BB.PhaseOff.8 rts *-------------------------------------- BB.PhaseOn bit #1 1,3,5,7 ? beq .7 pha + inc jsr .7 pla - inc 2,4,6,0 .7 and #6 mask for 0,2,4,6 ora slotz Slot $n0 + ora #IO.D2.Ph0On tax - lda IO.D2.Ph0On,x turn on one phase + bit $C000,x turn on one phase + + lda BB.PhaseOff.2+1 + sta BB.PhaseOff.1+1 + + dex + stx BB.PhaseOff.2+1 rts *-------------------------------------- BB.MSWait sec (6) JSR (2) @@ -375,7 +399,7 @@ BB.Trk2Qtrk asl x2 lsr x3 .1 adc #$ff SELF MODIFIED - rts +BB.Trk2Qtrk.RTS rts *-------------------------------------- seekend ldx slotz @@ -387,7 +411,7 @@ tryread plp fix stack. rdhead sec anticipate error. dec BB.RetryCnt if = 0 then give up! - beq erretrn branch if can't fine/read sector. + beq BB.Trk2Qtrk.RTS branch if can't fine/read sector. clc indicate reading header. rddata php carry set if reading sector. diff --git a/LIB/LIBBLKDEV.S.D2.txt b/LIB/LIBBLKDEV.S.D2.txt index 368c5ab2..e84d50d1 100644 --- a/LIB/LIBBLKDEV.S.D2.txt +++ b/LIB/LIBBLKDEV.S.D2.txt @@ -11,98 +11,132 @@ D2MotorControl >PULLB MotorOn lda MotorOn asl - lda #0 - adc #IO.D2.DrvOff + lda #IO.D2.DrvOff adc Slotn0 tax lda $C000,x * clc -.9 -D2MotorControl.RTS - rts +.9 rts +*/-------------------------------------- +*\-------------------------------------- +D2Recalibrate >PULLB DrvSlt + jsr CheckDiskII + bcs .9 + + stz MoveTo + lda #252 + sta MoveFrom + + jsr D2MoveHead.1 + + lda #0 + jsr D2.PhaseOn + + lda #0 wait 25.6 ms + jsr D2.Wait100msA Trash X + + lda #0 wait 25.6 ms + jsr D2.Wait100msA Trash X + + lda #0 wait 25.6 ms + jsr D2.Wait100msA Trash X + + lda #0 wait 25.6 ms + jsr D2.Wait100msA Trash X + + jsr D2.PhaseOn.2 + + clc +.9 rts */-------------------------------------- *\-------------------------------------- D2MoveHead >PULLB MoveTo >PULLB MoveFrom >PULLB DrvSlt jsr CheckDiskII - bcs D2MotorControl.RTS + bcs .9 + + php + sei + jsr D2MoveHead.1 + plp + clc +.9 rts - ldy #0 +D2MoveHead.1 ldy #0 -.1 lda MoveFrom - cmp MoveTo - beq .3 +.1 ldx MoveFrom - bcs .2 + tya + beq .2 + + txa + jsr D2.PhaseOff + +.2 cpx MoveTo + beq .8 - inc MoveFromMoveTo, must move out +.3 dex MoveFrom>MoveTo, must move out - sta MoveFrom + stx MoveFrom - pha + txa jsr D2.PhaseOn - lda #85 8.5 ms - jsr D2.Wait100msA Trash X - - pla - - jsr D2.PhaseOff - - lda #1 0.1 ms + lda #104 jsr D2.Wait100msA Trash X iny bra .1 -.3 tya +.8 tya + beq D2.PhaseOff.8 - beq D2.AllPahseOff.8 - - lda #0 wait 25.5 ms + lda #0 wait 25.6 ms jsr D2.Wait100msA Trash X - clc - rts + + lda MoveTo *-------------------------------------- -D2.AllPhaseOff ldx Slotn0 - bit IO.D2.Ph0Off,x - bit IO.D2.Ph3Off,x - bit IO.D2.Ph2Off,x - bit IO.D2.Ph1Off,x -D2.AllPahseOff.8 - clc - rts +D2.PhaseOff bit #1 1,3,5,7 ? + beq D2.PhaseOff.2 only half track + +D2.PhaseOff.1 bit IO.D2.Ph0Off SELF MODIFIED +D2.PhaseOff.2 bit IO.D2.Ph0Off SELF MODIFIED + +D2.PhaseOff.8 rts *-------------------------------------- D2.PhaseOn bit #1 1,3,5,7 ? - beq .7 only half track + bne .1 only half track - bcc .1 - - pha CS : move out jsr .7 - pla - inc - bcs .7 + bra D2.PhaseOn.2 .1 pha - inc jsr .7 pla + inc + jsr .7 + bra D2.PhaseOn.1 .7 and #6 mask for 0,2,4,6 ora Slotn0 Slot $n0 ora #IO.D2.Ph0On tax - bit $C000,x turn on one phase + + lda D2.PhaseOn.2+1 + sta D2.PhaseOn.1+1 + + stx D2.PhaseOn.2+1 lda D2.PhaseOff.2+1 sta D2.PhaseOff.1+1 @@ -111,11 +145,8 @@ D2.PhaseOn bit #1 1,3,5,7 ? stx D2.PhaseOff.2+1 rts *-------------------------------------- -D2.PhaseOff bit #1 1,3,5,7 ? - beq D2.PhaseOff.2 only half track - -D2.PhaseOff.1 bit $c000 -D2.PhaseOff.2 bit $c000 +D2.PhaseOn.1 bit IO.D2.Ph0On SELF MODIFIED +D2.PhaseOn.2 bit IO.D2.Ph0On SELF MODIFIED rts *-------------------------------------- D2.Wait100msA sec diff --git a/LIB/LIBBLKDEV.S.txt b/LIB/LIBBLKDEV.S.txt index 09e4005a..74850434 100644 --- a/LIB/LIBBLKDEV.S.txt +++ b/LIB/LIBBLKDEV.S.txt @@ -60,6 +60,7 @@ CS.START cld .DA GetProDOSCatSize .DA BuildProDOSCat .DA D2MotorControl + .DA D2Recalibrate .DA D2MoveHead .DA D2TrkRead16s .DA D2TrkWrite16s diff --git a/ProDOS.FX/ProDOS.S.LDR.txt b/ProDOS.FX/ProDOS.S.LDR.txt index 0a86487a..2d2c2ca1 100644 --- a/ProDOS.FX/ProDOS.S.LDR.txt +++ b/ProDOS.FX/ProDOS.S.LDR.txt @@ -177,7 +177,7 @@ m128k sta idapple Save MACHID in temp location .1 * stz $D700,x - stz fcbbuf,x + stz FCBs,x stz VCBs,x * stz $DA00,x * stz $DB00,x diff --git a/ProDOS.FX/ProDOS.S.XDOS.A.txt b/ProDOS.FX/ProDOS.S.XDOS.A.txt index 8abae6cb..04554794 100644 --- a/ProDOS.FX/ProDOS.S.XDOS.A.txt +++ b/ProDOS.FX/ProDOS.S.XDOS.A.txt @@ -7,7 +7,7 @@ XDOS cld no decimal. * pla get processor status * sta spare1 save it temporarily - ply + ply get processor status pla find out the address of the caller sta A3L @@ -22,7 +22,7 @@ XDOS cld no decimal. * lda spare1 * pha pull processor status - phy + phy pull processor status plp to re-enable interrupts. cld still no decimal @@ -84,6 +84,7 @@ godevmgr lsr shift back down for device manager. gobfmgr lsr shift back down for block file manager. and #$1F valid commands are 0-$13 tax + jsr XDOS.bfmgr exitmli stz bubit clear backup bit @@ -251,7 +252,12 @@ sysdeath1 tax death error code. *-------------------------------------- * ProDOS Block File Manager *-------------------------------------- -XDOS.bfmgr lda XDOS.CmdFlags,x translate into command address. +XDOS.bfmgr cpx #$14 + bcc .1 + +* >DEBUG + +.1 lda XDOS.CmdFlags,x translate into command address. asl bit 7 indicates pathname to process sta cmdtemp and #$3F bit 6 is refnum, 5 is time to process @@ -510,18 +516,19 @@ findfcb ldy #$01 index to ref# sta fcbptr used as an index to fcb tay pla restore ref# in acc - cmp fcbbuf,y + cmp FCBs,y bne errnoref -fndfcbuf lda fcbbuf+11,y get page address of file buffer. +fndfcbuf lda FCBs+11,y get page address of file buffer. jsr getbufadr get file's address into bufaddrl,h ldx bufaddrh (y=fcbptr preserved) beq fcbdead fcb corrupted + stx datptr+1 save ptr to data area of buffer inx inx index block always 2 pages after data stx zpt+1 - lda fcbbuf+1,y also set up device # + lda FCBs+1,y also set up device # sta devnum lda bufaddrl sta datptr index and data buffers always on @@ -529,7 +536,7 @@ fndfcbuf lda fcbbuf+11,y get page address of file buffer. fndfvol tax search for associated vcb lda VCBs+VCB.DEV,x - cmp fcbbuf+1,y is this vcb the same device? + cmp FCBs+1,y is this vcb the same device? beq tstvopen if it is, make sure volume is active. nxtfvol txa adjust index to next vcb. @@ -550,7 +557,7 @@ tstvopen lda VCBs,x make sure this vcb is open. rts errnoref lda #$00 put a zero into this fcb to - sta fcbbuf,y show free fcb. + sta FCBs,y show free fcb. badref lda #MLI.E.BADREF requested refnum is sec illegal (out of range) @@ -660,11 +667,11 @@ olinerr1 pha save error code. H34CE sec flag error rts -H34D0 lda VCBs,x get volume name count +H34D0 lda VCBs,x get volume name count sta namcnt ldy namptr index to user's buffer. -H34D9 lda VCBs,x move name to user's buffer +H34D9 lda VCBs,x move name to user's buffer sta (usrbuf),y inx iny @@ -726,7 +733,7 @@ H352A lda bloknml preserve disk address of current (last) sta gbuf+2 save block address in y,a to sty gbuf+3 current directory. - jsr XDOS.WriteGBuf update directory block with new link. + jsr XDOS.WriteGBuf update directory block with new link. bcs H351D if error ldx #$01 @@ -745,21 +752,24 @@ clrdir sta gbuf+2,x inx bne clrdir - jsr XDOS.WriteGBuf write prepared directory extension. + jsr XDOS.WriteGBuf write prepared directory extension. bcs H351D if error lda own_blk ldx own_blk+1 - jsr XDOS.ReadGBufAX read in parent directory block + jsr XDOS.ReadGBufAX read in parent directory block ldx own_ent and calc entry address. lda /gbuf sta zpt+1 lda #$04 + ocalc clc dex has entry address been calulated? beq H3584 if yes. + adc own_len next entry address bcc ocalc + inc zpt+1 entry must be in 2nd 256 bytes of block bcs ocalc always taken. @@ -811,6 +821,7 @@ cmvname lda (A3L),y y = index to file kind. cmp #$04 lda #$10 assume tree type bcc csvfkind + lda #$D0 it's directory. csvfkind ldx namptr index to local name of pathname. @@ -919,7 +930,7 @@ cralcblk jsr alc1blk get address of file's data block sty d_frst+1 sta bloknml sty bloknml+1 - jsr XDOS.WriteGBuf go write data block of file + jsr XDOS.WriteGBuf go write data block of file bcs crerr3 inc h_fcnt add 1 to total # of files in this dir @@ -994,7 +1005,7 @@ H36E0 jsr XDOS.WriteGBuf go write updated directory block. lda d_head get address of header block and ldx d_head+1 - jsr XDOS.ReadGBufAX go read in header block to modify. + jsr XDOS.ReadGBufAX go read in header block to modify. bcs crerr3 uphead ldy #$01 update current # of files in this dir. @@ -1006,7 +1017,7 @@ H36F2 lda h_fcnt,y lda h_attr also update header's attributes. sta gbuf+34 - jsr XDOS.WriteGBuf go write updated header + jsr XDOS.WriteGBuf go write updated header bcs H375A ripple lda gbuf+4 test for 'root' directory because @@ -1021,7 +1032,7 @@ ripple lda gbuf+4 test for 'root' directory because lda gbuf+39 get addr of parent entry's dir block ldx gbuf+40 - jsr XDOS.ReadGBufAX read it + jsr XDOS.ReadGBufAX read it bcs H375A jsr entcalc get indirect ptr to parent entry in gbuf @@ -1038,7 +1049,7 @@ H3732 lda p8date,x dex bpl H3732 -H373B jsr XDOS.WriteGBuf write updated entry back to disk. +H373B jsr XDOS.WriteGBuf write updated entry back to disk. bcs H375A if error. ldy #$25 compare current block # to this diff --git a/ProDOS.FX/ProDOS.S.XDOS.C.txt b/ProDOS.FX/ProDOS.S.XDOS.C.txt index 6b51a0f3..3257fd30 100644 --- a/ProDOS.FX/ProDOS.S.XDOS.C.txt +++ b/ProDOS.FX/ProDOS.S.XDOS.C.txt @@ -238,18 +238,17 @@ wrtbmap lda #$02 write command. txa error code L3DB6 rts *-------------------------------------- -rdblk XDOS.ReadGBufAX sta bloknml stx bloknml+1 -rdgbuf + XDOS.ReadGBuf lda #$01 read command. .HS 2C BIT ABS -wrtgbuf + XDOS.WriteGBuf lda #$02 write command sta A4L pass to device handler. lda /gbuf general buffer. -dobitmap + XDOS.RWBlock php no interrupts sei sta buf+1 buffer high. @@ -277,7 +276,7 @@ XDOS.GetMark ldx fcbptr index to open fcb. ldy #$02 index to user's mark parmeter. -.1 lda fcbbuf+18,x transfer current position +.1 lda FCBs+18,x transfer current position sta (A3L),y to user's parameter list inx iny @@ -301,7 +300,7 @@ XDOS.SetMark ldy #$04 index to user's desired position. sta tposll-2,y bcc .2 branch if mark < eof - cmp fcbbuf+21,x + cmp FCBs+21,x bcc .2 branch if mark qualifies. bne L3DFD branch if mark > eof (invalid position) @@ -314,7 +313,7 @@ XDOS.SetMark ldy #$04 index to user's desired position. bne .1 branch if more. rdposn ldy fcbptr test to see if new position is - lda fcbbuf+19,y within the same (current) data block. + lda FCBs+19,y within the same (current) data block. and #$FE sta scrtch lda tposlh middle byte of new position @@ -322,81 +321,105 @@ rdposn ldy fcbptr test to see if new position is sbc scrtch sta scrtch bcc L3E44 branch if < current position. + cmp #$02 must be within 512 bytes of beginning bcs L3E44 of current position. + lda tposhi make sure within the same 64k. - cmp fcbbuf+20,y + cmp FCBs+20,y bne L3E44 branch if not. + jmp svmark if so, adj fcb, position ptr and return. -L3E44 lda fcbbuf+7,y determine file type for positioning. + +L3E44 lda FCBs+7,y determine file type for positioning. beq L3E50 0 = invalid file type. + cmp #$04 tree class file? bcc L3E59 yes, go position. + jmp dirmark no, test for dir type. + L3E50 ldy #$A4 clear illegal filetype entry in fcb - sta fcbbuf,y + sta FCBs,y lda #$43 and report error sec rts -L3E59 lda fcbbuf+7,y use storage type as # of index levels +L3E59 lda FCBs+7,y use storage type as # of index levels sta levels since 1=seed, 2=sapling, 3=tree. - lda fcbbuf+8,y + lda FCBs+8,y and #$40 if previous data was modified then beq L3E6B disk must be updated. + jsr wfcbdat + bcs L3ED4 if error. + L3E6B ldy fcbptr test to see if current index block - lda fcbbuf+20,y is usable by checking if new + lda FCBs+20,y is usable by checking if new and #$FE position is within 128k of the sta scrtch beginning of current sapling level lda tposhi chunk. sec sbc scrtch bcc L3E9D branch if a new index block is needed. + cmp #$02 is new position within 128k of old ? bcs L3E9D branch if not. + ldx levels is it a seed file ? dex bne datlevel no, use current indexes. + L3E89 lda tposlh is new position < 512 ? lsr ora tposhi bne L3EEF no, mark both data and index block as - lda fcbbuf+12,y unallocated. 1st block is only block + + lda FCBs+12,y unallocated. 1st block is only block sta bloknml and it's data. - lda fcbbuf+13,y high block address. + lda FCBs+13,y high block address. jmp rnewpos go read in block and set statuses. -L3E9D lda fcbbuf+8,y check to see if previous index block + +L3E9D lda FCBs+8,y check to see if previous index block and #$80 was modified. beq L3EA9 read in over it if current up to date. + jsr wfcbidx go update index on disk (fcb block addr) bcs L3ED4 + L3EA9 ldx levels be sure there is a top index cpx #$03 before reading it... beq posindex branch if file is a tree. + lda tposhi is new position within range of a lsr sapling file (less than 128k) ? php save results lda #$07 (no level is allocated for new pos'n) plp restore z-flag. bne L3F18 go mark all as dummy. + jsr clrstats clr status bits 0,1,2 (index/data/alloc) + dex check for seed beq L3E89 if seed, check for position < 512. + jsr rfcbfst go get only index block. bcs L3ED4 if error. + ldy fcbptr save newly loaded index block's address. lda bloknml - sta fcbbuf+14,y + sta FCBs+14,y lda bloknml+1 - sta fcbbuf+15,y + sta FCBs+15,y bcc datlevel branch always + L3ED4 rts posindex jsr clrstats clr all alloc requirements for previous jsr rfcbfst position. get highest level index block bcs L3ED4 + lda tposhi then test for a sap level index block lsr tay @@ -404,17 +427,22 @@ posindex jsr clrstats clr all alloc requirements for previous inc zpt+1 cmp (zpt),y (both high and low = 0 if no index exists) bne saplevel + tax are both bytes 0 ? bne saplevel + dec zpt+1 + L3EEF lda #$03 show neither index or data block alloc'd bra L3F18 + saplevel sta bloknml read in next lower index block. lda (zpt),y (high address) sta bloknml+1 dec zpt+1 jsr rfcbidx read in sapling level bcs L3ED4 + datlevel lda tposhi get block address of data block lsr lda tposlh ( if there is one ) @@ -424,17 +452,21 @@ datlevel lda tposhi get block address of data block inc zpt+1 cmp (zpt),y bne L3F51 + tax bne L3F51 + lda #$01 show data block as never been allocated dec zpt+1 + L3F18 ldy fcbptr set status to show what's missing - ora fcbbuf+8,y - sta fcbbuf+8,y + ora FCBs+8,y + sta FCBs+8,y lsr discard bit that says data block lsr unallocated because carry indicates if jsr zipdata index block is invalid and needs to be bcc svmark zeroed. branch if it doesn't need zeroed + jsr zeroindex zero index block in user's i/o buffer bra svmark @@ -458,30 +490,38 @@ zipdata lda #$00 L3F42 sta (datptr),y zero out data area iny bne L3F42 + inc datptr+1 + L3F49 sta (datptr),y iny bne L3F49 + dec datptr+1 rts + L3F51 sta bloknml get data block of new position lda (zpt),y (high address) dec zpt+1 + rnewpos sta bloknml+1 jsr rfcbdat bcs L3F86 if error. + jsr clrstats show whole chain is allocated. + svmark ldy fcbptr update position in fcb iny iny ldx #$02 -L3F68 lda fcbbuf+18,y save old mark in case calling routine +L3F68 lda FCBs+18,y save old mark in case calling routine sta oldmark,x fails later. lda tposll,x - sta fcbbuf+18,y + sta FCBs+18,y dey dex move 3 byte position marker bpl L3F68 + clc set up indirect address to buffer lda datptr page pointed to by the current sta sos position marker. @@ -490,10 +530,11 @@ L3F68 lda fcbbuf+18,y save old mark in case calling routine adc datptr+1 sta sos+1 L3F86 rts carry set if error + clrstats ldy fcbptr clear allocation states for data block - lda fcbbuf+8,y and both levels of indexes/ + lda FCBs+8,y and both levels of indexes/ and #$F8 - sta fcbbuf+8,y indicates that either they exist now + sta FCBs+8,y indicates that either they exist now rts or unnecessary for current position. dirmark cmp #$0D is it a directory ? @@ -505,27 +546,35 @@ dirmark cmp #$0D is it a directory ? L3F9C lda scrtch recover results of previous subtraction. lsr use difference as counter for how many sta cntent blocks must be read to get to new pos'n. - lda fcbbuf+19,y test for positive direction + lda FCBs+19,y test for positive direction cmp tposlh indicated by carry. bcc L3FB9 if set, position forward. otherwise, + L3FAB ldy #$00 read directory file in reverse order. jsr dirpos1 read previous block. bcs L3FD6 if error. + inc cntent count up to 128. bpl L3FAB loop if more blocks to pass over. + bmi svmark always. + L3FB9 ldy #$02 position is forward from current. jsr dirpos1 read next directory block bcs L3FD6 if error. + dec cntent bne L3FB9 loop if position not found in this block + beq svmark branch always. + dirpos1 lda (datptr),y get link address of previous or next sta bloknml directory block. cmp #$01 test for null byte into carry iny but first be sure there is a link. lda (datptr),y get the rest of the link. bne L3FD8 branch if certain link exists. + bcs L3FD8 was the low part null as well ? lda #MLI.E.EOF something is wrong with directory file! @@ -541,11 +590,12 @@ rfcbdat lda #$01 read command ldx #datptr points at address of data buffer. jsr fileio1 go do file input. bcs L3FF2 error. + ldy fcbptr lda bloknml - sta fcbbuf+16,y save block # just read in fcb. + sta FCBs+16,y save block # just read in fcb. lda bloknml+1 - sta fcbbuf+17,y + sta FCBs+17,y L3FF2 rts rfcbidx lda #$01 prepare to read index block : read command @@ -553,11 +603,12 @@ rfcbidx lda #$01 prepare to read index block : read command ldx #$48 address of current index buffer. jsr fileio1 go read index block. bcs L400C error + ldy fcbptr lda bloknml - sta fcbbuf+14,y save block address of this index in fcb + sta FCBs+14,y save block address of this index in fcb lda bloknml+1 - sta fcbbuf+15,y + sta FCBs+15,y clc L400C rts @@ -576,9 +627,9 @@ rfcbfst lda #$01 read command. ldx #$48 rd block into index portion of file buf dofileio sta A4L command - lda fcbbuf,y get disk block address from fcb. + lda FCBs,y get disk block address from fcb. sta bloknml block 0 not legal - cmp fcbbuf+1,y + cmp FCBs+1,y bne L4031 cmp #$00 are both bytes 0 ? bne L4031 no, continue request @@ -586,7 +637,7 @@ dofileio sta A4L command lda #$0C otherwise, allocation error. jsr sysdeath doesn't return... -L4031 lda fcbbuf+1,y high address of disk block +L4031 lda FCBs+1,y high address of disk block sta bloknml+1 fileio1 php no interrupts @@ -596,7 +647,7 @@ fileio1 php no interrupts lda $01,x sta buf+1 and pass address to device handler ldy fcbptr - lda fcbbuf+1,y + lda FCBs+1,y sta devnum along with device #. lda #$FF also, set to indicate reg call made to sta ioaccess device handler. @@ -634,8 +685,8 @@ wfcbidx jsr upbmap update bitmap. bcs L4096 if errors. lda #$7F mark index status as current. L408D ldy fcbptr change status byte to reflect - and fcbbuf+8,y successful disk file update. - sta fcbbuf+8,y (carry is unaffected) + and FCBs+8,y successful disk file update. + sta FCBs+8,y (carry is unaffected) L4096 rts *-------------------------------------- XDOS.Open jsr findfile look up the file. @@ -663,7 +714,7 @@ L40B9 ldx #$1F assign fcb, lda #0 -L40BD sta fcbbuf,y but clean it first. +L40BD sta FCBs,y but clean it first. iny dex bpl L40BD @@ -674,7 +725,7 @@ L40BD sta fcbbuf,y but clean it first. tay L40CB lda d_dev-1,x move ownership info. - sta fcbbuf,y note: this code depends upon the defined + sta FCBs,y note: this code depends upon the defined dey order of both the fcb and directory dex entry buffer. bne L40CB @@ -685,7 +736,7 @@ L40CB lda d_dev-1,x move ownership info. lsr lsr tax save in x for later comparison - sta fcbbuf+7,y and in fcb for future access. + sta FCBs+7,y and in fcb for future access. lda d_attr get file's attributes and use it and #$03 as a default access request. cpx #$0D if directory, don't allow write enable. @@ -693,7 +744,7 @@ L40CB lda d_dev-1,x move ownership info. and #$01 read enabled bit -L40EB sta fcbbuf+9,y +L40EB sta FCBs+9,y and #$02 check for write enabled request. beq L40F7 branch for open as read-only @@ -713,25 +764,25 @@ L4101 sta bloknml+1 of file and current usage count. ora ofcbtbl,x this is done via a translation table tay between directory info and fcb. lda d_frst,x - sta fcbbuf,y + sta FCBs,y dex bpl L4101 last loop stores hi address of 1st block sta bloknml and this is the low one. ldy fcbptr lda cntent this was set up by 'tstopen'. - sta fcbbuf,y claim fcb for this file. + sta FCBs,y claim fcb for this file. jsr alcbuffr go allocate buffer in memory tables. bcs L4147 if errors. jsr fndfcbuf rtn addr of bufs in data & index ptrs. lda flevel mark level at which - sta fcbbuf+27,y file was opened. - lda fcbbuf+7,y file must be positioned at beginning. + sta FCBs+27,y file was opened. + lda FCBs+7,y file must be positioned at beginning. cmp #$04 is it a tree file ? bcs L415E no, assume a directory. lda #$FF fool the position routine into giving - sta fcbbuf+20,y a valid position with preloaded data, + sta FCBs+20,y a valid position with preloaded data, ldy #$02 etc. set desired position to 0. lda #$00 @@ -745,14 +796,14 @@ L413C sta tposll,y L4147 pha save error code. ldy fcbptr free buffer space. - lda fcbbuf+11,y + lda FCBs+11,y beq L4156 if no bufnum, ok because never alloc'd. jsr relbuffr go release buffer. ldy fcbptr since error was before file was L4156 lda #$00 successfully opened, then it is - sta fcbbuf,y necessary to release fcb also. + sta FCBs,y necessary to release fcb also. pla error code. sec rts @@ -767,7 +818,7 @@ L4163 ldx vcbptr index to vcb. * ror VCBs+VCB.OF,x least 1 file active. ldy fcbptr index to fcb. - lda fcbbuf,y return ref # to user. + lda FCBs,y return ref # to user. ldy #$05 sta (A3L),y clc open is successful @@ -784,7 +835,7 @@ L4188 tay index to next fcb. inc cntent -L4191 lda fcbbuf,y is this fcb in use ? +L4191 lda FCBs,y is this fcb in use ? bne L41A3 yes. txa if not, should we claim it ? @@ -800,7 +851,7 @@ L41A3 tya add offset to index to ownership info tay and put it back in y. ldx #$06 index to directory entry owner info. -L41A9 lda fcbbuf,y all bytes must match to say that it's +L41A9 lda FCBs,y all bytes must match to say that it's cmp d_dev-1,x the same file again. bne L41C1 if not, then next fcb. @@ -809,7 +860,7 @@ L41A9 lda fcbbuf,y all bytes must match to say that it's bne L41A9 loop to check all owner info. inc totent file is already open, now see - lda fcbbuf+9,y if it's already opened for write. and #$02 if so report file busy (with carry set). + lda FCBs+9,y if it's already opened for write. and #$02 if so report file busy (with carry set). and #$02 if so report file busy (with carry set). beq L41C1 branch if this file is read access only. sec diff --git a/ProDOS.FX/ProDOS.S.XDOS.D.txt b/ProDOS.FX/ProDOS.S.XDOS.D.txt index a698e52d..d0ed2d85 100644 --- a/ProDOS.FX/ProDOS.S.XDOS.D.txt +++ b/ProDOS.FX/ProDOS.S.XDOS.D.txt @@ -12,11 +12,11 @@ XDOS.Read jsr mvdbufr xfer buffer address and request count bcc L4205 branch if result mark < eof. adjust ldy fcbptr request to read until just before eof. - lda fcbbuf+21,y result = (eof-1) - position + lda FCBs+21,y result = (eof-1) - position sbc tposll sta cbytes sta rwreql - lda fcbbuf+22,y + lda FCBs+22,y sbc tposlh sta cbytes+1 sta rwreqh @@ -158,12 +158,12 @@ preprw ldy fcbptr adj pointer to user's buffer to make sta usrbuf bcs L42E9 if no adjustment to hi address needed dec usrbuf+1 -L42E9 lda fcbbuf+31,y test for new line enabled. +L42E9 lda FCBs+31,y test for new line enabled. clc beq L42F9 if new line not enabled. sec carry indicates new line enabled sta nlmask - lda fcbbuf+10,y move newline character to more + lda FCBs+10,y move newline character to more sta nlchar accesible spot. L42F9 ldy tposll index to 1st data. lda datptr reset low order of position pointer to @@ -279,10 +279,10 @@ dread jsr rdposn ldy #$00 provide dummy back pointer for future ldx fcbptr re-position. x = hi byte of last block -L43A6 lda fcbbuf+16,x +L43A6 lda FCBs+16,x sta (datptr),y - stz fcbbuf+16,x mark current block as impossible + stz FCBs+16,x mark current block as impossible inx iny inc indexes to do both hi and low bytes cpy #$02 @@ -302,7 +302,7 @@ mvcbytes ldy #$04 move request count to a more accessable location sta cbytes+1 sta rwreqh ldy fcbptr return y = val(fcbptr), - lda fcbbuf+9,y a = attributes + lda FCBs+9,y a = attributes clc and carry clear... rts @@ -314,7 +314,7 @@ mvdbufr ldy #$02 move the pointer to user's buffer sta usrbuf+1 gfcbstyp ldy fcbptr return storage type - lda fcbbuf+7,y + lda FCBs+7,y rts * this subroutine adds the requested byte count to mark and returns sum @@ -327,7 +327,7 @@ gfcbstyp ldy fcbptr return storage type calcmrk ldx #$00 ldy fcbptr clc -L43EE lda fcbbuf+18,y +L43EE lda FCBs+18,y sta tposll,x sta oldmark,x adc cbytes,x @@ -341,7 +341,7 @@ L43EE lda fcbbuf+18,y bne L43EE always. eoftest lda scrtch,x new mark in scrtch. - cmp fcbbuf+21,y is new position > eof ? + cmp FCBs+21,y is new position > eof ? bcc L4414 no, proceed. bne L4414 yes, adjust 'cbytes' request @@ -354,9 +354,9 @@ L4414 rts werreof jsr plus2fcb reset eof to pre-error position. L4418 lda oldeof,x place oldeof back into fcb - sta fcbbuf+21,y + sta FCBs+21,y lda oldmark,x also reset mark to last best - sta fcbbuf+18,y write position + sta FCBs+18,y write position sta scrtch,x and copy mark to scrtch for test of dey eof less than mark. dex @@ -369,12 +369,12 @@ L4418 lda oldeof,x place oldeof back into fcb wadjeof jsr plus2fcb get y=fcbptr+2, x=2, a=y. -L4434 lda fcbbuf+21,y copy eof to old eof +L4434 lda FCBs+21,y copy eof to old eof sta oldeof,x bcc L4442 and if carry set... lda scrtch,x then copy scrtch to fcb's eof. - sta fcbbuf+21,y + sta FCBs+21,y L4442 dey dex copy all 3 bytes @@ -457,7 +457,7 @@ L44B8 jsr alcwblk go allocate for data block. jsr gfcbstat clear allocation required bits in status ora #$80 but first indicate index block is dirty. and #$F8 - sta fcbbuf+8,y + sta FCBs+8,y lda tposhi calculate position within index block. lsr lda tposlh @@ -471,9 +471,9 @@ L44B8 jsr alcwblk go allocate for data block. lda scrtch block. get low block address. sta (zpt),y store low address. ldy fcbptr update fcb to indicate that this block - sta fcbbuf+16,y is allocated. + sta FCBs+16,y is allocated. txa get high address again. - sta fcbbuf+17,y + sta FCBs+17,y L44E9 jsr preprw jsr wrtpart @@ -541,7 +541,7 @@ L4549 sty tposll save low position php save statuses jsr gfcbstat ora #$50 - sta fcbbuf+8,y + sta FCBs+8,y clc adjust user's low buffer address lda tposll adc usrbuf @@ -583,9 +583,9 @@ L457A jsr alcwblk get another block address for the sap sta (zpt),y save hi address dec zpt+1 ldy fcbptr make newly allocated block the current - sta fcbbuf+15,y index block. + sta FCBs+15,y index block. txa - sta fcbbuf+14,y + sta FCBs+14,y jsr wfcbfst save new top of tree bcs L45B1 @@ -604,18 +604,18 @@ swapdown jsr alcwblk make current seed into a sapling, allocate a block befo bcs L45F6 return errors. ldy fcbptr get previous first block - lda fcbbuf+12,y address into index block. + lda FCBs+12,y address into index block. pha save temporarily while swapping in new lda scrtch top index. get new block address (low) tax - sta fcbbuf+12,y - lda fcbbuf+13,y + sta FCBs+12,y + lda FCBs+13,y pha lda scrtch+1 and high address too - sta fcbbuf+13,y - sta fcbbuf+15,y make new top also the current index in + sta FCBs+13,y + sta FCBs+15,y make new top also the current index in txa memory. get low address again. - sta fcbbuf+14,y + sta FCBs+14,y inc zpt+1 make previous the 1st entry in sub index pla sta (zpt) @@ -627,10 +627,10 @@ swapdown jsr alcwblk make current seed into a sapling, allocate a block befo jsr gfcbstyp now adjust storage type by adding 1 adc #$01 (seed becomes sapling becomes tree) - sta fcbbuf+7,y - lda fcbbuf+8,y mark storage type modified + sta FCBs+7,y + lda FCBs+8,y mark storage type modified ora #$08 - sta fcbbuf+8,y + sta FCBs+8,y clc no error L45F6 rts @@ -641,14 +641,14 @@ alcwblk jsr alc1blk jsr gfcbstat mark usage as modified ora #$10 - sta fcbbuf+8,y - lda fcbbuf+24,y inc current usage count by 1 + sta FCBs+8,y + lda FCBs+24,y inc current usage count by 1 clc adc #$01 - sta fcbbuf+24,y - lda fcbbuf+25,y + sta FCBs+24,y + lda FCBs+25,y adc #$00 - sta fcbbuf+25,y + sta FCBs+25,y L4615 clc no error L4616 rts @@ -657,7 +657,7 @@ tstwprot jsr gfcbstat check for 'never been modified' condition and #$F0 bne L4615 ordinary rts if known write ok. - lda fcbbuf+1,y get file's dev #. + lda FCBs+1,y get file's dev #. sta devnum get current status of block device. twrprot1 sta unitnum make the device status call diff --git a/ProDOS.FX/ProDOS.S.XDOS.E.txt b/ProDOS.FX/ProDOS.S.XDOS.E.txt index 38ea898d..718dcdfb 100644 --- a/ProDOS.FX/ProDOS.S.XDOS.E.txt +++ b/ProDOS.FX/ProDOS.S.XDOS.E.txt @@ -10,11 +10,11 @@ XDOS.Close ldy #$01 close all ? L4654 sta fcbptr save current low byte of pointer. tay get the level at which the file - lda fcbbuf+27,y was opened. + lda FCBs+27,y was opened. cmp flevel if file's level is < global level bcc L4675 then don't close. - lda fcbbuf,y is this reference file open ? + lda FCBs,y is this reference file open ? beq L4675 no, try next. jsr flush2 clean it out... @@ -40,14 +40,14 @@ L4683 jsr flush1 flush file 1st (including updating bcs L46B6 bitmap). branch if errors. close2 ldy fcbptr - lda fcbbuf+11,y release file buffer + lda FCBs+11,y release file buffer jsr relbuffr bcs L46B6 lda #$00 ldy fcbptr - sta fcbbuf,y free fcb too - lda fcbbuf+1,y + sta FCBs,y free fcb too + lda FCBs+1,y sta devnum go look for associated vcb jsr fnddvcb @@ -71,7 +71,7 @@ XDOS.Flush ldy #$01 flush all ? lda #$00 start at the beginning. L46C3 sta fcbptr save current low byte of pointer. tay index to ref #. - lda fcbbuf,y is this reference file open ? + lda FCBs,y is this reference file open ? beq L46D1 no, try next. jsr flush2 clean it out... @@ -97,11 +97,11 @@ flush1 stz cferr for normal refnum flush, clear global error. jsr findfcb setup pointer to fcb user references. bcs L46E6 return any errors. -L46F1 lda fcbbuf+9,y test to see if file is modified. +L46F1 lda FCBs+9,y test to see if file is modified. and #$02 is it write enabled ? beq L46D9 branch if 'read only' - lda fcbbuf+28,y has eof been modified ? + lda FCBs+28,y has eof been modified ? bmi L4704 if yes. jsr gfcbstat has data been modified ? @@ -126,7 +126,7 @@ L471C lda #$06 prepare to update directory tax ora fcbptr tay -L4723 lda fcbbuf,y note: this code depends on the defined +L4723 lda FCBs,y note: this code depends on the defined sta d_dev-1,x order of the file control block and the dey temporary directory area in 'work space' dex @@ -155,24 +155,24 @@ L4755 jsr entcalc buffer. set up pointer to entry. jsr moventry move entry to temp entry buffer in ldy fcbptr 'work space'. update 'blocks used' count - lda fcbbuf+24,y + lda FCBs+24,y sta d_usage - lda fcbbuf+25,y + lda FCBs+25,y sta d_usage+1 ldx #$00 and move in end of file mark whether -L476C lda fcbbuf+21,y needed or not. +L476C lda FCBs+21,y needed or not. sta d_eof,x inx cpx #$03 move all 3 bytes beq L4780 - lda fcbbuf+12,y also move in the address of the file's + lda FCBs+12,y also move in the address of the file's sta d_filid,x first block since it might have changed iny since the file first opened. bne L476C branch always. -L4780 lda fcbbuf+5,y the last thing to update is storage +L4780 lda FCBs+5,y the last thing to update is storage asl type (y=fcbptr+2). shift into high asl nibble. asl @@ -186,9 +186,9 @@ L4780 lda fcbbuf+5,y the last thing to update is storage bcs glberr error. ldy fcbptr mark - lda fcbbuf+28,y fcb/directory + lda FCBs+28,y fcb/directory and #$7F as - sta fcbbuf+28,y undirty. + sta FCBs+28,y undirty. lda d_dev see if bitmap should be written. cmp bmadev is it in same as current file ? bne L47B2 yes, put it on the disk if necessary. @@ -216,7 +216,7 @@ L47C1 pla rts gfcbstat ldy fcbptr index to fcb. - lda fcbbuf+8,y return status byte. + lda FCBs+8,y return status byte. rts L47CA lda #MLI.E.LOCKED access error @@ -232,7 +232,7 @@ XDOS.SetEOF jsr gfcbstyp can only move end of tree, sapling or seed. asl asl sta stortyp may be used later. - lda fcbbuf+9,y + lda FCBs+9,y and #$02 is write enabled to set new eof ? beq L47CA no, access error. @@ -244,7 +244,7 @@ XDOS.SetEOF jsr gfcbstyp can only move end of tree, sapling or seed. iny upon contraction. ldx #$02 all 3 bytes of the eof -L47EF lda fcbbuf+21,y +L47EF lda FCBs+21,y sta oldeof,x dey dex @@ -275,7 +275,7 @@ eofset ldy #$04 inx L481C lda (A3L),y - sta fcbbuf+21,x + sta FCBs+21,x dex dey cpy #$02 all 3 bytes moved ? @@ -297,7 +297,7 @@ purge jsr flush1 make sure file is current iny ldx #$02 -L4840 lda fcbbuf+18,y +L4840 lda FCBs+18,y cmp tposll,x compare until not equal or carry clear. bcc L485F branch if eof > mark. @@ -311,7 +311,7 @@ L484E ldy fcbptr ldx #$00 L4853 lda tposll,x fake position, correct position will - sta fcbbuf+18,y be made below... + sta FCBs+18,y be made below... iny inx cpx #$03 move all 3 bytes @@ -348,9 +348,9 @@ L485F jsr tkfrecnt force free block count before releasing L489F sta dseed+1 L48A2 ldy fcbptr also must pass file's 1st block address. - lda fcbbuf+12,y + lda FCBs+12,y sta firstbl - lda fcbbuf+13,y + lda FCBs+13,y sta firstbh stz deblock lastly, initialize # of blocks to stz deblock+1 be free'd. @@ -362,10 +362,10 @@ L48A2 ldy fcbptr also must pass file's 1st block address. ldx #$00 L48C2 lda firstbl,x - sta fcbbuf+12,y move in possible new first file block - lda fcbbuf+24,y address. adjust usage count also + sta FCBs+12,y move in possible new first file block + lda FCBs+24,y address. adjust usage count also sbc deblock,x - sta fcbbuf+24,y + sta FCBs+24,y iny inx txa @@ -378,7 +378,7 @@ L48C2 lda firstbl,x lsr lsr ldy fcbptr and save it in fcb. - sta fcbbuf+7,y + sta FCBs+7,y jsr clrstats make it look as though position has jsr dvcbrev nothing allocated, update total blocks ldy fcbptr in fcb and correct position. @@ -386,10 +386,10 @@ L48C2 lda firstbl,x iny ldx #$02 -L48F2 lda fcbbuf+18,y tell 'rdposn' to go to correct +L48F2 lda FCBs+18,y tell 'rdposn' to go to correct sta tposll,x eor #$80 position from incorrect place. - sta fcbbuf+18,y + sta FCBs+18,y dey dex bpl L48F2 @@ -427,7 +427,7 @@ XDOS.GetEOF ldx fcbptr index to end of file mark ldy #$02 and index to user's call parameters -L4924 lda fcbbuf+21,x +L4924 lda FCBs+21,x sta (A3L),y inx iny @@ -441,49 +441,49 @@ XDOS.NewLine ldy #$02 adjust newline status for open file. lda (A3L),y on or off ? ldx fcbptr it will be 0 if off. - sta fcbbuf+31,x set new line mask + sta FCBs+31,x set new line mask iny lda (A3L),y and move in 'new-line' byte - sta fcbbuf+10,x + sta FCBs+10,x clc no error possible rts *-------------------------------------- XDOS.GetFileInfoEx jsr findfile see if file exists - bcs .9 + bcc .1 - ldy #3 - lda (A3L),y - sta zpt - iny - lda (A3L),y - sta zpt+1 - -* ldy #S.FIEX.BLKPTR+2-1 - -*.1 lda d_filid,y -* sta (zpt),y -* dey -* bpl .1 - -* ldx #7 -* ldy #S.FIEX.ACL+7 - -*.2 lda h_acl,x -* sta (zpt),y -* dex -* dey -* bpl .2 + cmp #MLI.E.INVPATH + sec + bne .9 + +.1 ldx #S.FIEX.BLKPTR+2-1 + ldy #S.FIEX.BLKPTR+2-1+3 + +.2 lda d_stor,x + sta (A3L),y + dey + dex + bpl .2 + + ldx #7 + ldy #S.FIEX.ACL+7+3 + +.3 lda h_acl,x + sta (A3L),y + dey + dex + bpl .3 +* clc .9 rts *-------------------------------------- XDOS.GetFileInfo jsr findfile look for file. bcc L4988 no error. - cmp #$40 was it a root directory file ? + cmp #MLI.E.INVPATH was it a root directory file ? sec (in case of no match) bne L49A4 if not, then error. @@ -535,9 +535,30 @@ L4994 lda inftabl-3,y L49A4 rts *-------------------------------------- XDOS.SetFileInfoEx - - clc - rts + jsr findfile + bcs .9 + + ldx #S.FIEX.BLKPTR+2-1 + ldy #S.FIEX.BLKPTR+2-1+3 + +.2 lda (A3L),y + sta d_stor,x + dey + dex + bpl .2 + + ldx #7 + ldy #S.FIEX.ACL+7+3 + +.3 lda (A3L),y + sta h_acl,x + dey + dex + bpl .3 + + jmp drevise1 + +.9 rts *-------------------------------------- XDOS.SetFileInfo jsr findfile get the file to work on. diff --git a/ProDOS.FX/ProDOS.S.XDOS.F.txt b/ProDOS.FX/ProDOS.S.XDOS.F.txt index 511a5be3..e419c92d 100644 --- a/ProDOS.FX/ProDOS.S.XDOS.F.txt +++ b/ProDOS.FX/ProDOS.S.XDOS.F.txt @@ -144,9 +144,9 @@ fcbused pha mark fcb as dirty so the directory will be flushed on 'flush tya save regs. pha ldy fcbptr - lda fcbbuf+28,y fetch current fcb dirty byte. + lda FCBs+28,y fetch current fcb dirty byte. ora #$80 mark fcb as dirty. - sta fcbbuf+28,y save it back + sta FCBs+28,y save it back pla and restore regs. tay pla @@ -477,9 +477,9 @@ L4DFE dex set proper bits to 1 bne L4DFE ldy fcbptr calculate buffer number - lda fcbbuf,y + lda FCBs,y asl buffer number = (entnum) * 2. - sta fcbbuf+11,y save it in fcb. + sta FCBs+11,y save it in fcb. tax use entnum * 2 as index to global lda datptr+1 buffer addr tables. get addr already sta buftbl-1,x validated as good. store hi addr @@ -828,13 +828,13 @@ XDOS.ParamCnt .HS 020202FF parameter counts for the calls .HS 070102070A0201010303040401010202 .HS FF .HS 020202 - -* corresponding command function bytes - -XDOS.CmdFlags .HS A0A1A2A3 - .HS 84050607 + +XDOS.CmdFlags .HS A0A1A2 + .HS A384 + .HS 050607 .HS 88494A4B - .HS 2C2D4E4F + .HS 2C2D + .HS 4E4F .HS 50515253 .HS 9495 @@ -885,13 +885,11 @@ deathmsg .AS "SYS ERR-$0" deathmsg.LEN .EQ *-deathmsg *-------------------------------------- XDOS.DATA .DUMMY - -* note: this area is accessed by code that depends on the order of these -* variables in the file control block and temporary directory. - +*-------------------------------------- own_blk .HS 0000 own_ent .HS 00 own_len .HS 00 +*-------------------------------------- .DO ACL=1 h_acl .BS 8 .FIN @@ -903,7 +901,6 @@ h_attr .HS 00 attributes (protect bit, etc.) h_entln .HS 00 length of each entry in this directory h_maxent .HS 00 maximum number of entries per block h_fcnt .HS 0000 current # of files in this directory - h_bmap .HS 0000 address of first allocation bitmap h_tblk .HS 0000 total number of blocks on this unit *-------------------------------------- @@ -911,9 +908,8 @@ d_dev .HS 00 device number of this directory entry d_head .HS 0000 address of directory header d_entblk .HS 0000 address of block which contains entry d_entnum .HS 00 entry number within block - +*-------------------------------------- d_stor .BS 16 file name - d_filid .HS 00 user's identification byte d_frst .HS 0000 first block of file d_usage .HS 0000 # of blocks allocated to this file diff --git a/ProDOS.FX/ProDOS.S.XRW.txt b/ProDOS.FX/ProDOS.S.XRW.txt index ecf540ba..2b088808 100644 --- a/ProDOS.FX/ProDOS.S.XRW.txt +++ b/ProDOS.FX/ProDOS.S.XRW.txt @@ -40,7 +40,12 @@ L59A6 lda XRW.LastUnitUsed lda montimeh bne L59A6 -L59BD jsr XRW.AllPhaseOff make sure all motor phases are off. +L59BD ldx A2L + + bit IO.D2.Ph0Off,x make sure all motor phases are off + bit IO.D2.Ph3Off,x + bit IO.D2.Ph2Off,x + bit IO.D2.Ph1Off,x lda IO.D2.ReadMode,x turn off write enable X = slot $S0 nop @@ -142,6 +147,7 @@ L537C plp was motor on ? * motor was off, wait for it to speed up L537F jsr XRW.Wait100ms wait 100us for each count in montime + lda montimeh bmi L537F count up to 0000 @@ -745,73 +751,77 @@ XRW.Seek ldx XRW.UnitIndex ldy #0 -.1 lda XRW.CurrentQTrack - cmp XRW.TargetQTrack - beq .3 +.1 ldx XRW.CurrentQTrack + + tya + beq .2 + + txa + jsr XRW.PhaseOff - bcs .2 +.2 cpx XRW.TargetQTrack + beq .8 - inc CC, CurrentQTrack>TargetQTrack, must move in + bcs .3 + + inx CC, CurrentQTrack>TargetQTrack, must move in .HS B0 BCS -.2 dec CS, CurrentQTrackPULLW ZPPtr1 pathname rts *-------------------------------------- -SHARED.Stat.I >MLICALL MLIGETFILEINFO +SHARED.Stat.I bit CORE.FSID + bpl .1 + + >MLICALL MLIGETFILEINFOEX + bcs K.Pipe.RTS + + >LDYAI K.MLI.PARAMS+3 + >STYA ZPPtr3 + + bra SHARED.DirEnt2Stat + +.1 >MLICALL MLIGETFILEINFO bcs K.Pipe.RTS SHARED.GFI2Stat jsr SHARED.ClrStat @@ -381,17 +392,6 @@ SHARED.DirEnt2Stat ldx #K.S.STAT+S.STAT.MTIME jmp SHARED.PTime2StatAX *-------------------------------------- -SHARED.ClrStat ldx #S.STAT-1 - -.1 stz K.S.STAT,x - dex - bpl .1 - - lda CORE.FSID - sta K.S.STAT+S.STAT.FSID - - rts -*-------------------------------------- SHARED.Mode2Access clc rts @@ -457,6 +457,6 @@ SHARED.Stat.Dst .DA #S.STAT.P.TYPE,#S.STAT.P.AUXTYPE,#S.STAT.P.AUXTYPE+1 .DA #S.STAT.SIZE,#S.STAT.SIZE+1,#S.STAT.SIZE+2 *-------------------------------------- MAN -SAVE USR/SRC/SYS/KERNEL.S.STAT -LOAD USR/SRC/SYS/KERNEL.S +SAVE usr/src/sys/kernel.s.stat +LOAD usr/src/sys/kernel.s ASM