From e1230f4415853f2b391f451d68d8aa000ced0d52 Mon Sep 17 00:00:00 2001 From: Gwenhael Le Moine Date: Tue, 19 Mar 2024 23:33:35 +0100 Subject: [PATCH] 2005-06-14: Updated to version 1.37 Signed-off-by: Gwenhael Le Moine --- CARDCOPY.EXE | Bin Convert.exe | Bin EMU48.EXE | Bin 245760 -> 253952 bytes EMU48.TXT | 6 +- Emu48.url | 2 + MKE48.EXE | Bin Macro/Mac2txt.exe | Bin 0 -> 24576 bytes Macro/Mac2txt.txt | 121 ++++++++ MkShared.exe | Bin PROBLEMS.TXT | 4 +- ROMDUMP.EXE | Bin {sources => Sources}/Cardcopy/CARDCOPY.C | 0 {sources => Sources}/Cardcopy/CARDCOPY.DSP | 0 {sources => Sources}/Cardcopy/CARDCOPY.DSW | 0 {sources => Sources}/Cardcopy/TYPES.H | 0 {sources => Sources}/Convert/CONVERT.MAK | 0 {sources => Sources}/Convert/CONVERT.MDP | Bin {sources => Sources}/Convert/MAIN.C | 0 {sources => Sources}/Emu48/CHANGES.TXT | 164 ++++++++++ {sources => Sources}/Emu48/CHECKBOX.BMP | Bin 250 -> 250 bytes {sources => Sources}/Emu48/COLOR.H | 0 {sources => Sources}/Emu48/CURSOR.C | 0 {sources => Sources}/Emu48/DBGTOOL.BMP | Bin {sources => Sources}/Emu48/DDESERV.C | 2 - {sources => Sources}/Emu48/DEBUGGER.C | 2 +- {sources => Sources}/Emu48/DEBUGGER.H | 0 {sources => Sources}/Emu48/DISASM.C | 0 {sources => Sources}/Emu48/DISPLAY.C | 96 +++--- {sources => Sources}/Emu48/EMU48.C | 162 +++++----- {sources => Sources}/Emu48/EMU48.DSP | 18 +- {sources => Sources}/Emu48/EMU48.DSW | 0 {sources => Sources}/Emu48/EMU48.H | 14 + {sources => Sources}/Emu48/EMU48.ICO | Bin {sources => Sources}/Emu48/EMU48.RC | 54 +++- {sources => Sources}/Emu48/EMU48.XML | 0 {sources => Sources}/Emu48/ENGINE.C | 28 +- {sources => Sources}/Emu48/EXTERNAL.C | 0 {sources => Sources}/Emu48/FETCH.C | 0 {sources => Sources}/Emu48/FILES.C | 47 +-- {sources => Sources}/Emu48/I28F160.C | 0 {sources => Sources}/Emu48/I28F160.H | 0 {sources => Sources}/Emu48/IO.H | 0 {sources => Sources}/Emu48/KEYBOARD.C | 6 + Sources/Emu48/KEYMACRO.C | 339 +++++++++++++++++++++ {sources => Sources}/Emu48/KML.C | 199 +++++++----- {sources => Sources}/Emu48/KML.H | 2 + {sources => Sources}/Emu48/MOPS.C | 23 +- {sources => Sources}/Emu48/OPCODES.C | 8 +- {sources => Sources}/Emu48/OPCODES.H | 0 {sources => Sources}/Emu48/OPS.H | 4 + {sources => Sources}/Emu48/PCH.C | 0 {sources => Sources}/Emu48/PCH.H | 8 + Sources/Emu48/RESOURCE.H | 217 +++++++++++++ {sources => Sources}/Emu48/RPL.C | 0 {sources => Sources}/Emu48/SERIAL.C | 0 {sources => Sources}/Emu48/SETTINGS.C | 6 + {sources => Sources}/Emu48/TIMER.C | 35 +-- {sources => Sources}/Emu48/TYPES.H | 0 {sources => Sources}/GCCPatch/EMU48GCC.RC | 54 +++- {sources => Sources}/GCCPatch/Makefile | 5 +- {sources => Sources}/GCCPatch/PCH.H | 21 +- {sources => Sources}/GCCPatch/README.TXT | 2 +- {sources => Sources}/MkShared/MKSHARED.C | 0 {sources => Sources}/MkShared/MKSHARED.DSP | 0 {sources => Sources}/MkShared/MKSHARED.DSW | 0 {sources => Sources}/MkShared/MKSHARED.ICO | Bin {sources => Sources}/MkShared/MKSHARED.RC | 0 {sources => Sources}/MkShared/RESOURCE.H | 0 {sources => Sources}/Mke48/MKE48.C | 0 {sources => Sources}/Mke48/MKE48.DSP | 0 {sources => Sources}/Mke48/TYPES.H | 0 sources/Emu48/RESOURCE.H | 206 ------------- uninst.exe | Bin 0 -> 51311 bytes 73 files changed, 1338 insertions(+), 517 deletions(-) mode change 100644 => 100755 CARDCOPY.EXE mode change 100644 => 100755 Convert.exe mode change 100644 => 100755 EMU48.EXE create mode 100644 Emu48.url mode change 100644 => 100755 MKE48.EXE create mode 100755 Macro/Mac2txt.exe create mode 100644 Macro/Mac2txt.txt mode change 100644 => 100755 MkShared.exe mode change 100644 => 100755 ROMDUMP.EXE rename {sources => Sources}/Cardcopy/CARDCOPY.C (100%) rename {sources => Sources}/Cardcopy/CARDCOPY.DSP (100%) rename {sources => Sources}/Cardcopy/CARDCOPY.DSW (100%) rename {sources => Sources}/Cardcopy/TYPES.H (100%) rename {sources => Sources}/Convert/CONVERT.MAK (100%) rename {sources => Sources}/Convert/CONVERT.MDP (100%) rename {sources => Sources}/Convert/MAIN.C (100%) rename {sources => Sources}/Emu48/CHANGES.TXT (91%) rename {sources => Sources}/Emu48/CHECKBOX.BMP (76%) rename {sources => Sources}/Emu48/COLOR.H (100%) rename {sources => Sources}/Emu48/CURSOR.C (100%) rename {sources => Sources}/Emu48/DBGTOOL.BMP (100%) rename {sources => Sources}/Emu48/DDESERV.C (95%) rename {sources => Sources}/Emu48/DEBUGGER.C (96%) rename {sources => Sources}/Emu48/DEBUGGER.H (100%) rename {sources => Sources}/Emu48/DISASM.C (100%) rename {sources => Sources}/Emu48/DISPLAY.C (87%) rename {sources => Sources}/Emu48/EMU48.C (88%) rename {sources => Sources}/Emu48/EMU48.DSP (95%) rename {sources => Sources}/Emu48/EMU48.DSW (100%) rename {sources => Sources}/Emu48/EMU48.H (93%) rename {sources => Sources}/Emu48/EMU48.ICO (100%) rename {sources => Sources}/Emu48/EMU48.RC (90%) rename {sources => Sources}/Emu48/EMU48.XML (100%) rename {sources => Sources}/Emu48/ENGINE.C (92%) rename {sources => Sources}/Emu48/EXTERNAL.C (100%) rename {sources => Sources}/Emu48/FETCH.C (100%) rename {sources => Sources}/Emu48/FILES.C (93%) rename {sources => Sources}/Emu48/I28F160.C (100%) rename {sources => Sources}/Emu48/I28F160.H (100%) rename {sources => Sources}/Emu48/IO.H (100%) rename {sources => Sources}/Emu48/KEYBOARD.C (92%) create mode 100644 Sources/Emu48/KEYMACRO.C rename {sources => Sources}/Emu48/KML.C (89%) rename {sources => Sources}/Emu48/KML.H (90%) rename {sources => Sources}/Emu48/MOPS.C (95%) rename {sources => Sources}/Emu48/OPCODES.C (94%) rename {sources => Sources}/Emu48/OPCODES.H (100%) rename {sources => Sources}/Emu48/OPS.H (93%) rename {sources => Sources}/Emu48/PCH.C (100%) rename {sources => Sources}/Emu48/PCH.H (65%) create mode 100644 Sources/Emu48/RESOURCE.H rename {sources => Sources}/Emu48/RPL.C (100%) rename {sources => Sources}/Emu48/SERIAL.C (100%) rename {sources => Sources}/Emu48/SETTINGS.C (92%) rename {sources => Sources}/Emu48/TIMER.C (88%) rename {sources => Sources}/Emu48/TYPES.H (100%) rename {sources => Sources}/GCCPatch/EMU48GCC.RC (90%) rename {sources => Sources}/GCCPatch/Makefile (91%) rename {sources => Sources}/GCCPatch/PCH.H (50%) rename {sources => Sources}/GCCPatch/README.TXT (92%) rename {sources => Sources}/MkShared/MKSHARED.C (100%) rename {sources => Sources}/MkShared/MKSHARED.DSP (100%) rename {sources => Sources}/MkShared/MKSHARED.DSW (100%) rename {sources => Sources}/MkShared/MKSHARED.ICO (100%) rename {sources => Sources}/MkShared/MKSHARED.RC (100%) rename {sources => Sources}/MkShared/RESOURCE.H (100%) rename {sources => Sources}/Mke48/MKE48.C (100%) rename {sources => Sources}/Mke48/MKE48.DSP (100%) rename {sources => Sources}/Mke48/TYPES.H (100%) delete mode 100644 sources/Emu48/RESOURCE.H create mode 100755 uninst.exe diff --git a/CARDCOPY.EXE b/CARDCOPY.EXE old mode 100644 new mode 100755 diff --git a/Convert.exe b/Convert.exe old mode 100644 new mode 100755 diff --git a/EMU48.EXE b/EMU48.EXE old mode 100644 new mode 100755 index 2b58f952daba5e270560a993c09cc060c71c5c47..74a958c44089867e15e60c2cb0d34c73bd558c39 GIT binary patch literal 253952 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 literal 245760 zcmeFa4SZC^)jxhWyGhot>kYE2QG!NUG#XIaKno_(1wsfKbvFqKRuruk*VI;pUB#zS zlkRTG?zkikl%kTP5-raY7_qz|c^S=45yyc$n=H2(*ywY2$ z^1k!HJ>R<8Y|gSNpnvn`ypE4rr#+?q(tdIIQ&BwM_w3}SPAcht!L{iZ*FE(if1dhO zI<9HIxZc=!?sgH3WQ-m2C8x7UGBRi>7%buDgfG*D_xX-cBEb{vPp*D zBhjwpqpRkhU6R6AFJH0zZlsB}f>ubB8b;)!)Gz;iNr5jZ@FfMlq`;RH_>ux&Qs7Gp zd`W>XDexr)zNEnaAO%{6R?U-K`3C%XUO!K&%ftWlI+G)24X4eMx>h%@4$hOjhx3ZR z=9Y`+xW^UGcW1WJlsTGK7-khVTh*eP#$(^a%(7PY{X6D)jmKWflO);q7BV#+TWyyl zw`u7ew-<(Q^KQ)R%#-|KPZpk)Cst~k#mqDM=1D~zp8YM`zcG(8yw2RV@=%4X+*uRR zhti~)$k8X$BxYWGaGu1f@yc+XqfT!eV%ZC0J3vL-T-JIZC5*I6MvsyS4dt|?S zDi%{1Df`p#5OE#m#2h9D!<%pcDz_4|hBu>Muqm<}^cnCE2HZBgX98ICApmM+itUK_ zzLh5N+$_>u`p!J5V28ecL$Q6HwDaTQ#h&yH({amAdAGzMwVbD){^sb;g#lto>6HdZ zQzfWhtw_{<{{ddl6Up_IBK!9YAyYov6c|VRWIH?h(~dmHwt5fhk30*po#EYVxXB*| zsx#dAp~rMcvID&-t8^0O_ij$3Rx}wdgdES9drJU+JqK_<3ldU_9Ob}-S!ba`kc3xN zMm`Bp<6B4!tLh~5OD=|6BJV=Vhsm5fPQ+of_4I4`h8ju*cnD~z%~F@=a8^cEp^lb~ zRiMz!?O+0WUbe#-+lvk`oM)wIi4@z;x_{{%6T`RL zl|H^&`_Fs092%pRm6SuhuutkFSM4*BRMVZl7<~yYDhS=%=tnX7w~tL)f?ST+Ze&|b z*<$;|!>!tfZ)hKuXdfQYK0F$KXzBSE)Ll{m*mXKyzY88h)U%J7=@n|b4VihO6Ny%y zsN*Q`#LCz{4g;kLlcdr*7hyD_G-0NecAbOzYGPIg5g}4XH8S+GMO4|Hklw;A5Fv2k zaqBDZ0ioFw+{QWHE<;gI{b!WSCQ)ipkH^H`>ITt4HYsZH9?N=MX1SqP@s3inkV>HI z#sMy`!zb#%OA7&j$XNn8EmUFA{??V~A@20n`>CUt^S%dmR@-upzBzG=_n^hwah&Am~+=`u~O6bsP=IUpD00 z^#dj6j>xuj(r2X@h0sklU;x3T+XNN+0%`DR4?-RxhZi&J^IW470+pyQ*L4pNg*13K znxf}HVsl(ekl>8%VUs8iD{)~sqb5|kuI0qu*YYaYbnZ)9UcwC(nF5Em)X`^ha9~aW z%tVDau*%pT-ZEE_0${rUFga*`nIItF;LgT_9LPbFlLM(#fq*0&hyy@SmD4p>0kTm5 znN+xofCsJrjpvR-rb=ytOxgxfJ-@4}3|eU@E(~A0TV5MZF9tLR`a{bb0^Air^B+dX zN#UC*YN9$-y!hB&xa-<3s!d+o+1N?WZD%Ec?Ga$}3d8iW`FDh5f>0WG8e%CJZn<_h z)grI$XzVB8;fy(=HqGQ}$xYZheEYZz<{oJ(1nqJ0klOk)2biJN*s3r++ZijKvGw28@1oX8jC6 zT9yD_VQ<5sCwPndo^Sxs+@o)~DyY_gl}f5ToC~1Sb-4h|%tmPEh*ScFat_qi{peb_ z7;q6LL3x*|l!s z1gmY9@JEKMPXCrBXh-+`tox@0oh(9Pv-5N4QD*uz(SWN{XI0Ef4QzSgJ7}dFigif$ z`1y?=P{(oAg0MA_@!wB_PBuoZ%-a0zd6Iayj2V_sq4)kU+YHIN8u^<_r{*p2#TUfG3@Q)=)?eEOwo2{!5Wo$qk$B`6ko$nu4Pk3@;Lipcy$W{)v&-k)tkB3A z^ZZ3^2+GYz4;j{JgkZXf{A zm+MyI+WI2W+j)Ikg2wW)TY^94JgGr_iJE4mu1QX=shnzhX=F|HR8#wz)HFSHP1(sc zEvA~nBWr4)nqEJXn(|ZEG(Nc|7uD1|vL+wZ^yf3FDKB+R=Ox#)l4|N3SyL0$^w%?~ zDJOMJ6OwCcqM8Oq*7PLR6g!ievQyV&Nv`Q>s!1XxJ6!fwQ%y3`Pb+)I)HPX?YkHn) z${tzM8mj4%GpR`$Ruh{^Jt*F*&gb>*ZMg^3Vdj$nit(z0h6@WiuWLw*7f&Ny(-kjJ z3c09Ii3AK$s5@S0Koojrc%dAnkPSEo&41*Du04oK3bzET&Bz-u+=nfqEcNxr#T9SdBM&p6f+U9zJRj4rLOHs1#?Bg^{vR?nupTN$gV96 z7rjnO=_M3vCk@p)8E?1(s2Zh zu)d5^ng(606q-SWO16ta-5~r?7+3*oD{|XTdc)Jp_iXPfm^l;-vk>*@GN z-_fu49@1gx>xk$JcY6DD0qd)P##!Tf0f4k@%+mrgCjj+gTHWzc8lV7HM#fWI95z%|NlM#yi%uFQ;c6bkFGE0bZ zS2|oj6ZMpNPZ=NnHI3|WD!BeNUOA>|C@C6HiUzbexKxE3?A$cUv^<9QuDit)aR zO|rv|LlX;Qjqg%#czkN>bWHr%gF|pa<*?~RpDaHwGX!nedD>sEOM0 zCxIQvJAH~B9oqUNQQk~GPe7+_mHEGG1)rVY# zVO}37W^6p{13SD!-y_b-t1iO~R`z`g27AM&yh9c8s!iv^q}dW|YAUu%Fhwi-Dh0MjvnpFS03 zna}n#F7UZn?}7eqsem-HnJ-ftD{K|;Dmg%~S!hncT8zK3y>M9~3tT&xapR^kwl{L) z3s7JsL;%5x#*Ngt&TJJpU=v-FUp`}NCIn72en>nIE%=dl=p1=f3@wV;{QIfFPjcM2 zr(>Al!@eB=LzUG)370f8kbWbccdd3CI zbj9bovx{Z7DFHlMF7DwWk)p*)EpDfZ$vsqsmHNBL227;T+!z!E2hI#!TdXr7L)*XL z-3B}E+V?{U;JsAkizE?@9!3D}5>B9j)|;6%zmJ56OKx(05d2xd2h;8W(@MzECHvMR zrG(~x@(=&}9Nd1DZh!O(+=dqX**kQ(yz1X@PhG}R!n=%w3qbJhI^cahMrx1k2-Mpw zk*!}vOQGn{Te6vzCWCCp4U>B#yDma{H_%B)f(oH0^8U0WAz{10@F#4kQjd*D6_Unw zM=riRxqy$iwsEC#=<`@i_HR26NO1j9xN8}67?$1%M_T+a%I&MyN?J^yq$c z;XI_UNx76xosQ<3OQ>VzAY~C!ki~*qIA));K_Sp8%RM0S%78O_-F}cbW_@0CL7}7L zO+j{Q3R}Y)K+=fmw-l+lj5kEv=#p8$Q(pDVc#?;k@poD_CHP9=>noT2Pay?R2v|G0 zfmvrqB)gy+q60T3UF&fzmwgquU`|as=llP4cP!=|x=dcR2!)|`iXk+BK`N1VbCOVC z&G>jbn%cS13Q#otO{g8r_Um-ce%}dzS9|mOCoy9lOP5%q>E8 zPXpKpZSbEEgceftVuVQQrH&)d_1}hKaTwKvkWep15}}dm#mQxnR6@WUS1=bO6pRT9 z#waR_W+jx17^#w~Kk{5<|Jz!6?7;)LO|*_gKz^>r5~`;>u6Tr*5-^kIiLT??MAYdI z%f250N((6yNB`plP!JgQJVvWf1)LqP$DA(5H=qmZR#c+*=f|wif}=&ggTjV?%SLzB_Gi_^Hb`#XlHOOD`MF2E~% z1NdPY0T2`?>ab*mabh4rD;iudUh5tK-Q%qoX{#Qd!&yS&k<K0_g-}3l%!NakuM_!sEV@yMIMe6pmcu+C~m1Sf!hrnmiJI* z6)Rp#v$SDt{Z-_Q+uCB_(klC(gDs-Wa+F@SIfGNav^?>(O%#)%tjT(_FuAu3eE*10;+}4!G;d&LQI3o+c zjkp0L^h&5k2me>m&c`P6p{$@I5?tFoI@&O| z;Kc~Q8ieNoyqO%icM8cASuXTgu=fVEA|xoR^6kg>(V~Zmy%zb|U$l6W>q2XGDvBE# zNSVbZOPes@p-p0(Y0$_-@)Tkz<~2�GST|0gSOsNB$F9&c^M?Qp*~T&oFqZl}VAN zu$cbx!ao&-g|)(l#H?b3O{|GwZh~hO5k;=lR)liT!NU1a3txtRos@jXK|^J&zK64=M*k+>n#o6?m}cZ> za)mJpI_s8?J+?kgy-XM_06PKQ&r<1HgG5JU$GvG%u+(-5*cj|(+pr`S?lWZdHX&PN z(LK8O{7(c2^h8?VUaFI76=Ej~C^M6bL)A-G@_INi#d~`{i4xh9b@u?%XTV!W-KQ8V zp2l6_0Sp?L_J~pa6VRvbUJ!nXjs|_%cY+8eoJFKJk;)?ekFkQ8EBpS8caZjbC=mf@ zvacHnh2dpvK}N{Zz@0c9htevm0FDQ#p`h&h56ZJ^+3ea3C_l@?j?gW}(EM|jd1p)R za{`W|b2rn1X1Dz)97@t=NmqEl8@4QC7kWF=0*gOnOKg^To9$6U05{$CzakGB5O5q> z#+GKxMq2$J3d3+}vjv7_?3T1Ti^D0*6(=R$lHpv0##Pqc>w?>frhXC{E<)-SAtHnA z7m-C+NX?}MHENfYtUeK`a};ajfk_kx<2_`obln9@4D!w*vIUYh>3G zTxTWqK(Wq+kR3K@C2kiv){&bmwtL+hXpOMJ??dPh(#bbQICE*KbFS;9i7&k%Um0GM zWP@aj>c+3z&R?)e3Me2bE$ZCNw_W&;cAdw zk|Png(B6k$zK&dju;`5-j-*=_m}bBYE*ZE4N;U$;!Y!Bn=yO&=QCG0u9j@QzKVl?C>gv>fS#StfiG8plL=Bn zsCZ;%CP>U_n0=M!_GnEB)t^W;A$392UP9F-QY}dRO7yA{sx6V4i`0oxO9@rtF{^NG zNKJ307y<-j?uh&a-Zmarp^2uroRyGfM(o#o&L+r}o8$m~e4QFFL88AS(hElh_n*UJ z<}PzS`z_i8COM#x0wv@r2$b~UZ^FR__nMhz#Lzh8j*I;2e@V$6J3bH`c@83<@F_9H zh4du+4)D>HK@m1XLAc;3Aw^mb$*q%P)+WLf&n9|Kk6B5ghruaH1JdppCFE^)%Xl?x zFjXe}U*FHoyrcmML+!Ju4VZAR!1puxsFgr*wF^G@i!QfI?knxmzvK6H++UCD#c&r( z8QOn3?ZfcL0@OPx$>C zeph@IxJU+r4qDPM*1t6UYJz)7fnB;EznAcPV5(iZ2EV=;cB%I&v~!wWdKe%tZ81URJn-G%gr3hh!p;JL?bMI2oKxYeSo2o@@8VzkV>`kGtYGLKEp079mp0_i zqdrXGMD(wfB3b*X7jVV6!GyPP2D7YynX)j4k)?G+#zh|$uTRcJTDggh4_NtYdp47z zw~Kd&`8!MET@K#O5%1pS?{X9G^6+koc(;zt~1s;13aKAwx`BL0~qFF6eK{};?}O!W!KxKrT9IL-_P*-1Ae>kV^;Do z)f9$ng>~8v<5qh7{0+1uIQ#LF9>eT&-81ao&8DKx`oAt~EaCnr-SP)g_)Tn}8iqaL z(C7-8>}*CTA7K20o~%GIzXj9mMV*gbftLlnArntypM>Uo=It=uz^)6-VvidFD-G;n zW8guf=lx|dGu4MuAwy+HU)r)5_lE^q32dNsD*nP@-$b|yX{YsDI|%~`W(|aZy@{E^ zIQD5(Y!7!p&`K@t+utKvlD8u8^`e24p|shWP}-W|p|sg-2SRBN!THYyU?69!OSk~+ z?KU*VD2}$i1@&QZ7HPx*??$`8P+ec9#RM8MfTzHg?dJ$mSTV{7S4twRcs(IJ`&tSs z?o5Og&!kiyR(zBKh)EjMu;Ljh!ioX+?<9g{bRxhv3nKgpGj~pe_&W9|M9>Bj$7zBE zYwm6UQ84|lVV}sp-=Gaui)tgKa4!$@2XmIvN~GdgsEO?ke%l@1jip_<V33m{&w=iyV{=&9kLy@QU(sT&e)8td}HQ+){ zFoJf+ZCpS=3Qm$L_NI3z4O0h$J4=k)RF~Y|+3`{Kq8hnUvDi=8pnB3ba652p zP#^_1%?dUbR7S4TVngWy8@l7z{1#KWq?z*tXEk%?=zvx!(0NHgC({vmaj}LtlrGSr zJB|*8Dtytr3M=SWYRq11N1BXXiT-qin`LZCAZ$M_AxA$nNHy59TdN%nP?I)J-dt)`5? z-3f3|ZxgvEyE5_w;J}sEf1Svb6S)+bpjLBS6z%A8z?yPIzM*8gP=$07YSu+jjjjr0 z0B)B!BQupupQ+gILnczBZ4|&*xgPyQic|qY|1R7yGX)+ht4r(XzW)^@w@_pu8623( z2h8-)|16RlW>U)%@&e3d@tam|mtMi|hJ|+N zoA@oq@3;8v#qR`uc{kXlx%l0R--Gzo*lf5?icXX_=pB)8Wn6Tc4A(uJj)Bl{-MpJ0#s0h7l{h-F=fp~T zPGHKyB#Lh(sSTL7!>`q<*?J;2O(ktWG4l;5i2p@!s2`!By-9@}t|<@*%=*UKfMQN; zK%Kv5Hg$srB-iLr{V7Xf5eb7AYc2-ZL~{Fa7%uD+ zhur>_Fjdlza=WD9ktGyHRDP2kwn=CfF4#c>s}_qgby5{9c#NS-VB)|&LZBh{RK;Im z@K3zL-b!sTSOST6@Gl&yuuG@#yAU;8gP){7-9Mf3PoJjF)#(b3)UxA>xdn&aPBCqo zZCFcgeRt-ZW$@)MkI-LF2FTD8>sscGUEw*0=J=8{C#u|dJ2ENE(-5L!x9--dqAZnjHH@SBJ>slPXr=T~sm@>AX4`VpUO zII&oeqgd_Sxq)!UO$cmS=KVaMc1F6haCe#P{{@J)tmIrQ$o`zDIw`_M57s?`aregO zSh(k*l47EH`&n<=TuG5~!!~UKvUiiA@pC@YY(|AV447&@SD9YyrNw*NWd(#U=V)Il z`)NI68MLz>K1yIsvq%2{`3FsSBBX)+jb8xzZ3q-SBlHz?7s&pTzzB0A>J#zcqHH!K zVvB0M+hP=6w8Ul;^Mj(UR8b-n$N()s(*vxwWXnEc8s{<~^Lbf4cINU~H>T+n7b_#; zmgvAYz*P-n-eXeH&@eZFl}JykEZ##FZ|8NDwG?P>LkE5V^?8*Yx36P{{7McV=5l~N zAU9wX2ILXULmID{=7zY(cmT}-uR&s?o+7lEAEL*zGNTuObQnd)fX?CsC z!DqrW_aO3>85wul6z&qCzbuyrzCC`0i25!c@^5iZV8)_t%gv#0>xy1mkuhjLsq=h& zE(Lt=tAD339K?h=Sd(42rQt*#_FfEj>e``%BzFNyUO*u!QyM_obg7|1ik9#pIJ#Yv zEFt-FWX;y3p+NLJ_&YOOsc1B_l>io^GMtX zd|FkLhX&_3Sf&#NF(3AZ)3CukX3a+dl&(UMJwYT74N?irU|BX6Uh$6LE~a7S_S-nd z@fm!Lvv5%8(h}OMR-au$dn%te2LZXou6fcOU2)H z?_Joth>{#na{_ckzU`#kJ*V8AKg|Jnvi~SIh|8f~Rnv&>IWFFfMhfSyu$h20t%7S) zt8FHP@KaverQifCw1i9Z5cw3)BsNeOE)xrd=-g|=cKOB4@K6C(VqtS8YOh&D{eTK^ zO@~EA*J9vK`xs_GLLpw`C~Y34;cS5e?wRmL+CpV9f4KhQP{n*HXvz2Xr(qem$*ISE z!y&o6$(iO4KlVY$@HIfO^?x7C4bG>{?Ka#=zOZ`*`y1k>^W3+3OK5|n?r|&Mh~jF% zYe(d0x!4&wfthJ%B!3k&%;E9{X}KDkZO*TZ{L4ZZi50ed)vI8*Qdm+~&Ow}t4Z+xD zzOd(~QKMR|GEUiHtw6-K7Io5=e9t+dxjGUl)&mCFpcH-o3LMy`0y^r$f)!%_Dtewt zURV96MLQn(9yw#Vd$jOC5p>UEw}#A{IHYTG#!>QJ3g-rL*TE-6E&Cb)nr=*&V)(-L+BgIkV%J1ELs>^4nLA( z@+V>e*dKE{K#g4Rm#fPm?tD^J++J*J-5Vq)C%9wvZr_q&i%c5Jlin4VZ{pB+C&0G?Lq$P7zG>uP`iX z;T=ecf%4duP(6x!a@MVcBE1vUVXFs~@?4q1-AqAG3RYxgp@iZ}OBhF}!FzZyTxtFT z7%fO3Oi!aNxMr^rSIcT~&3O`6**8cmw?<%mGxK5m#fI3K4$MYy{srx$Dfo2aF{t_c z+8UP+`5lp~xWLkW<9w&<22cQ0C8v9E674H*h*k|An0TP^T}iq~YV4Avi=~j|K*;cu zkii}@gXYLJoE^*QMdjy?9f&Mc*}HXUH@WUA@u~d2c})LN8&u&v2~-s+evf zfqIR1qlKE_aNQ^vrmhiqH!dc^aeWp^a~E?(hGTs^#Yi%71qLPOxf)Lf&^oS{gsL(` zegeysvl|ImQ;6tK2;Sq2tsaA#YgF z#AJf1!GSNXD}Xhs=NivC3t~oNo|6q#)|pBFL1y4i$0Q7G%yvMP@9~Epx5t%@yrE)7 zHdi*zNU&5WoAcxi)ibhNNZ|wx4prC8BDiH3hKdI2!!5;B5g0?ktaQQ!2w7bPX)gz_ zHC=+RtV8E?{T8Sz=-@(fnbeRw9qR}tFeYeLy0@>R=1?Om)mAFJQM)FA=PsQZr*M`g z`AJ2{*4UoXq~S~O`>;{NkK=KE*oO0CorWJ=OCX#MCsD=uK@=k^$C%6tBAmjCIT}`! zDy(osVsjO}&-o*^#Rm;HsJtjAW|rY#4)CHK5lGn>NG`-FR0>m^u4lM}Up$d$5>mMLLcT#RSPRx`@| zbN89tNwd*Z`%GR!#n4VJ>@gX!y@VPBB4MY@v$&fDp^*LcupAK9@H`T{j~fwk^+2XX z78oX{t#B+!uaMEF+I|OE2{-&$Sq=rD+?-S8WD#Msv70UEdwit_)-1L}Qs^N%A9Z$m z0Utr=j$EZHO<*_Yktv?<0Hi9|gq`D|4i%g5=A1ee{1i5qZ9IF0~?T275WNP0ERaI z#1&8cwX#L$PauDJA{ay|>mshy!XzGGU6|66Q286cn`MnBW*Iz>s=IEWz2aN_ys?-k z9#f)#p#?P&0l6E)Sm7=<)z24sKPI1_h2MkxBe&;3s8)kvBavoZ>fj>#j6iW31*T%F z37COFfTU-c7ZVTv4{@iq0e0NLve|rI^YFa_b2g2@6LvVdi=w-r_=`p$YZAy}tHf!L zMbH#2JueXMoucFQ6u!e<4G54?NP!fZrNy6HsDv=}$+DE29!ERImvKhgfYt7IM;RdpWx%a20#N5U4Y-CyarA!D>5USk4g-+=8x|f>S)w4%|gB z=}Y(6B|Z`NIAK~%PfWx|MyDT!c7{YN6LG|1-V2>3CZ*^JIfY>{F@1b~8!hO=4#;Kq z8H%EwY3#m}{*T?`*;|t@9PBzr_7@<)-T$#?9J>-pe?pSyra@hXJAJS-!!ys0Miq6} zhvP8{^7k`9o{{KKn1X^1n#jYY6n+X;L8=jIK(q0>aor6h+W;fg1XdGv%I0qhBLLwG zV~P;UKcK13ANfA&`6tWaSbO9uIMqr)q}KOPU-Z(}KDu1g`UYJlv~Hw}sr6;Lq_@6+ z3%d!kUZ}HtS2LcVhF*X;d-)#mJWSuX=KxjKiXGv&V>~uuf$%GOH<^l#)q8<6JVAJw z+%ovtLxv~Nu0Ruyo#2fD^>YKO32E_;HBl26dXI7JL-zptHi3Pcz`jjj-zKnc6WF(L z>>CJ-(?OOnZvb=@H9(M*nxQ#(XIL|on2wRs2Fo^S5RZ2>5!s2xB7Ree>Qn-y5zILg zoenjKw-nv^wd91aCneOSA-{+${Wc_{RF5H*lx592Qv8assR@x!90EXcfFSt7!DX{& zQs*B<4t)P)IY5;)@sk0B9F!&G;1g92#K8c6n%+LV-EEh;@p~J;9m;i&at-4;(%#qFm;bHf_DcmW=Nm5fpJ96mXqNC-sc zj4(!Nx{$&c#T0aao07=d+gKJ4+j81GJq{#mDhOr1DcB=db zhhw5n22a#knxh;r`bM|iU<4tw1}W>Bb~D=RzM!43j74QT@^%q)Cex2(@?B+yi+G8{AB-P zVT)TTHL{O1Z@K3xxK_$t3s4?b0_Pr%LJ%Xb_oFnov+<)cYU$T*aGz5crllpAn#-7( zBB#;Kg}>IZEMTUHYGJ<#`B3JKJ&_;WuQXICOg)}+M4Jy`N2wHx+qMKsgb)~}RTd^E zlqV%{ts)v#__0=rEMh~8xC&Xchx9#x8i(Uht)8EV!2>z#bcdWtlveQ~OXbVJspT zvg2Ty(?tU_veVkBv1@63?=OGU;DzGtXumQ4pgl%jeurU&8fRVrk z)l<&XRIjPe-a^6e@YRsplzsZjgCV>0$7cNDqF0LwEbJ62%pZ6X!$PTTY98LOEh>lNilc8es>huJ}HTlKo z5=?h#O9jfpCzIRJXTUg!hU+_U-i{6O!ZruT&++YQI$!q9ycFK(@pgL3_6#n)qbZwM z#$z+Fv@8&yT1EY*s~a`vamsKqoE}?WesDj>(;LAEM>v+dzY;VzI0#4ImZo#pH{ura zo;+ZgWuJ>ABgfLH#j@dqv9%ugmZ!I_#3g97`?j!CP3O9^g2n~7Z<0NO%*@FFgA1F& z&=?}eR;)B{U!W9dlC{~P3Aq!hM?cVb5Hs|KN7EO2w+zi`r2(g)gY}mCce!&z4qa;= z{=qeUiuKbW%D-Z-c@OIKpC0+8_ub6R8E6H|{rN_aJUDJ1wMX`CyaY`dXQ!vsO@Uw* zV~_f~nclv1X8QTFDC`YiiW827@d#H>xp$+<7iK$}GLW|fXs6AY>kBvOJcDO}_L~Cj zZ3@~Dm^|RknIfbH;==`pD5VjclNXOAIK=wMBI4S9#Fth>msPWFMaE@$l`D((kOf!w zK*(dZwJ+hqOH4+IVx#<2mo2l{K*A)iDnZtSi0lFRAtKErA#EfZXm^I}%R#1~u51oH zf!B1#_hy(y=+)d!YLJ>AL|(Ro-nT!5TM#XC&H_O+><);6DT4LB$_q=FGM5)7IJ+rB9Spz?iTvJN6tA7 zf>bYI!0Voey3fZ@M|BHXbym6-YbxI@Do3h=D#zj!#uyqx0EQ~3c8ZEmL14$E45$0A zz|17NZ$iNY-Qk-`Mfc{@L2oVxehS?e;x>uyD^M?ylcASUmqbhQi3(1^0(rykN=|gO zbvUA(NPDi9w7I9lfe49K<_k&^_)0-#Fwx<%11n`-HiCE^==rB7-ghS)VCH<1=lPQ7 zZxHB<2&df*?;0Amb+LioD4L3M--rru71}gS#-Z&*(et$w-3mK*%w`9>YzC9JHv){^ z`9NufEN_6u(p5QJxquzLR^HHyN8)BxrOSdON3?+QS>z2pc;T!OAS=k zQROn=87R&ejU8V-9bR0P|BUfd%Z|HXw53oP?<0zM%tkh!yal3rin>zU=eULF>K2fO z$pjmq&kUXgLGuvh>82rO{V|azK1!jzZGu&8FN0%z#AQQG@Ms1gAPHE}$2i*gKpRD% z^r}~Um09^{h5L>}2CjYdz09zdtKfZne8X@xKWLmwqg$3|FghE(s2W7g7yW3C)Abq9 zNob@QV#s*CDHEBl)D9UCmX9fvhL4XJb+B>4vJKwb_h``KRst|?g*iATv4UM}FE;8U zAb^*n5m=1BDu$@$2UHDLu*C+?EVQ+?hf8wnMk0?WBKv5{8#I=20E#MaqS0Q}r1DjkTu(ht{$kD{`A7z-xU!{*YX{FHa2p(Tke<=-ol}oyIHx@z0@nqX8Pv zcnhhiXytxn9??p?BE_Q!ibkF@+_Qm(dq&Xu2FkGkvKia<;1G$u;*ak@ zQ;z!zP5FtzNv-s#DL}7g^}@mR75z%r!U~vrN9X-v9O-nhzIxJ z+(>KibkmxV6SXybqNXy!{Y2_%N(83>jXq65=c7|wiiI`ls@F6MpG+YI&4+tnUn2W{ zJ|?KNiaCNb}~ zt znZh;T#s-lD%izEm<{I#Rp5}o=!2v2L4h1J}W#4sUmhykxR)K8p^tN(bgyjZxqg6E! z{@jLRhBgYFLcW)@79R4&Ek*yw4Cg++E^{xga4Cdxr;qMa$kX@~PQ-l*2m-dz1pTce zzpT@3)+4~F|3|Qsl-Ai3t((JJcPFYFohA^1+_q{MB*g|`UW^j{k6UNpf)D3R#l;D> z*lAgwPbiaBleUAdH%YL1{Gy`)jghk5#V`CY?sOO!aT7!j;E`>+7Qm*9B@sG!5&>$4(PHu zj>w15Nh5l*LIP8wF=pPFci?Cpi*TF-hD51!Uh4TVOEsUoIZlGlar?!Sz>R*SCBb_j z$p{i)=4BxP^>*kXsffM)f~0htu>De~z=y_-MeOF!5@h?^7eqD#=_FNnBG>~mjBLLK z8Ap(<`EUZQkH09i;y95&|8I0KEjQ0kg;ufx8B5&=AO0Fz0<_#voJGfBxu+D5b6?6k z&0bpf&xwRn%FNj~_ThBMHG0l1&cehXPnOq~+9pKJ@Y?+ZH?~YZ&7|c58dSOaJsI`k z3kAM>5?ti5L9QfvM+;80kN`-zB*!DlL&yscBoip1VYgxU?lO!U@}4lN8Ws?_hJA5V z4f}iY-o-7hq_=VxO12$#{|-J7XV1ZX(|C9YaMl+)hHzEe1Yv>D-Xwf# zK_4=#CU-;`25>6ZG#>imA6^a!SyGSP+^EhAm5cQNP%jUMt{hLe){p#>b?JLC@=n;C zhN-(JpEGm$rQY}TIF@k+TbAzeO(*8Eo1N<1`ugB4H;T-F82@ z7tQa1TI=7(A95FJhw3^#LPz+(+7tOXyyfT!Smvz6pWKKUYIj8cgn=``x5e{SfoK6u zUWAp_gH~b00EO{AhK(REsB8g#mBMU@UX#e$i?3hE8@6~4QSOi>2)7b1VDTGJzzOTs zP63CCz8@0!x2aZ@UET)M4YH(1}bo~Aw;W@cyCimZw(6Cs@p<(>cLW`D?iO98# zO{dldtuP^4ko1BI@)ze(Zd%~1Mv8=o31`tX@?i?kXK+7O$osRJ5cWoPAH0H4APYr& zFWXwsBm4eWnhAsc=aHvyL}q}qqulw`~!hve8~oJiGVwfg|K z-%m9(s7ORTAn6KIdwo3N9%^l7`${B4mw;03C(-T|m1reVIJ!_FN)Ca{Y=0Fmqchtd zq~g?o=oA6Z6^Ca*#`Zh$xFWrMF{J`sPAjEdw}3JUXMu3g3;8G|uj8l#PB0UTDC{qA ztqxmIIql-{O%e(i=abj^Cal1yo`bVrKHiMAV+a^d0P<9L-__GZ-`jOpm8%+!RaK^# znkD-V=zN9I8%PSDZ5Ey#sAC@uENU#kl~gjWx{_l7{9(^!q}prwFo2=Nj%b2X(&LIR zgPacEAcS+`2+ygakHC9RaMbT2pSGS0|*XM-eAJFFg6lId4nOF z%%@U1s7(~lhU)pkd>6okR=tJt;mBa!1xqfQK_Wgd2oh;E`-lM(F@*c;5Fhv*yEJ{J zUHZ>Q?a~Y16Ti0}L+oIKUApo6I3oeSjmT5{fL(g@LAzvJj`I`TcIoAZ?GRyInqH3s z`_j|X>9_s|b}3^O_I@e9I$Y`JM3hS%t>%qm=SN;gU?9t|!{n2t04+La-hrddhW%r@ z8n_h#2r!xlbpV!V+kz(zH9 z4N8=aks@aB(nMi7xMnxwif9{1p@m2T^2K}Tm=@g?p$BzUY)377Q^a{_EIR$(BfngF z8>~6jc}JIWQHdn{#D{I@3=}{25j)1Wa?RMBIeCHigiik9&%o-C)iXq$PVP8P_&Rf-2H-O8ZjzDDthJ=#l@kqFM-^b0 zY7hZwdId^JszsnaZJlH%c7NzUkJz7xG9Xr|FftQ;j}(z|UrvnSEgp2x6R zvf0wNE;FP&R)pxn>gwSq!t3ahwnKT3RpZKfLNjtkcWPd)acU+4 zr5GTpQAYwGR4|8G|AM;GBKv*_rk1nKSh3?_VJcg(qS!pE z+(u>B_E6B=oT#uRslwU3QD@htrtF~k8Nj1%vi|2ufXQV~&4omG4;OQt0Fhvya$Qr) z`gwfgEJZgIE4sn1=!Q~7Hh(KJUD*f7;K0{{|>ZHP3=j>iG~{o*#}x_+V+xBYE6@z1^kQrBbiafS#vD&R%V zW3NSS{|wL(bjiCEdmU@KyZgrVVpSI&^1S+YROKW4oS;RyJ4JULKY27N2H`HC*;>Pi ztTu8DD-pAI`@?V~Ou%|(BGxWx#g@3HYnv{(mRQ$CL>`1azFr%bm9ua)0=Efd(2%; zhN#(l(CqD)M@PUoz3(3Jb~$iz6M1-0-)<2ob{e5P`!+*1C;&?g^=Q2s8aazw)Pj-mKdVNVCX#oBlvPug2Nu!GcfCL*kc1(ckyV^_eK++0gCTVN&e=y ziI-xh!=H$|nw<`+*o7#;)UO47~#?g=TQjE%_I0LMtsqU<=qrQaUNOfT=fWxJ;=b{l7s#cxqY(cVod81f94=kwfpnQ{Ikggp1RGLoPIZlLzBk z#x^4UjxLjAb<>DM1SEARC?J+=mBre`CWH8H0UlOyHuFeMY@#EG&dpW?$3L&>OYs2$ zd0?-cf@uRqRF^YazvN7RCGMMMuc7zM0=G}=CmC*d5L#zea?Pw_J#t&{MFYfOC;HMw zqxGfVAX{qwH`5xXvZne++-glO4jA?o-&D$XQLgZ z-0=R#TQ{1BpHfMxZi}H$-Hp-)F7$i{@@T4CRWlH!Qrs&}xznre)a87$iqnLs)d8vD z0*ewUol(g(2lvwsPx(jr8fTR33y&tOI%<8&feRL!g)b`?r@7Pls6s@pzn+@u9TkkeF?COaWMH1f^dZnhJ!)7vESe?B~yE(gbe3SVqh3`YO$8~9;EDR z%`OmKnOfY3TWtqZJIp^ewID@LY93PyMbV$()S?ejmZ@o?22@F+;z#Q@W9!8Yl|xso^`W z;Hjx~RiGAi{8KES38L>an#~XEU~C_DT@?U%tuwb+_DpRqCA5VTem-t7|C2`}ZZVc+ zHi9z6I53*dHp0-rS91~F>U#mt&BX*uM8B8d7LqrT1ZRF!Lz0O>Hbg4FfCx;Cn|@sR z#r+@Wj@B0Pe6bzE^&UBonrxm0l-JM3AF&?&t6}llTDox|Yo|4{Q6^K+5yK`7@VJ&^ z>3tRsO2cP#@j!y61n;ICh*c$n!vcpH%LwD0rTA;bE}Z?e3+DjW7Z|+7MhS|lN;#>% zi}o(0>^A-b+)X={V>UQxI&oL{_`Wh4cgOU{Y6U!1=%-e|;eZ`3;mYWC6Gi5calc6s z@%Xwij5KmaUay3L3Pfql)rui^Mk2^oI3ut9^KfV6FZ=LJJw-=B=$d7Z=Bdbaa z(fTjL7dYq}6B+o%gg6M(gt|u9FJlPM*qg%s&V~-(_0A^+6Hc>)bIsUGIN&U)6grgM z*8i9RooM7Tjh^~eoP*k~|NjTEpOP_Z>&{f{jco=<1&KW_|8ru05)nhHE<01P|9bkF zhj&Tz<0h~*QpywRc;SC!|wHL;q+__Zk;EnW@*MWE~y8om$SYjNIBQ=&?Oc zkI`(eF^$t)gjx&Zbce<`CBqbf)-X#sng|G{EfMUvCu4J(E%YxsoJ%H4ZJ2%1p~@7s z+&g(MPTZq7+ua{^3>g-9`wjkZ&~i~zZOrp_Q>J$CAlx?!++Y3w8tyFC`4hYJ(7)TI zdtR_hTYh7gI({pDX}_~e^gH%@@%sSLmGnEW4QCUtPh4+ZBhuCPmCx8E`q498Kf(L( zTJgN`U$JKazd1h@zvSoFfyX(`_%>t<_CGvpmp=dBcB%Q7cIm2L*})m?YQVoVy&*jV z|0uxN$(gx`eN=pO10wW|szd{PK99VAL2 z$aK=^*mIxDaq@={uWb-7)mO`u5aitmSP=jrX-Wt(!5nH{2}4qUs_ju+DE3BcO0w?4 zE$e}rwEK{MkGrg>+dVO8r7)ch+#id>k&yd*tj6)9H5CsuPS^S|v#hNshn~A=EW#JaS&1-j`f0KK%C?7KX7%Kz3G~cU8XHsNi`3q-x zdIovf?f94p%JMjF^^dZ6b})@KK8c2~fT?PpwC+{>Y5o=tl6~G7Ft_5to$fsr^O%^K zGKnO7V+p;=MQ`hH{5uTKSyJM=@+y3IdJkS7JcRLq!U&b)H9Pu@<2nO|5CQ8n4m}mXo@vls*quTjt#!C*;jcYYt!826~B-VxT z&e1|SkV4;}VCHN96e!aNe|V0V)s9zcwqm-c%4wg{yjpx3vL5C6(Ky}2O4>ta;NK-M zu-TJ4m(l0hfZd12aox*y-fuGmbe?zT;wzHNyvMVb_biR#RQoi~Ro&?Xh5mJ?H{ebO zP~GW1o~F}vr#JC5oi2KzcgWzejLfdn1P35{K2bZHV5%C#Tw1qg;17mBvUT9r;yT z9@6pohIXpw$geonmSWQNHD)GiI~79XLf_gDl!i>u$2z*xsb>1uolbe_pDKkd#As}~ zK{@(%h(Elp4>>$(_;B2gNbI{3rMyZh0Br(^W39WGl@cfzNpP5+c-|J`HO}ls zUShDwhit@Q-fcAB18t#Fq8U`ph-T31cr)mM{&lBQUi#P7LT4%0_`@6QcyjA8Qng4( zVOBc5Svidvo6bWOb1uVLIm4%dPlAQ`#GJmfsB>K|GOZY2&{42+T@G#oR!WFw1g!Mb zLT50uy%ZR}_l}*13OdspFfm+bL#j%>)vI|g#i7g38*6GkSBuV5LOnu$QQ(9=R2c3! zn8kK#4W9n@Acq`xf7p`+)4@piN7L;PawCU=*ee3FsPJP5rtBx@3j{CQAC`acpD2rb z7I8#%oh@X!vTZR45?R_yq7z(A57_UIV-XR15DR53M|5@mFVSL`AZ8hO_qOr@K#__Wpc`o$327D>EEe}Z2iv~;_ zk37dX+4cS8$FRu$xsYjZ33YaS)WxT1S~uPI(s2zf#K1ZmZ&=8ZAMw7<+t#GE4cpw& zFiVIUR=6clH5BBpKxDg;3WNhyCzo#r*({;o^mW*Il1$EA`NbYZ zebaY&pb%M4rTpR!){75i?MH(;4rS*K=e5t99fRP3Sc_`ixaqo z#@EQB?4x7+6d{v+`2M@^qC;q&VKJfdZq9wP^F}U zcX$y`jdN6w)FeXxjChnn1ihOsQzcLpJ}!ynN1h{$Wq&y&PieIq>psUIe@t!OR@{uy zJY910{vHVgvLu0o6bT*h+q*ju$fWkX#03Xc~Y_lGgD&E~4kM3o9vXBteW5f#$-Et1A=d{~USeGLqbf=&AU ztm~&oW8R4Ur#LFGtMJo;Pw|LF)3=zFi)|-XKXM_kxMYV6;gG>Abf)}bC*3bW%uw`3 z|HpW3lYO_7J|dg)bDJEB00ZxFi1v?h6C6)U&mvS?c3?HBvcPK6TY=SK@&JwJ`clo| zFa%bY@+>}{Wh2j`s7?in!x&hNZyW+Z6VKD5BY&^Gu)|>TB%S=44u8%b7F3C`!8oJzpiN;M=HI zky0!#8gdu0&IO>C{9?DD9fl&Bvf&FmVT$PLit@u+hLO_$dlF~{vxA4Fpy~w^G zdOf88dM+P-JKjy}ct5QmTCo37L*ap_x$y+$dOZCVx`a#xjmP+NCNEqN4Lz=7Te-mQ z?BD(F?)P_pu=_(rXfJ|zbM+nH6)i}{qCAdp&|=T2_;#p-?2!)dvsNK$L&k8 zr7T$6wO*pTK6l4CUB6M?Yc5y|FxqJfgnn*jzETK;SkIzs#g>Lxw@3aJLAY zLp&YZxzN80$l!}p?-P}#4tBh6^u{iez5hx;D{R?9QpF$)i#|JG3^Z|RZQ|0}#HBTh zt5?Jn@*%(65NP7k+Qg-`iA!siqG{DU0K=uViA!q}m)7&du&)mJ<)%Orm)0gOtxa57 z32C4)cLA`(n4Rsp7;AAC6~-DjN#{sXS>xvtuyaprq2}s0MfLc4dZLm3OQDK2N~-7` z_iS#}GAkbfKS+ZRu^pVz1>36dow^RgFqNd=?J}YN;1kNxY7*y;4>3_OkmP-k))=E# zWNbW~-cGlg;TF5b9hC*!*ggO(P)A%vj`Z8~y{8#%<93UKSV_J}6TXqURb^@i#f`;V z>3)KOHH56Zq>I0`L4_=extno0d#o`mPa?w^EQ--_fVv`R>jS8e{ZA zAuipfCT`kU6IUnubF{<_D#V@IIIMN<2 zK)nkU>P^iC^)?yejPv|*IOVPpl;gTbs2m}fM#3WEixC+2ghB20g+Jd1P{q9;wA`Q6u9y+{Z6nl^M#TvO1b2dMO0W@fS5P!pc zhOCY@5Kel&0l@~?rtCAXLAoa$r~cq5NLZu>e3^&P*gJV=M7Nf1+8|1j_fT5o(>452 z&mRqucf})g7v35pZ-_@M5#TX9vPnE*$iib@E?Uyep(})n4mit;?PVp!$V_Ae59!>3?1Ij^ z3}z+x4kTw6^uU6l|CR6tnJF2eGC6$GiGt)i#)qDGB>;xi3IbKs^H_mC41h*_CvO@%1|TPhZ}&_5f_lM*I<05GtbzDqw#LOz`SJL`lum>0{Togo+tLgT_Rzat#n3~ypAJ6%oRw55R}seA46V+MEI*v zZ9%8E?|Se$KH*g0R|Vfpu7bYUXiQbbu^lO@u%U{px@_0q_McQuq6U0*XMH{xf%Tn? zNc$Ek*+J1Vfb6yYFgxa!9WC^MZ%p*#U-rJX2H(KrN2!|Wl^vu6x%hY72WqiSz`sSz zSs0i}fNDUy8Q|6(OS@Xa@M|c1aCWEDTly#7FO9cfkR4R;?-IuhG}D)>i@)ZUi|4q< z70-8Pat}i^tuV~Y+rPm-1mxdR>t5zPrgz_^S~q{BPC^qjW^P6C!UL85L3vG=@@acW zMGov-#D}tyCG>Xy{F?I&9j3YucXP!Z$c@>!ds1`5ejbToDGW!g{xDTR(B1!ruVX*M zk#V@@i6T|5QuXF0akI#^P`$Z9eO0EWRH--B>Z@|~=4NpNo6EAub&HzMp}uyiH;a^f z0@vJ@#n3G9I7}!EJ6tv5o!IAV>{3uoN`*aN1*^OQWT?fby51y5ADUN%@3Icj32Nu# zfpKPs41XksC0GuVztm>Jo*<;w;On11rgGv_c0}RFufV}?+0+Bs1?WVspa2_kXQW|U zDyVDW&H~TDvYNUyd=Qtq6RLzw1p_GvnDi-HN*wSHy5}N)4!)pDCnXA)nfT%$eRvm` z>IW2nn={O1n=`V?1mL%kH@6l6z)-V*gHNH`Ac|n=m8gy1)w;9mbf^Un$b-L8E94P* zm8VRgK#!!In3W`+CRL(0+`*4c$&L%In4YhuPD%=`@$h0GS3-v;)6oqt+vp^+T6xto zP^mms_I(?--XZKmGeIZIzO~4}dKSvQkI?po?&;osn3Lbc`uj3;1%D52*ps%E$OH|7 zu4V+f#M;JJ>B=yH@Y+rZbz&v~CqbLT{M zUq`-g^pCz8q^BQ?#Uc&(qZE~WCgenqc@<^R&9oAm1pQ|T=+`UICq&XK73lW8fd2Kl zahzn|?_gsA@ZF;VmVK*{MW9}ST;lFsQEciM#cquk%RsKkkAVZNwdAyMBzE1XphV+Y zn9`H5YPD_avt^Z!2rs_F8h}zit=UAh<{{h>Nf+_Z;stLfWGC=L_Lv@ zLBwIyE-|35$*Z;jt{8VO zk^qVc2!f~u`*q@gM$r)bn&np1?9a8=UVH7e)?Rz>lhpeC z&J(h-5kBN{b?gTCYe!ziZ|Ju0NUmn{@6paQEB&;ImCIe!caE`rqP#&SMrX?ECZ`MZ zKi9sPW;fG_wn5ba!m&~vCiZx$K%Q>;mkR7)ntNpinpolnL|C#2^C5-*ifWLUXgEm< zaif@H+{TQv;QA$Nn>9AfwvRdn?0Z3V{HIj}E$yT@HO?Miftzy&5uSY6496Jz*G!C6)-YTe#i%Mtu7+E;4{V`rf-(7vT_ zqj3H=f0<+1kjHNWJDSZ`Q+i#uE0^n)D|Gr<&B<^*l7wzp6=rRFlp(=3+MG;ag~X)uj%>Owj{gPIj{mUu*_aZc|0RfHD>Z7 zs12Hv=EbmcL!3f^b}5jYy-$D9_{|0=9p&eN=glCQn`sWBCSQ-F2@lwjY#oy6qv5yg z!*9i#a~jiHnZe6OxQYhpS2VJ{SYcShJpGF!J*%fJK;91I?X-pmaxY!1jV{GjCZ%*K zvIW$p>Q$doy_SZGCaPWlI*z z2?ODTjvBcX3?$v_3JI=`Ex;w*sGbC600}RH_B?Hqi%r1~1XXrM4JiImO>sk8l&yEgXj)MV}rar&ocs1Pq3nVH-dhDrc*{7pjG)_2_<#G8_|gsnT^-i=lZGf^?}%U#}G873hT@01YA!q*?PR z)WnWw%KJmr6YxL(nlzF#nExUIQw+I)rKFhgkt}BXkA)=L<*<-CF|JegNZ=)f-Lt{$ zQe@`pD8QHLa51D0Vhwbub*QJt~ibm2`MjwYolddl< zY>wpsLiT3qS6Jg0wG6X77FVTc>k!ICfepZ38|@d=&zg`O(_CRgTVVkGSd#Q!$HM2A zp67Z3cfz&S5bZtpA z;AkDFb>`qEdzw3jTBG$-eOt@+G(_v&(UqQPePOg7X-lH@@X@VxSa(C?M9SF>Xy-Dv zQ;`PzT4+ycb0l|(pAhssH&_Y!hs_p?BFk6phKv+Tocm&!e<3@Qg(KM&$2LMK2CQ>wtr`r^nog!WM z&B2-r`ccxiHZPms&J}*^Y?(02&e#Yc+hRNh@-r@Y3^cga_%|WNtl7n+N4;Pilm%1T z4S&Y0-}X(=m#H6USk2*dCS)tBL1VBM^#DH3=EiG3fm)V5UjcX?2U|g#V~eY!6x3Yr zig@tgS}evi4>STw^uGF#yB_BgA{|-@1%oCbo)N9rSkNDoO=lvmy@vMGWv&h{K2(eL zoeI69fWbOc;HLFAg5|j$+;oL(oPFb?;9;~oyvczmSWfDi^M}WF&fN4cQ;}tb>Q&z0 zTS$g9u>v#yCC&NUI^{!>oh^pkn3u8DEa~#_!H>edj{M|o5o%_1Kc?L zhAq6wR^8O43hb>Dr@Se{ARiCN2c6;TjSPh@8nfSuG997HF*{d7a&V1DK`CC^EbUtz zzsT*BkBvBU#bVs?3-c0z?s6pPo)4O8-OpHtvgM%fzA&rho z_D6yJ^Ke-O zAS4gHW(gu1Q>_yDEuh*aqBB5kP_5&72%FKU+6QA2+W~1)!K}PseOqCTe6V+IFF|d~ zX<%ar=Tig|E`_&C!x%u&5b*a1=vqQxDng)ey*Pkhkj?2B9?a96+!aXf#)oPOKa|P8 zDWp{|4Bdhl5@0$R$xMBOYdCguv=ZG*^fjiDo55?+8${z%G#|mJ71bzsC81OmdY5n( zR$n6>NT5j6w^fL=Zss-~o_2I!g9*jUib{p9%bUi~QQ-qNZ1R}d%lD&u12PVPmA?d3 z3i?@pv4MgrMK~s^gk}V9=y0V6Vzi486h2f$$uPJQOhx~I7X2Vakd`J{62am{Ihu&+ zk*%i32tqvIc4U%n%u+>x;Ejsy@%Ri(3)PrrvEWt0%VM6#w4sk4ef^BF1)(YW7GcGh zlL|%KwDK1v%n73W9&o%Oq=rQ#G#NRU;5}gjYxiP0C}~8K6;KL}%VfdpuVDE0-6b)R4U9Q~XWuS7dk@tWH;P#x#b|vaF{Cz?1ko=- zm$7t`m8$les5Yf|d?lq#oNoN-BBf0%RNBPn=80%om8dWtuY@Qt2Q9l)6;O@>jNh2a zP0QZ+mnC_=QaYD(5hDx6?TxO9Sycf-{uk@2p~1fE>fGiT(`oD;jU`kM5NoFx!`0{{_1 zqt-2Wn3LUIC)gyiGR`qGc9H7=#ph43+fmhS2+mt3`kJWPMsBD!Y}n!CW@irmGpf-Q zkl#-ShVMu9S*7nRP++Mpeca#n6Js=I-HzUxTfNdt+S0f4Y6(V#X0!_Wq zMeOv+dYK3}p)b~Jr(nQ4g{@$=4CQll*?m1=ZCvo6h{!ok_#MLF7mrS$(}M%L6#0BZ z@B^6~zgdC7eW(;A?PuN>+j7w) zQ$|oz#@fvU4OnSQf+7DL>4SNg)LW9fz@$Av&I*lYh?f!!R*AvJF&TIQYL)kn`Qe(! zzlkaM4zKIkMRPsDc9hXz^gfnDhl9j)+zdC@)3yHZ;lE-FoWn>m!$l|;^Mq#suBY~o z-u?^~gf=&dEre%8(a)LJ*?kD&&Ik`sYaOr$@Q$05#(|KUPuRl9WJF-A3|PL|wb!?H zGgY*}z%Oi~X2WzZFI8F5`^J>z*P8|9ViN!p9ftzD1uLWBafj=kpQ0`tLErIytwqf$ zN}%OY0+3pJYRz)2mX1N(HdsIjdqwX-RG=z9u3XGk19sNOf5*j%Bw-e3v%s}sa`m#V z$I&Rw-X&MG9GHUTNM<(Y_;kCvh#tR`yUL|xzI0p-FQeIbQ|+a2N!mC_It79YQx^s4 z1RA7_dhtLVWv2J=k`1`f8Y*x=@t;XOl zA%UBWa0R4`>(_2(ndB)qwm`I;PcJAu>)pF+EzwZvBK!s5;jsioqfgQBYJ@Cl08?Co zm+O%9hOYtnc;5IpicWfmkgOFG>`Cgr@l)&O{Y-Aiq1!ACD76rOMJTa^91ZVSa;Kk~ z?qwUrs~Nn9N+tY7oXw5RWm}rdUc{l{fTKP2vkh)BFuDf`6m+eZ0F}RA{06jh6;@1T zevwK*d0`?#f^_~$dIy2gV6D8;fh>4nKYqxrlHSdTG7fz&$6_3PC7Eo-zohpjq(Mcq zkzt~Vg6Izf=b|>Sb=H<2fQ14?H$S|rSS{2Hg$mUQ4hF;o zkw<&0IcVuAgm&z%wFKuOceIkf#(z&E`B}Q+M zbNNrYIFj^w8#!)a3MPMlXsYt2YX)K*2nK});q5z*`EdMpZ6=mxFvjYmP_DB)>Y5vs zPhE1iZ!F=Ru=bIPz_|ge{0f_~nyB6%s{Ysdf0v8<;z0B$4c`0d}&ydX14 z`@p@p-ksevmogp)*eB99v?;O^Z3C(T;NPaNAfu&mh=!5XY@85Lb0F0Ov~7lx>=Z#a zq+6|8aHvEz><W?2AFh{;hQz|6U|A>`g*pC#w?7 z;WMg4?59>)eDdZd>_#n2>%o@*ZqoZIM|c6pLHAtzbZw^S8)z_UuvZXXtoVX$n$gV= zqGmHt61U|vH<7u{F{UC+3AzuIc7PtJ&))=kud1Z4Oo-C!Fy=_T!az;U%^<*X^w(|- zxNqn+hd9_RU>9gPBnS9G;b=-Q<=QS=Di991*xSj#vMxs|Fq3iyXrUBUj-n)#T?$fo zPgS%86*aOV?T69;Op#3iV?|f02~7>gB78_3&D3aLbvm-aI1lf}f53N6_mVB>mE;4B zSUFH!Y>)9F41dO01)2ui$F-P9(^Hhl=UrSKLMuy6*U3B1=net=E)V3oz<{0plrTgj zA+DfYNcO4p7lmsiPOI!%i8Lr7zv~9%={`UfN8L*=U_p_dXaN(33Usf@smzj;-X*3n zG`@Jut|5~n^rfe0*xN{(nsGIJCc9}nqw%oNOrg1qN%!S|e=~yrCg>Yow=p@~XM40& zSO^<~%j*~%90q+ml_VGYzJY2w_QSwitH0Y?Gug80^`Q9Y$sWe80J0Ixt! zddtz!U5jATR0FrnRtZ2#62ayI#UWFCgSt4#02OHf$R453W89h8@~~TdTaY5sdaX z{=#8=^P%JM_qWhP6BdZpVGwbFXgs;6Y@p^BH>|@DY>DX0<86GN9 zDkxSP0Wc?HtVtZR;x0I-8GR`_J1<3NXQ${4hXjz&q6MTh-Af{idP!m@7J@ENbM8|A zu>PiI)3;pT*Q9Uq?QbsY!(zfC(5SFva6Q;T*uX}~1&~(Dw!1pu6%Gf~+u-ao7a_*J zQn9RIyq*VXD{OlI$uU>V$NGj2y0QNic#=3rO9z6Xw1x zX#Dlqch1T(wSaZA-U(8ItK$K3t8{e}TtMD3em$HnO~y59L!V>Ow3wi4h5qfDqpFx| z03qjqoy!2g0XK#h^Bvnah}ufl>fZ%VTx|3&t19L=4>@(OVBag_oXGcY@0I~RSuY^m z4Q#v`>3hru5vMc^!rv&g1Xz6?ILN{X8bW!CwM|$xb#*+6gqb#GOHbNc#?GO18;uKQ znO&5PW3$8wcs3yt5>&|W_i0#NBPvwm{o6yZZ>3Oz?aCQcY!6+KqQ;7op+j*zU|Dgz z$!R>KnDKGV8wS!pwRuNgOg9f6ptF$_kADNIfWRN(O9qJ9M}4ZF$lInVe7=sHhzMAZ;Ia3coEGOL_*5LB*7{{ z{|URSKB+M)^}wm=zc79_??|J|tX#-J>rcdNfDN z(<^SoTWqlXU@jL5<-QIZ((3PM1*HzI36_2w?y)BdA9aKrIJ;w^wKn0zF76g9ZuoGc z<;?))1>^mqWOB-0-(is<^~zU4ZN9DkQP9woedrUm_=V7^?HAj$>Fsys7b0dAeMbni`o>F{sY2Bz zf`oriD@Kj4afyGx&dH5ZZ?u4@kV@Jwc4#-p7Up#HXu9&pCS4TOG+HoeUu=mi*)(Ao%=4%+NGU1L1P-S94xJos`O z-$Oo;qpK={Y?#~sn&zykm7Ty0W*eTm2)e zW-Uf+RLanDasQfUVbsg$M7{{z-F)w2xnrAiw9}6EQ#QfaE_fA{ezLXwpsQ0}b?KX^ zKwx;!;Nax+)Ru(2BqG(9;$W3Tl<%;A%k9o+1!bUU#UJpSlI&+6CxFjZ0(fecpH?M# zaD)p$7`at2PwA)Yag;$XUKctR`@bK>C*8|?7%-^imkq7mL~rB7dHSYa!>P}W3=V<@ z-Vfy?6Bd4~??D}Vr66YS*sH(N;Mhv%+S6>{OY;M)p zW{ugI21`T6iVe6CQob-Yje}1mll}6A5pf$zC(%$lanU(ZsVi!?&8Mpjm9O0uY3W*HbZVA*$>{dktlxqIMlvp<4?_K@-xF;I-?2LOF@ax~Sx;TZ_5)-X^sIV%O zCMr%=sqj$jNN3^JUd2+o`C%$d)T*i~$QxZ9fBFEtPj#VUmZ58;cezS-b$Hwwx}vIr zVw^TZ=10toiVmuz$3x{xDMEV+8x;|l1W~{yo4OqsyHu}A3e|RT%tfVGbo7@LOEL8i z8IMt?u$C^4#M%Kni39y>;b>w|RR!l{94tQ$@{|caGp8H3Y{9Iu=({b(%4^ymkPK6EO#IfWedx>fzEo0u#8~ zcUTf)E?APcQs0L2S^j97GEyJesU1?JashbQ)l;Wp6jj&BtILu&3(G_^s+WbPE8mlI z?#Rip*mvel0^{A_ayj6UqYr_Ho?`p~&Y}Z%)AEP^ma+MzE{C=T_c7lZPM&k?qz&gF zFfnaya?Ug?OYvt7cVxQP;>af#7LI<)$5If`y^zTS8vQT7-{FH>xnJa!KmcY7nHB42T4R1l;*vE zG2hM&g@v2|W6lfpcl0HrHr+P5_JbrcXm9E-u2`Ntpc0FG3HLZ&liu7Cvz5iG%c|>n zT#Qy1yE^B|z=ea_JWN*g+WGSqTD6MyJ8g5d&nafjx!8{Loj+KHNjBU&&)=&RwBMOm zp-qxm3Stsm&?1LdpQRs(*<9iN+}Pgs-@AGYTj%mmIu|7C{4cEfGhFc8JeH+A{%tpW zpi6Fs7`s>BZhTq83%0FlP7rJ>WN}Z%ZT)$HGbK}Iho{CTu|AX|8Xvrn&i z0E8Q~yao>PGSm!<#nEP6D(3}Q+F^;MZ<0PLi!V5G@)Mlnm&uFfxVgc09ZJymhCj5g znT9W#6;t?g_En+I(22py0X2SQPQ%iay?NaKv36oY>O)HdP24hHkAlte`)y}gVv~Gh zG|pdyaTT*&R9zBsR_8;=DhS!CCu@^q^DoN5g^${wW6q1>wu{=2`Lz-WL!xQS$02D3 zXm2kVIgC$`L}8n|0o$?e2U!}@rK4B^jycMXE@(e?p(`@LOty=d{~5fdSM|l=Qdac? zMnYGs`lsk#uINit%y!8+?Z^;8#;_`*dd{kItE<-JmCuRoO`KU>x2mvu0lvPBFL(9d zt;(-%#a9cya?jtdju&vs0RuG7gJI8(&Nj)x^ZCwY_RfG!FCfK4>m9n6B+<>U&Z6_W zxcYxtygtds&KdzuToLRVNw&iw#}(Pc6O6ZvWoV=tg|7%MHEkabGFX}ZUD3VzZma||k z>h3^E+U!gsDCrVhM6+|oeE;M}&FR*g*@I+E&H`@*p zbZX}=4d{J(0n^cEbZO~Fa1;+Lg;DJhLb;{86ESpW-X#I8xAwWudj#dLQmt;+NJcM|DLLmIMm>R#S|H9JnIi6_e3igd=dy! zZj8qtm$^<2cHe$~U+5nd@4%Z64nOQt-4P4eBt@quM`F#DD1D`)iRXLt`;Q30XuDS^ z@&OJW1)NMAPjfWVnQD+79fiWbF^5{l<}Ht=vt3pdh+;^{sH*mN6y4Z)hp8c zX2AXk5^z?G);x|k?7EuiDnmx=6gu4&DRSa#k1uov`I5z z_@K2#Ek`#;Ygl?RliaIlXLq!QxfO@Hrq2xQVi+VoH&=UvpN&>Q@(96H$(V-3RYxIQ z;|M31>KM?Ns8%)!C`7%+^rQP!aLXB6o5KflTf)7$-A^)K3(zP8HqiYLzO{3uBGe)D zC6GjGm{NhOc5?+RU=PUbnjbJ zqLoB9>XLzetw~Ai>CB1Y-F#tR3v`5^&WCO2m#m?Nu!5H0p89gMm_c1jAhGI|BrJbl zXE8H&7IVv7C||A4HUW^XWk`fq^svBucqIh=R3^iBYn_* zz|*9?nA9^(e(KWy8=GwG+L)x{{`2R`!mKCdw(D$B>%-LC4HxA3s^Sg6W9WvihoDAu z7T@r)>fQDG5I7~P!@AZZ9^IAQ*N>>6?7mKQNGGDAQuL9>jD>(@{d{y$brYuPh1!|n z8hR91zcXngebEybUTR_9VLXGgQ>%o{gxd6C?goS`;B-A#c?q(+o~vO;2bv&;dCJlA zrWp1j=Iq%J!{&$>Hdn;3a)@Db^gU(6&?RPDH&O6{FgBN^1+W!|BAD9RaNgIsBSZwF z@;+0uc$mNf)H+DRgVEwe_-Y@iixvm)LNiup@r_WE!Us#jy(Q5CI?+{Mrd2%KPOc`Y zqm>NA;vatd?M&>-FuoCb7F0JqN6W3`(fs0J0V_R{mmm~}j8w8xRii4veiCfm2c5UQ zhQKb=E|4-*#V5<3pUUqrT`(NR)#>cZv~pEDN03?f$$>YXIt$~4fa;YLO8kBO_HUtm zIU$_K%i-O7U`n9PfnncGej!_IKsLAuH4};P-%UOtZhVM5g?W^;125J+-Q*WoaG$f7 zr;-@^ZUU)p&Nux7F_s}Xrv;Sop(U7X^pO^bxFyDqkV-~4EF^a00NhBkn3+tHpTf@i z?PO=@D)O`c?=v*x{a+=MOM@J&N$-=Gup>R%d0F0PdJX-Lg50Oo7<}kD;j7{CNjMP~ zCM4|8l<20WHfxiT`FnV73p!Ib!XGEKvrgjHv;>9Vps|seC_t~IP)i98!u>$)l9w!!OVR0k3qp%a>UP7^$OGa))ECBmlwGY3uwdvLKv`NnyUjfhY zJ~z(C)arT9Igl8aH_gU_&Kua&_d#rlvot>6S$d&ok~Rg0*H2w_cw_~{=M#m$N0F;x zWDEuupu*k6n~+M{Y&ZyK4-o_%u&@cfa-=QP z4$ussf6$dmY@DkaFYsX){RFIIaY z#Qi1|?0p=hLf*+VfWw1$f#odLq_{2a&7R0@eLam$GL&V=%Gg8^wOQSPJ?OvzvDBA|8=2?3io4|a7V8z#g5#ONL?*_IVgnLS?fE>&?yF_V9PXf5q zbaj0|rZ1OTRFXO5!okq#hP@j7sR67a zFi6gn(x>dO1CvtbT@*PF4LKuMybnCM-h%X@^R(8X$-A zqLL1=z5G{Lk1{2TuZm>RZzr>o*@B|QL>6m`7TIz{S6a5n$c!oapCDT#o`h_{)df?w zfJ2CqEj%Jy7=M3+>uE}_UDB7H`j#MA$=%`2ORzqkQcBFpdZZUkPL-6FQp5{bzuaNW zKyHy=ef!btSEuxdqKqEl+Zh?-8tv-y^%{z?G3TkVKCDfI54c)gzuxK_)O&jm*sb`P zWF2hnP1t<vyQ+8KHE2t?LdwvGfb;A?MWR_83iOktDABPWBM|xVc zN$8jG=4$9Yrkv*qG=Q}fWwDk57S~GAt`$RWuI!|uu=OnY=W|{rO zsW%NXG0CF=sW+03gcaVeWd5w(CO*oiDKc4lm}UHid&u}3E8D2AqT?HI!O{TwG8;i z4`9{Oy=)1T?q8xW6v>gUXu^_?rO_OPO*1v{0XviPpU@L7k1?enY=~EuPntX@99*Hi zr4N7%V96oFBTMOPIf48uS+eo+V<7*=$MI8u1%tG0R^Vwz0_dM0v^?&yFE^>bi9R5X z7D02iYE!uqbjkrRn**R+DipbI;uyfef|yK$WUbJ*smdu&F@WN=Ph!fT&pw?0R9tENz193fL{F(rS_ip&oOW;Nfke-YR%)sKV0$uSy( zFwY!$MC}AJXW~poPJntPdz~3M59r5blqnAU8BzQPFntpzI#e&yRV4`nrC=p#95r_{ zNBR_x0Xwx^P_M;!>L+QoG(nSK?|@#I&a@Bs`&zWgY1MF^SUjLsM1A0+?C1ZhY$V3R zKgQj$-X&<)Mv_sd*LeVr3WBni7ZCAUp?s;A2QrQ&ok?69rkrp%ANLf%&eQCK4HZD}C2#yq%m6PHXF>%X*>s&c!aBd6eUfE44e_I~{drzOT*_r*1kW?xyoGyiw9^q;l*MLcJ%!wT zQ6D&W5p*={4l(zt2*Q|NozX&E3oe)#{OA8)_$bINfk>E*k=IxL_hRG(d?+*vm8AL# z0Ju$R@!);FNhU>`RqxIw9i+F`*wAq$sz2wM{W;t0&uZgzfqun*V~74f3x5j#nHDU^ z8hfPYzpn)iP0d&$*YO{nxOpFfRA$Mhcj+#aF@f03&%k~hH)(?ow+NR;RO>AN@J&Cm< znhMP043*fq@+2iIeP`K*>RQa4_6>9Jz_e&8H6Dm%I5LXoTMk@}PMEb2fI!TpuI~X) z!>I`kZ8?oiIKk+1$=&eXxLSK1HgWco@FF!i$W|3uJq#amM|!xXryt9B0=WD1%JiyU zQd%Sw!b=A%?dUFLP?V)M8fVQUa#~~Db%K!_5)H07ogpJBAH`TCcxtQ zmwEEJ2d0!tf{85@uz6*Y`^H+=UVO<_uE=c|?D2(DeTQikDaA*4-fZmN>KWl|psy_P z?Qhi!t$X2n;%(LIr{Y+A$C_Kj@psps;A{b3S&~HD_A3Wkp;$C00(IE?^9YNKwMN(E zwhm0PSXYBL{u9p1yw>@sG_~M zgtcgn_P!F$+PLANgl8le!%H8DthBcn!9cM)33g*+t|rE;==J8guJ-T=kQ9NY6xzM-i`5 zMT_6V`^Y~d+kl;~$YYUniPWde@3(apk0UCva{UK*bQT}O?}dHZ-?fOR?nZVkZ<4fN z?WwbvNuu75@Y`=^!uBJN=>m|dRuxMDVMU^3J&VQV4ESY8>75U&00KfGq^k09xNL{c z5Mc`ouJ|yvVQSI~){|$fpw)ReWPdp-NOa0DvsVVV* zDrtGNfGAUtz?sZ4p-{HZ1a0I77_GDF%gc(o3{kq5fGv-DSsc#7Oz!a2Sv){|2mV&$ z{Tq1x0ncmk*M`4xdv8e6JNWR2h?c(Tl$2(dr98P*4ZfbH^-R|c!_fYi5Nmuvj(@LK)nz#i zGZw;v-`_LEH) z4m11e=LA#Bo$U%NKxL63ftgxjd|RD!6ds-J(EfNl~EoGiqSs$9`irj_D>ACG5Yac>IIib@ec?L4)Omo2Ysb1O|E6DDp zDZM5XE$AosXdNA%H5_+Z;Gybr#jBeqUX?0EuQ&me<=Je6*l^BC)tS{D(jTtK4-gNt zbHT?T72PX@(-S-A6MVtp9C1^6!FL73rrtLk5G07ADR2OOW3q2dPSk0E*z6v=TQxTy zTe6V=KE5;cZ34BvPcF3Ymjux9^zF3z`~*Uv+xq4L|LE$?sb(y{-sG9=BK}KtU>5dL zEkWmHLKT%M;<-GubnVEC$Q+uiI%-bhhAsgKr&OV#b~ekUZL zSulvVhgq;1Pq-8W@7R89!K9)Zw_-962oI-O!?cIQ(|_u7#&Y;eJ)S9OgN zxR(Li_W)Ytu=X&8lT6(lH}I8)1A2LCZ}P0xs)Bc6rPoe3H&(kka8Q87T#Qkd(zK|X zUeq18HQYRHtlot6A#QBx<`!$H6;<|gS&9Qb#v}Iwxv>I%kM#l-Bv(T|azpv}@Q&bP z%BHbioBDjy{B)?#g!zdZ+?n{0`B|bq51XI0>hmr0vt2$5-sWeouIk=`6U11;sHACb z)hpT1)+zn1-E2e1adaSwriP|NC(;Ult;xQvvO6I$Ngn!(y0;byBRh3(HJ+LW{J@5D zEwE#l;rxdk!!?pdVl+F73Qff>5oSXW+`X|uuQk%MJXD2mXSAjqG0~d&5IR%4z|T{= z8EgK47)YDk1#IHG7OyL=$J$-0wu#~FP1tj}8zR!9Ee0#H)mYl$!Rexd-K@dZsPt@t zcQ)q7V(bFYi}^M-G;^?1!i;UtVF3}o?#4mb^4rc=r{JfFMhp>c7$J`ig0|#b+o1a* z$VhEBLu`HoD+TrRJgrR)L4e^fPpb`GR3SXf z#Y0o70=AG#Ct}{$FL#3C-$+bSuH^O&yzoV@&45?sdq>XP>U50-IM zmC^MGFoX&x1-bm3$O#0Gr3&Xcstu{8@;FxBer$c`>fh}R`F>v9Yd0t2A zEa8=x66@bGv5w@a1e5EBJ7n8;W+ z6Kc=V&Jq4FXTUy$PyV|WmV#8r3bjGMITXO4!6`XZjd9MXxY+N4Jp(6)z6W$9y|+`H zRKE2v(H13l`I1;}iq^1DS4RbKvJ@UVl0TJuQRyO-Bqo>^d1*&0MZGqC^mm~ISI01< zOep$4hLEq1`j5IgdJrIni)iIbC>p}hy{^S`JajCt9s9k|nu?n5UeFA7~TA$ei}h!sT*;`CiX z>XX1W`g()@KJG_e?bNS!7>zj1LMhnLxpCADxY+MU9!KY>thRaXP-#~3SxheN5|?-Qc#=!hH+{bN^;%=3{R{Wa{OUuxUH@2bE!Ts&8ngnLTr0KsVQLA(C*XAq(H zV>eRh-1v7OZRBdx^iwmVM(kw0Z&{IKz=l-XYYJffo3x{WEJ*;EEbb#nV0MKHr)UmL zZj3{i2ez3=Bec&h(tLD*1Lq#_WwBENYN6@lvzw8=B+4m*$*P3sAw46#i~}M*!uelG z?*@F*RJC?9$DA67H>bM&uh=U$ik`g;g=aU8=Dy`;2j-D0)x8^;J zJlA*YkVd_B(ArZkCq#ak8T;gr_Tx^7WJP4vsyH!7%b*P&L20mE@m$E@n0hB?)@v5w z7sn2d!Wg&^ndN-EK#&cUpd{z_nr zD*Xt<4$s*%VBlH4enFiD^fm`q1F)H3KcRA#&YeQ#Qe$Wu3u;JVhVu(L3vLs-JJ~3n zXaU`kY;dIb_QL-ru6=x`WY~9dw{aCbU?=oXvDrT~*76i=9`h*Vhzl}19wu*EU;{C$ z^O+I1*wGLOHkb)lJ28x2Pux-SK541re2_T$4X(xMPQxLMq`M4_06oNnz<_t5k^X$uUy}Wu9GY8&91uy!^VL$APHEO zEx{XM{eqA|TtTZ!A18WmsRxPl2P7>l%)wTq1IZniE>$<5VRc`u7?<}2cs-_CKNu%% zfMuSsvHV6%_Zl#7TBuVdMOfFBt@h@er4y{D+F473Zf2STV8WXnC*&hxgCDgtbEtqN z_1nIDV&Nu`)NhWZSo5gNkMtwfeDMX=ZqA13tq-!8;qU9_Ob9DEb}!%s#u1+DK^~pB z3Gx_%;!D1i+nC7}LKMoIt)^bdgazl7s%>1~7OojBX0hOPSV3VSQVaGa=5iOa%mC@K zqmn?1Qx*2l&-oZzFPKe2`{(C=0u7!8s?g5s@@kH|~j21ZgVx}uHN|qp#vT{oB?O!M-12?IrG(Jc33f;Q8h>{p?iI^E$*naFf zEw8p)Lb#d#&Q9Bzm->IFnQO>v2WZufFU$$RSPudqiI@eLnOKarv9?)?=(n8-vGRD? z0r%6Ur2~O4WB6Ah-G%}{hW4N-x|i5*3@+oS`2cE;01JHjlKn8xiv-A)GY68hGiFui z(@&iFWV3Xgi7X^jVkXl0c6Ri@7U*_${EApo#1PB#ZAFvav7%Ei#O|UrHMCbxP16D1 zE!@j_YR)Aflouj9SxV?uCB*DUpVmH0`Q^8pDXZk+WP!<-hPRZ2`%4ltSDn+?vedZX z8aW#lDHkZ(z%snsOcTDyqHXK9ooeY?kL+YIxP2VWP)MLdHL>s>M2zre?oS5$28O_m zR5I(}ir(MbmtU`kHz0ddvLZo>r^$%m7-)01IrMjM7}%>QoBz}bw7%E3HR_X=plYv@ z!&Xub3n)2kr;@|gQVxs%n7^2;J8-HGsQht!=_1Nw8!WNtip@|%%9R>YIGt?5kXoQb z|HO{=i)Lw4&9C;0Fr*Ssr}nX8C{1m%H5juokE!B0l%~3#osl}6T1Jwq<6qGXXe;KS z)~RgoKzR9#Y$1%M8FA-xX5I1Iui$7B-9o>NCm~elxH^7>k~iK<#Os)m74yr;lN0Fk zE7&2FqR$n}L7(iQzV?e|YEFa8Mcvd_5~rwpeYw*Hc)l4&SBLIb6`Y3(R4=9ZmZIYZ zll}>SmlVMPzy-;E>^{e2BihiFHsf*#U6G#Xr4C5OGP0U@*&$_H-+mnI)Q3C8Hm+n- zdT?K=nIbLzc5%c6R88xosS|3#R`@h22}vnPxSKnc+uYFuVfJw}NuL`hW6g}E^Zw#k zIxpuk8B2#l-^z@mY8gk*nd4{+$I*a{qcc~Xy|l5#cnj;@7zMy!tpdc1=NQ`2Z#yqN zhEA6rQFz352N^;?NAuG|2>4?|Id-fsELVdEoPuE!TC9?pqe!t-Y$e?(@e;ULZoTRm>_(+5B**Y;(1@Dp-i$7go1c^`>yzmGS2dw4bjMQvzu_);`{4P@*I zQ{Nea>^7V0Sx19$>s1(if(Q;;?7?DnGHzYZPK((BY7%VBo&+azu=^+E!(g8_VX$-5 z=EOa}Hc=A~1%?v8Rdb+BfQi}dRWr3|#v(`oGU8-%NK98CFTfl^wzULegznt{T>*B% z)1Kvve-k`Xn{DBKmPE`we5@Fj?dLQGBPs#<3>-I7Y2(qzqgH zf@qO%tP$d+_{{Kbxgv};r;>TszMo7c=EpD10azvG_Bcx2B9ig+43Bcb7g={c>JS1z znX^HtkXuv2t&gTOI!z$U=dz6(X1KHv95f$>%4k0uf`MU)9%?kN`0G8dzGJL0z503~B&_D7BdFYGAo!G{q^8|{S z6K0t4_cAk#U9hzjvAN0J(Umq`r+kS1g6QaAx8k)3_husSzal0&v&F=e zv{wWvj(u*0)k+nvDk9TC&*wqcl#5L2Qd(EGoG3ZBE=cA4lsur8ytpSLC}PTaS_z8J zQs)|Z2Lu|+qt^9jcDQK&zNCl-3tAc!1A6)-`W6mxnW%5w-f6pNq5nhe48iW&K2f)t zavC8SfWLl$iNjT9>=~)9MiSt%fkT*3pFEzHoOa{(J zf~9_7(gyO1z6EjeVvDwkcIkfG7t-?LNp-IFw}prL_A7eVkAR7lg7FnXNpN*=*_7ve zH-mQdJQWXC%y|u-XsqOV^ciDItUq5u^asd)Zr5A zVC8m2x>^1w1=_czSg)*lxLGiYy(Cp`cCr6V3F4D;pg)Ro$S#8D8~PfU&#&K-mL#r2 zR0+kx@a95Ohh(z&KU3na#RZ|kdM3X|lDiWXnUb=S6fwz-W|I7k9)5o9FzYVRyf}*) z1qvO@3RcR-?$)1Hy5s6EP)gAE#&2=xFXOPw_78Hg3W(uq`skZf+WWQ@BH5MNezdsc zxZ+Y=vk+Xf0p74+y5EM62sNJO7DX^yp%7ul!P-L8U$wR{EBmY6=AP(7`w*~(rqbzGiKx~`IP$pJ z0LmM0=rDec(-Mu_zlNW$xAG7QxFIb7mEU&tn&$RhrcUdAJ@2dfZKN!-On zQiT_69f}sOgM}?x`~ZGk9gl*#FddOn2K8E}$*kS_H4b1il#N8s{{a$V^I~_(isf-g z6uOt?x-+1_@XCVy+B(Vu*;xn|25{s$Sgd{fH(KPLuIJkIOO*pAPE#ob{LhVo)KVv_ zv~L#w5n2&p>O{kNdU(5hb;xfge=BKY!688^6@FKQu-TH}a3hVfYDSAUqZgvZgWULG ze;&W&$I;>;hE{eqqHFRr^h(z%cuyX8Jk`2}F4nm;(xZ=HYQ%&I!~5O8z%M5DXV;+t z`hxe!n(ji7ex`nz1Ls};gMNoizs%_$xZ`Ghfm^@IV(s$}-uXZD#UA}KoApJ1@0~6B zf^i-h32L%yb-`M|t4_w$y$1l5zQCg|#toyE=W%glqwb}rY@h+J>PBM--k=FH7rhjK zZnrU$5D2Fr#I@mm9H|Gk;&$D2jjR(~dp+qod}wY{yohp|rEDL}NWH(eN+#4m zpt*763CX}RnEf5XtTU}1X3}^|t`yxEZ_Y(F;v#-sRWg3loMgE7L$jc8&xZ|x_(E%Z zu{FS3UgiK9xW3!##xw0TT!athVvLo3-h6T!0|b*TJRB~BPZ@fQ#*mX}aY=4sYDTx^ zsWMIcBNGcvWzuVy1!pv3QH}l6#8bbRO(kywf#5s~Nqt!pk8)(($ge>`dV%!uKWCb) zdb$}mVzZ>i0017jn<)j^5a~XrXQfuDf|D&vRZJH3T)ruo=p$vZ31GwBJB%8VBgHRSJe~6J&vMP2(UWM?h7qC<*Pr*_4j_TR6aqA8) z!hzdVs~rX6z0IX-ZV{W08dIhImgShuadpg=c*t;nSucxx4O2=X#$eHZwp+KHw~yeVPEWiVXDqU3 zp^@R%7jzc&nIjniigCKzw9i$u9oC8xsP_VRaWonr9OtV8?{${~i34!U>W1n?t1}#M_=gk9S~yS)rn-L_*OviE&3x)h{g>t=ZgFZ@4rWLL(`c!bW?Uh{ca|V z7Jmz?0$?{W*xvNqX5GY1d7#i6fpDqc2r zS9>4Kb*_#m3RI{e?{?jNC-QA*N7ep0p#p`iRqyH8+1FuVee4Y&POwX0qx8tRcg3k?@%!IJJ_wR14E z8(y0U!x*3p)6~86K?mB=wX%UWn zDT7gYOQkq2zi(oGeUiCjCWNc=N2b2Q_R zK=)I#5RRbt@L;y@rLu8o{R1MNR%tP``rtLFdllpa_sy|QIiW9LtbRRHPiO(_n2LO1 zm2ZUkaQw19D1P0k>LOBIs3L`7$r8w_3Z}?DlLf%FxOtaJ9qVepQD?E>@9AKjJdA2f&g99tldZPN=0AJtW%A@a^L5hX$&PjKr|-o{(6l=) z){A8&W1IsaMY;fko>cG2+oXd#LZJG^Ii8p-gJk5@mQ?3%5vTWt+ z(`iJ#woh%n>|57GR+l<#8j38rElz&jvO4fAIo;F3#lE#SG*^Ey`mMc2F-^I7I4i$E zZ~iENmS49M^X94g0tdp}Rm&8+`y7nTxOZYyN?S-xX?)dFE20&wD_S9Hbp`n{00Apj zb#BEu#COwJoi$T<)J##7HB+3ynPS%(_(i&{Z}~q?%@nV%nvQ#SvgV3gS0`TVVokgp zBIKx&c|iNSY;G9+nam1Tz|gD)84{kI>C?M#$5uA5L>r)0+zCm&3O8nx=VC3GO-3t^ zZ(oMlW>=un|U45P4LocAVfyuKZ zUOh+V&3Mr?-R*xFQztrnJEl$`?`vO0NGV2hyz--3eUw)dqy{nA4m(f$`h zZhakPmj(>qAMOAm&(hmDDF6s2$blws{A1&;py+RaSZmvY^y#Io|28ld9Zg3rUi2XcIz(~|7@mz^0v z3Km2mwZf#-Ky8KwK(i15AbiM;0p#1?0$sKchvh@0GagM~CRPLF=T%Jmhx?-pSp7&fHT zLhu*hpkgis`;WLff{?*ZSih~t=7DaS^TbGpt45>6vOHHT-Y>;s70+I@tq{{+!qss) zN|TWYds_S!7^gqyy5|uHd(evi<$y+M^uf(|=o*~LYG~kF<=Qx(Nco?8lF5;E6bqNy z;?6DTUQ5|v??J2oNc4V6q|xt_8l&H*waeA9lS6H>&HrJ@h3Ux^c>v#6kKj@*i!lx8 z1i9GN?xY2fiQf;8pXR#fazs)lp0iqHVh0`y(8Z3pN7XkJb?#>QBbOnqifndd0~5Vp zbd6?b^nMQ8k>XEHCssD5qtR`Iqvz!1am?#X_XyLG51u?7N1CML;2Zh(RJt^9(YY^B zWf;K?QL2PYo96E3uuP~)Ih{fGyge4pInil}#ZvvJrurnjEf=X~>zCQk z!2#nXcGzP0Uv9@sAXvhl?179crGz)T^$S2^kw!?f=&BO^Dq91x89!oT>|kN)f67W- z+s#>PgnkD&Y#y&zG3Em#5iNg^OhMhQ^c@@M=jw1WZ`CO+L8BF=EJ7(D_mQia)k~Z6 zB_JGmadlkGz{R$3@7v*Hr>(gjqan9b+SsOWC~VFaZiuevOwvaF75#_EH)tPKA^3}ICtQ)wL3EXanBYT}zp(=e zM@k{2sgt@9GM6FK5n?=jh1p&Zg|wgLNoO_$9Sr!N43G|L432UwD~bRq8;fMs7f^IT zx8b}=oa8tK*ZE{FDhmipr@aGA9GtOG`{KsEETIKLWK}VDk%fwty7jd|nJ-+%tAEU9 zug3LX0d(e?1!x89I`ATrm9UAP)|4*PRORklch#+Rmbsxi%a`yh!qa_AonP)N~C=_edw3i!kcWEOy9+k zU!t3(ogt7#_j1J-w<7Os4tbyAd({==q3QanlJKUITIdL)8-9t=yBwBGyPd0;6OSvP zd`jxjS3o)T~D30`bJJvRp3Q-F;*I zaAI5KM1Ag&-Ka-@(KsKXAdku6ErJvoOn36fSRy+X1r(+VaG(H~*vtYRKmlD8w{(#; z^a>`gg?rTyD6N|j#@A2^WVtMHMY&hSX^Sn8yvn^wUS&kLM5P>6}@mv zV2n)r8*nw(#MLkwoQo{6TQu1EXJgKx_|;P@HUfn z9OrG8K}R$4oD3azfK7iIIwqjtQ@za;x*!a@^>@Jp3$s_}xdrMNC#3~W5`QTw<7mNh zHbwIh55A3$h9vMfCo&pTN5+*4S$Y8HaQntDXJ(I#zhwY_mIv8_=ZObWq3LIH4skDj zHfa)sn@!^UjXfYS<5VQi?#ZK)U5Hk^9Ke&%kBXB;u+jEEh=c*90_y>%&Xbbez?nxa z=bIZ9lutzA|G{$pXZl1Gp5PM!?b404Nls(3!jFEFEtc0q(7+@nS6evy;08B^BtLM8 z6X2))<+AR2;*7CWA8CgC!LGg)%&4hFUv7(E`ayX7Y}Y-1!XTj_edC=XNYBFq@=#-N zJ&!r+!@ac>#J+@FFy{n<4>0tnX6P9VUFJ@{e^=@?A_Z&(&CJl3 zTGG3P%eYlIJkO%N`xK=Bm?Dy)FRIvO<2bDOHnoQ(sf{KIv72~puk0)sPV7m4-~wFc zY-~`{aa?MIU<`tb+z)2H;@aic_r))_6n>}9^8W30mSuO;S$>D-7`~_AuMK}+z~9yQ zdk}xWM!Y58{Fjp}FV=jUJuiQfBNd!KS;<2Dg*|ixYbMvj?Z$L(__i&+@NFoHYi=TK z|FT_Zdp#a{lOyVV=^ji=mpZ%m;yLmgV(U^kF6DI7EydOGzYsv@v5p_gi_O)+U9|&t z#-evEBN6=QS9Th!G)`ANJd+q2m2ukC1UNLxuoqMSThUhcN`to-|`ue5e<&@(Q>&*mk(U~RO=sD z{rj%X3XW+p02|wG{FY-*fa@BR7+1$3lxD_$5#rRy9(GxQ#BL3pgOg%sjM>*Bts_)m zCgY~(#1!-6Lol-mZFY6EqXfX#A1h$P$A4HrA+i4FHi!-*>DoCUhyQpVw=W>l&64HG;51;Z}9K!gp#Ge?Am~IoM;p%2c-|# z3__~<4_DsHIp8UHd;f%`%f-D1ovO!X?LePZs&z>Hm7}}#-M*p7E^s|BPinRfM?I?d z@Idda?X|#yJ!=PhakptSq@F_hixvMG!1#KWuKxv|7|r9cKFq)#ldu$yXAO`(aq2$k zhF~f(gGYoMc(wj1P`8e#9KIgjS^r>9ZDbP;)?ktl zh_Z%fNU!}9vC%%#)cfZtdjHkE2b{A8;922T7oOX2He_U5s9qu1|Gw)U=7ud|*U_Co zXrXUMWE*b?App1$*7>W!L72Pn02b_mgnDK4v=p;S2>P+0R|--S}$Dh=`XuQ}T+`ek&{ur~Ghfz`hnOKZv# zPxZ%d%>MY#?EY|{*dLyBf4HST-0A*!TJ?v=><^C|`|iW7(V?&6?Cp9E0=b&gq(9*S z`e^T;oU`8d54i5R6XQCzOE2ab+$LHFf!1j_K{o1CbcF}$s$Wq0KIv+2su4s0J(N{P zDg@(h#4Tw&{LZ&GvJZHeK%%u+<@%$##SSF#G4QSEB_@}H`F4_C9@unA$1ARm1BleU zyoE#Gi(pupJ)vUw&qIdMHw_!T2c}nm>sosMJbl)HbuXj49!FeFJMyizZ{S0)Fs{Q8 z59&f0q3L7x`%oZ!q3=TU*rwXhchm)fIPj;&|NferL1JEZOct2|AJ$K$uze|XAoKaY zopD8p=`z3ye6L4d(HwBc@c_uvgs4E=vxGi>m&%=)YxyQ~11tj7m$ig$#$_CTFBg-> zgUO?qEF6~56tfjt?(kuKpBie4`{>)jI`ntYzpuFN;aME|ws`dq*@tD@>wG;pyR023 ziaY11E{!^W$bmEK{Y(9?tj4M=x8m`rGE73t%tZzn`Ph~IPWbm1_x|4Le|ODoEK`O{ z*$yca_%-sv2Xb)DeGf{rZeQC+dNFYZz>-$W0{^?KUzQ5=O{!$!iI~YgU)CG1juXWA z+&H0$dm^w9fK}<+cp1WDxW@Vud6DeIkKU_@rv2DuA$$9=WmO>mdXxuYY?u#m;F`Onw0Q6PZn z^GS>io<_GxAHJNoXzPPGh466@NbiUv_CG)0+k-T{F5~F*0!^}>s zuplPt^fGgwSsp<7Ys%_oSqc#>i*KqdqM`3^!%7RwQdnVGd{bo+Cw(c&Co&(_`M(NH zlTe-_r*$~FckHuhs(_S(yV~D$`gdR%uYmL;G==-a-LY*r6Bhx-uiux0aH}dwA)&fh z0qG`IOu88xj`hy!ixo5E=&o6>T)0;|d%X~pm-I7pFe;gFMi9P?Z>oaQwE(z}4{y%8wPW zKV!ur+?miaM5T2_UO}3~EoRAR+h>)Gwh4iINzZH>!NE=@{2KSaXCjGJ6G@*{Eeaw$ zF)vAz1u;{!k|b%=rwS6hT=dy^(au~iW5&xN!h)CyW=Iy4JR%U8q#zH7Mcb0y?9>4} z``Q9_+09<{;O%4b$2b?3vMeoc$0Q!ZfA|H zwz_NEgxHqucDJl;6|Le-29xljhJYA_wt!UcI7owF5(s4e-{+h=Gj~E>5iIC@K6CGR zecsM`TAru;tyWbb8NFz=ty z=Y1!;t+TcIeS0-+^#i3Ctbcwq!UQnzXIb5MpZz}JAuNoMD2C{y!G!Fsi054o)&pn6 zWjAjkj*)AdU}o!X_(oX!DI2q=MI}n<2t6254`O@$VHB<>{eJd*2+w2x&2M3%{avp= z2-&#PGx7AKPo}413VTjx&s-Lsk0-8#TfjW`vFH7G9{X>%gYNC+N7bh%T5wM~89q-s z*>E>&mffsDcBgM*;Us%}pv7XT&biacCb-kdmg93S_M}SYW(}&Fjo01jWYF=M7kg6m zaI>b_&Gf>ZPF7v{DZXo*itCm4u|)gv1nFJOquWopO?bM~>1rw^kcIVzS5XI*cfW%sbJG7BG8eRTZ++-zGE02X*;OVHg<61ys{z;fKsr=iCS`k ztsl|Y^eyFaEPs%>`(G4{yhl2Cn{;x7P$`{EU163^I##WKcg5G>U1{-|u8_J?SKs_v zK9XjAob#uZx5#1n?ZwL7$(Vn-4CeB+5z&}&JZ2ij(C5If(W(;5W01p(vFvsw#T-PS z*G9!j6I?pCJ=8*JY1?=-t^B6%1yUD&`1LR3ZR}dMP%V2I!!a*2+AXWsyG%twl$c4?iu~mX}as>Uy+%QhpB^=xmi#5VZ%pEvx-l zyh;<7!{lYiozjQ5@!~j=^9DFq7PE_HHlu3$OgG}-ZF_YSBL0`5Ix$~FrHg(`-T{7i6A4ip)#*8B{X5=~tA4uhDKdbj3@(#Hr zK8AchK8Ab`W61Y0hD@h1Bn|A@IFi`}WlRhan}!4rG(MddRfRlKh3QNcXkL)3Lm*Kd z?twng1k?7YPK;_%w$(!+@@3O&szO{QziDj8rG4G}x`?e*RW`0`AwhdnY3`BA0x7_!Rja)csBQD8#G=>|0J^OQc;8QEG|uGt}$QZ9f0 zW+2eviR&a(?0J^l zDVS!qiqjIT>QHAVxK{n~qXYz~9%+CtE{LktZBma(oXNEbQ$#Q>Rx&Ol86)A{WMfEn zE%FkP!TyN{f+9R-s&!sBO%KZQv zADiE6)z0=D!MYxwKewpq4ayWEV{WG2i|nk6!tN?i6RJv&_6}E&6w_(^-tBaZ|3Z@m zw-x8ZQmr^rX=bvpDj%ZlqpKh-L7Wfpez7`%cN7C8HP1+%$ACNrmS?o`0?X6815{M( z1*!^N{EKV!NKu$0z2BqOYh(~7v@=)7t_eYw%+0*`C?6kMYi|+-Cp&)9B4cGGBYXcDAmTuy}3M*~qkv47ig*E<}25)Z<{c z7=-8)VK2KJ)Bmw4bU%EJNxE9HKACnTU&NA=7q^M<9J3Hald*Ro&~?xrnhZZ{KG0ET zdFU8l-h8`9*HSB<*|VNrArm5MSHMM^c{7vmaVMc;zYw%f(tVwuyQ_PIy{G8VY9Rb( zT|0YE*J1Y${JFaQ?47S$Vj%xqo!^L01*g+T={L*;PbmKdP``1k{N;sJnRWRH%_6g% zapfDh=t;Lo*@O?eaDOYpvCCiqz3wSgK0u(?A%ZsCu%P$vH%@36+3X%2S_I=$yOM%! zYw^sqb_5LT$uA~bxdTF?tw~-7h1QWFa~-sFynjXOH7#r(PAvgNB3d8!+E!8gRtq3^ zqPV<{)$oTthO?GpASilyzt4KYNy@UnG4|8Q0*25x(J5ivfKDuOsk zSumAM^1o9qR1NTZ(2Dyxpt~bm+%_Ktvq&yvDRP}V$zENFInwn{AkLe#zJ^|--L@y` zeVN1(nC0`VVLVX6I~Q!9IqRw%iPxsQeNM5zNzGGjQ7Pu(b5SAK)^b z>L2c1EUlHN-Hy^9fQAVyZ3<6Iow)(hcAzm2D5;co)#?G#y~Wbe_w{>M-913MU$S)L zSh}zEpAMBe4Yt&*%sax5e&yoZ_@A?Njri}u{}BEk;r|)_mgle^0RKrppRK!2eb4&Y zY#sgQ!2cQkSNwFgE*t;b@V^^>O8X7G=^sr?Zx{Sa@TU0aKN_Ebuz~(RLO%LO(?{Q@ z5jMJ?yipue5TA?xgZMv*|7-Y%@OQx0=i&b#{)zoNc2w8LIIL^0bb5LT8{plSnLz^w z{L}Csw_=$x?IdX?m-LfAg*uZ`;x54zhtcVn?0b!BSnLAqO&FqKsDN9r*~CB%OMk#L zYMb1$fEHquv4F1~W6j+LM`c`k68z&*zzwg6vB$D|*(|;Xpr<$jt zXJ--a^g3Qe|J}7Mxg%(CGq*6Fw^^wCM2qs&I2tw3=vjFg{g&`p9t~^3qD4e2x|?7s z$vZW;Az2t(OEA5=aApt|4IR`XuBQ-pIwc7ugO-`;<#3{Fiir&l&&@(y2U13Ece6G# zeBI3SZ?Z&tkf@fLQ8x>4eW1r3Js+4xw(;RSHfOY73A<(^9LXWtS?f-(AWT1nllSw> zvs>34XpaEdu2I{fgRHfhXumhO?tmQ$SWl+Bo|@s%G9+NlEwX!eO^l$0#3fgwT5y9p zi_aqfd{9Tr-h3F0S=u;?E0F?yYj-*|%JwQNyh_m#2#aX-Orz^+tac`xP&?+QX8x2U zWUo2|H%sDX0VoPeA9|C5sZn=*kc>V?a6P$|V;{k?zkn#}#M@mTjP^`pGdc`nE}14yA0dSN$i{43O>BKO~2l zOfx>^tA>X+;0(*oP^S5sw{rFJ3E@(-Y&K;Y4Ce+tZt&@$_HgKky*8SxVldID=h|6Y z>1KhV1)~|$1_SN^*Kp1&gFBu23ZWmN^#iTqwNv-H)2ZEer&D*po&Im^`5pHBE_*)8 zp45|2UM_)d&xLp~J5yB%5L)=5+X$wa5<(bL;o;1@>vgc6#|O#ioUovgyWA{@_cTMv z+I%NbSvf7r*Qp#ohCd32_h1fmGrybpR1jN`Du((c0>ShICMP4b0p7ZMp;)ljQ&`jO zWtH6|Oz`f?w73o?zdQxAfg>AU$-s*>@Jjvx4Erb#OCQxP>J5ZS0WLb3GohBYGg0Xa zW3^*HcRGbDSG*sIaA$~GQq)s-`r`z{0iQcvBIiivtRg2WTb%CH5Gq&Pn-)62^oYz3 zx)U?svsbksKz2|7Y+I&uu$^^0N42neVomn2C|*x~L3!yOxxfLFj9aT%rk&EkDcBS; zRyy$ZsOD%U7R55vQZI%}$|8L8W(ym0uBSj{&U-L>_qx-mJEA;@53|Da-RY$6N(B~k z*w9(I3f)I;fh^(cl$K+0-<7el85g$0R^3Ygl6WBc&oreld5&`d?K#4zZL+<3Hl~;m zh>f^HPJB@IWHk^bEW+DTA&ZH)zDJi65XRJ#kF#ZD3;_f+*$V&y3P;0;C%wHv;Gh_6 zrO=gQR-!?&*GIcAzO#noN)^zH?Zj+oVw^mK1{HX6#tNg^KyVUCiN0T9>56rAdy zYb);kJ%GAsBOh0A<+q1a0|--LMOU57pK|Brs^NtGS<(Kmz-j0U##=z_|6H;jXO-Y@ zs7L#a|9t$*@&7*lzrz2}uV(AEs_)}?(|_#qvvpJPr?^GG!1p=${|Wz-_){4DGk(ec zQGYJ{0I3uP0A%SowL@=u#1*;4JbtndbsC zEC4M!$&MJ|Qo{(M-NQl{2idJE57;=x)-f3A9tY)DsbKh<%r_&1ev;qFB|$t&enUOI zwFGO@69t2&mu-wb1}=aTA`KoEz~E+YWh*kMQ+(N1(PgB}--7A*{QA^NsL<3i zlaT&slW=**>FrvJ3fJ^B4~lQ2{fs1i;=}3K-q{8@wK@ef{C8)P@7m0iT0Z(}V4=c}n9sR!%jm-MAXtp;s$(uIe{X5)g3#zxS zKDt!>PVaN$qayXy5Y{gSA93bm_4A9t$NBSr!Tf!3^5ptLTz--Aq*DB1@KMQqk@~{r z*$;mszu@|J9`F%o{mSz^;3LiS)lez+p)cnFALoxs@r%L7^@X_nV(@W!5|>{LJ}S9k z=*zJBk9GNI;fvU}iIxX#zZ+V4^a+oZ z$C>bkQXYN6W94xsyrGmwpYT|DoC$9z<$5xSG=~6Yvv+ zD1Mf8Sold*IR9$Bm8UTs$s=zfepY|;=$U|@AVl%Ati!@js>SiE^<19DbSjU$iTGK4 z&!cAoeu5Ci&$12?|3;GAVEXraB zu74aq*T3Q5A4LDO__g|{!O!)N|f(-R(j8|4bgTo&x|Ey3n6?nMv>mz?Z@?$AA`gf-MSc)O?cc%Q#gx_0!!-3B=k4sT% z7$XI+Ri}_zZU?Cs*T72i%Qf&Q`8bg}+V57UAJp}`zVZ`QiTQQI%AbIrSW^5r8|*Cc zv;3|>^N;SEe}l^Zu<~p8SM%$Jm0!cZ;bqQ04zU}Ue=Yq9_&NWB=D(zG{?+nt$FXJu zU{WzhWgzWGKS%KUpr66l4H5pBvy^`!4nrG?{0D>I2mP#k z+i?`wxq#oF{Ap&=O^Nnj#x_kh#n)S(6S zDvT}E%8|=^hu#}-+i3UI8QZC9*k|4~9cM-mHGZ`A_Heh1I zzS&Q8KRi)(JOr5waEWRRj!KVkq0mFO*85*!TaRHLF4MCQ zEBMUTk&Z2vGDw0cfv?J-Z^s7fkz6n&l>~N2_02Bk7y5_KA@l8*=){(JQhg6Y%3RiS z@LdWB@G!wg%fnZtH*qRBQF9HZ1S+g&P@&nsiAz6iq+hu2TWa9jP|NGCg?dcHAvahN zqXHil$ZjpKr@-v3p_T`+#alall9V`og84Ib&-NMnOEG<+0+9hEIvB^B!>c7+QUDuH zNhx0@Yf=>ulO;2S8?#%L#mJTIf5B2d!#s&nT#ghtoU%}PbqhX9rXZ*pGePX*wkKJuNUhf=_rD6i1Zf0rN&5=(-7NA*fS{{M!T z{_Q`Uk)C~>SiHf+KDQFaDhuDhhb%>YNWmC?MJ!~>hK?oIIt`ofrY(XKnV9A{?m~gJ_Z1qD-ak|$=pSQRU zSY0P@`cCeA(V?D-D5Q6?B4j>+EIWWJAZ;HLzCJFxPpt&G;JNeyNk*T_wdIyc!$ zFmqKZmB{}G<;jN+25}@9qMbB4;i@Jxh0(9cJXuW}=SQneC@+l}l^T+;^Oxgeht_bU z@;2qiK%|};T-WjqY}YZ@?Z%52HcU)bb5xuj+Y(?DF0Gr67m>w@Awe?4)V^#*SC2I= z-Z>^TENZhNx3h)?mkBqR(Xb?;g^8{>Q7y`8^DVsG%qdzuF514ZdV-T0qvxaGh@PO_ zj5DL(9lpsVnajuSgqFB7s;OlQdmbd)^yG`p%L3j-?)5i@I6j&UeLE5 z^jhe|L^pk~e^&V|xU@w5v6==WEBVb_y37Jffe|2q85i$7kibd@RO~t!Pz+ud(NWbR zT+TAb`^DH0UBy*`{rijHXNRYUN;vw z08o2bHeiFPCXI5!-=Bw{*+V3IYQJO;Ads`=hfmfrdq1dtZ2X-15zYU3^@HGine;>D z=YrJ_9Ks>_$7Z)O+rhtC!BO=!C}qnXm6W823xNvx&d z_LWJG&6s(ANSWLY8rQJ^_u~|RLnYXEHmn>p*qCXQ0uYh52!jdobHw^@Ufa(Bid`N=`~Yl#so0+NBp<}9-IQln97a(Gw}no1TXB)iy0(1w>u8k?U)YS!I2 z_Wbho#93_4pq3aLHoQ85M>z=|aT-*FaRQ`vCw`zOw0QTHNq1GJBt)QZT&l zW^Y!}mI4~Z8ryRkS7yr1ILXb+MoB&orR`~OolJ3$S#g=`7`hohn|0LdPx_EUV8UWFU9&i^!$6%>sRTecmMQKtj|Nw zzc;-#pyB%A=jTBA`ulgLmvoZorFZ}I zQmm@KXHRd@nG4KGs;O1S_RQciDqg_+V8ZvQW>Va$lvwk2hmh(`YYDs4yi4>|?+Zqk z#gc!Ac-U)M+7e>pT^u&|x$u!neUbP`CB8^}RHVbhN9_@M9`_@ocAtRMl!PyhlcG!2 z9+m(};{{kl?V}v8@tb^d{WLE zeA40bS-u?p`72)z|NNCNhkyRcm%~4Q<=eu_x8}U*Kb5TSmGcL`{XD~`l0BdFQ^}rB z_`G~Kp6BvCfAD$vos=aJ=20B#!|#FADf})jg7kGy-n`M%~tI^Y&&0_*d}+O`NqNNiOmvS+!k9P z$o8K@`p6Jm$n>>e;PjEAUdZwzMZb{gi`S2MWxO!!$Aw8>ynbAm^u_DPg-Kt$ew;J< z)cJoLE38@k!GUEp)Y``vb`D1uOZ!XD2zg(0lED!3 zb9wM%;}iCuu$hEn_VJwWVN;ZP#w*)5cIM}FL{-0^y9Eb@$0*T!-oqv@wD1y1R&CovF|kRGA~uOX@H~e)U5xz_#E%NUwqN)Z^ZDTuYkkvC zF`pm4zhC$ibC&Q6(deif^7ys_E;8DUct4=ht~|DM($O-ZnV%$^pr34+fX`Q9I|{xJ zWdW?z*>Q^AMTV*tF+V=L@11SJ;sM*{$JZFNI~t~NGV zRhOv*(*%x0vkxu4U&Nr@FOmV#476V)wvTO){C(~RF!HL+B!#VLWDuw*yz@Xpul*uK z$1wK;n7nr}8Gmv6MTXB$ANv9NB>RipFTz!_AAP2US?Kf32H}Fy=b_Pi;ncqbdTGBQ z)BhrFHQ3e*-u8Og(#FhP;yiwcdx&RDG$W-<#e;nqkfqo;Y;3?DO?;C;R*bh>3HD(;MjfNRwY)KTCT?h_c;QB_<=71i)4#O0?Jq;E;njzs!nR{}*mPMRmOtS% zZEa__Fa7VEerf_PX8NfLT+H-S6}Xt`rzSv5SM{Hn{xkJ=Xtg4(zgltr_5UKKpXvWa zOh42Ai-LY;jR)xe8yAS5Bn}By-FAVD1lbe^!6V>d!^T&mi^ZqT^?f`g1|?!_VU|VhNLuuel8OO~p>K z#d#kt?Rg&tUBY=EI9QIRx!Amx)G(TjoA|Pcc8ZFvZ{noz(ehEg$ln_Mp7o5geeOp$ zvG?ay>Ukl3)5m8L_`Csj)Ae;;i0h2=LXtQaY%LidlO+wp1)J+&-_s{Yw?3%Xka4^o zllF`f#v2YQ;aIbA+CuLmmiQueoK5!qgPv}y*K8N0&4PT%FJb+fKDl5YTxhomp1f1N z6O8Q<#AU5%vf|6VEbEBZbdz`d%%HeXZn*RAYQOlmA&yd~bFnUGYu;u2EBS|B{C0fRAwl*#^G#<$|mKUjhCHtp8sD{s*l87drp= zUQf@@3&24E+Fk%ZF+ls_z?scI``%Li^iG^XWpm}G=&(J7JmRs$)ycv3xA8T~-bb>*2+g$DTlf}g?}IaIrt;f_GRXeRQJowA2rHfX8y?ZYWd4x9`P7!Z2PJ}L#&wU z7MU|Drn*Y{cdLJ2HvW3ozb_kqz3bnF#vhurB02qj)FO-+rJyn4vpEloD5fT`gikFX zInvQL>-=kV7kx0d!1oF@6TbhV$|$7D@Az&`&U)87ZtBdd#H0mxVeEU%n>xumE_vpz zRda?o3ce-Q)5YeUGS)Ii&yXFkAI&!LP#<{q(8j>$h<{RJ-+z%5zMA|~$@~6`r0~_` zpO-&X_OB-YL#_WSzvA`(%gX;y>;IRP|Do3ZFDw5;t^X^&;`RT_%KuR7|Cg2jq1OK| zEB`~S|Es^^_5aJt|4{4ymzDpa*8dBRe|DanzW3_4kv?Fi6)8RnkA1_=C%~t+^4s8K z7oAw=+r%pWMpA*gn~|rp?FxV9NmEMo)>V^>vU=qAyrX9}uQ0m~B)dm@t+yIR8@A1C zc8^|RxxV=Yy?b=nFtv5w*TwgjX8T-AbUUt&qE9}VOo$H#Y z^3kb<|1EE$vkd=hd2|oyIf74xeLmq+;hj(TR2coiFNXZjXh8bdJ_=E)YiDjI{MdQV zB%J=vD@CTy4WER=m*|LvU(n?XvGb(Q1$c_d0Nu@2H}_Ja$#_u_WJ5h1*L@qyx!x^lIRML0-qIf`<(x zpJal1mKfnzjdFI>6D6DFlk!ga7!PAs>Up`DPFt0`6WLBUZdY|^5PjU3fm2x;WVf9IY) z5+b9I^zZ_tkCc$nM}%I0^u^>ydUy`#gN5nc`|6|dmmQ>a>RZFZ3$SF?zHpcil z`6I=R^G80fo1UCM7MsW)1r5v}rBL}Jr^+AC_l5JvG%Qwr?Z19r_@vF} z6Fy1ve8Q(f8b18~7EjgrAI;od#^!Q=jcM6x{wvvbSGHw$wHsIQ?Mjh5d@!&IZ zeV4~D@G$4s{srQr0vnz@i%=@+4XWCXJmxKE`hw3|Z~@2b5TCo-NPYKp4OEA+ z{nZ_-MzK%8%+%HSEPHECqy6bX^;X^&7jBl*X$0W4rgZMTVz29ildhn>2Wi~al$B}T z?blmVIs)zR2ualIx6&<=E0pN1_R-N~O$|u+-1L$PTuk(m3SCU}k_vu-^wRvWR&hyd z`)&aE)Q4(>HnL`bnWA-#q{4DT=X-1p#1*jLS?w3DDe{iH%p15qhJB7kpc!Boz9P%;HtvS z-qco7jAG1=q2HX{;r$+I%gn$E3p9ecz2BqqGBkL9OfiOrnE@WY!g@VTma#N!!c6Kh zukc5w%zAINU`Fn&=ppP;ddThl9+el-!|5V=$Q7lB+~<=X!XBlE++1Qr52uUhAy~J2L2BdU=STnY z%@XWXcx;x~>1M8csmnajRQ3?sm%i|kDyaC#$?=ivJmDi{RPm9M<0IF3!be4^;v*-= zN3J2^W9N%W{$zHznA+>)S21P#>q%SJKZQqhH%U#+fayu9>z^NbdXmce-w!=KakYL+ zLVA9v7$-cCOm_nCTbFD^20L=2j;La+xNV8NkV5sFpUC3*iOPBc;$}eOvKTNwq2l>T ziuDAdcX2xCC>{{b`TP% z0B+xkm%LUVJPs0r*TH1NC~^>+TDlV8QEDwb5<(Onm5;|kAzlWAYlwq_wR(~Ok5X&l z5eZRvM3aYc;AKEK$Bb01-Xy>y$!OvAM<0_VC3dUyQ2^ItK62o_Fbp2lgWLIPC&m*~ z_jbO2MJpdtxDK9lHQ-`J?>eIU`gJ57Hn?Pd!D?vuo!-sdXzTaRmQI*g>_(5To4yH% zEv}yxK89%>amVqIKZ=js=Nccw#JQxwGs7IkM{(yGpPx9>@JIeAK5`EcAKOfdLPWXo zMz>nMlv23+1w9sm*-~_T;g3pjC=1inEC&<1?(m(tBz;AENt$x}x$iY;ZTSyMFO_Ya zUh)lPp}8M=DZ6%wnbS+5tf4#?^pbAG=_TJ#7LNO&m$GY@j5)m&dd}$eC(uj2p)3UV zLoa35E&+3TDRijx4%z&uYwk(S%kkEhbJO9sFev&fFPmW>b|1HZ;JhJ@c7*_t*S$>iN%TJDYe$D-{ z>V3t23mXeu0Qg9BgW>x> zr19Ebpr_+^c&?{RwY*zPac&32t*59)GX)QTk3>Bfz5vpAZ4LBv1o2!?nQEzn>b6mw z+d*;bDXP&-!M*U^k07punw~J%-)JwTYO9#U+MxFAt!TX1s$P-0tT&5yb@}y})YtX# zUJ~_n?LFI(+u0Y!@ig#0`q3HtMK%5NKIx&-8xlQ~kkdmh z*7qKeo?o0DJyg0wqK6W4ddM|6J%2bmdi+DBhZ1sn$Tc`UZ}d&i!1K=u^GQWmS7R5i zd;g;bz|@ts$H^_wQVMhN^|e36$2$YA&-4eMiaZLR+#Ei+&JBDj!YF)lbNJ*sH}I)Q zqVUPh;ghR3e93%2LXELW74A3n@|%14lVbjt^O0TI^HfhH+h0rfIoH#&XnuVvR`w~8 zbl8H;g(oV_^1Hr;nO5bYD*Lyu?G zdOY(MUq=CVv4EKr@SAHXU^lYct2W|kKKx!JB6Y2>f4>q91_sCOr@lK!7s>Rw@N(tV zcyHG&u~(T9x7m#3KGUq_WzrT)u$E$2Q0@|Y^<2dJ?lvoBS4SdpyVPj*S!XGW;4!xM zlj9OK$7F4e@jM6eI%2L-iBP-_LhSl@NyqzFwn_(2NDWr`(-@AtG2nM~j*xZ3JK$3o zAt~3{tDgklF;14klgP>Dky^g;vPojq%P5&c8?pHct(5sYcnDdENhSO%{O!L8oMeDYKed6a+LViO+dm*+++zH zFpb*AZ{a=STX?rgX*(T>@N9WIvcUgM!XxGd?|{Bfk;nf1Cn+cByLkTp9$qR8#PYSHJQ&e*FC!3L-n{aHBeRc;F47Cnmv*zt^8^f!=;D*mQ* ztl~e9SIiC;B97U?<#J=$vR>x=9m*JQWb9@QNk@DSn_-Tq0W$WW2}(`Y*rUH0kM;$x zdN6n#mv8bc0(hMU+uw}sDk1$u4vmuKlb3X~UFpv}A^ELxJNV@d#WZ1(wxM_$(u)bG z2p)}qSS!JKQ=5oyQUYoscqnThxKrCW%tk6IgSn5hGMJ1PYaG-})H0|}Y8JRtEBb`? z9Zkfj&9->Dj+X&l=X+?nh0EOZA2)?DM7qq`CR z8Te;_hEsSmS_U=Ql;F$TMvxp)NymFvZe4faF}+^5F7U7BWStUnL?S$e+=c|&c!A=##^aS<@&88g zzec>=$W*uF0ESqnv${(vb%ha!P7j|V z?<$esR921#m2Z~#aa#gfX~b%n}@SLt-p7Ap)`0ZUkE zlKfXx6tcK&vA8KLuH63Of~)W-oZz#1eAYY3nMqF5o#iios4LHDzOr?W=iW?{pr6OZ z+Dl}t5HeFixAjHeLQA)j1~;f>{ewkJjzzgk`>|0F#Lm~uNW$NBc^pTpp)QnOe65FS->_Nr=lw9?y< z9+lp|oFTm*#Nvi0J&Q1*M1IS+wp%$#W#57(W)ac1OMXjPK#tDkVXJh+%mQvj0Ow2I z(@O$O*kci2wv_TbL8xtXbjkv&F5I-O#dB!G~%Vx<4+|90-oI^nxFGga=C zL-I)ke)_-in|HG#2Z}0OI$gf}W~H$RM`{!S#H0$8g}?CF^AX25AeFiz^+ch)YBB&~ zJe67QN#D_OyKYgTC%qZ(h-04)^AF`lD$doAgN3mu+zlo#t2BenHpI&g0&-8pu^S$q z&LrHbf^w&~08o>ezyXO)c@N!y7fdgYA+69WSE9JWqW~@$z*>;M2)~HqAy8L;3R&c7 zeguN_lqPeR3Zk&mR8-OKnS-nmumMN^D}ALekcv~hjl1e3;tI8Qwj?~EgYGgSGZE^h(Fkzf5VLjwcu&7e8Yac z@a=~iuM#n=B z(~~wvQ=$TM`XQAjGwBZfmdCGqtl{b^9nP(8wO7&1Ov%gC@z3_-KoZlj|E^sDF+rU& zHbSBBp#+?nE+oKv()}aYd$JCbH}FsKLwU8qLstlPlabc!q zqVzc0mW7!nt8vjiNN61ggrtv+b2G29;4xl@M}{HdI1DK)m$u|;RJ>LMLB-x?*MSkP z6C=E~Rq%@Dj(|bD%G=^PI1(oTkXJ9-Gp)H+aXhyUdhxQ&q&6=YieFB{TX9h9-B=dP z?uZ2$)SyHKOt3At8 zmB-?WTBv7sN5qkff~_SJxWORK*q|4t)jkT3*YRCE{rgQL8;W1hGnHLWbx*k+@Kha! zm74}1mXk7Vi|&Cq~N#i#W=YN4!9jQiByPh?fhOD-U$VUJZUZ zdpS+Q{245@_;pgzMHQ5@GNXbD6D%(vIr_!R7#I$g3zq@s5X(JzBuoy*UR4j+vV%fg zTlMP>l5C6JOmDr96I5?YrrrOssXW3I$L;tIn3WxbcKyG>$(Xp)!vaXdN4QRo7(n3% zl4!;#OpYyVz69;UDgJR7gmMGvw6!WYU*Q=_f#B;N7hqZ-NNr9HL+b- z(MEC2Jfm$PWsF5Gs(6(mH}XhF%Qq-8%IG~6&&MO{DXwle9xBvl;&C#EN|DO99_op( z6qP9zQ!pxE-MNYyO6(>q??xjtVv$wxNZEEMieXX3BNQ%BCNS*xg0xuVJrxhfBkL)S zH48W#3hjRvim`;D;iVlf=smok^L}H1TxdeP;s=lr8Y*dv6&(T#%XE*n@aw2#kOeY3Ns?ih92h)zYV(h7-q8|W&Mpx=c9R^@lqd81z27szjq&m`) z0g`Ies*W^gfTS8FWBN5fQjN}WxiAfjE7u-XTBKTWt=dyZdNTl6jiS-=NlMH?Cv@Q!yMWf%!d!I9bTNcHM_$Mx`FZDzkLN z7`8}_Bg!KfO~{XCW^Ni^9bUBVBTDeCj%Q(fX*h4jIgX8nz=7nfZ8&TwYn#vH^`$n* zO|L(I1U_qPc57!RhA?ab;9ISKz=#1;0LE>dAF>y^sn>JMZA8vHb zt6XzWp;CqbOqn|N!|;!4%k~@J=flQJ+t&p#7yQJ!JvY9s*U3T9_jR3oM0!W34kyvv zjgt-}p*NKRkUA+q9jjDAE1&RgFUO{@19lviv@kQxb$(DEJJ<88Vs~n`xUm$-nHoxu^jqs#(=`F9aB^2cHu z$KPn0X{WIQAL`WQq7zG9?Qv*|YM+9fHt6kDw9eqQ{RqA$GbNzT0{Vo4!)x2e0vE;t zE#k-~GkNK^!5~~#N5XD07pf_KjbIn0p#b_7S6V94;Ep)lMzq!ppz;eu$TrHU+zDir z`iSEPh?S>3if3nArM^;srN83-XXohhQM9w_ClLU&gLH;`{akn$)`|?c>QnLX*itBk zV>+5&7A4yVCln>}7``S6D8`)TwFWsL+r}Z7rf@pn_c-$577z*)28N8r5qs(vAUN8^ zuO*=r6?@;?U|?M=;l_@jMYzs0jYJ?f7NSGSdRrzV`fijK(c;yaon`CEgA3M43~_;> z@3Sr2A8y`|BqUocERAeqL#wTVX@f~ffkdsIY1Co!Ory?P^;RJr;g@H2d#2Hli)E>! zA(+~M?Da`ME7IZ(2KlI9?`(vWT|zQjYewJDk5&@Y)Dub7TSXIk&t?`E<6@QpT#!=m ztYxAlvvWQ9gDSz~P9Qi91ozp)1mRbM@bt{?CNmLED#bu)i4WF5mrb&bN;D@R-c+$4 zj758wqk3kY4S_Bmz;#Dwd9__5sdPf&Qnc*^-hs(ndHK}Kvq+w?#gWyx(pp= zhm_yLqeZf90li=@|3ZOzRDX`y1OgVD^N@cQ4s2rMheonPy8mS>aN;|Poq^*+aR3*LJ zm5)v))I@JEzU{DcNYVRUii-O5Xq<$zsUsb3nw$+ik+mUPv7OVL3{ z5k?}io+86Wqy+4ga%h(-n#7AQcGhKlm;30jd3oUy?(~2>lFid6{KhH<^ev zlcc=g{4-4aT5F}DNU1}uC@l?-sv`kRlw& zk&vUsy=(-R>Ij{C8LAwl3fV%cMv^K8;ITH0!3Yy`lk*UD5DJyCV+o!$QgBFaf5aj?_q#H5 zVH*+^R_c_4*c4D&iaNbDxMN3AF(j2X$}gs&mKDi4NV`gZS9UA#ENw{9 zVIhtEkkUe3#8J(7TE!9Yn>r65K~d)chSdUysYdD+TRIOIcWLtyfRf^(>wI5oV-tp~lZwt_G%hV3Hx6-8Hq$77jLj64%{CB}Mhy*OQ+9@TzQ@?y3pS53 zHpekG(_(CaQ;vMf>t@nthqPk_b zzZk5v6e@FIAfaA%wZ6U>^qOW%`_X_3X75$=!Y!`u8<0y(k_u7{VY90{OH4vIf@Eh3 zI=(;fKx3ga_9_>1WZIut4M!#7O2tf9_Y`47lQV?|7U8Mhq})dY8x}n&2sK(49`7kg znNg4;jzvQ85*BaDT_Re%W%_x9Lu!sdP-4pKM!@tqkE_JnUp$7oVJcRtyA$fh!_s~e z2)EcbZ`aXmoRXJWF~yfsy;n#= zZTC1&Q2~U%zQMGas)l&w2E8~7HCPz2ZcP^?;95Nbm3i_Ev1`@Wlx3KC?r^5+n{*Qp zB>-DjB%A`cnFd-T?rbwQdYoMVZ3beG5lIaKYFAfh8-no;kCL5MFlF#e$C^wTsw`Ss z*s17WQLyVo!f3co_Ze%?4Uv|L)O>WLEO;n~fwaOzULAS=1TQ5fLktL3g*Nk`R#O0h zwJNlzLjfhq&*7@nFQ1Y36k2<63}P)y{2ojE_U+9a6nxTABY96qwI9@~B7R8s1f;EfjbX{cB!RL@d5P6;Aysq%-bS>N7LnWDTv0ofg>fXWBs(MmYF z0Kfh)3PPzvn^*q~U?_J&Ta_PNiO2sytvq6j&-pxx`xKHY=?L~XpX+e8=!GP-*So{U z%8^S7BjR(#Xj^rp7)ssUJrR$ywov&`WS5w24~_kijR~w zuNElvqFD)F1A2r^lX7Jyw3WDwIQ(cVkv^WNF`B3Yj#4!hsR6ae5a^`-1e(SLTK7D# zW$(=iinDyqL+F5%6<1^+4`^4w9+cB0H-^(GuDD_xMPSMHFpIHQy#<;o4NK|?hSX&c zGiB#EKr+`+QyUReBVr1=BoWa9VNsqCRUWdS)lb1OV_BMLshf z4sU@~c0CxzfF5-L`vbg5pr*?2S+>JobpSmsRG6?CkL^>Pp!_5&k|c5KW}w_ z{T3L}5_J1Y3YCdyHcCqil_b3FFV54?D^&ggnh$<`jf(5R z?f5JBhw%Rt|D*VStjmtL9_-e6mL2je+wWO+ywQ0~?^)Jje-SN>hPYs*sZhD87je8v zGy&-)vh#Svx!-4U`R3laUKgh zU2FBXh?8Aw4LAGd8N_QM&KBvxHl6g~KAqei{#uXo)9?hTyFwT%bw5PeRtuIM=h5(J zO7)V1SKgR=c|(6iJju6J_W;+N(xlzzZleS^JvEfO?3 zL;BEn;6R}754q_0B1#KD>h~=?__pu}eEJ-cJxs!;Fm_jjZ2R18r@ENwF|x& z_En8Z4{{>6CovH~Simlt-AVJfn68SZ70p*eSM7}4pYg;C2YN?`|I>9F6jKkWG9rwSChDCm?k3HMh=K*+TFT@&I;w>B zs^=gOrh`{d=B@~t7h$d3T&V|=Z`e04Q+6H1^$RDA_RR}z&t-3~-YMKq#VOw7TJy0^ zn9av1Zf7%Ek&d~uG1|2;aNCW*=5}t4OrvqL&)JLtX+xp%XY>V8SsNg(a!=B{d0``J zhDY4Zy6Z5+q5EJ^iReP5o*$V^I_wGf8)GSehvX zGJwlq*+qxcJ$+4)3eQ-oECsx<9bNvB5piEcY*SuoM`w@0he7b&-tw&8**0eJK33Fb z)E*&IRq0z|*h5()XS6D${xc9sNe>=kmXh}jnL1y`w5mlX zU~sovE@<;u)EPkS z(+R0w{p>2gkk7s1QCMKeR{u(*r)RCPMQV>^H%I}~uXTF;Izf?VqhBjbtvV!RVnr^Z z6E4LI0}(^`P2cPYLCp#TeY1OFuG2BsDbAcy9yC(kxwR2^v)gA@R%# zCn>8*0Enedd+GAXEqoyeAG&Y^5e}Cxov=WRjHdTDG8)H6M%j@Wc{gKlBF-x*!7OMI z8y0P*S<7PV@ZAU0FeDaFI;9CuC@Cr8!z0A)XL0tb2}s*yrg#_v-HbJW;^mT1T-obV`qi<7i}}88mS~p+6%p8#C=CaK?F{AW@^Sv8GOt{CihUz zUwBL8S#!!~x{{BZsxV_oJW-cZqMnoSACo6Q)B2MdfkiJQ_PrFw-)>Ej0iS5$la1JAH4&g5FCT2 zOf+X98nYavV{B9?&$G&9DH|R~FA=nF$hTJ?p|@VROe#0&Hl*0As3_&TESWu?(HCY?Vy9&}K|Ri+ z0CmP1>vGK7-DS)4D7HbArfMG0K%BtDA!wVo~)F*UBaa{BG`Bi&8A_nY- z(UG!O9jESjL3?&<7>z=^EVg8~&RBfd{)2r8cXekxdMP@ZkB!E(rPnnDl~vkrrvbWs zb5&y@yn!y0)RpXUw%EV_AIK2Nte&uWj!r6Qk9ZdE@GM5RV83VaA)m2u-Gt?(4;C zXw^me3_g?%rYP*bOL!6!%~I|Unc%~M0A^^}AbNI7IOJK}9{L2b%U;z3n}FR1 zBV^mge}&;M=xTEABQt@`8GG)cUDUhbE0?AN@iw^f^TQuCId@PBS1<#`o9}yV6Gl=w z+dON!?7p`V-sEhD{B@z7cxb8Nc!>-lN0|ab3Vqd-wNTlZ!MMkKNVR{>)Fx*efe&9N zDc``Hh%!QW1LHOYVId0`RN824;AUAdI;W%@4kocfA3-*Z(cd8vG)Tyn7nrd3VRDD_ zv_%+ee_gjz0gu3>vKjgVNfWavB#hT}AsR2%{e~pr>?#b==vlP7y1yx6BA}g6VcH}j z?!c)v7#T*yc6mXUr(hGCKY5i(Smns)+=LOU3zkO4BE*)|bsxHr7t=0RU30tkINXU|6wpaZO4v49W zUcw@(fK{iFhlafW$I_riZbhyp=kBk;AI{AR?Cc8t9wEH+8P5e>YOxCzvdzZ)@X@S5 z=n0ms9rHPq8&eEeWjN)6>}hkBu*~b+jiL7x(;^I6Aw4V}hQkZg6qHBE0SkukG*&KG zq686_QHnv3TyVJDLo<8@hdo$>Wu+dvhROqK1@N@$gK~2Ts46fDpCG0*JezV0SL2z_ zRLQC|Q@H(g|FhwV%B#%%l0W=uEP+M&70b9^`8mC_TPa4kvby!Lv5#WdvT_W@4y|ab zI^QQr%O}Go>>)TwctxZ15xU;(x;0pEVx=EOZ~RoJ+&HR<_sf0Gm)O!td!(Sf+W%M* z#RxeVus(ZFVF{Kw{hq~JlxHyFj)+_2HYqqIBKonGH17kNnVLa()*6k=c4O@&Qqbj2 z3;zKCv*2-d0lxuSiWa7z%Qa&P?G6%cNR$tMqkamaq&00id-ZY1NM3fTBbYB-+tGyC zaumf4;na>GcV>l0bOa5;D1>IHGYYb}KTAB6B_8hxVj562LdBIC%2?8=Eh!Y@bAC*{ z5b;oi#&U*3tFu0c19M`QS-sNRozDFYEvhjAnX)e57*-5=@ zRK~SaeFcXX0Wb?!+IVic>2C1W5_YJhM8x9}u}gV{$D*)If|kl}tGU)#dCP}3ulmvx zYz2Ug8EQAp(XD!Ej_yhP|Ac=k{NwOng#RJ@sqN{gTWmZH;W(gkq z0HXz3tFp?$uNRjf$F;~j4!Kh7o0CfBA=kJZ*`9bO(Njj6PgGo_6 z7A$Pc?vfWp{fI25*kWZBM1jG91uHF8K}P7F4EDKI><%B1f6W5?puURRpYXtUIv{@6|T8P}iiRs*A*|*6Yw!B+qpC zfFP*c#2i-YrY*uUK?b~Xdt?(lRPXgHvtY)DG^yK+>9PAQSVCG7 zIsu>(&VQ{s2#0*vy&f!o7Fa!Z-3yy7VW&qm(Iq>c0W-4gIXsQqN^*9t`I^sq58W-i zwonRKr3Yr5!WIjbCY{pEG5#fI*P{oq8v;UHyCe@L94Egt&08V?Shy^&ChA{D{=4#? zjQYuPhG*sdDC(~!|BZRRsQ+>DUzLa6HHY^-@{i8@A^DR5-wS_a)sjj}WLK$Y?UK^v z*vAV-7r{%*t@G}sq3sA-x^c9jb4-gMtUqjf9#pdt=!~f)a)U6&mwSgV_Z56Co71$? zgsT6U&w7W?>dgs|Pe5l4`X%KZ$7&ir6;igsx?pHXi))y+pCC^3Vxc2ITpb%sl~)%4YW&cFU>jTnI<3y2ACt1Ds1Q| zMd`pleY`MZaf$Lr|561heBs~svNHJVC|r>Bn> zw=Rn?B9y;c5$s7PaGtA{m*ImmPztTm@r^Qz5~=?!rtdaSZ^hcD32A7FZ8zjzN0RbP zs{#zUXL=g;n|Aro)YAe+QBjFf0BA7BaskG6?n32{z=#u0(ex-* zpXqyr#U%!qlaG|!D#nZ zY$8T~&^3L6IM-XK&v%`~nLwC+orr1Hj>qc`-mWtV)`%V-JSBNk+?UPEXYO~HJNy>& zm@s8Nj{wZe58uv0%q-fQl5c@15iX4j~~?L8C=|5TYQ6fq;Sm&B+&uCU8hXfYuK}azcV3NzVr# z4m!aDGlWAbGj%%LJKhdfJ7cZ4!=14XGj-Y^3}EYR@nc$A`?m4cX^)L#V|4(Pa^C;i zdq2rZAZWdF-+O=W<$;y;?7i1sd+oKq*WUX%x$-kx+1vZb*{&R+O_!TGG9%Fb$M8=U zKDJ_FBK2sQS4yMc^{xeXM>q-4e@aA}#b6Z4W99!~E=#`6DcAM*Q#gP0LO+&YudHEM zpyXyh`a<`L+?V@fuimxemGFcT5#-32yUPMmnbZe^41mNOoY>-H&B2R>4K%ZU%veD zMXz#hj+>g#Q)TK`%C=`gf?e1GZp03-`I*U)L?|S;{nNR4E34hpg&$>a|1~})jLC+2 zOV;Ar&ajOa>QJVMpS}GB+|3KGi5&?~C@N}Rm>c=Ppx@3s5?d^b=a)~{))v*)`s-_J zIUhEUBVqBv{_xxt@###9q{)}WWnXhCk|Bl&Z3=Fy^9d`0}A?7vELj(7@A_K#n| zwB-&OD?=T|m}A25h%6lCC_5H3#)0VD6|6~Hy66q!+f8Id<#zQNIX$2-gs-45Y=W8ETF`yF6!Ms^ zrJkbx?C9w<8q89Ux8K9xu9E0SXApX6_2;rh z;<<+{`ONXX;eySJpsJ03jeXqcVGp78weg>6hnHyUQ(~o$c;gL}YRvOUcS$C3y+j}= zHt&)C#}7!}`X_5G_fHb$>l3x{FPr%HXm7VrR>&kcHY4Vn?2q|!{qZf9h#WpH=YHsb z!&wyhjnT!2v52QcrnH=ad7O%%9xr;8H8|~6&a#QQEiV1G?$EZq{iGDa3NIg3ilfKE zobY%izrMwrS)XrxmoJ|j{AF6AO*GhlSKS`AM16&0wVuiA3;|vqxkFUdvS&U{G zjTf#@OFP}N2M#OaS5sqTNw;GSYHkT@uHA4o9_(B09(1&H>d-&HBk|nZJ<>C}(;#zxpX^W~jmmsCbRWE;27n|4r84(Pkl|B=Rpw(ywu zzE0FJ(A)_P(eKk;&ER>t<%^}+%gw&v#BFcM`%Us^M~e0jy*=|-?C_41*c+^=iadT} zWgd2B+nm;xL*8TCegCB;N_qa+jD%|LI?*BlvjHTzZV|M7jAl+yE${es{ajlYtC+0FMV7# zsHx8n-MFwUXY0)cFD_(d^=Ak5qPl+lxWs%p`DOMhcJylE$bW${n7-iNl*kw3g>3j7 zRX2+4EJmUn&5`Kzk&M$R=fuz6v6*Vq|DwD3If1o}?3yh*PF6WzM;~wGGl#FtHW~)_ zr=r>0kCKL1>%Sv7HJqVs*l&p?Dl^43%8#p$zr|!`H5Q<9Z}*tQ#@xh4Z(?Ikd<#2I zqTF(<9^nqgr11J!edfs*9**1^Tbi>{#@s7n9~?}iN8h+Mw&8{V*_E4_u7eyw+H$3K#3odbl-??w zaPJ|r>ys1h%^7F+60p4M1-%!Oe?6xNm|{sTQzG7{x)}CTBeSCqd6jG=TqW6wjVUbm zM#e=Sq9dPJ)IH{8d1g`glEj4A7?vB^cxY4pA@SIm3!_B2hph_PridLf7XLT&a*$c- zV%AVMu_&sKzjz6pW%_biJ?D*a5E3Q?HQjrN_ZC??)zg*OQOzrD?oeX>^K@^z&}49u zLyqi#_HDWjFHd|jUa*W@F5@M~_QY=yp5pg2hD39~b$;$fx{^&(NaQQ5e(K|oPL$MR zr{nL78H>Yo363)!?Vrp*p2ktf=#lK`F9(uDQHa98tPix({yoxLpL#*$i7bkx-j))X zozWY<{ECUS)*5*@#lI5! z@BL;gT2t* zV88I*`c(GTuVPaj)l2}{z4a{#?u~3Y+wbk!^1J@Do-MMOo@x1Cx$6=+juf8V=q)^*{qSb0v#lc&sa%YB7{P)w-ur4|+Mjt}E9RuxKT4H~ zzU2vKM*GszjyaXHu zo(E#3UwE^-^pQ8gac~^`Hu!Du0C)iWKKOm`Y4BraWd!c|3(IPzdp!1H7LA6pmfxX;WX`xg>2VjF*Y#o=ajYa@p{qGI}R9 z`WvnN-AR;tlIW10+}W~vCoTFLDbehQKg*Dv6a(IMq<=Ti1hfHRU@Nd4_;Ua~Pe#v^ z!MR|r7kyzOn2SVT;JY)AaBu1hncz$?pWkAVUit+Om_>JTxfuQIhu;C<81Pf!?UqY< z8o5s@2kj=eNo7FZpfP^K%FT{LvTO|%oo`uvvUHm#C7g$eVm5Pn#xXI?vp$_pwW(*I z+JrB*Iem^Ne(PH@2f{$1;`4cpIx-i!*Pa2Yk3Wqqj~U16NLD;+kh1?K81ls|VatT} z8J4kn{VgXoWKAoU5T+_z6l{(&4$I`~+SvD_zq}R$KgJ0cXWQEoF{QA$6B}F(yNKNn4n)Ql^uEzgv~!PDtI zlXu803I|6Sdgk@U(hmMI^<-&2=NBfdPvuCAH~zX_Rb|G~(vEPhp(}g)K~%^&Fky*( z`$2E^AN?Aio*i#<8wxAO%<4?J4K;&T4wUWU`&Jo|v5B&QBPy$CC#OD+_57Jo&ipPn zJ`r#0OR|K~J{V-*XE9-1EB&#w#Jqg7ia^ID>@cO2oi04OmD@^ZW|n0ZGQHi!r8@D; z-mwP}7Cz_=uU(&h@4|>TQWamq>d5M)jMwh`exE6{?lN!x(Vpt}S2BBMFE=wWlnAWf zCr7M%`~P}~_%Tt#4w>gm0ndu1iGqs4ESIs}UX{K5X<470ApEG3sa5=kymAijm6>G& z+R&0ne~Q_dHcZ6Va$at=UJ3Pf`@G?-Xl17ND5eRfqy3lQ@bvg55`b5#sM+U@Hh5Hb zik@^AY6DgQNOyXE{F2_tAJj79x(5`BSU-v!#(y?8{(Mv};*rl)h za;_zlYrlHgxL<xISg4chxCR z=kweafAZ@XCSd)TM>F;c&D! zzj(1MY_`7JQx^BLH?$L7v3e;ylD%UJwCjtac~4T!IWW-soqY(kFcN?7>rZ!U?%97N zCvmzSdQ z{!jdQYqty$-%n5|KmHf0wb)~2my^Pc=4tBa>9Y|&L@MthXd>^~6ftM~Zn)=m?Rh4W zt?#i7k!wyjJ()(T*G1zV?mWe_!kHCe=?D*a7()&nxK#i3VCp|~;1YRXIizul&t^dD z=LyM@)(H8zPfS6Kli15RhEVTM%oi1!TA}xEE|>b#t52%#+@Ah687(S25`2GG*>8{R z5SPR9@7CItJuBYJevVVey@dxiT|M(y&-0qpcfjG%>%RBC9{V1KuJ@iUF5Xp~*v`R+ z`#!f`22DP>keDy!W0IE954QF4^@2Y>nn-9G&hwbi`oUlf)0b{>{WeD zw*tE8;k!8>+9OFe$1XYf0*5J09mv`BX!_eEvUATqa^FAso z$mc@=-|4TkT8Wr{_LiSF0W%<2c4ZeHK%L&Y(elcK3TA7g3In$*IQ11pUVtZ z-)2GSZfjq<{&(?QQd@mAT{feou3%VaeV(~8`)`n- z%kZvN9eP{>dNR8nmk2$XJK5ToFBEuY`ZKqEs2~cCjrLCLk5jL8Pe(7niV^dC%$F1U z?aa?-#y)!{`ofu&2j9tNI{d(y))zgD?{~?8wJqiE_bsvRLZ6Uj0o^Rf^}-kEU$hUwU?2WG1Oj zS=c`{3AFK`HynAAm-tIfSu@$Geq@W_>IGSs|ddsQWp3DziN_mH@8xD7Rx|e(TTX?58(zvT? ztS6dqc2;MfJ-CziP+r%A*_{3RmdF|V!K?i!ZQPZEuAb8UrQ>q@XK13Fo@ISH#89pF z;C4%AyOw+0f*49I8|c2O`|iumBseNVwNZ~twUd3(pW}#SHQ|aa-jgC%xU7wNG?2 zhsD}xDv8caKAtIZBs%$gvD?VR8mTLNY?7|>p00y^sj*|4kY2LtlDC)lR7~W%NYBW5 z3l<@K{3A;mNnyJ1+L#uNPmE4OmaoU`-B8_&zEfKamF;2q-1LAdpuoy(*9wH zrEOGP5q)ETc0pCEq{=@yfwAh#q}XCx_msNw-WoGrouyM(oSqtaU#22G6{X{U7>m5m zW!OL24n5Ne0-4aq&Q4u8{zu`rn0my%TaYlFi`%hOzaOiD@Ao5FHktJfiQKp2#jWWt zzpscB-d&fgG{Cnj(Ko;GTZ6pmekOyZDwgEbUo~;W! zr(We=($u?mmUaVYvm;b>PO`r}WqkjfzRN=uAs!9* z0Z)`qWk|0?%YML1hm^ftCT1e()^|NUneTQ#K&wBe2{-Mk8smwcr3sIJaK_n#T@Q{| zJMoE(*G)0@{a1f8u5j=b*~e|&S=xVd5@A-)Qn%TT`vW?aGd<61Y4QFx>36;Q&bV9Y zcCbE=@6PD1y5tNZ)3HSc(q8Uanj&6v&rm+G2|Hfw*^<(Id*rIZtEI|wcf0ybp>Dnr zW@h3=X3lhbdx|}}A($qRCF6~(`T3Gteotw)pC-q=MjFvdw_S!)Xktgh4g9Pg-Z^>z zv$2J)<*<+O%S$UV5jd7$el?=-Xm@!|_{Q}f{XMf58M4^j@6z1ly2V6xaRw8S#?P2} zMRch*(S3XOL!LysH0@Y<4o5EZo;@vhxgOtE#y+3JTDRc!9lg}2J`NDY4z0hVwO59> z&-QH3*JB&Th9Ylwk%zt5J5kR^>pcg5m7TUFQ!lJrq?5C8PL(9GXo%0xbw_!ShQDoj&{ZI5YKcOw0kNB_VE#q()f0jm+U%r_Tctjx}Kd&OCo9G zHhXk88~fg?zdrTK6u&oiNSBp9vbLXj2M6woTYk#kDnBidDpQiekGP65KbQBG<9M%3 z{E!)jP=@_2y~d;E8Np9HiznYnJOFxJ-dXZpo;WVO2OqZ z`qcOjpJ&G9?)rQZYg?}e4W46dle@@+R;d?R2w3aOQC_2tv9{^HI#a%F6Mc}6Cvjqc zV-v4tZ+}jDhcfS=Sp!Ry$K0z~q!CuBv?IGJJbVo^dxv~F=;XnQ@YTDD(idfr=jxoD zX|b_AwJAr-q=@+LdVYF_F($>vV&tjOhNKGWBUNLeG3;O`Dm)UI7V>q$9qkElRK84#BmHuVUHZGVJa*8 zJ(RnA4~Gqq2faP%6JKHVx0yk)aDO6}V1sEkTWPy)ShC=7__wosi>|tg&rLe12R*(& z>Ko=<&=-E?s@}~Ht>Zyrdb%SYFui)F)J{UNr6{z(IgEb(Jo{x?Uce;z4Bbs)i? zg4g$u&JB{zwM!P92>+J*S8ZHr;B@|BPkb$J;01@mKjCvJClav}t1ym?v+Vk1pFaUZ zNMeWdcY17os&mG_n7#ci__JTek;bH~E&Y4n-+lHuM{NApXS}&)~t5mn&DE`18Dxo7Eg`99J3nmx32L zm@rPK8caR)<6)Vfp!qAC{qNZi6^RM6zA#IAiX8L+lP288swol)VfjWgyxy#V{#ds|e_F zA2QOi1t3I45FM&rxjwbv^?12NU!TS|u*3xW&^`5!iXq>iHTch7(&k&WA1d|seKaj#>AifIbW|7KC7eC#;7HQn)lYP-b-hHs}}dr zeSEZ#b+xxXK9$-f%{85F?%qQu%d?8OD9vGvFOl4-6RYq2OfQX?gAjTd&c}K6f@yVQ^}IkNdPfR{QJYXV|AP zxm+Fd?2lD&!Xp~a$A*~0?`B{xrVVL*U0u?DmH6`QM){iZ1b;lm21QcGpSDWdUmrgU zztyYD3w4@XccZKfq#)+Rl-03AoEX<;0O`(5fA%T%b5FcmJh*?Dyq`NTp!W~s1j~MI zn_$JCS%4oH+@rnFey%X5zZs;pdxRtQbA{^s`?)s$4Z3CZvPa0bZvExg@*!~bRbxt;HkirLR~ctv05+t1yMER=%~@7c-wQ^0Y+ z-G@DAKUXNFumAY{T+K6y?&J4!E$?Y0F$F!%`h$c%V+sE-%^s~nVK z-JrLh{}7k89@=eY6CoO&S08@{E3E8Me}z0smno|Rh`9)x4psl9v2s3J8y@eE$JvF7 zHczH2ClS4WESJo@g;&eiTfZ_Cl<&9>4!(zy249&5ri5#1<2fH-?;pF`xM$SHzkM1F z${@yIi|*_UlJAP~!!?{fn-rhOmm#|I;~tQi#A7k3jZcRS#{K>Y@%|SF1CH@aQFbgT z)F;eC3r63nznZOjx@2_ZZqdJn%hgf*(LuKHKjqb3G#F*q$Hxk-41kNGXHyuj&Zb5# zr;{Gw?jEO#Pse{Hm-q^gt`1MGkH0SOWU-E6F)52OVI}q33FSjk?9-o4XYA1PmY&R$ zT}?YZa=RsSW&BIWh|h>mz}_lzO6a))JFxq++^zJEMvLH zo_FghPJHf=J>AsPG>vtzoO!K{o#1pU7GHY~jwyOZ@q!LOz3!N(X9_L^_h`yVU4~+bv;0PzP{I)1Ml7RS-uLxBZfe z)D<~=?|q+R?j0*W!({gsHYt9y;HTjmI4kul&e`EL39p~xH3qNO`oDDVeMaKqv&1{p zQ~W!F&In56?M8_gpNkr}sDXEQupbeU>z@xxxxZ}WwK*sfH>T+N@ za67ORSOatdJAo&G7l8fOrKzWY$ACI`lmc^s>w#QA0dG!CQ$GZb0SADmfjz)xU=2_Q zQ~-;BeBe4D7w`h7;Ts1|0LOsmfdj~Q1o$i9(K%`AAs`4e1FL{LfknV<;2PjkzyrLK zkG_GOynh?~Byb!E0;_;M@ZJqB2CfG#2gU#cH>ate0WSg10Z##60=5I4z}-Lva2s$P zkO4eN8qWbofFA<#+(KQM1}p`dfJ*@nAkY3As2@NV@Q=W8;LE^S;OXgUY619qAQza8 z`*xrT=)*k#IJ{2;{t*ZRtAG~ZD}a0f^h-b(x-Z;FK6p=+c$8ls5TBW*egYf@{ubB= zd;tgotAKJ~0Wb~70nWhVm%wYlw}A?HeHQ!x&<5NH+zCtuasUOqGlMjMW59F3SAahS z9tOfd3*ZNC2WA12fec^(S$_hoC5<{@0lc0Oo;-sj9Mm^c5HTNf)wQcc?FQ=jS-J{fv^c)s zgSPAw(B4g2eqhN3Xjc(l1?)qf^_gb7Ewr-345##Q&xO1a%AGbJvlX35{xU<#LTkKzN+`Sg(-*3Y$ z-qU8>MH>truy{?oaUZw1sKdDTTkLci_a2Lt&1Yx8`0um$xW%g3_~%>PY4LuG2i)*= zhOX1%{T2^coZn)?yDUC#v19X_e~$_8wb*~Jarar=d7p6)SlqeBx-IT(FmAQh;5`;Q zjmEv-VyDT5TdZt82kMN!e}$#DIH%sYJ1y?B*uT>F_gb94%DDS1-m}`ci#}`cfW=*( zGwz(b4c=$*K&5f-xzphMy9_>Vac7lr`>SpEQiF4r89ZR|9={D=Zt!u7J8LX`t-<>( z_S<~#^_uUYep;Ms<9}K_P;BJ#mst5M&M7tSPK%FQoL^@A_gFk&vA^8Lw>W2sjc;*I zg$=jZZ}pzP(D)y>xbrsS&MCC?7W)?&_khKF78`f|?FJvWxbqI<&M7i@zr{s9OK0&K zoA2BVqyJBf_l~pW_bGAy3?oi|YZSgf0Uu&^r@f3@%GdO3e!2=c_pJv?q^9J@ZRxO zf1eWP+IXK9?;mgE=*qNmWf|;DFnGY?-fZLElVk9jOAOAx)L?a)!N)D$H_^B|CmCFH zxxqPC7~E&^{)A7Df1S$s=cgDvVDbJ`JC@F3^&8_}V{xy=qs4ay41JfyeHItJYx!C{TKukG8@fJ=i~4Om zi`Co4JzD%VHoVuR`!_@1WpSUyqs7n7F5#e@QhO&DoNMuD^#9TRy>TON{#!QR7Ux)f z-X(`9j=#RDg-y#I^!JX-m6+4T2b zV&q=)V}7I#{_&*I!mjh_9MU$4aj7U%TY_!f6ryx-!z#FwKpx#VAP(MN{9%i{bq z#@%W0ev7+)XZ-zV4OR(*b18S>vp3V={kf)p&$-fIzs1KbUh`cOuh-(f?-_T|O9ngE z-DUAU>#zR1314IJKG*$yWef3j|i*L>T!2R7Mpdj#&Y;cLEQ<5|3>*SakpEq>8I7`iDCEFLZXejBb17<#|O z`z#)C@d&-S{Bke1?PZd|xfbu8Xx$d?z0A1R*m~P*v2)y{+hy@_i=CHkzAQd&vGa=c zx7hiHaqqEM{f!N`xX)t$e&gS3asGcZ?tK>L{H<|!Sv+9zn!hvt$1N^;*0}du>^yDU zYb@Spai7J`*G;(J;x3E(EG~M+gm+rJ-{Jv_i~g%k&*I!GOn>Qo)A;Yj%>f#ZSmeQ)@^Z4flu|#_o<>= zd};vLbE{7s2f7yEx6r5jzyQFfjZ_iP33LJbkLzxhl+CleW_601qu=vaBpi(g4`Z0f0C(_=qwk_aTk8V>rzOzP zso5x@yH)7gJHk$&y(6-&#R+vbGzOez(r)Y6)S48rA>7*0J{0ekQR9WeO&5qaU*dH} zf&ph^YcL#XXmgq)?Ty0QX>4d~(+P-N^G4-=Uq^djb8GnKhOi(fELj|sYtBN6HL{?eGtd|gG-=HYX;F!O=4kyyNYT=4h_r=U!!5x;LlYWm zyniJ9=z6h{ni|3lh?|wsu(rJ;xB&%p20PXT8#XxMKyX8A`*1zy>-?Ozd;;xgu%mrL zpgjyfWX;$4IWKKPa9uyPz4K@U~NS)1~Qo7z{Qg5eZWcW>{ZlemT*|TS>MQ$$J8>rop z_WRpAHnrcb)RI8Bsv#8iQ3W;z{2iTPUD*{33*K(Ju$ z?54Ihe!}6l4I6F?g;W#IET@{sk(Vtzs`}=pn?cH7t&|Ta4KxNetPKQ3-lZKI2j7=9 zhC9T&HqaS%J$;dNkx*EvJ0op6e|J*;63^EeY$aJ$-4JYS0hb5X1|wDncQ&-^SJDyw z3ckWq!Atl6?Zn$6JS4uvRm4%X4dFWO!-2Am3|+XNqn8T=Y678-NU)Lk|B_P02t4FI zio2m{$o+&WX8>{CKJ|-~>PTB@>qezMqe|L3LV=2g_NKOg3Z&Ks!a5NqW;*@0Ks)K> zrq(dbm$yQqexABA*cuLK$HA1UK*PpB2_CIXT56d+Fn{4w^{T9$LHr#5F{#TVf#4Q@ zAjrIGLqmIGprnIQlu>7A%96H@wGC}XA78Yt740&!;4Fc4OD_2`vUM3fJ)KfHIHenz z;0i{&wm|qC0q0qLN+x{j15+vuqS?Ppt+SJlK%Ji3&@ZDm<_y-U9u^%Lhp)L=rjuK$ z8$$Q1J1tL_?%!oZFNp+$6j^C&5Y==9r7XvuqXY8%`ADF>af>QSAr2FUM#g!m9enLV zQXedn@29S8XbqQl1Z$bAv;~%}T@PC|UKLB_QI|?=$xGDi zw5(Z|;Z+h#W*&ONqSX8(-9Xt%N=Uswbw&GzVe!@rf8pSlDU-}65^n8o^{ED3liHhX zB3w(78mQ}<`Y-x@X<)OC?o*FycX?|tWIfbZbUUaCm=a#7bJDS4gVysOi_0k4A8hTQ z>TOZE)Z#!xumqZ78VYsfRyU4yr>6QN!F5!(4I5OU8&=2qq9YOxskx$qWg7#*HZmNL zhQj1leOGH+qL?Oe7a3muzaphXR#kcgtwW7VDQL3Hxx>tOBL++a;pXD8mkq|d)Qfpf}HrWX&t%H!#wsn=v8S5xf zpL!;BQ;6wdd$`%BQbl?js?)EAXW zpGmtFA&oXobqxhdOVsbAmjI_oT4c8*9BivBRq6qHwT&!OStQZV)5ukin^!H)=Y-w} z>ThGAx_UY-qe+uPZbI^;fDi*sw_#s!pK5$c+re zk#Jag@q35TFh#5G8}3sTXkQm@L8t$K=9)}4)n2WO;?^+T1y&5*3%0c)o=)X+qB$#f z2em0h`I^?V#xPzcr}qxg*mM_}QL3b^wR3GpL$FDysip+1+tlM{RoRBl@RlU1S5ua; z>>cv>mdNREpmNHwuHwMD)^_Xq&su8JjdbT{$>ee+CbG2`q+IHN{HXroY=-{6Q z>z;JRzqR=`@*4U6D5WwqC<~qV21cBX4Xtg`29)yH8Zgw7c0oT_9J*4mq)`u=);eUz zQ1^?E44kIX+cy4Z)H`e#;l`Gs_VTdQg7#1wmCAbZ`+Jg#ZXrW-H;OES&XDk5%4)SX z5EQ$CQUUQXy-ISLXyIf^4O$J!;O`ce%_%D=i8VA>L%rIzP@~8)R<*xPicj-`=Ceb! zA*rT+BX!fp!EQ!fuWN(p1Xt9S)wuoRe@~&d72j`~w|Y-pQlqR}*XG(Va|%0+19aDoh;tMkZL~+1;ud$b?2vvwPnV%Ku9P%%hSZl;*=8MoS%gr(l;Nf&QMyd)CCFu7m>BJvRI2+XKKhZ=tf(v{0&TMWV|_MrExuOc6+?a z;=#GtkJOT;*7CMUh=uxx!qq5yS#X{73&l2u%b`wkU>#-cWI7O1({!#X5jdol$-Bus zWi#U(*-g9W#Nv=7x+mb9f0DMpb#nm2LA_4Jyg!=aZ!ntJo>JA?9;oY(I$4cnqOLyY}01mnf8mN{sWUt`CHrnYr%9k^8bxpmAwT15jBwM!3?5(5sG zXdfBuI`#A;L^;(~Xf1?Wqz|nut)fChxe)*2V8^CVfGS}xft_DJs@`(TuY#;Q0 zkeb`-PDRz1hi1igcFHAx-NTvrt?PNclxuZIQ>4wVDA12z{FonMb7)B$>~~T`XBLG zsnjc}E_q$YAP@DOl&TVDvWAj)y~%E3{a5C;EqVdeRJK{F0a8#o^qf}LeUqc48uqt( z{Z%$(cQm}|AO3EXkdY_7d3EE0~a-LQ3Dq> za8UynHE>Y_7d3EE1OHcR;Km;ptDpaT=-k^YxJNz}{tExRg*UPG=1h&eFEH;L9#bkW zf393JRm+;2)v|U+-6Rk0y!`pvAKbReaU7x1?>FT&iX$)omNp^Ke&AKri}P5PtJ-3V zYYeXTTinqUSe)0WN>(&K=jxicL>}xpME+8k@ z^uCxg1u~^AR1O9ueU8g%#?Z~lvMDMLHCDEFM#3M%Adh_I%L6ajJNy`OrFW%oTGrmS z#c@s07mQ-}=PpPi#u2BoJroW`^v-tZg4E=>iF0^*$I+Z4yO4^kx#NNyG5cVF4LVB$ za`tNj8_3S|r6pwrazfH|mz2%b2PTKybB4L0*92}jZcSj^)PX=lV+$p-p<#3DhR6n| zJtC*WoQ`H^t!$<0jD)1zsC#)-yIM9{8#x}S_b>HHxn}n8n{=5=IZ4^)Ro*f$VycvR z$FH4=Ci{mQ0I73%x4@6e>rBrJiNN+GoSQGR`-s1lTNf`**Nxass>WZXN@y?Q{|VJj znx^d(EiF;AfN6jO7f`_I>Jl{o#DPBG1aKTU2J`|4fMV_$eUIYv7lF!`3Z+ z&)fHBz>fjDfvrFoXakyny8(Hsz@@+<>lVLx_I*~8-?XH6p*i0(8JdYeCg1_i+-cGf z+V_**&lgwx;?VQ~uK_Os$AH5?FYr8Y0C*PI4?F|7&y&1A20RMv2DSrRflvB$LfZt? z0j0n^U>fjoj|0tQz{R<|PXuy+Ou!3xlCa|aOeOUfcprEhcoX<3@EY(Ea2R+VcvgUN ze+GCGcud~$dlGmIcof(TYzMXiVW16Y0`3OtfGVIASOm-iW&zWH$-qS5HF&-R90r~T zGV${OXDW~n7@7V^`aWo00*(QPfnMNw-~jL}aG3n=2VW>$%J>;*o&uf(_5qIpdx1xR zJ-~&+cN4x7*ba07TY=3$80ZArfDN3$32_D^v{tFjoMouS)?Hg8xN(-#C^TzlIi#pm!z>30WUMdA3lY0yu`e$~jAC&kqi=C>p6s`l*l?c>*KWd# zZFuS8QX8LmIzI7qeE1PxhvTo~;nwkRYktrnU%tqJd>SL4#>l7f9k7>|J7BLd>@|kH z#)QL8hr?doLAZ7k4tphg>FWU5TU`gpiRHlO`E>qbrEUinLBnxtH5I_A0-M*(ZeZSq zJe`e6ZsgJK4eUe;L8nz{vbzEL^&2{gP5h*H@h|b0lt~%-EG}8>7ctR;!OY#X8!XvS zQfR_sEg8KyTFKj9(t9O7W!ShuX4FUFA0 z^b!Wz;uW>J@`&4K-I9jTEd_@-jdllEc#Ayj$plcNYG`WGdg`1xN7t-SOC;Px0*#AX zMFhp+m*&=WGLAR4H-ojF<~dGlyQzrDZpoi^7ihh62FtobL+;v|vgIO&$SZoNDXT53 z1DDM7&y*`KwG}JsN)fnZv7DCyFI!q($p>auEG=1D4#r=ygT4)xd9(1*n07V2Y0eCh zYIc{aE%EsSzPL?LlBLrnBtNI!1;oGHe6#joPyNhVA?^W z$VYmj4r!;_4Sy*<@z;9A?b2y~=rp~wuSRk%?W&RVw3~vI_SPur&`t;aach6*G(B{| zaI2c$9%*Z%4m1TCXV0Mycam;v`_Q|z4T?zGhFk+kF0*0oP}m6B*cR0E64=?%sXFzk z1L{;DOcENm1nBdE;dWEE!tEi+9BzS-^qVzxm1_FZ6;)Np;k*!m^t4g#wRaMFK zye7(t(wE`O)DKp-emYj&zNu7G^Qh?rQX3Z=YN2n^`qMPjYK zS=W|IJ!rzw#Ea&M8=c6oYWgOyEUahqXEyJ`6GXaA6c#6YG!}jH#=xpEg_kD{jX0tN zEeBZYy~NFHtjTMFM%)bDxEJGr?k%sNCe_vAL!>zIcxu_W#TX8 zEwW3w3ckayRcmyF-rEDSMRn>98jZ-Vbw>lWPRc?zWhH%W;PZx7YI8-csnfKr3Ta$A zUW=iXb}mfwLbZHph_MzKL_bC^vl(q%UAgasl&#VZ(UXpcYbryD(4s^n6Monu=(S`Z z5*lfv+@dnN57jbzM2>kTPOzg*`!`bHQo%Z<61ru8a8hO><1B|7ty_w`yR8R(wiscrQ#3^<%pu3wH%nz*SzSJaI|0$53w156p~2gNyf$g27=xphTaEG$p2?l6**eTXV!T|@%3{CQ8?sL)rTbs9JW#EJ1f)*KW;c6(y{zGE* z5XX|GE1V^P_CTKMd;-ij8kjVcgn>cqOD$q zPJkXmVUZc5i#~fa13|Yqa!7M9;_R%9tc;Pl9?D!3 zvn(xm3)eh(fghRM#5pl%Eq4q??hGiZqUHkU7bj*~xk&YU?n%_+#g)p1tT`k04=IeSh0 zE!z;8x4^~DoY@78z;)E00GDYSxF6ymBlGSpGWht`N`YL+g2-H#E7D=is*tPF4qfjz zQCgCrkf^MYV{PjKAxHXlAL^Bc5t1v%^5Rl<%7CL4P$N@)#~lCGacVhc%6Yp%v*-Ej zym#L{`)vNbD`taLMz?dZ1e$ilHS-p2+NGDhLNtbtMQJ?T^Tv)R$rPasx;7r7N+T zJy#*KKbBrs$iYm`R;9^vq6=4ZY_{y7IF6FJU`hFX75-(#ck-&FNK3hvVs1ZRXQYrM zj}nIMoSs9f!_ZNAhda}B#Zx5QoRA#3K{5OM`xa6ssGuFxli?d0vsH zaaOw*4tLK>4ks_e+>(W4`dSX$iXNM#l5>wkE`ia2<&K~YutU;L?gC83 zAaffmHAZSypov)4j;~LB8a0&D)zcXfHpI`i;08xuezDEE$rka5v`5gIOpQ(}gADc0 z?lTMy$qXa91cmviawKsbMzf(c6cXJC>o#ge6XUkdux{^EJ{kO5*+7!Jjxu5mCN;9Z z4hD1^42x#n)N~&_RFBPIC3YR7`zcBCx(&3^9LT2MVbqri3Rxaqin4hNRat?+0#(My zG`t=;({G$j$PA^C4jif^CUBt%goBK1gEdYE&NDF$+obAc0!>WPA6^$FaHWX}lDbBP zapb6PNP=#Z^llVy@;-blpB&Yd9>Opj2SfZzc7rzaO8q ze5QgP)NrB=n{i5iYs2;9M7~o_Kjm}3JV8ZUSzE31AZ@qqkJ(qkP$TdXAdmP9j0b$} z?KG`cnI7OWk2_D6Z=e)2wOALFDW@B1z7Qbs#{reidbBlzvL*3=-EckVm$x;nvtfeL zZMe+PYZ-hS?H-$i$ukBJ86>=d`&csV=5_EH%bW0*aJg+JcbWzRc@eoJT9QAR_#XOpSdnq3n8H}o5CMAV0?Wo`?%kc2aaZ3KA9@NPUb9k`20=LL7;mac7 z$`S0jk2@5f+dcXlA$ScwSMuia=i;ke#~b!sg-h}${PlT*VWDzsopObNgxkwp!zd=> za`|(4L#`YRd#=Xi^4HfmhlMJ2O;WgSJtM-ewc*l^^wo5U1|mc}62Gi1G_rWqG#zTfm$k3J3N-w=9;fh61GpJ8JP_9n zfap)cYt9vKa2+qEOc#P6MBClABt$361Ta8|11MlNBegl@T%=2+<{T#)P>J zgKwDrx{c2S$-E@5^)_b(CIS{G45s0Z`&nt^VIwN%-gKKi?7~{RjbM1u7UUyK#d68Y z!JC{r%bNAz1+SHSqG+A7)&$zIK+@H5wD)Ycue!}WT`~BvC9yil{bjyo5F}C?f|-6z zCLbaZ^+10o%dAUe0Fn^w#?tqh=|Y~)rdrm~8Itc1N#68@WZ@~AV0Mxha@>hTgOx!< z{8-v{QVIt+6a=;Kl`)UoU0a5PX7nZrH$O9=EBDp;s%~@SGMg;sjNpN!g|NHUm@-A0 z!{9iCs498=Si;TA*7k^=n36=&aLKaOlpHd#3N^#nkf+XiJ#Lx>Y6w?KiL@ z<-1pyjm$!MS+y*Im|}?mXV9y0aLJK0@%^Oyq#qGwo9aVJRIcN*SbFMAAEz(NN%>e` znP0k;Zrw`Cx>MOCdLrLLRdRZ0Msh3(zc62+pnl3CR+gU4@_`0t?)+OYQOE^xmXy}O zWE;qATQ0P+#z31W2pdK)Os39PHw{a(ppe5nZcV0bTYk6G9?UYpHV?J-JoVm;uc8`R z{aJmPd6;-OgW<^G*Vpbb;DwzI$rc|_bHlkbD)$jZLn4_O^-Xh~Eq8TU1tqCpc*(dX zUi2BJZBrAf&3XW}4TT%AlGBz1=vFaym^9ZKOMo;O%~h(wQ2f@RdLWUKGiv)YY3`b# z^aSV2V{&5W%^>Mn-h;JHkGrHMvMg(tzSA|3IC{u*I1(r}pCo@h)QW#2{_ea`Y-M5A zUK{WiW~R$F4n4Q9{xTl&ZI_(XDbYEe;vF?(8vi)t-QN9Z##dwC%skTb!wJ87^LLAs6SlVNW>Uff2eTt4g*svZRss+N5_@QQ8hD{t*e7GkC}?{Dim2qE~@~AG@*c+1OtQ zlg>oWQAAtL#OrT>pl^L!ltPmn>*!#;DRkwof%y9RaFA%dmzm9?eri@~zK9S6ud zU;1&eHwYF#!D2^{FtHc7VZv7y5rW-yy!8FzC+l)qdkaWxF3)> zHGt67TD%f0{8s~#HeJ6C-vD+1S#il4H3*2Tk`JNp0z~F*7C#J@@F*bR+W|@EPkYE!gy*6Z(GPm;6}LRBiF-xA@_Z@jy@z+vojhMi zdVeJ8eNWOmvJKMzY0~=_lit(dCFQaiko<}*Tfgu=+9NblPEPt4#e6XAk-RyRISUJZ z|1%|8XUD+8`$@3G+YA<6RDh*?r-3g6pT3H--{4-bFy0Fm`@xFPJo{WyU%CeDpuzMH@x>3hE{M&it7s&fk!-&$7GTb!Mc2f=Hhcv z1D{j_DXAXaw4bCwu6cON!&7X;zxug(dHkyeZ~MzWsp6{Wp)QS|g8twWKY7A2!RP$l zcGh?mS^UjUNbj@s&q4o#ue|w{tJJ@KCH|Gqjn4m}$90V5bY#naa_>(Zb>C0c|77mD z^sk=yS>FeIhvXq6*=hJY8|g2u;Ve3!fHPNfW*&GS7y#lxA8-PA3Frk50M7tV0Z#(^ zfX9Hnz@xw(U^lQ6*ba07TY)gp0;~a60YdKwDu5zj9xw}VfQdj3kO_Ez0s6H#Adk$C zl2gO`&0e#m)3o%cy6T0o47*&$fNszH(-QY z!mh!u5cn)0eej3c z_*~S$MGaikz(oyQ)WAgz{Qpq{ zo535wd%!YZVvgU1j#MvL*1IRbprj{79l}Ka}@u*qxe5HivNL8{Ev;|e_|B>_$dCTNAdScB^~yd{N|40KYbMc z1*7;^jN-p)6#te{{5Ox{zjGA-y`%U)HH!a%QT&gM;(uZk|M)2Wr$_PkO6M@_vHHh< z?{tsamsD;~-QZDgC(-)zJ<=Wrp9KXTH9cv~v2&hBJ)InWt4F<=Sas)z5J4taRlCYzSzE}G`y+rvZQMb~>&bCNrM4DO`#_IgP#Df|QtTh@2( zv;TIFwz;|PHR$g;*8yI2lSiFS;+Mb3qaI3fFCbjjlp~*Bb*xML#O5li#Tt!QVyA6Y zVR~stE#p_p+OYpQgazpLTltoSgaq|BExf848?Xa3Ko`<)64t7uXO}0{FMr4LFN(EN z)~OGxxtwdhiNEuppRP(Z&rVWl(CO5|zX2X$LVc=GbMO0z)gwqR7<22>-dwWC$hv6Sm4*Y^x9$I3xD zjLtf9dF<@~d{Sv*y_)_fCh+Blc;adk>Z z;!i5SxHpb=VCt3B0+*AcuEz$_LLS4z`U#0ytfu&9V~t-$*)FG#NF;W+3^h(8FSBVa zbFik@=&1C91Saf9sE|p?@q11hqaVRe@HKfcK`dNS4YYlNG-Y7*BnVJN2hgH zQd(}mX6o5SYP&pTVCmN!>VWhq4g8WoC;5?fA0{87H`5lS2NO*?N=i*;heLI|RxPJ? zOrRecUdP?`n9eR!4V>odc2a`gf;u%x!{KWO=S$hmRc+Sex*esnbJIp%7r-N`Q`ZvM zFq8f*gh>rEedKIxrLMKqw8dFg&RZ>ADLIkylHS{WhU+OkWuFf4A*J+4B5xU5kIDAf>OYeI0BXzY!^O1TiTwCy4qG^7vbt2_2 zE197({t>%{H=L&*+wR?_%U~=!rKjNZ5&78WW&`Z%^K$L?*XqX_*J`ax+i52+rk-86 zkCQ$~qGs{0iGCvLtf(U5R}- zL%o&6uY(enn8HtZnbBTG^o?+EbPs0Qxz0=yuRPMqP{00Eyv)o(>epscc6-GkIp@%y zWvG75yOun6&ExWR^pKI%aNBt-2lhoTTu+&89J4BcAj8kd0ELT&4 z<5ik&j}=6ANKHG9S}%>L{&p;&^l%zPkfgnF);+b4aG8$TZo?WM)_< zrlhtOK4zSde}qZTgKY^+lC8*l!HUEpcV^mApE3+~`u3+6@6lLb@ zP;+Grk>1E{TeZ}1k*!m=_Y03ELw)fsO6GiXN>|oh|92f;FGbB`%2no7p}}$;8cQ9$ z>XAAk{g+$2+*yDdH!msf$a%#1bn4b}(VdxZizHH3rkrj{`D^hwZ+U#up6`>-ETyj1 zt3S16XXds;D*`PDe^UHUTAB;Zf6=E(%SrK%P5C12D2u+_@bgj2-QL{gC|KHt=>FQ2 zX}VoV$t6E2l+O~%^vjfu?2XH8L}r*_+gr$N+QB7bt&FD0_4Zsomuo)K{|leBj4jDe z3bHI=#wcl>8cfS@c1Lun0m;wy%zen8kNkJ54|JSuI@oP@a+V3H)mJqhy??*Ze0Hdg zevw-3Rq2c|58K(K)J!wZOji~3?6OvJYp2_07H}$S8hz*(;u+~g7}I|=(!bt}e#h!@ z>v}zlmbK5w6}=YU#`%(s+iZBkhWkc@|Ah@#S`N2o zcI?mDYa5L2d%tVxQby3tb@M;&aZNWCY2PI;XGkwlWhEg-#dQ2j(@q0KkxUB-@q!%tFF-T zOGoH$cwKv&)+)5QmUg(VhST=a$7ex%rKa_3sgmp6+k^|Rt8BQ`oT1t}lGi5Ak$Tl< zH0?6Af>Fe!PUbnlC?#~0HC-kBp-Yu-8M<};VNG|nrmIcjHk_`Hv-dLJyhhWNFxL`( z?qhhp4~^JIuhlfB-wQxj;gZ=oO0U|jc{!FYStITk@tUQXV&$qiPkM1nbDgD;7CTa= zGnQtmrddV(7@~3emTw`=O8S=Z&~%;G>P!ZFU8^J;399;5FrRhfi!Q36Bj8&fe-(#`nNi*BpX?Y#5w z_!c}?!Xr!bFc##-!8L@bf8#l+Hnc9QWp?!dY01h}R-*2D!=?R5*LyRA8gBI$sbsz; z_*T`gCQ+viT_tmjW#T;;?jIJulod%C^H1}*JX(j*2*n&t;D$eZPPpOVhX2K|aFa&C zh%{~`?;__N=;vYf0Nj5<=JN4dn&J!4v|5^?3(!1lX?z!;`3p-^asirK)kj+9+b%%U zYH1c-faYOKv-koueoIq$0h+(CG`F9JW~eT|L0!H%2;NPlx3V57X(Xl#g`S^*T&ODf77c`IdTv zc6x&R zP#TOwQ*tq}VUq{iO@)*^RH6@k+@H|?fl8HlsMNpFw?5Wy@aBHsIWwMJ$Bsj9W9{x- z&N*|=nc2A>?;wUF$Rar8YUEst`Nkd0=Pqzv7P71ge|(p;J>Q4cW3x4a2R6OkT*1w& zRPM;iJqiu!UgySn%hu(;(~v(-kMjDR&DYVxEcEap^l-3+9`<(7!_*e_fH@Cbgc7HV z^WAFaq;qX>;|SJ=VoQCr+861p6*m_xLnr&2bmHc9S^V4Oea!2|HiFX+|tP9OJ zhhhJ{8@52reKhm(YpKL?@4#O0u-Q8>Wz*Ze1El5NgB=W*pRwaYHwF$j+YO||o2@ix zTfp_0p8$6jGJV@-Uy<$cL1=^RRC2wVJJoC%*bZ|P!M&6sN>caMxQfG1s`;p+{Gj)@3{(8L@^Vj2k2fs6xFE~S)!p;s?2A7lf*mnHy5DMVcg?L`- zLJElsa`M3+JX@A`EeIt0*fYR+16UPgJV~a54o*Z}s|Lv@k;+hFn(;O91O`zcS5CtN zXCy=)VvWVm7nF{DKKpGf2r@vgF)AR#tKC8e=-{VZH#IoO zWj)YB0m7+X3Zk2Gx~gi1szfj3r)E;!YuPmkgCBe)+0udCCJ6#5Pi*QLKBbp01XZhN zO0Rl(m0izj`AK$4}4tzqVn$HJSM%waHeoQv|4*4>fHK`VY&akBexhx%# zkc?D=d_J#qJU{i->@!=R938EPpp&K`t>`rP!D}sYnap~YbR_KP1Plv1RE!8C^|^px z6_lapDsyo48SwRbwvH0R6Ld)@FyKP?6AvPQZ5@3qD_-gxo;=r4UY-u}Q98Aq0$W|f zLuiR_8QybB1oz~7{;1o99e{+_1L{+d@CsR9052)4OQH42pf$c8-HC2T#(W;##rW&r8^6)OqMH+yBJ>^HSVX1^kZ2^E5(q z+wo&c+)ZNRBL#Z2u~7>Fw`+MGecTNCIAabA4DBBJ&2e1%Gnm611TIH3+_UD0eg)i2 zBc!Xb+zsq(Be8W0i7Bk3ry9GeTvg_L!tLp)Z4hPS?)DMbjP&7t9Cz}~J7WeBU=8{$>+{J8;OIn^VQ;z3SD050qn@G*ml^a7^0zU6v{$D$tp?cR+&Jmb2gP!SyjN z*KdcYi>+N~&{g9K^?^IQTk5xgwZXm8m)FH-?5i5uh)hrp(r`Yk06zS6hxDf%(mT;N z%zl&nCHX&0UlZr$ZI-_|ERF0-4=>H%YlO9N_4v*7O*x$||Isepyi|DfeCjf6^X)cu zJ;WxKN!8JK{;wDFWZtajUATI1xqAKr{?;!1=k=VmxeV%=G8~^S{In^I5lkYz8Qz7L z>ve%!4!+Un`g$CX!^0ZJ9Pb(PI|ku@=OQk(v(5DMbcvQ|;g6oPOGC8Jk2einm?gOu zk(eWq?gIxg8;Va5H;xvVHdD@m5&aoro&6be$VV=uGi{t7CO@WK1T5{M)ar!!s4D>H z0O(fnWBW|IJBOtZp&5-v0psk?$gi^yCB%79Zf$So>3kaFG-;FOVKlcZ!l(8uTo3fU zJ=4!doKyN#_NlbrM*D~b>xTg zDP6{07d_B2e-~=vhJ&GGe@-?53+8w zh9Vu^>$nU0?p?T@$yycym-)Ua`s z(x}Lgv;o~bx6l-k+hyc6wn+|M7)Krujj=TRE&+A^1o*zpT#31|ZH8w}jE}YgV0T_e z^EzDye6wA@OAXBmQvE8R+S0cBmyW|yo$ERbPObojg4AHG$I10*#n}Z2x>6K}BwuGF zK3<>hL0ioh^{zgJW(K*rx<_pH_OPvDz2O+xkMxDOtQX-#!`I;R%Qk$@CgRz~^h*|B zZHU*Mz=w%=Ep=@%l{4Pwz!!Tr{*%UO>ue*LrLPu5v?OMGNH-s8oC8alg-G`gnQzK0 z+7REtlqsXG>)vF_JQ6?SSIv@zI%3IuFV712nLsO1K?_V*jV8bYdlc5)$4FHR0RA(} z+ozp8y*xkXP6imx4fOWsdP@BIIX+H0oV#}Q?4e^hd>0qr3FXN$rQzI4sggT=YR~SI z_IR(A9uQcl4Cfv%Eu5&}T;=)c%Axt$;?g2dCpv@=ex8`F%=bPS$npEQvoobibyAN8 z(%j;t&fhQbco!To)B|Tv5E8K7elVud<)y_U&Qe)i8o{B=IM}3E#fb{Txf{oZEC4_G zIGmFYGuoIcJ~TU=3uYIN97aqZv%Fu@vs7?I(J28v*%yxz2z+A{3>8-ZPkw--G1U=0 z*~}$KqEkmw1}4!ZInX%0E4LS&!g_Hy01n-#^zuWsiwlSNtzVq`Rk4yd%!Y1;sF{Xt zTyjSpH2~$PrwgT(tNhaQaBk@6@uT;K1_uTQi^Z9N`!h}1&f##K$I}m>%nxEIR455j zg&Q^GV?~oE`<$kLB^5Pxdjst=`_?`7=~{_o59`}twy)Z&`Z(7vXJWmN{>y-^40};+ zXLcsqa>nnK7``!F(|6+lo!vjc-VbwQdqu1GJ{f7zE?oa3(W>u>bKrYo{)d4h9QQAR JnE3yK_b&}4zBd2> diff --git a/EMU48.TXT b/EMU48.TXT index 3891576..3c52496 100644 --- a/EMU48.TXT +++ b/EMU48.TXT @@ -19,9 +19,9 @@ recompile the sources to run Emu48 with Windows NT on a DEC Alpha. **************** Emu48 is distributed in 1 archive: -- Emu48-1_30.zip All files and sources +- Emu48-1_35.zip All files and sources -To install Emu48, just unzip Emu48-1_30.zip into an empty directory. When you +To install Emu48, just unzip Emu48-1_35.zip into an empty directory. When you first run Emu48, it will detect the directory in which you installed it, and will write its configuration to a file named Emu48.ini in your Windows directory. If you move the Emu48 directory to another place you have to change @@ -416,7 +416,7 @@ or on the Emu48 FAQ at *************** Emu48 - An HP38/39/40/48/49 Emulator -Copyright (C) 2003 Sebastien Carlier & Christoph Gießelink +Copyright (C) 2005 Sebastien Carlier & Christoph Gießelink This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software diff --git a/Emu48.url b/Emu48.url new file mode 100644 index 0000000..352cc16 --- /dev/null +++ b/Emu48.url @@ -0,0 +1,2 @@ +[InternetShortcut] +URL=http://privat.swol.de/ChristophGiesselink/ diff --git a/MKE48.EXE b/MKE48.EXE old mode 100644 new mode 100755 diff --git a/Macro/Mac2txt.exe b/Macro/Mac2txt.exe new file mode 100755 index 0000000000000000000000000000000000000000..f21f06fe829076a4f88b4edf9bb7805bd5e0804c GIT binary patch literal 24576 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 F{3j{ +R +T + +1.1)

ress key + +P + +means pressing a key, where is the out and is the in code of the key. +Please look into the latest KML description available at +http://privat.swol.de/ChristophGiesselink/ for the calculator dependent keyboard +Out/In codes. + +1.2) elease key + +R + +means releasing a key, where is the out and is the in code of the +key. + +1.3) ime for delay + +T + +means waiting milliseconds. You have delay times between every key state +changing especially when you have recorded them on an emulator. When the time +information is missing behind a

ress or elease command, the emulator is +using the default time of the keyboard macro settings in macro replay mode. So +it's a good idea to use "T 0" if you want to have no delay. In the other case, +if you don't want to switch between 'Real' and 'Manual' Replay speed and want to +have always 'Manual' speed it's a good idea to remove all time information in +the text file. The "T" command is alway ignored on 'Manual' Replay speed. + +Example + +T 821 +P 0 32767 +T 70 +R 0 32767 + +for waiting 821 ms, pressing the key, waiting for 70 ms and finally +releasing the key again. + + +2) Keyboard macro file format (MAC) + +All numbers are coded in the little endian format (LSB first). + +2.1) Header + +Every keyboard macro file begins with the string "Emu-KeyMacro". + +2.2) Extended Header + +The string header is followed by a reserved 4 byte length information number for +the extended header length and the extended header data. At this time the +extended header length information must be zero followed by no data. + +2.3) Data + +Each data field is coded in a 32 bit number. + +2.3.1) Time data + +Bit 31 = 1 +Bit 30 - 0 = time information in ms (2^31 ms ~ 25 days) + +2.3.2) Key data + +Bit 31 = 0 +Bit 30 - 24 = 0000000 = Release key +Bit 30 - 24 = 0000001 = Press key +Bit 23 - 16 = byte with the code +Bit 15 - 0 = word with the code + +All other not listed bit combinations of Bit 30 - 24 are forbidden and reserved +for further use. + + +3) Program description + +You have a source and destination edit field for holding the source and +destination file names. So the button for the source edit field is +calling a "Open" file dialog, where the button for the destination edit +field is calling a "Save As" file dialog. + +The button Dest> now converts the file in "source" to the opposite +format and save the result in "destination". For converting back to the original +format you can use the button Src>. This method is very flexible for +any conversation, for your own convenience you should only remember that there's +an "Open" file dialog behind Source-Browse button and a "Save As" file dialog +behind Destination-Browse button. + +Be careful, both convert buttons work without request and will overwrite the +destination immediately! + + + *************** + * LEGAL STUFF * + *************** + +Mac2Txt - Keyboard Macro to Text File Converter +Copyright (c) 2004 Christoph Gießelink + +This program is freeware. Use it at your own risk. diff --git a/MkShared.exe b/MkShared.exe old mode 100644 new mode 100755 diff --git a/PROBLEMS.TXT b/PROBLEMS.TXT index 19b419a..23ba718 100644 --- a/PROBLEMS.TXT +++ b/PROBLEMS.TXT @@ -1,4 +1,4 @@ -Known bugs and restrictions of Emu48 V1.35 +Known bugs and restrictions of Emu48 V1.37 ------------------------------------------ - the following I/O bits aren't emulated (incomplete) @@ -55,4 +55,4 @@ Known bugs and restrictions of Emu48 V1.35 - quitting the emulator while programming the flash isn't allowed, because the content of flash state machine isn't saved so far -08/31/04 (c) by Christoph Gießelink, c dot giesselink at gmx dot de +06/14/04 (c) by Christoph Gießelink, c dot giesselink at gmx dot de diff --git a/ROMDUMP.EXE b/ROMDUMP.EXE old mode 100644 new mode 100755 diff --git a/sources/Cardcopy/CARDCOPY.C b/Sources/Cardcopy/CARDCOPY.C similarity index 100% rename from sources/Cardcopy/CARDCOPY.C rename to Sources/Cardcopy/CARDCOPY.C diff --git a/sources/Cardcopy/CARDCOPY.DSP b/Sources/Cardcopy/CARDCOPY.DSP similarity index 100% rename from sources/Cardcopy/CARDCOPY.DSP rename to Sources/Cardcopy/CARDCOPY.DSP diff --git a/sources/Cardcopy/CARDCOPY.DSW b/Sources/Cardcopy/CARDCOPY.DSW similarity index 100% rename from sources/Cardcopy/CARDCOPY.DSW rename to Sources/Cardcopy/CARDCOPY.DSW diff --git a/sources/Cardcopy/TYPES.H b/Sources/Cardcopy/TYPES.H similarity index 100% rename from sources/Cardcopy/TYPES.H rename to Sources/Cardcopy/TYPES.H diff --git a/sources/Convert/CONVERT.MAK b/Sources/Convert/CONVERT.MAK similarity index 100% rename from sources/Convert/CONVERT.MAK rename to Sources/Convert/CONVERT.MAK diff --git a/sources/Convert/CONVERT.MDP b/Sources/Convert/CONVERT.MDP similarity index 100% rename from sources/Convert/CONVERT.MDP rename to Sources/Convert/CONVERT.MDP diff --git a/sources/Convert/MAIN.C b/Sources/Convert/MAIN.C similarity index 100% rename from sources/Convert/MAIN.C rename to Sources/Convert/MAIN.C diff --git a/sources/Emu48/CHANGES.TXT b/Sources/Emu48/CHANGES.TXT similarity index 91% rename from sources/Emu48/CHANGES.TXT rename to Sources/Emu48/CHANGES.TXT index e8bf2ca..adc64e6 100644 --- a/sources/Emu48/CHANGES.TXT +++ b/Sources/Emu48/CHANGES.TXT @@ -1,3 +1,167 @@ +Service Pack 37 for Emu48 Version 1.0 + +DDESERV.C +- changed function DdeCallback(), removed delays after ON key state + change + +EMU48.C +- changed function SettingsProc(), added IDC_PORT2LOAD button + handling +- changed function OnStackPaste(), minor code optimization +- changed function OnDropFiles(), OnStackPaste() and OnObjectLoad(), + removed delays after ON key state change +- bugfix in function WinMain(), szCurrentKml wasn't initialized + +EMU48.RC +- added "..." button Settings dialog +- changed version + +ENGINE.C +- bugfix in function UpdateKdnBit(), wrong DWORD truncation of + Chipset.cycles variable + +FILES.C +- changed function WriteStack(), minor optimization when saving as + string +- bugfix in function OpenDocument(), check for empty KML file name + was wrong, so the error handler of the following InitKML() was + always called in this case +- changed function LoadObject(), file access is now shared +- changed function DibNumColors() and CreateBIPalette(), changed + argument qualifier + +KML.C +- changed variable qualifier of eIsBlock[] table and removed + TOK_NONE item from it +- bugfix, global variables pKml and pKmlList hadn't be initialized +- removed usage of global variables bKmlLogOkEnabled and nKmlFiles +- changed function AddToLog(), changed argument qualifier and minor + code optimization +- changed function PrintfToLog(), use a local buffer instead of the + heap for the output buffer of the wvsprintf() function, this helps + to reduce fragmentation of the heap +- changed function KMLLogProc(), minor code optimization and removed + use of global variable bKmlLogOkEnabled and windows redraw in the + WM_INITDIALOG case +- changed function DisplayKMLLog(), removed use of global variable + bKmlLogOkEnabled and transfer state of bOkEnabled over the lParam + argument to the dialog box procedure +- bugfix in function CreateKmlList(), fixed a memory leak in the + case of no title +- changed function ChooseKMLProc(), minor code optimization +- changed function IsBlock(), minor code optimization +- bugfix in function ParseString(), fixed memory leak in error case + and optimized implementation +- changed function IncludeLines(), IncludeBlocks(), LoadKMLGlobal() + and InitKML(), file access is now shared + +OPS.H +- bugfix in function Nsub() and Nrsub(), in some situations wrong + results in dec mode with illegal decimal number entry as 2nd + operator + +RESOURCE.H +- added definition + +TIMER.C +- bugfix in function RescheduleT2(), better accuracy on conversation + of timer2 ticks into multimedia timer ms +- changed function StartTimers(), added calculation of maximum + timer2 ticks that can be handled by one timer event +- changed function StartTimers() and StopTimers(), changed + multimedia timer to best possible timer resolution instead of + risking to fail with 1 ms resolution preset + + +Service Pack 36 for Emu48 Version 1.0 + +CHECKBOX.BMP +- fixed one pixel with wrong color + +DEBUGGER.C +- bugfix in function Debugger(), used function to set icon which + hasn't worked properly under WinXP + +DISPLAY.C +- changed function UpdateMenuDisplay(), minor code optimizations +- changed function WriteToMenuDisplay(), code optimizations + +EMU48.C +- changed function UpdateWindowStatus(), added macro specific menu + control +- changed function CopyItemsToClipboard(), simplified implementation + in UNICODE mode by saving the data in the CF_UNICODETEXT format +- changed function OnLButtonDown(), OnLButtonUp(), OnMouseMove(), + OnKeyDown() and OnKeyUp(), disable function handling when in macro + play mode +- changed function MainWndProc(), added some macro handler functions + +EMU48.DSP +- added keymacro.c sources + +EMU48.H +- extern declaration of global variables and functions + +EMU48.RC +- changed "Always" checkbox in "KML Script Compilation Result" + dialog from a pushlike to normal one for better readability under + WinXP style +- added "Macro Settings" dialog +- added Menuitem Tools "Macro..." +- changed version and copyright + +ENGINE.C +- bugfix in function AdjustSpeed(), on large operations the + workaround condition for Win2k was detected and the following + synchronizing failed because the CPU didn't got the free running + cycles for the waited time +- changed function WorkerThread(), close running keyboard macros + when switching into invalid state + +FILES.C +- changed function MapRom(), added detection for packed ROM images +- bugfix in function OpenDocument(), reload KML button state from + last document close + +KEYBOARD.C +- changed function KeyboardEvent(), added call to key recording + function KeyMacroRecord() +- bugfix in function KeyboardEvent(), prevent buffer overflow with + too big out codes on Chipset.Keyboard_Row array + +KEYMACRO.C +- new modul supporting keyboard macro functions + +KML.C +- added function ReloadButtons(), update internal button state from + chip keyboard matrix content +- added function PlayKey(), handle button with OutIn code + +KML.H +- added ReloadButtons() and PlayKey() function prototype + +MOPS.C +- bugfix in function WriteIO(), writing to timer2 failed if first + writing address was before the timer2 address area +- changed function WriteIO(), changing the CONTRLSB (0x101) or the + DISPTEST (0x102) register doesn't effect any display pointer, so + update request for recalculating the pointers removed + +OPCODES.C +- bugfix in function o802() and o803(), the r=IN opcodes work also + on odd addresses in the IO register memory mapping area + +PCH.H +- added VERIFY macro + +RESOURCE.H +- added several definitions + +SETTINGS.C +- changed function ReadSettings() and WriteSettings(), added section + [Macro] in INI-File + + Service Pack 35 for Emu48 Version 1.0 DDESERV.C diff --git a/sources/Emu48/CHECKBOX.BMP b/Sources/Emu48/CHECKBOX.BMP similarity index 76% rename from sources/Emu48/CHECKBOX.BMP rename to Sources/Emu48/CHECKBOX.BMP index b3945ec9d4e2cfbd54116e652bda185e31417e3c..d7cfb44141d8a945d0fab355a91623f0789fa356 100644 GIT binary patch delta 19 Tcmeyx_=|DEJDv_WXkY*UVnqp2 delta 19 Ucmeyx_=|DEJ06Y>7-(Ps09-`~(EtDd diff --git a/sources/Emu48/COLOR.H b/Sources/Emu48/COLOR.H similarity index 100% rename from sources/Emu48/COLOR.H rename to Sources/Emu48/COLOR.H diff --git a/sources/Emu48/CURSOR.C b/Sources/Emu48/CURSOR.C similarity index 100% rename from sources/Emu48/CURSOR.C rename to Sources/Emu48/CURSOR.C diff --git a/sources/Emu48/DBGTOOL.BMP b/Sources/Emu48/DBGTOOL.BMP similarity index 100% rename from sources/Emu48/DBGTOOL.BMP rename to Sources/Emu48/DBGTOOL.BMP diff --git a/sources/Emu48/DDESERV.C b/Sources/Emu48/DDESERV.C similarity index 95% rename from sources/Emu48/DDESERV.C rename to Sources/Emu48/DDESERV.C index 77dfd73..55a985c 100644 --- a/sources/Emu48/DDESERV.C +++ b/Sources/Emu48/DDESERV.C @@ -53,7 +53,6 @@ HDDEDATA CALLBACK DdeCallback(UINT iType,UINT iFmt,HCONV hConv, { // turn on HP KeyboardEvent(TRUE,0,0x8000); - Sleep(200); KeyboardEvent(FALSE,0,0x8000); } @@ -86,7 +85,6 @@ HDDEDATA CALLBACK DdeCallback(UINT iType,UINT iFmt,HCONV hConv, } KeyboardEvent(TRUE,0,0x8000); - Sleep(200); KeyboardEvent(FALSE,0,0x8000); // wait for sleep mode while(Chipset.Shutdn == FALSE) Sleep(0); diff --git a/sources/Emu48/DEBUGGER.C b/Sources/Emu48/DEBUGGER.C similarity index 96% rename from sources/Emu48/DEBUGGER.C rename to Sources/Emu48/DEBUGGER.C index 70ec702..cdae778 100644 --- a/sources/Emu48/DEBUGGER.C +++ b/Sources/Emu48/DEBUGGER.C @@ -1675,7 +1675,7 @@ static BOOL CALLBACK Debugger(HWND hDlg, UINT message, DWORD wParam, LONG lParam { case WM_INITDIALOG: SetWindowLocation(hDlg,nDbgPosX,nDbgPosY); - SetClassLong(hDlg,GCL_HICON,(LONG) LoadIcon(hApp,MAKEINTRESOURCE(IDI_EMU48))); + SendMessage(hDlg,WM_SETICON,ICON_BIG,(LPARAM) LoadIcon(hApp,MAKEINTRESOURCE(IDI_EMU48))); hWndToolbar = CreateToolbar(hDlg); // add toolbar CheckMenuItem(GetMenu(hDlg),ID_BREAKPOINTS_NOP3, bDbgNOP3 ? MF_CHECKED : MF_UNCHECKED); CheckMenuItem(GetMenu(hDlg),ID_BREAKPOINTS_DOCODE,bDbgCode ? MF_CHECKED : MF_UNCHECKED); diff --git a/sources/Emu48/DEBUGGER.H b/Sources/Emu48/DEBUGGER.H similarity index 100% rename from sources/Emu48/DEBUGGER.H rename to Sources/Emu48/DEBUGGER.H diff --git a/sources/Emu48/DISASM.C b/Sources/Emu48/DISASM.C similarity index 100% rename from sources/Emu48/DISASM.C rename to Sources/Emu48/DISASM.C diff --git a/sources/Emu48/DISPLAY.C b/Sources/Emu48/DISPLAY.C similarity index 87% rename from sources/Emu48/DISPLAY.C rename to Sources/Emu48/DISPLAY.C index 0ff2b56..cb147e9 100644 --- a/sources/Emu48/DISPLAY.C +++ b/Sources/Emu48/DISPLAY.C @@ -152,10 +152,8 @@ VOID CreateLcdBitmap(VOID) bmiLcd.Lcd_bmih.biWidth = LCD_ROW * nLcdZoom; bmiLcd.Lcd_bmih.biHeight = -64 * nLcdZoom; _ASSERT(hLcdDC == NULL); - hLcdDC = CreateCompatibleDC(hWindowDC); - _ASSERT(hLcdDC != NULL); - hLcdBitmap = CreateDIBSection(hLcdDC,(BITMAPINFO*)&bmiLcd,DIB_RGB_COLORS,(VOID **)&pbyLcd,NULL,0); - _ASSERT(hLcdBitmap != NULL); + VERIFY(hLcdDC = CreateCompatibleDC(hWindowDC)); + VERIFY(hLcdBitmap = CreateDIBSection(hLcdDC,(BITMAPINFO*)&bmiLcd,DIB_RGB_COLORS,(VOID **)&pbyLcd,NULL,0)); hLcdBitmap = SelectObject(hLcdDC,hLcdBitmap); _ASSERT(hPalette != NULL); SelectPalette(hLcdDC,hPalette,FALSE); // set palette for LCD DC @@ -185,11 +183,8 @@ VOID DestroyLcdBitmap(VOID) BOOL CreateMainBitmap(LPCTSTR szFilename) { - HPALETTE hAssertPalette; - _ASSERT(hWindowDC != NULL); - hMainDC = CreateCompatibleDC(hWindowDC); - _ASSERT(hMainDC != NULL); + VERIFY(hMainDC = CreateCompatibleDC(hWindowDC)); if (hMainDC == NULL) return FALSE; // quit if failed hMainBitmap = LoadBitmapFile(szFilename); if (hMainBitmap == NULL) @@ -199,8 +194,7 @@ BOOL CreateMainBitmap(LPCTSTR szFilename) } hMainBitmap = SelectObject(hMainDC,hMainBitmap); _ASSERT(hPalette != NULL); - hAssertPalette = SelectPalette(hMainDC,hPalette,FALSE); - _ASSERT(hAssertPalette != NULL); + VERIFY(SelectPalette(hMainDC,hPalette,FALSE)); RealizePalette(hMainDC); return TRUE; } @@ -371,13 +365,15 @@ VOID UpdateMenuDisplay(VOID) for (y = nLines; y < 64; ++y) { Npeek(Buf,d+Chipset.start2,34); // 34 nibbles are viewed - for (x = 0; x < 36; ++x) // every 4 pixel + for (x = 0; x < 34; ++x) // every 4 pixel { DIBPIXEL(p,Pattern[Buf[x]&1]); DIBPIXEL(p,Pattern[(Buf[x]>>1) & 1]); DIBPIXEL(p,Pattern[(Buf[x]>>2) & 1]); DIBPIXEL(p,Pattern[(Buf[x]>>3) & 1]); } + // adjust pointer to 36 DIBPIXEL drawing calls + p += (36-34) * 4 * sizeof(DWORD); CopyMemory(p, p-LCD_ROW*4, LCD_ROW*4); p+=LCD_ROW*4; CopyMemory(p, p-LCD_ROW*8, LCD_ROW*8); @@ -390,11 +386,13 @@ VOID UpdateMenuDisplay(VOID) for (y = nLines; y < 64; ++y) { Npeek(Buf,d+Chipset.start2,34); // 34 nibbles are viewed - for (x = 0; x < 36; ++x) // every 4 pixel + for (x = 0; x < 34; ++x) // every 4 pixel { DIBPIXEL(p,Pattern[Buf[x]&3]); DIBPIXEL(p,Pattern[Buf[x]>>2]); } + // adjust pointer to 36 DIBPIXEL drawing calls + p += (36-34) * 2 * sizeof(DWORD); CopyMemory(p, p-LCD_ROW*2, LCD_ROW*2); p+=LCD_ROW*2; d+=34; @@ -405,10 +403,12 @@ VOID UpdateMenuDisplay(VOID) for (y = nLines; y < 64; ++y) { Npeek(Buf,d+Chipset.start2,34); // 34 nibbles are viewed - for (x = 0; x < 36; ++x) // every 4 pixel + for (x = 0; x < 34; ++x) // every 4 pixel { DIBPIXEL(p,Pattern[Buf[x]]); } + // adjust pointer to 36 DIBPIXEL drawing calls + p += (36-34) * 1 * sizeof(DWORD); d+=34; } } @@ -582,23 +582,14 @@ VOID WriteToMenuDisplay(LPBYTE a, DWORD d, UINT s) p=(DWORD*)(pbyLcd+y*LCD_ROW*16); } else p+=4; } - EnterCriticalSection(&csGDILock); // solving NT GDI problems + if (y0!=y) // modified more than 1 line { - if (y0!=y) - { - y0<<=2; y<<=2; - BitBlt(hWindowDC, nLcdX, nLcdY+y0, 524, y-y0+4, hLcdDC, 0, y0, SRCCOPY); - } - else - { - x0<<=4; x<<=4; - y0<<=2; y<<=2; - if (x>524) x=524; - BitBlt(hWindowDC, nLcdX+x0, nLcdY+y0, x-x0, y-y0+4, hLcdDC, x0, y0, SRCCOPY); - } - GdiFlush(); + x = 34; // full line + x0 = 0; // no offset } - LeaveCriticalSection(&csGDILock); + x0<<=4; x<<=4; // calculate pixel address + y0<<=2; y<<=2; + if (x>524) x=524; } if (nLcdZoom == 2) { @@ -620,23 +611,14 @@ VOID WriteToMenuDisplay(LPBYTE a, DWORD d, UINT s) p=(DWORD*)(pbyLcd+y*LCD_ROW*4); } else p+=2; } - EnterCriticalSection(&csGDILock); // solving NT GDI problems + if (y0!=y) // modified more than 1 line { - if (y0!=y) - { - y0<<=1; y<<=1; - BitBlt(hWindowDC, nLcdX, nLcdY+y0, 262, y-y0+2, hLcdDC, 0, y0, SRCCOPY); - } - else - { - x0<<=3; x<<=3; - y0<<=1; y<<=1; - if (x>262) x=262; - BitBlt(hWindowDC, nLcdX+x0, nLcdY+y0, x-x0, y-y0+2, hLcdDC, x0, y0, SRCCOPY); - } - GdiFlush(); + x = 34; // full line + x0 = 0; // no offset } - LeaveCriticalSection(&csGDILock); + x0<<=3; x<<=3; // calculate pixel address + y0<<=1; y<<=1; + if (x>262) x=262; } if (nLcdZoom == 1) { @@ -654,22 +636,21 @@ VOID WriteToMenuDisplay(LPBYTE a, DWORD d, UINT s) p=(DWORD*)(pbyLcd+y*LCD_ROW); } else p++; } - EnterCriticalSection(&csGDILock); // solving NT GDI problems + if (y0!=y) // modified more than 1 line { - if (y0!=y) - { - BitBlt(hWindowDC, nLcdX, nLcdY+y0, 131, y-y0+1, hLcdDC, 0, y0, SRCCOPY); - } - else - { - x0<<=2; x<<=2; - if (x>131) x=131; - BitBlt(hWindowDC, nLcdX+x0, nLcdY+y0, x-x0, y-y0+1, hLcdDC, x0, y0, SRCCOPY); - } - GdiFlush(); + x = 34; // full line + x0 = 0; // no offset } - LeaveCriticalSection(&csGDILock); + x0<<=2; x<<=2; // calculate pixel address + if (x>131) x=131; } + + EnterCriticalSection(&csGDILock); // solving NT GDI problems + { + BitBlt(hWindowDC, nLcdX+x0, nLcdY+y0, x-x0, y-y0+nLcdZoom, hLcdDC, x0, y0, SRCCOPY); + GdiFlush(); + } + LeaveCriticalSection(&csGDILock); #endif return; } @@ -784,8 +765,7 @@ VOID StartDisplay(BYTE byInitial) // adjust startup counter to get the right VBL value lLcdRef.QuadPart -= ((LONGLONG) ((0x7E - byInitial) & 0x3F) * lFreq.QuadPart) >> 12; - uLcdTimerId = timeSetEvent(DISPLAY_FREQ,0,(LPTIMECALLBACK)&LcdProc,0,TIME_PERIODIC); - _ASSERT(uLcdTimerId); // test if display update timer started + VERIFY(uLcdTimerId = timeSetEvent(DISPLAY_FREQ,0,(LPTIMECALLBACK)&LcdProc,0,TIME_PERIODIC)); } return; } diff --git a/sources/Emu48/EMU48.C b/Sources/Emu48/EMU48.C similarity index 88% rename from sources/Emu48/EMU48.C rename to Sources/Emu48/EMU48.C index e4c4030..66891c1 100644 --- a/sources/Emu48/EMU48.C +++ b/Sources/Emu48/EMU48.C @@ -13,7 +13,7 @@ #include "kml.h" #include "debugger.h" -#define VERSION "1.35" +#define VERSION "1.37" #define CF_HPOBJ "CF_HPOBJ" // clipboard format for DDE #define MAXPORTS 256 // number of COM ports @@ -139,6 +139,9 @@ VOID UpdateWindowStatus(VOID) EnableMenuItem(hMenu,ID_VIEW_SCRIPT,uRun); EnableMenuItem(hMenu,ID_TOOL_DISASM,uRun); EnableMenuItem(hMenu,ID_TOOL_DEBUG,(bRun && nDbgState == DBG_OFF) ? MF_ENABLED : MF_GRAYED); + EnableMenuItem(hMenu,ID_TOOL_MACRO_RECORD,(bRun && nMacroState == MACRO_OFF) ? MF_ENABLED : MF_GRAYED); + EnableMenuItem(hMenu,ID_TOOL_MACRO_PLAY,(bRun && nMacroState == MACRO_OFF) ? MF_ENABLED : MF_GRAYED); + EnableMenuItem(hMenu,ID_TOOL_MACRO_STOP,(bRun && nMacroState != MACRO_OFF) ? MF_ENABLED : MF_GRAYED); } return; } @@ -162,6 +165,7 @@ VOID CopyItemsToClipboard(HWND hWnd) // save selected Listbox Items to Clipboar if ((lpnCount = HeapAlloc(hHeap,0,i * sizeof(INT))) != NULL) { + LPTSTR lpszData; HANDLE hClipObj; LONG j,lMem = 0; @@ -169,49 +173,32 @@ VOID CopyItemsToClipboard(HWND hWnd) // save selected Listbox Items to Clipboar i = SendMessage(hWnd,LB_GETSELITEMS,i,(LPARAM) lpnCount); for (j = 0;j < i;++j) // scan all selected items { - // calculate total amount of needed memory + // calculate total amount of characters lMem += SendMessage(hWnd,LB_GETTEXTLEN,lpnCount[j],0) + 2; } // allocate clipboard data - if ((hClipObj = GlobalAlloc(GMEM_MOVEABLE,lMem + 1)) != NULL) + if ((hClipObj = GlobalAlloc(GMEM_MOVEABLE,(lMem + 1) * sizeof(*lpszData))) != NULL) { - LPBYTE lpData; - - if ((lpData = GlobalLock(hClipObj))) + if ((lpszData = GlobalLock(hClipObj))) { for (j = 0;j < i;++j) // scan all selected items { - #if defined _UNICODE - { - INT nLength = SendMessage(hWnd,LB_GETTEXTLEN,lpnCount[j],0) + 1; - - LPTSTR szTmp = HeapAlloc(hHeap,0,nLength * sizeof(szTmp[0])); - if (szTmp != NULL) - { - SendMessage(hWnd,LB_GETTEXT,lpnCount[j],(LPARAM) szTmp); - WideCharToMultiByte(CP_ACP, WC_COMPOSITECHECK, - szTmp, nLength, - lpData, nLength, NULL, NULL); - HeapFree(hHeap,0,szTmp); - lpData += nLength - 1; - } - } - #else - { - lpData += SendMessage(hWnd,LB_GETTEXT,lpnCount[j],(LPARAM) lpData); - } - #endif - *lpData++ = '\r'; - *lpData++ = '\n'; + lpszData += SendMessage(hWnd,LB_GETTEXT,lpnCount[j],(LPARAM) lpszData); + *lpszData++ = _T('\r'); + *lpszData++ = _T('\n'); } - *lpData = 0; // set end of string + *lpszData = 0; // set EOS GlobalUnlock(hClipObj); // unlock memory } if (OpenClipboard(hWnd)) { if (EmptyClipboard()) - SetClipboardData(CF_TEXT,hClipObj); + #if defined _UNICODE + SetClipboardData(CF_UNICODETEXT,hClipObj); + #else + SetClipboardData(CF_TEXT,hClipObj); + #endif else GlobalFree(hClipObj); CloseClipboard(); @@ -255,8 +242,7 @@ static VOID SetCommList(HWND hDlg,int nIDDlgItem,LPCTSTR szSetting) hComm = CreateFile(szBuffer,GENERIC_READ | GENERIC_WRITE,0,NULL,OPEN_EXISTING,0,NULL); if(hComm != INVALID_HANDLE_VALUE) { - BOOL bError = CloseHandle(hComm); - _ASSERT(bError); + VERIFY(CloseHandle(hComm)); bAdd = TRUE; } @@ -329,11 +315,30 @@ static BOOL CALLBACK SettingsProc(HWND hDlg, UINT message, DWORD wParam, LONG lP // hide port2 settings EnableWindow(GetDlgItem(hDlg,IDC_PORT2ISSHARED),FALSE); EnableWindow(GetDlgItem(hDlg,IDC_PORT2),FALSE); + EnableWindow(GetDlgItem(hDlg,IDC_PORT2LOAD),FALSE); } return TRUE; case WM_COMMAND: switch (LOWORD(wParam)) { + case IDC_PORT2LOAD: + if (GetLoadObjectFilename()) + { + TCHAR szFilename[MAX_PATH]; + LPTSTR lpFilePart; + + // check if file path and Emu48 directory path is identical + if (GetFullPathName(szBufferFilename,ARRAYSIZEOF(szFilename),szFilename,&lpFilePart)) + { + *(lpFilePart-1) = 0; // devide path and name + + // name is in the Emu48 directory -> use only name + if (lstrcmpi(szEmuDirectory,szFilename) == 0) + lstrcpy(szBufferFilename,lpFilePart); + } + SetDlgItemText(hDlg,IDC_PORT2,szBufferFilename); + } + return TRUE; case IDOK: if (Chipset.Port1Size && cCurrentRomType!='X') { @@ -355,7 +360,6 @@ static BOOL CALLBACK SettingsProc(HWND hDlg, UINT message, DWORD wParam, LONG lP && (Chipset.IORam[CARDCTL] & ECDT) != 0 && (Chipset.IORam[TIMER2_CTRL] & RUN) != 0 ) { - Chipset.HST |= MP; // set Module Pulled IOBit(SRQ2,NINT,FALSE); // set NINT to low Chipset.SoftInt = TRUE; // set interrupt @@ -569,9 +573,7 @@ static LRESULT OnDropFiles(HANDLE hFilesInfo) { // turn on HP KeyboardEvent(TRUE,0,0x8000); - Sleep(200); KeyboardEvent(FALSE,0,0x8000); - Sleep(200); } _ASSERT(nState == SM_RUN); // emulator must be in RUN state @@ -603,7 +605,6 @@ static LRESULT OnDropFiles(HANDLE hFilesInfo) goto cancel; KeyboardEvent(TRUE,0,0x8000); - Sleep(200); KeyboardEvent(FALSE,0,0x8000); // wait for sleep mode while(Chipset.Shutdn == FALSE) Sleep(0); @@ -805,6 +806,13 @@ static LRESULT OnStackPaste(VOID) // paste data to stack BOOL bSuccess = FALSE; + // check if clipboard format is available + if (!IsClipboardFormatAvailable(CF_TEXT)) + { + MessageBeep(MB_OK); // error beep + return 0; + } + SuspendDebugger(); // suspend debugger bDbgAutoStateCtrl = FALSE; // disable automatic debugger state control @@ -812,9 +820,8 @@ static LRESULT OnStackPaste(VOID) // paste data to stack if (!(Chipset.IORam[BITOFFSET]&DON)) { KeyboardEvent(TRUE,0,0x8000); - Sleep(200); KeyboardEvent(FALSE,0,0x8000); - Sleep(200); + // wait for sleep mode while(Chipset.Shutdn == FALSE) Sleep(0); } @@ -830,28 +837,20 @@ static LRESULT OnStackPaste(VOID) // paste data to stack if (OpenClipboard(hWnd)) { - if ( IsClipboardFormatAvailable(CF_TEXT) - || IsClipboardFormatAvailable(CF_OEMTEXT)) + if ((hClipObj = GetClipboardData(CF_TEXT))) { - if ((hClipObj = GetClipboardData(CF_TEXT))) + if ((lpClipdata = GlobalLock(hClipObj))) { - if ((lpClipdata = GlobalLock(hClipObj))) + DWORD dwSize = strlen(lpClipdata); + if ((lpData = HeapAlloc(hHeap,0,dwSize * 2))) { - DWORD dwSize = strlen(lpClipdata); - if ((lpData = HeapAlloc(hHeap,0,dwSize * 2))) - { - memcpy(lpData+dwSize,lpClipdata,dwSize); // copy data - bSuccess = (WriteStack(lpData,dwSize) == S_ERR_NO); - HeapFree(hHeap,0,lpData); - } - GlobalUnlock(hClipObj); + memcpy(lpData+dwSize,lpClipdata,dwSize); // copy data + bSuccess = (WriteStack(lpData,dwSize) == S_ERR_NO); + HeapFree(hHeap,0,lpData); } + GlobalUnlock(hClipObj); } } - else // unknown clipboard format - { - MessageBeep(MB_OK); // error beep - } CloseClipboard(); } @@ -863,7 +862,6 @@ static LRESULT OnStackPaste(VOID) // paste data to stack goto cancel; KeyboardEvent(TRUE,0,0x8000); - Sleep(200); KeyboardEvent(FALSE,0,0x8000); // wait for sleep mode @@ -1095,9 +1093,8 @@ static LRESULT OnObjectLoad(VOID) if (!(Chipset.IORam[BITOFFSET]&DON)) { KeyboardEvent(TRUE,0,0x8000); - Sleep(200); KeyboardEvent(FALSE,0,0x8000); - Sleep(200); + // wait for sleep mode while(Chipset.Shutdn == FALSE) Sleep(0); } @@ -1152,7 +1149,6 @@ static LRESULT OnObjectLoad(VOID) while (nState!=nNextState) Sleep(0); _ASSERT(nState == SM_RUN); KeyboardEvent(TRUE,0,0x8000); - Sleep(200); KeyboardEvent(FALSE,0,0x8000); while(Chipset.Shutdn == FALSE) Sleep(0); @@ -1329,24 +1325,28 @@ static LRESULT OnAbout(VOID) static LRESULT OnLButtonDown(UINT nFlags, WORD x, WORD y) { + if (nMacroState == MACRO_PLAY) return 0; // playing macro if (nState == SM_RUN) MouseButtonDownAt(nFlags, x,y); return 0; } static LRESULT OnLButtonUp(UINT nFlags, WORD x, WORD y) { + if (nMacroState == MACRO_PLAY) return 0; // playing macro if (nState == SM_RUN) MouseButtonUpAt(nFlags, x,y); return 0; } static LRESULT OnMouseMove(UINT nFlags, WORD x, WORD y) { + if (nMacroState == MACRO_PLAY) return 0; // playing macro if (nState == SM_RUN) MouseMovesTo(nFlags, x,y); return 0; } static LRESULT OnKeyDown(int nVirtKey, DWORD lKeyData) { + if (nMacroState == MACRO_PLAY) return 0; // playing macro // call RunKey() only once (suppress autorepeat feature) if (nState == SM_RUN && (lKeyData & 0x40000000) == 0) RunKey((BYTE)nVirtKey, TRUE); @@ -1355,6 +1355,7 @@ static LRESULT OnKeyDown(int nVirtKey, DWORD lKeyData) static LRESULT OnKeyUp(int nVirtKey, DWORD lKeyData) { + if (nMacroState == MACRO_PLAY) return 0; // playing macro if (nState == SM_RUN) RunKey((BYTE)nVirtKey, FALSE); return 0; UNREFERENCED_PARAMETER(lKeyData); @@ -1396,26 +1397,30 @@ LRESULT CALLBACK MainWndProc(HWND hWindow, UINT uMsg, WPARAM wParam, LPARAM lPar case WM_COMMAND: switch (LOWORD(wParam)) { - case ID_FILE_NEW: return OnFileNew(); - case ID_FILE_OPEN: return OnFileOpen(); - case ID_FILE_SAVE: return OnFileSave(); - case ID_FILE_SAVEAS: return OnFileSaveAs(); - case ID_FILE_CLOSE: return OnFileClose(); - case ID_FILE_EXIT: return OnFileExit(); - case ID_STACK_COPY: return OnStackCopy(); - case ID_STACK_PASTE: return OnStackPaste(); - case ID_VIEW_COPY: return OnViewCopy(); - case ID_VIEW_RESET: return OnViewReset(); - case ID_VIEW_SETTINGS: return OnViewSettings(); - case ID_VIEW_SCRIPT: return OnViewScript(); - case ID_BACKUP_SAVE: return OnBackupSave(); - case ID_BACKUP_RESTORE:return OnBackupRestore(); - case ID_BACKUP_DELETE: return OnBackupDelete(); - case ID_OBJECT_LOAD: return OnObjectLoad(); - case ID_OBJECT_SAVE: return OnObjectSave(); - case ID_TOOL_DISASM: return OnToolDisasm(); - case ID_TOOL_DEBUG: return OnToolDebug(); - case ID_ABOUT: return OnAbout(); + case ID_FILE_NEW: return OnFileNew(); + case ID_FILE_OPEN: return OnFileOpen(); + case ID_FILE_SAVE: return OnFileSave(); + case ID_FILE_SAVEAS: return OnFileSaveAs(); + case ID_FILE_CLOSE: return OnFileClose(); + case ID_FILE_EXIT: return OnFileExit(); + case ID_STACK_COPY: return OnStackCopy(); + case ID_STACK_PASTE: return OnStackPaste(); + case ID_VIEW_COPY: return OnViewCopy(); + case ID_VIEW_RESET: return OnViewReset(); + case ID_VIEW_SETTINGS: return OnViewSettings(); + case ID_VIEW_SCRIPT: return OnViewScript(); + case ID_BACKUP_SAVE: return OnBackupSave(); + case ID_BACKUP_RESTORE: return OnBackupRestore(); + case ID_BACKUP_DELETE: return OnBackupDelete(); + case ID_OBJECT_LOAD: return OnObjectLoad(); + case ID_OBJECT_SAVE: return OnObjectSave(); + case ID_TOOL_DISASM: return OnToolDisasm(); + case ID_TOOL_DEBUG: return OnToolDebug(); + case ID_TOOL_MACRO_RECORD: return OnToolMacroNew(); + case ID_TOOL_MACRO_PLAY: return OnToolMacroPlay(); + case ID_TOOL_MACRO_STOP: return OnToolMacroStop(); + case ID_TOOL_MACRO_SETTINGS: return OnToolMacroSettings(); + case ID_ABOUT: return OnAbout(); } break; case WM_SYSCOMMAND: @@ -1506,6 +1511,7 @@ int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInst, LPSTR lpCmdLine, int nC QueryPerformanceCounter(&lAppStart); GetCurrentDirectory(ARRAYSIZEOF(szCurrentDirectory), szCurrentDirectory); + szCurrentKml[0] = 0; // no KML file selected ReadSettings(); diff --git a/sources/Emu48/EMU48.DSP b/Sources/Emu48/EMU48.DSP similarity index 95% rename from sources/Emu48/EMU48.DSP rename to Sources/Emu48/EMU48.DSP index 9b50aab..dcdb6e8 100644 --- a/sources/Emu48/EMU48.DSP +++ b/Sources/Emu48/EMU48.DSP @@ -7,21 +7,21 @@ CFG=Emu48 - Win32 Release !MESSAGE This is not a valid makefile. To build this project using NMAKE, !MESSAGE use the Export Makefile command and run -!MESSAGE +!MESSAGE !MESSAGE NMAKE /f "Emu48.mak". -!MESSAGE +!MESSAGE !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE +!MESSAGE !MESSAGE NMAKE /f "Emu48.mak" CFG="Emu48 - Win32 Release" -!MESSAGE +!MESSAGE !MESSAGE Possible choices for configuration are: -!MESSAGE +!MESSAGE !MESSAGE "Emu48 - Win32 Release" (based on "Win32 (x86) Application") !MESSAGE "Emu48 - Win32 Debug" (based on "Win32 (x86) Application") !MESSAGE "Emu48 - Win32 Release Unicode" (based on "Win32 (x86) Application") !MESSAGE "Emu48 - Win32 Debug Unicode" (based on "Win32 (x86) Application") -!MESSAGE +!MESSAGE # Begin Project # PROP AllowPerConfigDependencies 0 @@ -137,7 +137,7 @@ LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib comdlg32.lib shell32.lib winmm.lib comctl32.lib advapi32.lib /nologo /subsystem:windows /debug /machine:I386 # ADD LINK32 kernel32.lib user32.lib gdi32.lib comdlg32.lib shell32.lib winmm.lib comctl32.lib advapi32.lib /nologo /subsystem:windows /debug /machine:I386 -!ENDIF +!ENDIF # Begin Target @@ -202,6 +202,10 @@ SOURCE=.\keyboard.c # End Source File # Begin Source File +SOURCE=.\keymacro.c +# End Source File +# Begin Source File + SOURCE=.\kml.c # End Source File # Begin Source File diff --git a/sources/Emu48/EMU48.DSW b/Sources/Emu48/EMU48.DSW similarity index 100% rename from sources/Emu48/EMU48.DSW rename to Sources/Emu48/EMU48.DSW diff --git a/sources/Emu48/EMU48.H b/Sources/Emu48/EMU48.H similarity index 93% rename from sources/Emu48/EMU48.H rename to Sources/Emu48/EMU48.H index c2efde0..d1846a4 100644 --- a/sources/Emu48/EMU48.H +++ b/Sources/Emu48/EMU48.H @@ -55,6 +55,10 @@ #define VIEW_SHORT FALSE // view of disassembler output #define VIEW_LONG TRUE +#define MACRO_OFF 0 // macro recorder off +#define MACRO_NEW 1 +#define MACRO_PLAY 2 + #define DISP_POINTER 0x01 // defines for display area #define DISP_MAIN 0x02 #define DISP_MENUE 0x04 @@ -260,6 +264,16 @@ extern VOID WriteIO(BYTE *a, DWORD b, DWORD s); extern VOID ScanKeyboard(BOOL bActive, BOOL bReset); extern VOID KeyboardEvent(BOOL bPress, UINT out, UINT in); +// Keymacro.c +extern INT nMacroState; +extern INT nMacroTimeout; +extern BOOL bMacroRealSpeed; +extern VOID KeyMacroRecord(BOOL bPress, UINT out, UINT in); +extern LRESULT OnToolMacroNew(VOID); +extern LRESULT OnToolMacroPlay(VOID); +extern LRESULT OnToolMacroStop(VOID); +extern LRESULT OnToolMacroSettings(VOID); + // RPL.c extern DWORD RPL_SkipOb(DWORD d); extern DWORD RPL_ObjectSize(BYTE *o); diff --git a/sources/Emu48/EMU48.ICO b/Sources/Emu48/EMU48.ICO similarity index 100% rename from sources/Emu48/EMU48.ICO rename to Sources/Emu48/EMU48.ICO diff --git a/sources/Emu48/EMU48.RC b/Sources/Emu48/EMU48.RC similarity index 90% rename from sources/Emu48/EMU48.RC rename to Sources/Emu48/EMU48.RC index a1fb3b6..064f8b4 100644 --- a/sources/Emu48/EMU48.RC +++ b/Sources/Emu48/EMU48.RC @@ -140,6 +140,14 @@ BEGIN TOPMARGIN, 7 BOTTOMMARGIN, 162 END + + IDD_MACROSET, DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 149 + TOPMARGIN, 7 + BOTTOMMARGIN, 74 + END END #endif // APSTUDIO_INVOKED @@ -217,7 +225,7 @@ FONT 8, "MS Sans Serif" BEGIN ICON IDI_EMU48,IDC_STATIC,7,6,20,20,SS_REALSIZEIMAGE LTEXT "",IDC_VERSION,29,6,151,8,NOT WS_GROUP - LTEXT "Copyright © 2004 Sébastien Carlier && Christoph Gießelink", + LTEXT "Copyright © 2005 Sébastien Carlier && Christoph Gießelink", IDC_STATIC,29,18,181,8 DEFPUSHBUTTON "OK",IDOK,215,12,39,14 EDITTEXT IDC_LICENSE,7,33,247,112,ES_MULTILINE | ES_AUTOHSCROLL | @@ -252,7 +260,8 @@ BEGIN CONTROL "Port 2 is Shared",IDC_PORT2ISSHARED,"Button", BS_AUTOCHECKBOX | WS_TABSTOP,13,131,65,10 LTEXT "Port 2 File :",IDC_STATIC,13,147,37,8 - EDITTEXT IDC_PORT2,51,144,104,12,ES_AUTOHSCROLL + EDITTEXT IDC_PORT2,51,144,94,12,ES_AUTOHSCROLL + PUSHBUTTON "...",IDC_PORT2LOAD,145,144,10,12 GROUPBOX "Memory Cards",IDC_STATIC,7,110,153,51 LTEXT "Wire:",IDC_STATIC,13,176,17,8 COMBOBOX IDC_WIRE,31,174,48,42,CBS_DROPDOWNLIST | WS_VSCROLL | @@ -289,7 +298,7 @@ BEGIN DEFPUSHBUTTON "OK",IDOK,86,146,50,14 PUSHBUTTON "Cancel",IDCANCEL,164,146,50,14 CONTROL "Always",IDC_ALWAYSDISPLOG,"Button",BS_AUTOCHECKBOX | - BS_PUSHLIKE | WS_TABSTOP,263,147,31,13,WS_EX_STATICEDGE + WS_TABSTOP,258,146,36,14 GROUPBOX "",IDC_STATIC,7,7,287,36 CTEXT "Title of the Script",IDC_TITLE,71,14,158,8 CTEXT "by",IDC_STATIC,71,22,158,8 @@ -472,6 +481,24 @@ BEGIN DEFPUSHBUTTON "Cancel",IDCANCEL,129,148,50,14 END +IDD_MACROSET DIALOG DISCARDABLE 0, 0, 156, 81 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Macro Settings" +FONT 8, "MS Sans Serif" +BEGIN + LTEXT "Slow",IDC_MACRO_SLOW,12,16,16,8,WS_DISABLED + LTEXT "Fast",IDC_MACRO_FAST,78,16,14,8,WS_DISABLED + CONTROL "Slider1",IDC_MACRO_SLIDER,"msctls_trackbar32", + TBS_AUTOTICKS | WS_DISABLED | WS_TABSTOP,12,26,82,21 + CONTROL "&Real",IDC_MACRO_REAL,"Button",BS_AUTORADIOBUTTON | + WS_GROUP | WS_TABSTOP,103,18,39,10 + CONTROL "&Manual",IDC_MACRO_MANUAL,"Button",BS_AUTORADIOBUTTON, + 103,32,39,10 + GROUPBOX "Replay Speed",IDC_STATIC,7,3,142,49 + DEFPUSHBUTTON "OK",IDOK,13,60,50,14 + PUSHBUTTON "Cancel",IDCANCEL,93,60,50,14 +END + ///////////////////////////////////////////////////////////////////////////// // @@ -509,8 +536,8 @@ END // VS_VERSION_INFO VERSIONINFO - FILEVERSION 1,3,5,0 - PRODUCTVERSION 1,3,5,0 + FILEVERSION 1,3,7,0 + PRODUCTVERSION 1,3,7,0 FILEFLAGSMASK 0x3fL #ifdef _DEBUG FILEFLAGS 0x1L @@ -527,12 +554,12 @@ BEGIN BEGIN VALUE "CompanyName", "Sebastien Carlier & Christoph Gießelink\0" VALUE "FileDescription", "HP38/39/40/48/49 Emulator\0" - VALUE "FileVersion", "1, 3, 5, 0\0" + VALUE "FileVersion", "1, 3, 7, 0\0" VALUE "InternalName", "Emu48\0" - VALUE "LegalCopyright", "Copyright © 2004\0" + VALUE "LegalCopyright", "Copyright © 2005\0" VALUE "OriginalFilename", "Emu48.exe\0" VALUE "ProductName", "Emu48\0" - VALUE "ProductVersion", "1, 3, 5, 0\0" + VALUE "ProductVersion", "1, 3, 7, 0\0" END END BLOCK "VarFileInfo" @@ -598,6 +625,17 @@ BEGIN BEGIN MENUITEM "D&isassembler...", ID_TOOL_DISASM MENUITEM "&Debugger...", ID_TOOL_DEBUG + MENUITEM SEPARATOR + POPUP "&Macro" + BEGIN + MENUITEM "&Record...", ID_TOOL_MACRO_RECORD + , GRAYED + MENUITEM "&Play...", ID_TOOL_MACRO_PLAY + , GRAYED + MENUITEM "&Stop", ID_TOOL_MACRO_STOP + , GRAYED + MENUITEM "S&ettings...", ID_TOOL_MACRO_SETTINGS + END END POPUP "&Help" BEGIN diff --git a/sources/Emu48/EMU48.XML b/Sources/Emu48/EMU48.XML similarity index 100% rename from sources/Emu48/EMU48.XML rename to Sources/Emu48/EMU48.XML diff --git a/sources/Emu48/ENGINE.C b/Sources/Emu48/ENGINE.C similarity index 92% rename from sources/Emu48/ENGINE.C rename to Sources/Emu48/ENGINE.C index a61dbfd..cca617a 100644 --- a/sources/Emu48/ENGINE.C +++ b/Sources/Emu48/ENGINE.C @@ -287,25 +287,16 @@ static __inline VOID AdjustSpeed(VOID) // adjust emulation speed LARGE_INTEGER lAct; do { - BOOL bErr = QueryPerformanceCounter(&lAct); - _ASSERT(bErr); // no high-resolution performance counter - } - while((dwTicks = lAct.LowPart-dwSpeedRef) <= dwTickRef); + VERIFY(QueryPerformanceCounter(&lAct)); - // workaround for QueryPerformanceCounter() in Win2k, - // if last command sequence took over 50ms -> synchronize - if(dwTicks > 819 * dwTickRef) // time for last commands > 50ms (819 / 16384Hz) - { - // new synchronizing - dwOldCyc = (DWORD) (Chipset.cycles & 0xFFFFFFFF); - QueryPerformanceCounter(&lAct); // get timer ticks - dwSpeedRef = lAct.LowPart; // save reference time - } - else - { - dwOldCyc += T2CYCLES; // adjust cycles reference - dwSpeedRef += dwTickRef; // adjust reference time + // get time difference + dwTicks = lAct.LowPart - dwSpeedRef; } + // ticks elapsed or negative number (workaround for QueryPerformanceCounter() in Win2k) + while(dwTicks <= dwTickRef || (dwTicks & 0x80000000) != 0); + + dwOldCyc += T2CYCLES; // adjust cycles reference + dwSpeedRef += dwTickRef; // adjust reference time } } LeaveCriticalSection(&csSlowLock); @@ -379,7 +370,7 @@ VOID UpdateKdnBit(VOID) // update KDN bit { if ( Chipset.intk && (Chipset.IORam[TIMER2_CTRL]&RUN) != 0 - && (DWORD) (Chipset.cycles & 0xFFFFFFFFF) - Chipset.dwKdnCycles > (DWORD) T2CYCLES * 16) + && (DWORD) (Chipset.cycles & 0xFFFFFFFF) - Chipset.dwKdnCycles > (DWORD) T2CYCLES * 16) IOBit(SRQ2,KDN,Chipset.in != 0); return; } @@ -517,6 +508,7 @@ UINT WorkerThread(LPVOID pParam) loop: while (nNextState == SM_INVALID) // go into invalid state { + OnToolMacroStop(); // close open keyboard macro handler CommClose(); // close COM port bCommInit = FALSE; // COM port not open nState = SM_INVALID; // in invalid state diff --git a/sources/Emu48/EXTERNAL.C b/Sources/Emu48/EXTERNAL.C similarity index 100% rename from sources/Emu48/EXTERNAL.C rename to Sources/Emu48/EXTERNAL.C diff --git a/sources/Emu48/FETCH.C b/Sources/Emu48/FETCH.C similarity index 100% rename from sources/Emu48/FETCH.C rename to Sources/Emu48/FETCH.C diff --git a/sources/Emu48/FILES.C b/Sources/Emu48/FILES.C similarity index 93% rename from sources/Emu48/FILES.C rename to Sources/Emu48/FILES.C index a076bdd..47b3961 100644 --- a/sources/Emu48/FILES.C +++ b/Sources/Emu48/FILES.C @@ -87,15 +87,11 @@ WORD WriteStack(LPBYTE lpBuf,DWORD dwSize) // separated from LoadObject() } else { // load as string - BYTE lpHead[5]; dwSize *= 2; dwAddress = RPL_CreateTemp(dwSize+10); if (dwAddress == 0) return S_ERR_ASCII; - - Nunpack(lpHead,0x02A2C,5); // String - Nwrite(lpHead,dwAddress,5); - Nunpack(lpHead,dwSize+5,5); // length of String - Nwrite(lpHead,dwAddress+5,5); + Write5(dwAddress,0x02A2C); // String + Write5(dwAddress+5,dwSize+5); // length of String Nwrite(lpBuf,dwAddress+10,dwSize); // data } RPL_Push(dwAddress); @@ -394,6 +390,13 @@ BOOL MapRom(LPCTSTR szFilename) dwRomSize = 0; return FALSE; } + // check for packed ROM image + if ((*(DWORD *) pbyRom & 0xF0F0F0F0) != 0) + { + UnmapRom(); // free memory + AbortMessage(_T("Packed ROM image detected!")); + return FALSE; + } return TRUE; } @@ -774,23 +777,23 @@ BOOL OpenDocument(LPCTSTR szFilename) SetWindowLocation(hWnd,Chipset.nPosX,Chipset.nPosY); - if (szCurrentKml == NULL) - { - if (!DisplayChooseKml(Chipset.type)) - goto restore; - } while (TRUE) { - BOOL bOK; + if (szCurrentKml[0]) // KML file name + { + BOOL bOK; - bOK = InitKML(szCurrentKml,FALSE); - bOK = bOK && (cCurrentRomType == Chipset.type); - if (bOK) break; + bOK = InitKML(szCurrentKml,FALSE); + bOK = bOK && (cCurrentRomType == Chipset.type); + if (bOK) break; - KillKML(); + KillKML(); + } if (!DisplayChooseKml(Chipset.type)) goto restore; } + // reload old button state + ReloadButtons(Chipset.Keyboard_Row,sizeof(Chipset.Keyboard_Row)); FlashInit(); // init flash structure @@ -1242,7 +1245,13 @@ BOOL LoadObject(LPCTSTR szFilename) // separated stack writing part LPBYTE lpBuf; WORD wError; - hFile = CreateFile(szFilename, GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_FLAG_SEQUENTIAL_SCAN, NULL); + hFile = CreateFile(szFilename, + GENERIC_READ, + FILE_SHARE_READ, + NULL, + OPEN_EXISTING, + FILE_FLAG_SEQUENTIAL_SCAN, + NULL); if (hFile == INVALID_HANDLE_VALUE) return FALSE; dwFileSizeLow = GetFileSize(hFile, &dwFileSizeHigh); if (dwFileSizeHigh != 0) @@ -1315,7 +1324,7 @@ BOOL SaveObject(LPCTSTR szFilename) // separated stack reading part //# //################ -static __inline UINT DibNumColors(LPBITMAPINFOHEADER lpbi) +static __inline UINT DibNumColors(BITMAPINFOHEADER CONST *lpbi) { if (lpbi->biClrUsed != 0) return (UINT)lpbi->biClrUsed; @@ -1323,7 +1332,7 @@ static __inline UINT DibNumColors(LPBITMAPINFOHEADER lpbi) return (lpbi->biBitCount <= 8) ? (1 << lpbi->biBitCount) : 0; } -static HPALETTE CreateBIPalette(LPBITMAPINFOHEADER lpbi) +static HPALETTE CreateBIPalette(BITMAPINFOHEADER CONST *lpbi) { LOGPALETTE* pPal; HPALETTE hpal = NULL; diff --git a/sources/Emu48/I28F160.C b/Sources/Emu48/I28F160.C similarity index 100% rename from sources/Emu48/I28F160.C rename to Sources/Emu48/I28F160.C diff --git a/sources/Emu48/I28F160.H b/Sources/Emu48/I28F160.H similarity index 100% rename from sources/Emu48/I28F160.H rename to Sources/Emu48/I28F160.H diff --git a/sources/Emu48/IO.H b/Sources/Emu48/IO.H similarity index 100% rename from sources/Emu48/IO.H rename to Sources/Emu48/IO.H diff --git a/sources/Emu48/KEYBOARD.C b/Sources/Emu48/KEYBOARD.C similarity index 92% rename from sources/Emu48/KEYBOARD.C rename to Sources/Emu48/KEYBOARD.C index 7d014f2..c4c82b6 100644 --- a/sources/Emu48/KEYBOARD.C +++ b/Sources/Emu48/KEYBOARD.C @@ -94,12 +94,18 @@ VOID KeyboardEvent(BOOL bPress, UINT out, UINT in) { if (nState != SM_RUN) // not in running state return; // ignore key + + KeyMacroRecord(bPress,out,in); // save all keyboard events + if (in == 0x8000) // ON key ? { Chipset.IR15X = bPress?0x8000:0x0000; // refresh special ON key flag } else { + // "out" is outside Keyboard_Row + if (out >= ARRAYSIZEOF(Chipset.Keyboard_Row)) return; + _ASSERT(out < ARRAYSIZEOF(Chipset.Keyboard_Row)); if (bPress) // key pressed Chipset.Keyboard_Row[out] |= in; // set key marker in keyboard row diff --git a/Sources/Emu48/KEYMACRO.C b/Sources/Emu48/KEYMACRO.C new file mode 100644 index 0000000..dc41644 --- /dev/null +++ b/Sources/Emu48/KEYMACRO.C @@ -0,0 +1,339 @@ +/* + * Keymacro.c + * + * This file is part of Emu48 + * + * Copyright (C) 2004 Christoph Gießelink + * + */ +#include "pch.h" +#include "resource.h" +#include "Emu48.h" +#include "kml.h" + +#define KEYMACROHEAD "Emu-KeyMacro" // macro signature + +#define KEYHOLDTIME 50 + +#define MIN_SPEED 0 +#define MAX_SPEED 500 + +typedef struct +{ + DWORD dwTime; // elapsed time + DWORD dwKeyEvent; // key code +} KeyData; + +INT nMacroState = MACRO_OFF; +INT nMacroTimeout = MIN_SPEED; +BOOL bMacroRealSpeed = TRUE; + +static DWORD dwTimeRef; + +static HANDLE hMacroFile = INVALID_HANDLE_VALUE; +static HANDLE hEventPlay = NULL; +static HANDLE hThreadEv = NULL; + +static VOID InitializeOFN(LPOPENFILENAME ofn) +{ + ZeroMemory((LPVOID)ofn, sizeof(OPENFILENAME)); + ofn->lStructSize = sizeof(OPENFILENAME); + ofn->hwndOwner = hWnd; + ofn->Flags = OFN_EXPLORER|OFN_HIDEREADONLY; + return; +} + +// +// thread playing keys +// +static DWORD WINAPI EventThread(LPVOID pParam) +{ + DWORD dwRead = 0; + DWORD dwData,dwTime = 0; + + while (WaitForSingleObject(hEventPlay,dwTime) == WAIT_TIMEOUT) + { + if (dwRead != 0) // data read + { + UINT nIn = (dwData >> 0) & 0xFFFF; + UINT nOut = (dwData >> 16) & 0xFF; + BOOL bPress = (dwData >> 24) & 0xFF; + + PlayKey(nOut,nIn,bPress); +// KeyboardEvent(bPress,nOut,nIn); + } + + dwTime = nMacroTimeout; // set default speed + + while (TRUE) + { + // read next data element + if ( !ReadFile(hMacroFile,&dwData,sizeof(dwData),&dwRead,NULL) + || dwRead != sizeof(dwData)) + { + // play record empty -> quit + PostMessage(hWnd,WM_COMMAND,ID_TOOL_MACRO_STOP,0); + return 0; // exit on file end + } + + if ((dwData & 0x80000000) != 0) // time information + { + if (bMacroRealSpeed) // realspeed from data + { + dwTime = dwData & 0x7FFFFFFF; + } + continue; + } + break; // got key information + } + } + return 0; // exit on stop + UNREFERENCED_PARAMETER(pParam); +} + +// +// callback function for recording keys +// +VOID KeyMacroRecord(BOOL bPress, UINT out, UINT in) +{ + if (nMacroState == MACRO_NEW) // save key event + { + KeyData Data; + DWORD dwWritten; + + dwWritten = GetTickCount(); // time reference + Data.dwTime = (dwWritten - dwTimeRef - KEYHOLDTIME); + // set negative number to zero + if ((Data.dwTime & 0x80000000) != 0) Data.dwTime = 0; + Data.dwTime |= 0x80000000; // set time marker + dwTimeRef = dwWritten; + + Data.dwKeyEvent = (bPress & 0xFF); + Data.dwKeyEvent = (Data.dwKeyEvent << 8) | (out & 0xFF); + Data.dwKeyEvent = (Data.dwKeyEvent << 16) | (in & 0xFFFF); + + // save key event in file + WriteFile(hMacroFile,&Data,sizeof(Data),&dwWritten,NULL); + _ASSERT(dwWritten == sizeof(Data)); + } + return; +} + +// +// message handler for save new keyboard macro +// +LRESULT OnToolMacroNew(VOID) +{ + TCHAR szMacroFile[MAX_PATH]; + OPENFILENAME ofn; + DWORD dwExtensionLength,dwWritten; + + // get filename for saving + InitializeOFN(&ofn); + ofn.lpstrFilter = + _T("Keyboard Macro Files (*.MAC)\0*.MAC\0") + _T("All Files (*.*)\0*.*\0") + _T("\0\0"); + ofn.lpstrDefExt = _T("MAC"); + ofn.nFilterIndex = 1; + ofn.lpstrFile = szMacroFile; + ofn.lpstrFile[0] = 0; + ofn.nMaxFile = ARRAYSIZEOF(szMacroFile); + ofn.Flags |= OFN_CREATEPROMPT|OFN_OVERWRITEPROMPT; + if (GetSaveFileName(&ofn) == FALSE) return 0; + + // open file for writing + hMacroFile = CreateFile(szMacroFile, + GENERIC_READ|GENERIC_WRITE, + 0, + NULL, + CREATE_ALWAYS, + FILE_ATTRIBUTE_NORMAL, + NULL); + if (hMacroFile == INVALID_HANDLE_VALUE) return 0; + + // write header + WriteFile(hMacroFile,KEYMACROHEAD,strlen(KEYMACROHEAD),&dwWritten,NULL); + _ASSERT(dwWritten == (DWORD) strlen(KEYMACROHEAD)); + + // write extension length + dwExtensionLength = 0; // no extension + WriteFile(hMacroFile,&dwExtensionLength,sizeof(dwExtensionLength),&dwWritten,NULL); + _ASSERT(dwWritten == sizeof(dwExtensionLength)); + + nMacroState = MACRO_NEW; + UpdateWindowStatus(); + + MessageBox(hWnd, + _T("Press OK to begin to record the Macro."), + _T("Macro Recorder"), + MB_OK|MB_ICONINFORMATION); + + dwTimeRef = GetTickCount() + KEYHOLDTIME; // time reference + return 0; +} + +// +// message handler for play keyboard macro +// +LRESULT OnToolMacroPlay(VOID) +{ + BYTE byHeader[sizeof(KEYMACROHEAD)-1]; + TCHAR szMacroFile[MAX_PATH]; + OPENFILENAME ofn; + DWORD dwExtensionLength,dwRead,dwThreadId; + + InitializeOFN(&ofn); + ofn.lpstrFilter = + _T("Keyboard Macro Files (*.MAC)\0*.MAC\0") + _T("All Files (*.*)\0*.*\0") + _T("\0\0"); + ofn.lpstrDefExt = _T("MAC"); + ofn.nFilterIndex = 1; + ofn.lpstrFile = szMacroFile; + ofn.lpstrFile[0] = 0; + ofn.nMaxFile = ARRAYSIZEOF(szMacroFile); + ofn.Flags |= OFN_FILEMUSTEXIST|OFN_PATHMUSTEXIST; + if (GetOpenFileName(&ofn) == FALSE) return 0; + + // open file for Reading + hMacroFile = CreateFile(szMacroFile, + GENERIC_READ, + FILE_SHARE_READ, + NULL, + OPEN_EXISTING, + FILE_ATTRIBUTE_NORMAL, + NULL); + if (hMacroFile == INVALID_HANDLE_VALUE) return 0; + + // read header + ReadFile(hMacroFile,byHeader,sizeof(byHeader),&dwRead,NULL); + if ( dwRead != sizeof(byHeader) + || memcmp(byHeader,KEYMACROHEAD,dwRead) != 0) + { + MessageBox(hWnd, + _T("Wrong keyboard macro file format."), + _T("Macro Recorder"), + MB_OK|MB_ICONSTOP); + CloseHandle(hMacroFile); + return 0; + } + + // read extension length + ReadFile(hMacroFile,&dwExtensionLength,sizeof(dwExtensionLength),&dwRead,NULL); + if (dwRead != sizeof(dwExtensionLength)) + { + CloseHandle(hMacroFile); + return 0; + } + + // read extension + while (dwExtensionLength-- > 0) + { + BYTE byData; + + ReadFile(hMacroFile,&byData,sizeof(byData),&dwRead,NULL); + if (dwRead != sizeof(byData)) + { + CloseHandle(hMacroFile); + return 0; + } + } + + // event for quit playing + hEventPlay = CreateEvent(NULL,FALSE,FALSE,NULL); + + nMacroState = MACRO_PLAY; + UpdateWindowStatus(); + + // start playing thread + VERIFY(hThreadEv = CreateThread(NULL,0,&EventThread,NULL,0,&dwThreadId)); + return 0; +} + +// +// message handler for stop recording/playing +// +LRESULT OnToolMacroStop(VOID) +{ + if (nMacroState != MACRO_OFF) + { + if (hEventPlay) // playing keys + { + // stop playing thread + SetEvent(hEventPlay); // quit play loop + + WaitForSingleObject(hThreadEv,INFINITE); + CloseHandle(hThreadEv); + hThreadEv = NULL; + + CloseHandle(hEventPlay); // close playing keys event + hEventPlay = NULL; + } + + // macro file open + if (hMacroFile != INVALID_HANDLE_VALUE) CloseHandle(hMacroFile); + + nMacroState = MACRO_OFF; + UpdateWindowStatus(); + } + return 0; +} + +// +// activate/deactivate slider +// +static VOID SliderEnable(HWND hDlg,BOOL bEnable) +{ + EnableWindow(GetDlgItem(hDlg,IDC_MACRO_SLOW),bEnable); + EnableWindow(GetDlgItem(hDlg,IDC_MACRO_FAST),bEnable); + EnableWindow(GetDlgItem(hDlg,IDC_MACRO_SLIDER),bEnable); + return; +} + +// +// Macro settings dialog +// +static BOOL CALLBACK MacroProc(HWND hDlg, UINT message, DWORD wParam, LONG lParam) +{ + switch (message) + { + case WM_INITDIALOG: + // set slider + SendDlgItemMessage(hDlg,IDC_MACRO_SLIDER,TBM_SETRANGE,FALSE,MAKELONG(0,MAX_SPEED-MIN_SPEED)); + SendDlgItemMessage(hDlg,IDC_MACRO_SLIDER,TBM_SETTICFREQ,MAX_SPEED/10,0); + SendDlgItemMessage(hDlg,IDC_MACRO_SLIDER,TBM_SETPOS,TRUE,MAX_SPEED-nMacroTimeout); + + // set button + CheckDlgButton(hDlg,bMacroRealSpeed ? IDC_MACRO_REAL : IDC_MACRO_MANUAL,BST_CHECKED); + SliderEnable(hDlg,!bMacroRealSpeed); + return TRUE; + case WM_COMMAND: + switch (LOWORD(wParam)) + { + case IDC_MACRO_REAL: + SliderEnable(hDlg,FALSE); + return TRUE; + case IDC_MACRO_MANUAL: + SliderEnable(hDlg,TRUE); + return TRUE; + case IDOK: + // get macro data + nMacroTimeout = MAX_SPEED - SendDlgItemMessage(hDlg,IDC_MACRO_SLIDER,TBM_GETPOS,0,0); + bMacroRealSpeed = IsDlgButtonChecked(hDlg,IDC_MACRO_REAL); + // no break + case IDCANCEL: + EndDialog(hDlg, LOWORD(wParam)); + } + break; + } + return FALSE; + UNREFERENCED_PARAMETER(lParam); +} + +LRESULT OnToolMacroSettings(VOID) +{ + if (DialogBox(hApp, MAKEINTRESOURCE(IDD_MACROSET), hWnd, (DLGPROC)MacroProc) == -1) + AbortMessage(_T("Macro Dialog Box Creation Error !")); + return 0; +} diff --git a/sources/Emu48/KML.C b/Sources/Emu48/KML.C similarity index 89% rename from sources/Emu48/KML.C rename to Sources/Emu48/KML.C index 8b391ef..ca657b6 100644 --- a/sources/Emu48/KML.C +++ b/Sources/Emu48/KML.C @@ -37,7 +37,7 @@ static KmlLine* If(KmlLine* pLine, BOOL bCondition); static KmlLine* RunLine(KmlLine* pLine); static KmlBlock* LoadKMLGlobal(LPCTSTR szFilename); -KmlBlock* pKml; +KmlBlock* pKml = NULL; static KmlBlock* pVKey[256]; static BYTE byVKeyMap[256]; static KmlButton pButton[256]; @@ -105,13 +105,12 @@ static KmlToken pLexToken[] = {0, 000000, 0,_T("")}, }; -static TokenId eIsBlock[] = +static CONST TokenId eIsBlock[] = { TOK_IFFLAG, TOK_IFPRESSED, TOK_ONDOWN, - TOK_ONUP, - TOK_NONE + TOK_ONUP }; static BOOL bClicking = FALSE; @@ -128,7 +127,6 @@ static UINT uLastPressedKey = 0; // var for last pressed key static UINT nLogLength = 0; static LPTSTR szLog = NULL; -static BOOL bKmlLogOkEnabled = FALSE; static VOID ClearLog() { @@ -141,12 +139,12 @@ static VOID ClearLog() return; } -static VOID AddToLog(LPTSTR szString) +static VOID AddToLog(LPCTSTR szString) { - UINT nLength = lstrlen(szString); + UINT nLength = lstrlen(szString) + 2; // CR+LF if (szLog == NULL) { - nLogLength = nLength + 3; // CR+LF+\0 + nLogLength = nLength + 1; // \0 szLog = HeapAlloc(hHeap,0,nLogLength*sizeof(szLog[0])); if (szLog==NULL) { @@ -157,7 +155,7 @@ static VOID AddToLog(LPTSTR szString) } else { - LPTSTR szLogTmp = HeapReAlloc(hHeap,0,szLog,(nLogLength+nLength+2)*sizeof(szLog[0])); + LPTSTR szLogTmp = HeapReAlloc(hHeap,0,szLog,(nLogLength+nLength)*sizeof(szLog[0])); if (szLogTmp == NULL) { ClearLog(); @@ -165,7 +163,7 @@ static VOID AddToLog(LPTSTR szString) } szLog = szLogTmp; lstrcpy(&szLog[nLogLength-1],szString); - nLogLength += nLength + 2; // CR+LF + nLogLength += nLength; } szLog[nLogLength-3] = _T('\r'); szLog[nLogLength-2] = _T('\n'); @@ -175,27 +173,25 @@ static VOID AddToLog(LPTSTR szString) static VOID __cdecl PrintfToLog(LPCTSTR lpFormat, ...) { - LPTSTR lpOutput; + TCHAR cOutput[1024]; va_list arglist; va_start(arglist,lpFormat); - lpOutput = HeapAlloc(hHeap,0,1024 * sizeof(lpOutput[0])); - wvsprintf(lpOutput,lpFormat,arglist); - AddToLog(lpOutput); - HeapFree(hHeap,0,lpOutput); + wvsprintf(cOutput,lpFormat,arglist); + AddToLog(cOutput); va_end(arglist); return; } static BOOL CALLBACK KMLLogProc(HWND hDlg, UINT message, DWORD wParam, LONG lParam) { - LPTSTR szString; + LPCTSTR szString; switch (message) { case WM_INITDIALOG: // set OK - EnableWindow(GetDlgItem(hDlg,IDOK),bKmlLogOkEnabled); + EnableWindow(GetDlgItem(hDlg,IDOK),lParam); // set IDC_TITLE szString = GetStringParam(pKml, TOK_GLOBAL, TOK_TITLE, 0); if (szString == NULL) szString = _T("Untitled"); @@ -205,14 +201,11 @@ static BOOL CALLBACK KMLLogProc(HWND hDlg, UINT message, DWORD wParam, LONG lPar if (szString == NULL) szString = _T(""); SetDlgItemText(hDlg,IDC_AUTHOR,szString); // set IDC_KMLLOG - if (szLog == NULL) - SetDlgItemText(hDlg,IDC_KMLLOG,_T("Memory Allocation Failure.")); - else - SetDlgItemText(hDlg,IDC_KMLLOG,szLog); + szString = szLog; + if (szString == NULL) szString = _T("Memory Allocation Failure."); + SetDlgItemText(hDlg,IDC_KMLLOG,szString); // set IDC_ALWAYSDISPLOG CheckDlgButton(hDlg,IDC_ALWAYSDISPLOG,bAlwaysDisplayLog); - // redraw window - InvalidateRect(hDlg, NULL, TRUE); return TRUE; case WM_COMMAND: wParam = LOWORD(wParam); @@ -225,16 +218,15 @@ static BOOL CALLBACK KMLLogProc(HWND hDlg, UINT message, DWORD wParam, LONG lPar break; } return FALSE; - UNREFERENCED_PARAMETER(lParam); - UNREFERENCED_PARAMETER(hDlg); } BOOL DisplayKMLLog(BOOL bOkEnabled) { - BOOL bResult; - bKmlLogOkEnabled = bOkEnabled; - bResult = DialogBox(hApp, MAKEINTRESOURCE(IDD_KMLLOG), hWnd, (DLGPROC)KMLLogProc); - return (bResult == IDOK); + return IDOK == DialogBoxParam(hApp, + MAKEINTRESOURCE(IDD_KMLLOG), + hWnd, + (DLGPROC)KMLLogProc, + bOkEnabled); } @@ -249,12 +241,11 @@ typedef struct _KmlScript { LPTSTR szFilename; LPTSTR szTitle; - DWORD nId; + DWORD nId; struct _KmlScript* pNext; } KmlScript; -static UINT nKmlFiles; -static KmlScript* pKmlList; +static KmlScript* pKmlList = NULL; static CHAR cKmlType; static VOID DestroyKmlList(VOID) @@ -269,7 +260,6 @@ static VOID DestroyKmlList(VOID) HeapFree(hHeap,0,pKmlList); pKmlList = pList; } - nKmlFiles = 0; return; } @@ -277,12 +267,14 @@ static VOID CreateKmlList(VOID) { HANDLE hFindFile; WIN32_FIND_DATA pFindFileData; + UINT nKmlFiles; + _ASSERT(pKmlList == NULL); // KML file list must be empty SetCurrentDirectory(szEmuDirectory); hFindFile = FindFirstFile(_T("*.KML"),&pFindFileData); SetCurrentDirectory(szCurrentDirectory); - nKmlFiles = 0; if (hFindFile == INVALID_HANDLE_VALUE) return; + nKmlFiles = 0; do { KmlScript* pScript; @@ -307,10 +299,10 @@ static VOID CreateKmlList(VOID) continue; } } - pScript = HeapAlloc(hHeap,0,sizeof(KmlScript)); + VERIFY(pScript = HeapAlloc(hHeap,0,sizeof(KmlScript))); pScript->szFilename = DuplicateString(pFindFileData.cFileName); szTitle = GetStringParam(pBlock,TOK_GLOBAL,TOK_TITLE,0); - if (szTitle == NULL) szTitle = DuplicateString(pScript->szFilename); + if (szTitle == NULL) szTitle = pScript->szFilename; pScript->szTitle = DuplicateString(szTitle); FreeBlocks(pBlock); pScript->nId = nKmlFiles; @@ -429,14 +421,14 @@ static BOOL CALLBACK ChooseKMLProc(HWND hDlg, UINT message, DWORD wParam, LONG l pList = pKmlList; while (pList) { - if (pList->nId == nIndex) break; + if (pList->nId == nIndex) + { + lstrcpy(szCurrentKml, pList->szFilename); + EndDialog(hDlg, IDOK); + break; + } pList = pList->pNext; } - if (pList) - { - lstrcpy(szCurrentKml, pList->szFilename); - EndDialog(hDlg, IDOK); - } return TRUE; case IDCANCEL: EndDialog(hDlg, IDCANCEL); @@ -542,19 +534,17 @@ static VOID CleanLex(VOID) return; } -// TODO: Change this poor (and slow!) code static BOOL IsBlock(TokenId eId) { - UINT uBlock = 0; - while (eIsBlock[uBlock] != TOK_NONE) + UINT i; + + for (i = 0; i < ARRAYSIZEOF(eIsBlock); ++i) { - if (eId == eIsBlock[uBlock]) return TRUE; - uBlock++; + if (eId == eIsBlock[i]) return TRUE; } return FALSE; } - static LPCTSTR GetStringOf(TokenId eId) { UINT i = 0; @@ -649,38 +639,37 @@ static DWORD ParseInteger(VOID) static LPTSTR ParseString(VOID) { - LPTSTR szString; - LPTSTR szBuffer; + LPTSTR lpszString; UINT nLength; UINT nBlock; - szText++; + szText++; // skip leading '"' nLength = 0; - nBlock = 255; - szBuffer = HeapAlloc(hHeap,0,(nBlock+1) * sizeof(szBuffer[0])); + nBlock = 256; + lpszString = HeapAlloc(hHeap,0,nBlock * sizeof(lpszString[0])); while (*szText != _T('"')) { - if (*szText == _T('\\')) szText++; - if (*szText == 0) + if (nLength == nBlock - 1) // ran out of buffer space { + nBlock += 256; + lpszString = HeapReAlloc(hHeap,0,lpszString,nBlock * sizeof(lpszString[0])); + } + + if (*szText == _T('\\')) szText++; // skip '\' escape char + if (*szText == 0) // EOS found inside string + { + HeapFree(hHeap,0,lpszString); FatalError(); return NULL; } - szBuffer[nLength] = *szText; - nLength++; - if (nLength == nBlock) - { - nBlock += 256; - szBuffer = HeapReAlloc(hHeap,0,szBuffer,(nBlock+1) * sizeof(szBuffer[0])); - } - szText++; + lpszString[nLength++] = *szText++; // save char } - szText++; - szBuffer[nLength] = 0; - szString = DuplicateString(szBuffer); - HeapFree(hHeap,0,szBuffer); - return szString; -} + szText++; // skip ending '"' + lpszString[nLength] = 0; // set EOS + + // release unnecessary allocated bytes + return HeapReAlloc(hHeap,0,lpszString,(nLength+1) * sizeof(lpszString[0])); +} static TokenId Lex(UINT nMode) { @@ -783,7 +772,13 @@ static KmlLine* IncludeLines(LPCTSTR szFilename) KmlLine* pLine; SetCurrentDirectory(szEmuDirectory); - hFile = CreateFile(szFilename, GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_FLAG_SEQUENTIAL_SCAN, NULL); + hFile = CreateFile(szFilename, + GENERIC_READ, + FILE_SHARE_READ, + NULL, + OPEN_EXISTING, + FILE_FLAG_SEQUENTIAL_SCAN, + NULL); SetCurrentDirectory(szCurrentDirectory); if (hFile == INVALID_HANDLE_VALUE) { @@ -951,7 +946,13 @@ static KmlBlock* IncludeBlocks(LPCTSTR szFilename) KmlBlock* pFirst; SetCurrentDirectory(szEmuDirectory); - hFile = CreateFile(szFilename, GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_FLAG_SEQUENTIAL_SCAN, NULL); + hFile = CreateFile(szFilename, + GENERIC_READ, + FILE_SHARE_READ, + NULL, + OPEN_EXISTING, + FILE_FLAG_SEQUENTIAL_SCAN, + NULL); SetCurrentDirectory(szCurrentDirectory); if (hFile == INVALID_HANDLE_VALUE) { @@ -1786,6 +1787,19 @@ static VOID ReleaseAllButtons(VOID) // release all buttons uButtonClicked = 0; // set var to default } +VOID ReloadButtons(BYTE *Keyboard_Row, UINT nSize) +{ + UINT i; + for (i=0; i= 0) + { + if (pButton[i].nOut == nOut && pButton[i].nIn == nIn) + { + if (bPressed) + PressButton(i); + else + ReleaseButton(i); + return; + } + } + return; +} + + + //################ //# //# Load and Initialize Script @@ -2022,7 +2062,13 @@ static KmlBlock* LoadKMLGlobal(LPCTSTR szFilename) DWORD eToken; SetCurrentDirectory(szEmuDirectory); - hFile = CreateFile(szFilename, GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_FLAG_SEQUENTIAL_SCAN, NULL); + hFile = CreateFile(szFilename, + GENERIC_READ, + FILE_SHARE_READ, + NULL, + OPEN_EXISTING, + FILE_FLAG_SEQUENTIAL_SCAN, + NULL); SetCurrentDirectory(szCurrentDirectory); if (hFile == INVALID_HANDLE_VALUE) return NULL; if ((lpBuf = MapKMLFile(hFile)) == NULL) @@ -2042,7 +2088,6 @@ static KmlBlock* LoadKMLGlobal(LPCTSTR szFilename) return pBlock; } - BOOL InitKML(LPCTSTR szFilename, BOOL bNoLog) { HANDLE hFile; @@ -2055,7 +2100,13 @@ BOOL InitKML(LPCTSTR szFilename, BOOL bNoLog) nBlocksIncludeLevel = 0; PrintfToLog(_T("Reading %s"), szFilename); SetCurrentDirectory(szEmuDirectory); - hFile = CreateFile(szFilename, GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_FLAG_SEQUENTIAL_SCAN, NULL); + hFile = CreateFile(szFilename, + GENERIC_READ, + FILE_SHARE_READ, + NULL, + OPEN_EXISTING, + FILE_FLAG_SEQUENTIAL_SCAN, + NULL); SetCurrentDirectory(szCurrentDirectory); if (hFile == INVALID_HANDLE_VALUE) { diff --git a/sources/Emu48/KML.H b/Sources/Emu48/KML.H similarity index 90% rename from sources/Emu48/KML.H rename to Sources/Emu48/KML.H index 72716ab..07ed190 100644 --- a/sources/Emu48/KML.H +++ b/Sources/Emu48/KML.H @@ -112,10 +112,12 @@ extern KmlBlock* pKml; extern BOOL DisplayChooseKml(CHAR cType); extern VOID FreeBlocks(KmlBlock* pBlock); extern VOID DrawAnnunciator(UINT nId, BOOL bOn); +extern VOID ReloadButtons(BYTE *Keyboard_Row, UINT nSize); extern VOID RefreshButtons(RECT *rc); extern VOID MouseButtonDownAt(UINT nFlags, DWORD x, DWORD y); extern VOID MouseButtonUpAt(UINT nFlags, DWORD x, DWORD y); extern VOID MouseMovesTo(UINT nFlags, DWORD x, DWORD y); extern VOID RunKey(BYTE nId, BOOL bPressed); +extern VOID PlayKey(UINT nOut, UINT nIn, BOOL bPressed); extern BOOL InitKML(LPCTSTR szFilename, BOOL bNoLog); extern VOID KillKML(VOID); diff --git a/sources/Emu48/MOPS.C b/Sources/Emu48/MOPS.C similarity index 95% rename from sources/Emu48/MOPS.C rename to Sources/Emu48/MOPS.C index 6b7ef3b..2628da6 100644 --- a/sources/Emu48/MOPS.C +++ b/Sources/Emu48/MOPS.C @@ -1242,13 +1242,6 @@ VOID WriteIO(BYTE *a, DWORD d, DWORD s) } #endif - if (d>=0x38) - { - Nunpack(Chipset.IORam+0x38, ReadT2(), 8); - memcpy(Chipset.IORam+d,a,s); - SetT2(Npack(Chipset.IORam+0x38,8)); - return; - } do { c = *a; @@ -1294,7 +1287,7 @@ VOID WriteIO(BYTE *a, DWORD d, DWORD s) Chipset.IORam[d]=c; Chipset.contrast = (Chipset.contrast&0x10)|c; UpdateContrast(Chipset.contrast); - disp |= (DISP_POINTER | DISP_MAIN | DISP_MENUE); + disp |= (DISP_MAIN | DISP_MENUE); } break; @@ -1307,7 +1300,7 @@ VOID WriteIO(BYTE *a, DWORD d, DWORD s) Chipset.IORam[d]=c; Chipset.contrast = (Chipset.contrast&0x0f)|((c&1)<<4); UpdateContrast(Chipset.contrast); - disp |= (DISP_POINTER | DISP_MAIN | DISP_MENUE); + disp |= (DISP_MAIN | DISP_MENUE); } break; @@ -1683,11 +1676,21 @@ VOID WriteIO(BYTE *a, DWORD d, DWORD s) // 00138 @ hardware timer (38-3F), decremented 8192 times/s // nothing - fall through to default - default: Chipset.IORam[d]=c; + default: + Chipset.IORam[d]=c; // write data + + if (d >= TIMER2) // timer2 update + { + Nunpack(Chipset.IORam+TIMER2,ReadT2(),8); + memcpy(Chipset.IORam+d,a,s); + SetT2(Npack(Chipset.IORam+TIMER2,8)); + goto finish; + } } a++; d++; } while (--s); +finish: if (bDISPADDR) // 0x120-0x124 changed { b = Npack(Chipset.IORam+0x20,5)&0xFFFFE; diff --git a/sources/Emu48/OPCODES.C b/Sources/Emu48/OPCODES.C similarity index 94% rename from sources/Emu48/OPCODES.C rename to Sources/Emu48/OPCODES.C index 1e8b52e..d94aa24 100644 --- a/sources/Emu48/OPCODES.C +++ b/Sources/Emu48/OPCODES.C @@ -962,7 +962,9 @@ VOID o801(LPBYTE I) // OUT=C VOID o802(LPBYTE I) // A=IN { w.cycles+=7; - if ((w.pc&1)==0) w.pc+=3; // emulate saturn bug + // emulate Clarke/Yorke bug + if ((w.pc & 1) == 0 || MapData(w.pc) == M_IO) + w.pc+=3; ScanKeyboard(TRUE,FALSE); // update Chipset.in register (direct) IOBit(0x19,8,w.in != 0); // update KDN bit in the SRQ register Nunpack(w.A, w.in, 4); @@ -972,7 +974,9 @@ VOID o802(LPBYTE I) // A=IN VOID o803(LPBYTE I) // C=IN { w.cycles+=7; - if ((w.pc&1)==0) w.pc+=3; // emulate saturn bug + // emulate Clarke/Yorke bug + if ((w.pc & 1) == 0 || MapData(w.pc) == M_IO) + w.pc+=3; ScanKeyboard(TRUE,FALSE); // update Chipset.in register (direct) IOBit(0x19,8,w.in != 0); // update KDN bit in the SRQ register Nunpack(w.C, w.in, 4); diff --git a/sources/Emu48/OPCODES.H b/Sources/Emu48/OPCODES.H similarity index 100% rename from sources/Emu48/OPCODES.H rename to Sources/Emu48/OPCODES.H diff --git a/sources/Emu48/OPS.H b/Sources/Emu48/OPS.H similarity index 93% rename from sources/Emu48/OPS.H rename to Sources/Emu48/OPS.H index 37f3fff..b30c56e 100644 --- a/sources/Emu48/OPS.H +++ b/Sources/Emu48/OPS.H @@ -243,6 +243,8 @@ static __inline void Nsub(BYTE *a, BYTE *b, UINT s) if ((a[i] & 0xF0) != 0) // check overflow { a[i] += cBase; + // illegal number in dec mode + if ((a[i] & 0xF0) != 0) a[i] &= 0x7; c = 1; } else @@ -263,6 +265,8 @@ static __inline void Nrsub(BYTE *a, BYTE *b, UINT s) if ((a[i] & 0xF0) != 0) // check overflow { a[i] += cBase; + // illegal number in dec mode + if ((a[i] & 0xF0) != 0) a[i] &= 0x7; c = 1; } else diff --git a/sources/Emu48/PCH.C b/Sources/Emu48/PCH.C similarity index 100% rename from sources/Emu48/PCH.C rename to Sources/Emu48/PCH.C diff --git a/sources/Emu48/PCH.H b/Sources/Emu48/PCH.H similarity index 65% rename from sources/Emu48/PCH.H rename to Sources/Emu48/PCH.H index 4c6517f..5dfe309 100644 --- a/sources/Emu48/PCH.H +++ b/Sources/Emu48/PCH.H @@ -15,6 +15,14 @@ #include #include +#if !defined VERIFY +#if defined _DEBUG +#define VERIFY(f) _ASSERT(f) +#else // _DEBUG +#define VERIFY(f) ((VOID)(f)) +#endif // _DEBUG +#endif // _VERIFY + #if !defined IDC_HAND // Win2k specific definition #define IDC_HAND MAKEINTRESOURCE(32649) #endif diff --git a/Sources/Emu48/RESOURCE.H b/Sources/Emu48/RESOURCE.H new file mode 100644 index 0000000..a8723d4 --- /dev/null +++ b/Sources/Emu48/RESOURCE.H @@ -0,0 +1,217 @@ +//{{NO_DEPENDENCIES}} +// Microsoft Developer Studio generated include file. +// Used by Emu48.rc +// +#define CREATEPROCESS_MANIFEST_RESOURCE_ID 1 +#define RT_MANIFEST 24 +#define IDI_EMU48 100 +#define IDR_MENU 101 +#define IDR_DEBUG 102 +#define IDR_DEBUG_TOOLBAR 103 +#define IDR_DEBUG_CODE 104 +#define IDR_DEBUG_MEM 105 +#define IDR_DEBUG_STACK 106 +#define IDB_CHECKBOX 107 +#define IDD_ABOUT 108 +#define IDD_SETTINGS 109 +#define IDD_CHOOSEKML 110 +#define IDD_KMLLOG 111 +#define IDD_DISASM 112 +#define IDD_DEBUG 113 +#define IDD_NEWVALUE 114 +#define IDD_ENTERADR 115 +#define IDD_BREAKEDIT 116 +#define IDD_ENTERBREAK 117 +#define IDD_INSTRUCTIONS 118 +#define IDD_WRITEONLYREG 119 +#define IDD_FIND 120 +#define IDD_PROFILE 121 +#define IDD_MACROSET 122 +#define IDC_REALSPEED 1000 +#define IDC_AUTOSAVE 1001 +#define IDC_AUTOSAVEONEXIT 1002 +#define IDC_OBJECTLOADWARNING 1003 +#define IDC_ALWAYSDISPLOG 1004 +#define IDC_PORT1EN 1005 +#define IDC_PORT1WR 1006 +#define IDC_PORT2ISSHARED 1007 +#define IDC_PORT2 1008 +#define IDC_PORT2LOAD 1009 +#define IDC_WIRE 1010 +#define IDC_IR 1011 +#define IDC_EMUDIR 1012 +#define IDC_EMUDIRSEL 1013 +#define IDC_UPDATE 1014 +#define IDC_KMLSCRIPT 1015 +#define IDC_AUTHOR 1016 +#define IDC_TITLE 1017 +#define IDC_KMLLOG 1018 +#define IDC_VERSION 1019 +#define IDC_LICENSE 1020 +#define IDC_DISASM_WIN 1021 +#define IDC_DISASM_MAP 1022 +#define IDC_DISASM_ROM 1023 +#define IDC_DISASM_RAM 1024 +#define IDC_DISASM_PORT1 1025 +#define IDC_DISASM_PORT2 1026 +#define IDC_DISASM_MODULE 1027 +#define IDC_DISASM_HP 1028 +#define IDC_DISASM_CLASS 1029 +#define IDC_ADDRESS 1030 +#define IDC_DISASM_ADR 1031 +#define IDC_DISASM_NEXT 1032 +#define IDC_DISASM_COPY 1033 +#define IDC_DEBUG_CODE 1034 +#define IDC_STATIC_CODE 1035 +#define IDC_STATIC_REGISTERS 1036 +#define IDC_STATIC_MEMORY 1037 +#define IDC_STATIC_STACK 1038 +#define IDC_REG_A 1039 +#define IDC_REG_B 1040 +#define IDC_REG_C 1041 +#define IDC_REG_D 1042 +#define IDC_REG_R0 1043 +#define IDC_REG_R1 1044 +#define IDC_REG_R2 1045 +#define IDC_REG_R3 1046 +#define IDC_REG_R4 1047 +#define IDC_REG_D0 1048 +#define IDC_REG_D1 1049 +#define IDC_REG_P 1050 +#define IDC_REG_PC 1051 +#define IDC_REG_OUT 1052 +#define IDC_REG_IN 1053 +#define IDC_REG_ST 1054 +#define IDC_REG_CY 1055 +#define IDC_REG_MODE 1056 +#define IDC_REG_MP 1057 +#define IDC_REG_SR 1058 +#define IDC_REG_SB 1059 +#define IDC_REG_XM 1060 +#define IDC_MISC_INT 1061 +#define IDC_MISC_KEY 1062 +#define IDC_MISC_BS 1063 +#define IDC_NEWVALUE 1064 +#define IDC_ENTERADR 1065 +#define IDC_DEBUG_MEM 1066 +#define IDC_DEBUG_MEM_ADDR 1067 +#define IDC_DEBUG_MEM_COL0 1068 +#define IDC_DEBUG_MEM_COL1 1069 +#define IDC_DEBUG_MEM_COL2 1070 +#define IDC_DEBUG_MEM_COL3 1071 +#define IDC_DEBUG_MEM_COL4 1072 +#define IDC_DEBUG_MEM_COL5 1073 +#define IDC_DEBUG_MEM_COL6 1074 +#define IDC_DEBUG_MEM_COL7 1075 +#define IDC_DEBUG_MEM_TEXT 1076 +#define IDC_DEBUG_STACK 1077 +#define IDC_STATIC_BREAKPOINT 1078 +#define IDC_BREAKEDIT_ADD 1079 +#define IDC_BREAKEDIT_DELETE 1080 +#define IDC_BREAKEDIT_WND 1081 +#define IDC_STATIC_MMU 1082 +#define IDC_MMU_IO_A 1083 +#define IDC_MMU_NCE2_A 1084 +#define IDC_MMU_CE1_A 1085 +#define IDC_MMU_CE2_A 1086 +#define IDC_MMU_NCE3_A 1087 +#define IDC_MMU_IO_S 1088 +#define IDC_MMU_CE1_S 1089 +#define IDC_MMU_CE2_S 1090 +#define IDC_MMU_NCE2_S 1091 +#define IDC_MMU_NCE3_S 1092 +#define IDC_STATIC_MISC 1093 +#define IDC_MISC_BS_TXT 1094 +#define IDC_INSTR_TEXT 1095 +#define IDC_INSTR_CODE 1096 +#define IDC_INSTR_COPY 1097 +#define IDC_INSTR_CLEAR 1098 +#define IDC_PROFILE_LASTCYCLES 1099 +#define IDC_PROFILE_LASTTIME 1100 +#define IDC_BPCODE 1101 +#define IDC_BPRPL 1102 +#define IDC_BPACCESS 1103 +#define IDC_BPREAD 1104 +#define IDC_BPWRITE 1105 +#define IDC_FIND_DATA 1106 +#define IDC_FIND_ASCII 1107 +#define IDC_FIND_CASE 1108 +#define IDC_ADDR20_24 1109 +#define IDC_ADDR25_27 1110 +#define IDC_ADDR28_29 1111 +#define IDC_ADDR30_34 1112 +#define IDC_MACRO_SLOW 1113 +#define IDC_MACRO_FAST 1114 +#define IDC_MACRO_SLIDER 1115 +#define IDC_MACRO_REAL 1116 +#define IDC_MACRO_MANUAL 1117 +#define ID_FILE_NEW 40001 +#define ID_FILE_OPEN 40002 +#define ID_FILE_SAVE 40003 +#define ID_FILE_SAVEAS 40004 +#define ID_FILE_EXIT 40005 +#define ID_VIEW_COPY 40006 +#define ID_VIEW_SETTINGS 40007 +#define ID_VIEW_RESET 40008 +#define ID_OBJECT_LOAD 40009 +#define ID_OBJECT_SAVE 40010 +#define ID_ABOUT 40011 +#define ID_FILE_CLOSE 40013 +#define ID_BACKUP_SAVE 40014 +#define ID_BACKUP_RESTORE 40015 +#define ID_BACKUP_DELETE 40016 +#define ID_VIEW_SCRIPT 40017 +#define ID_STACK_COPY 40019 +#define ID_STACK_PASTE 40020 +#define ID_TOOL_DISASM 40021 +#define ID_TOOL_DEBUG 40022 +#define ID_TOOL_MACRO_RECORD 40023 +#define ID_TOOL_MACRO_PLAY 40024 +#define ID_TOOL_MACRO_STOP 40025 +#define ID_TOOL_MACRO_SETTINGS 40026 +#define ID_DEBUG_RUN 40027 +#define ID_DEBUG_RUNCURSOR 40028 +#define ID_DEBUG_STEP 40029 +#define ID_DEBUG_STEPOVER 40030 +#define ID_DEBUG_BREAK 40031 +#define ID_DEBUG_STEPOUT 40032 +#define ID_DEBUG_CANCEL 40033 +#define ID_BREAKPOINTS_SETBREAK 40034 +#define ID_BREAKPOINTS_CODEEDIT 40035 +#define ID_BREAKPOINTS_CLEARALL 40036 +#define ID_BREAKPOINTS_NOP3 40037 +#define ID_BREAKPOINTS_DOCODE 40038 +#define ID_BREAKPOINTS_RPL 40039 +#define ID_DEBUG_CODE_GOADR 40040 +#define ID_DEBUG_CODE_GOPC 40041 +#define ID_DEBUG_CODE_SETPCTOSELECT 40042 +#define ID_DEBUG_MEM_GOADR 40043 +#define ID_DEBUG_MEM_GOPC 40044 +#define ID_DEBUG_MEM_GOD0 40045 +#define ID_DEBUG_MEM_GOD1 40046 +#define ID_DEBUG_MEM_GOSTACK 40047 +#define ID_DEBUG_MEM_FIND 40048 +#define ID_DEBUG_MEM_MAP 40049 +#define ID_DEBUG_MEM_NCE1 40050 +#define ID_DEBUG_MEM_NCE2 40051 +#define ID_DEBUG_MEM_CE1 40052 +#define ID_DEBUG_MEM_CE2 40053 +#define ID_DEBUG_MEM_NCE3 40054 +#define ID_DEBUG_STACK_PUSH 40055 +#define ID_DEBUG_STACK_POP 40056 +#define ID_DEBUG_STACK_MODIFY 40057 +#define ID_INTR_STEPOVERINT 40058 +#define ID_INFO_LASTINSTRUCTIONS 40059 +#define ID_INFO_PROFILE 40060 +#define ID_INFO_WRITEONLYREG 40061 + +// Next default values for new objects +// +#ifdef APSTUDIO_INVOKED +#ifndef APSTUDIO_READONLY_SYMBOLS +#define _APS_NEXT_RESOURCE_VALUE 123 +#define _APS_NEXT_COMMAND_VALUE 40062 +#define _APS_NEXT_CONTROL_VALUE 1118 +#define _APS_NEXT_SYMED_VALUE 108 +#endif +#endif diff --git a/sources/Emu48/RPL.C b/Sources/Emu48/RPL.C similarity index 100% rename from sources/Emu48/RPL.C rename to Sources/Emu48/RPL.C diff --git a/sources/Emu48/SERIAL.C b/Sources/Emu48/SERIAL.C similarity index 100% rename from sources/Emu48/SERIAL.C rename to Sources/Emu48/SERIAL.C diff --git a/sources/Emu48/SETTINGS.C b/Sources/Emu48/SETTINGS.C similarity index 92% rename from sources/Emu48/SETTINGS.C rename to Sources/Emu48/SETTINGS.C index 05f84cb..6ca9da9 100644 --- a/sources/Emu48/SETTINGS.C +++ b/Sources/Emu48/SETTINGS.C @@ -155,6 +155,9 @@ VOID ReadSettings(VOID) dwSXCycles = ReadInt(_T("Emulator"),_T("SXCycles"),dwSXCycles); dwGXCycles = ReadInt(_T("Emulator"),_T("GXCycles"),dwGXCycles); SetSpeed(bRealSpeed); // set speed + // Macro + bMacroRealSpeed = ReadInt(_T("Macro"),_T("RealSpeed"),bMacroRealSpeed); + nMacroTimeout = ReadInt(_T("Macro"),_T("ReplayTimeout"),nMacroTimeout); // Serial ReadString(_T("Serial"),_T("Wire"),_T(NO_SERIAL),szSerialWire,ARRAYSIZEOF(szSerialWire)); ReadString(_T("Serial"),_T("Ir"),_T(NO_SERIAL),szSerialIr,ARRAYSIZEOF(szSerialIr)); @@ -183,6 +186,9 @@ VOID WriteSettings(VOID) WriteInt(_T("Emulator"),_T("RealSpeed"),bRealSpeed); WriteInt(_T("Emulator"),_T("SXCycles"),dwSXCycles); WriteInt(_T("Emulator"),_T("GXCycles"),dwGXCycles); + // Macro + WriteInt(_T("Macro"),_T("RealSpeed"),bMacroRealSpeed); + WriteInt(_T("Macro"),_T("ReplayTimeout"),nMacroTimeout); // Serial WriteString(_T("Serial"),_T("Wire"),szSerialWire); WriteString(_T("Serial"),_T("Ir"),szSerialIr); diff --git a/sources/Emu48/TIMER.C b/Sources/Emu48/TIMER.C similarity index 88% rename from sources/Emu48/TIMER.C rename to Sources/Emu48/TIMER.C index 86e38a4..d357893 100644 --- a/sources/Emu48/TIMER.C +++ b/Sources/Emu48/TIMER.C @@ -37,12 +37,11 @@ static BOOL bNINT2T2 = FALSE; // state of NINT2 affected from timer2 static BOOL bAccurateTimer; // flag if accurate timer is used static LARGE_INTEGER lT2Ref; // counter value at timer2 start static TIMECAPS tc; // timer information +static UINT uT2MaxTicks; // max. timer2 ticks handled by one timer event static DWORD dwT2Ref; // timer2 value at last timer2 access static DWORD dwT2Cyc; // cpu cycle counter at last timer2 access -static __inline int MAX(int a, int b) {return (a>b)?a:b;} - static void CALLBACK TimeProc(UINT uEventId, UINT uMsg, DWORD dwUser, DWORD dw1, DWORD dw2); static DWORD CalcT2(VOID) // calculate timer2 value @@ -180,14 +179,13 @@ static VOID RescheduleT2(BOOL bRefPoint) { uDelay = CalcT2(); // actual timer value for delay } - uDelay &= 0x7FFFFFFF; // execute timer2 event when MSB change - uDelay = (uDelay + 7) >> 3; // timer delay in ms - uDelay = MAX(tc.wPeriodMin,uDelay); // wait minimum delay of timer - if ((bOutRange = uDelay > tc.wPeriodMax)) // delay greater maximum delay - uDelay = tc.wPeriodMax; // wait maximum delay time - // start timer2; schedule event, when Chipset.t2 will be zero (Chipset.t2 / 8 = time in ms) - uT2TimerId = timeSetEvent(uDelay,0,(LPTIMECALLBACK)&TimeProc,2,TIME_ONESHOT); - _ASSERT(uT2TimerId); // test if timer2 started + if ((bOutRange = uDelay > uT2MaxTicks)) // delay greater maximum delay + uDelay = uT2MaxTicks; // wait maximum delay time + uDelay = (uDelay * 125 + 1023) / 1024; // timer delay in ms (1000/8192 = 125/1024) + uDelay = __max(tc.wPeriodMin,uDelay); // wait minimum delay of timer + _ASSERT(uDelay <= tc.wPeriodMax); // inside maximum event delay + // start timer2; schedule event, when Chipset.t2 will be zero + VERIFY(uT2TimerId = timeSetEvent(uDelay,0,(LPTIMECALLBACK)&TimeProc,2,TIME_ONESHOT)); return; } @@ -315,13 +313,17 @@ VOID StartTimers(VOID) bNINT2T1 = (Chipset.IORam[TIMER1_CTRL]&INTR) != 0 && (Chipset.t1 & 8) != 0; bNINT2T2 = (Chipset.IORam[TIMER2_CTRL]&INTR) != 0 && (Chipset.t2 & 0x80000000) != 0; timeGetDevCaps(&tc,sizeof(tc)); // get timer resolution + + // max. timer2 ticks that can be handled by one timer event + uT2MaxTicks = __min((0xFFFFFFFF / 1024),tc.wPeriodMax); + uT2MaxTicks = __min((0xFFFFFFFF - 1023) / 125,uT2MaxTicks * 1024 / 125); + CheckT1(Chipset.t1); // check for timer1 interrupts CheckT2(Chipset.t2); // check for timer2 interrupts - // set timer resolution to 1 ms, if failed don't use "Accurate timer" - bAccurateTimer = (timeBeginPeriod(1) == TIMERR_NOERROR); + // set timer resolution to greatest possible one + bAccurateTimer = (timeBeginPeriod(tc.wPeriodMin) == TIMERR_NOERROR); // set timer1 with given period - uT1TimerId = timeSetEvent(T1_FREQ,0,(LPTIMECALLBACK)&TimeProc,1,TIME_PERIODIC); - _ASSERT(uT1TimerId); // test if timer1 started + VERIFY(uT1TimerId = timeSetEvent(T1_FREQ,0,(LPTIMECALLBACK)&TimeProc,1,TIME_PERIODIC)); RescheduleT2(TRUE); // start timer2 } return; @@ -349,7 +351,7 @@ VOID StopTimers(VOID) bStarted = FALSE; if (bAccurateTimer) // "Accurate timer" running { - timeEndPeriod(1); // finish service + timeEndPeriod(tc.wPeriodMin); // finish service } return; } @@ -410,7 +412,6 @@ VOID SetT1(BYTE byValue) } LeaveCriticalSection(&csT1Lock); // restart timer1 to get full period of frequency - uT1TimerId = timeSetEvent(T1_FREQ,0,(LPTIMECALLBACK)&TimeProc,1,TIME_PERIODIC); - _ASSERT(uT1TimerId); // test if timer1 started + VERIFY(uT1TimerId = timeSetEvent(T1_FREQ,0,(LPTIMECALLBACK)&TimeProc,1,TIME_PERIODIC)); return; } diff --git a/sources/Emu48/TYPES.H b/Sources/Emu48/TYPES.H similarity index 100% rename from sources/Emu48/TYPES.H rename to Sources/Emu48/TYPES.H diff --git a/sources/GCCPatch/EMU48GCC.RC b/Sources/GCCPatch/EMU48GCC.RC similarity index 90% rename from sources/GCCPatch/EMU48GCC.RC rename to Sources/GCCPatch/EMU48GCC.RC index f293a12..17a4e2a 100644 --- a/sources/GCCPatch/EMU48GCC.RC +++ b/Sources/GCCPatch/EMU48GCC.RC @@ -140,6 +140,14 @@ BEGIN TOPMARGIN, 7 BOTTOMMARGIN, 162 END + + IDD_MACROSET, DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 149 + TOPMARGIN, 7 + BOTTOMMARGIN, 74 + END END #endif // APSTUDIO_INVOKED @@ -217,7 +225,7 @@ FONT 8, "MS Sans Serif" BEGIN ICON IDI_EMU48,IDC_STATIC,7,6,20,20,SS_REALSIZEIMAGE LTEXT "",IDC_VERSION,29,6,151,8,NOT WS_GROUP - LTEXT "Copyright © 2004 Sébastien Carlier && Christoph Gießelink", + LTEXT "Copyright © 2005 Sébastien Carlier && Christoph Gießelink", IDC_STATIC,29,18,181,8 DEFPUSHBUTTON "OK",IDOK,215,12,39,14 EDITTEXT IDC_LICENSE,7,33,247,112,ES_MULTILINE | ES_AUTOHSCROLL | @@ -252,7 +260,8 @@ BEGIN CONTROL "Port 2 is Shared",IDC_PORT2ISSHARED,"Button", BS_AUTOCHECKBOX | WS_TABSTOP,13,131,65,10 LTEXT "Port 2 File :",IDC_STATIC,13,147,37,8 - EDITTEXT IDC_PORT2,51,144,104,12,ES_AUTOHSCROLL + EDITTEXT IDC_PORT2,51,144,94,12,ES_AUTOHSCROLL + PUSHBUTTON "...",IDC_PORT2LOAD,145,144,10,12 GROUPBOX "Memory Cards",IDC_STATIC,7,110,153,51 LTEXT "Wire:",IDC_STATIC,13,176,17,8 COMBOBOX IDC_WIRE,31,174,48,42,CBS_DROPDOWNLIST | WS_VSCROLL | @@ -289,7 +298,7 @@ BEGIN DEFPUSHBUTTON "OK",IDOK,86,146,50,14 PUSHBUTTON "Cancel",IDCANCEL,164,146,50,14 CONTROL "Always",IDC_ALWAYSDISPLOG,"Button",BS_AUTOCHECKBOX | - BS_PUSHLIKE | WS_TABSTOP,263,147,31,13,WS_EX_STATICEDGE + WS_TABSTOP,258,146,36,14 GROUPBOX "",IDC_STATIC,7,7,287,36 CTEXT "Title of the Script",IDC_TITLE,71,14,158,8 CTEXT "by",IDC_STATIC,71,22,158,8 @@ -472,6 +481,24 @@ BEGIN DEFPUSHBUTTON "Cancel",IDCANCEL,129,148,50,14 END +IDD_MACROSET DIALOG DISCARDABLE 0, 0, 156, 81 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Macro Settings" +FONT 8, "MS Sans Serif" +BEGIN + LTEXT "Slow",IDC_MACRO_SLOW,12,16,16,8,WS_DISABLED + LTEXT "Fast",IDC_MACRO_FAST,78,16,14,8,WS_DISABLED + CONTROL "Slider1",IDC_MACRO_SLIDER,"msctls_trackbar32", + TBS_AUTOTICKS | WS_DISABLED | WS_TABSTOP,12,26,82,21 + CONTROL "&Real",IDC_MACRO_REAL,"Button",BS_AUTORADIOBUTTON | + WS_GROUP | WS_TABSTOP,103,18,39,10 + CONTROL "&Manual",IDC_MACRO_MANUAL,"Button",BS_AUTORADIOBUTTON, + 103,32,39,10 + GROUPBOX "Replay Speed",IDC_STATIC,7,3,142,49 + DEFPUSHBUTTON "OK",IDOK,13,60,50,14 + PUSHBUTTON "Cancel",IDCANCEL,93,60,50,14 +END + ///////////////////////////////////////////////////////////////////////////// // @@ -537,8 +564,8 @@ END // VS_VERSION_INFO VERSIONINFO - FILEVERSION 1,3,5,0 - PRODUCTVERSION 1,3,5,0 + FILEVERSION 1,3,7,0 + PRODUCTVERSION 1,3,7,0 FILEFLAGSMASK 0x3fL #ifdef _DEBUG FILEFLAGS 0x1L @@ -555,12 +582,12 @@ BEGIN BEGIN VALUE "CompanyName", "Sebastien Carlier & Christoph Gießelink\0" VALUE "FileDescription", "HP38/39/40/48/49 Emulator\0" - VALUE "FileVersion", "1, 3, 5, 0\0" + VALUE "FileVersion", "1, 3, 7, 0\0" VALUE "InternalName", "Emu48\0" - VALUE "LegalCopyright", "Copyright © 2004\0" + VALUE "LegalCopyright", "Copyright © 2005\0" VALUE "OriginalFilename", "Emu48.exe\0" VALUE "ProductName", "Emu48\0" - VALUE "ProductVersion", "1, 3, 5, 0\0" + VALUE "ProductVersion", "1, 3, 7, 0\0" END END BLOCK "VarFileInfo" @@ -626,6 +653,17 @@ BEGIN BEGIN MENUITEM "D&isassembler...", ID_TOOL_DISASM MENUITEM "&Debugger...", ID_TOOL_DEBUG + MENUITEM SEPARATOR + POPUP "&Macro" + BEGIN + MENUITEM "&Record...", ID_TOOL_MACRO_RECORD + , GRAYED + MENUITEM "&Play...", ID_TOOL_MACRO_PLAY + , GRAYED + MENUITEM "&Stop", ID_TOOL_MACRO_STOP + , GRAYED + MENUITEM "S&ettings...", ID_TOOL_MACRO_SETTINGS + END END POPUP "&Help" BEGIN diff --git a/sources/GCCPatch/Makefile b/Sources/GCCPatch/Makefile similarity index 91% rename from sources/GCCPatch/Makefile rename to Sources/GCCPatch/Makefile index ada303c..fa073c3 100644 --- a/sources/GCCPatch/Makefile +++ b/Sources/GCCPatch/Makefile @@ -24,7 +24,7 @@ RSRCOBJ=$(PRJ).o OBJS=cursor.o disasm.o display.o debugger.o ddeserv.o \ emu48.o engine.o external.o fetch.o files.o i28f160.o keyboard.o \ - kml.o mops.o opcodes.o rpl.o serial.o settings.o timer.o \ + keymacro.o kml.o mops.o opcodes.o rpl.o serial.o settings.o timer.o \ $(RSRCOBJ) LIBS=-lwinmm -lcomctl32 @@ -85,6 +85,9 @@ i28f160.o: i28f160.c pch.h emu48.h types.h i28f160.h keyboard.o: keyboard.c pch.h emu48.h types.h io.h $(CC) $(CFLAGS) $(DEFINES) -c -o keyboard.o keyboard.c +keymacro.o: keymacro.c pch.h resource.h Emu48.h kml.h + $(CC) $(CFLAGS) $(DEFINES) -c -o keymacro.o keymacro.c + kml.o: kml.c pch.h resource.h emu48.h types.h kml.h $(CC) $(CFLAGS) $(DEFINES) -c -o kml.o kml.c diff --git a/sources/GCCPatch/PCH.H b/Sources/GCCPatch/PCH.H similarity index 50% rename from sources/GCCPatch/PCH.H rename to Sources/GCCPatch/PCH.H index eb9c052..698e95b 100644 --- a/sources/GCCPatch/PCH.H +++ b/Sources/GCCPatch/PCH.H @@ -15,10 +15,27 @@ #include // #include // missing file +#if !defined VERIFY +#if defined _DEBUG +#define VERIFY(f) _ASSERT(f) +#else // _DEBUG +#define VERIFY(f) ((VOID)(f)) +#endif // _DEBUG +#endif // _VERIFY + #if !defined IDC_HAND // Win2k specific definition #define IDC_HAND MAKEINTRESOURCE(32649) #endif -#if !defined _ASSERT - #define _ASSERT(a) // normally defined in missing CRTDBG.H +// normally defined in STDLIB.H +#if !defined __max + #define __max(a,b) (((a) > (b)) ? (a) : (b)) +#endif +#if !defined __min + #define __min(a,b) (((a) < (b)) ? (a) : (b)) +#endif + +// normally defined in missing CRTDBG.H +#if !defined _ASSERT + #define _ASSERT(a) #endif diff --git a/sources/GCCPatch/README.TXT b/Sources/GCCPatch/README.TXT similarity index 92% rename from sources/GCCPatch/README.TXT rename to Sources/GCCPatch/README.TXT index ed86f6b..4018795 100644 --- a/sources/GCCPatch/README.TXT +++ b/Sources/GCCPatch/README.TXT @@ -35,4 +35,4 @@ Many thanks to Pedro A. Arranda Guti compatible. -08/30/04 (c) by Christoph Gießelink +06/13/05 (c) by Christoph Gießelink diff --git a/sources/MkShared/MKSHARED.C b/Sources/MkShared/MKSHARED.C similarity index 100% rename from sources/MkShared/MKSHARED.C rename to Sources/MkShared/MKSHARED.C diff --git a/sources/MkShared/MKSHARED.DSP b/Sources/MkShared/MKSHARED.DSP similarity index 100% rename from sources/MkShared/MKSHARED.DSP rename to Sources/MkShared/MKSHARED.DSP diff --git a/sources/MkShared/MKSHARED.DSW b/Sources/MkShared/MKSHARED.DSW similarity index 100% rename from sources/MkShared/MKSHARED.DSW rename to Sources/MkShared/MKSHARED.DSW diff --git a/sources/MkShared/MKSHARED.ICO b/Sources/MkShared/MKSHARED.ICO similarity index 100% rename from sources/MkShared/MKSHARED.ICO rename to Sources/MkShared/MKSHARED.ICO diff --git a/sources/MkShared/MKSHARED.RC b/Sources/MkShared/MKSHARED.RC similarity index 100% rename from sources/MkShared/MKSHARED.RC rename to Sources/MkShared/MKSHARED.RC diff --git a/sources/MkShared/RESOURCE.H b/Sources/MkShared/RESOURCE.H similarity index 100% rename from sources/MkShared/RESOURCE.H rename to Sources/MkShared/RESOURCE.H diff --git a/sources/Mke48/MKE48.C b/Sources/Mke48/MKE48.C similarity index 100% rename from sources/Mke48/MKE48.C rename to Sources/Mke48/MKE48.C diff --git a/sources/Mke48/MKE48.DSP b/Sources/Mke48/MKE48.DSP similarity index 100% rename from sources/Mke48/MKE48.DSP rename to Sources/Mke48/MKE48.DSP diff --git a/sources/Mke48/TYPES.H b/Sources/Mke48/TYPES.H similarity index 100% rename from sources/Mke48/TYPES.H rename to Sources/Mke48/TYPES.H diff --git a/sources/Emu48/RESOURCE.H b/sources/Emu48/RESOURCE.H deleted file mode 100644 index 02e93b0..0000000 --- a/sources/Emu48/RESOURCE.H +++ /dev/null @@ -1,206 +0,0 @@ -//{{NO_DEPENDENCIES}} -// Microsoft Developer Studio generated include file. -// Used by Emu48.rc -// -#define CREATEPROCESS_MANIFEST_RESOURCE_ID 1 -#define RT_MANIFEST 24 -#define IDI_EMU48 100 -#define IDR_MENU 101 -#define IDR_DEBUG 102 -#define IDR_DEBUG_TOOLBAR 103 -#define IDR_DEBUG_CODE 104 -#define IDR_DEBUG_MEM 105 -#define IDR_DEBUG_STACK 106 -#define IDB_CHECKBOX 107 -#define IDD_ABOUT 108 -#define IDD_SETTINGS 109 -#define IDD_CHOOSEKML 110 -#define IDD_KMLLOG 111 -#define IDD_DISASM 112 -#define IDD_DEBUG 113 -#define IDD_NEWVALUE 114 -#define IDD_ENTERADR 115 -#define IDD_BREAKEDIT 116 -#define IDD_ENTERBREAK 117 -#define IDD_INSTRUCTIONS 118 -#define IDD_WRITEONLYREG 119 -#define IDD_FIND 120 -#define IDD_PROFILE 121 -#define IDC_REALSPEED 1000 -#define IDC_AUTOSAVE 1001 -#define IDC_AUTOSAVEONEXIT 1002 -#define IDC_OBJECTLOADWARNING 1003 -#define IDC_ALWAYSDISPLOG 1004 -#define IDC_PORT1EN 1005 -#define IDC_PORT1WR 1006 -#define IDC_PORT2ISSHARED 1007 -#define IDC_PORT2 1008 -#define IDC_WIRE 1009 -#define IDC_IR 1010 -#define IDC_EMUDIR 1011 -#define IDC_EMUDIRSEL 1012 -#define IDC_UPDATE 1013 -#define IDC_KMLSCRIPT 1014 -#define IDC_AUTHOR 1015 -#define IDC_TITLE 1016 -#define IDC_KMLLOG 1017 -#define IDC_VERSION 1018 -#define IDC_LICENSE 1019 -#define IDC_DISASM_WIN 1020 -#define IDC_DISASM_MAP 1021 -#define IDC_DISASM_ROM 1022 -#define IDC_DISASM_RAM 1023 -#define IDC_DISASM_PORT1 1024 -#define IDC_DISASM_PORT2 1025 -#define IDC_DISASM_MODULE 1026 -#define IDC_DISASM_HP 1027 -#define IDC_DISASM_CLASS 1028 -#define IDC_ADDRESS 1029 -#define IDC_DISASM_ADR 1030 -#define IDC_DISASM_NEXT 1031 -#define IDC_DISASM_COPY 1032 -#define IDC_DEBUG_CODE 1033 -#define IDC_STATIC_CODE 1034 -#define IDC_STATIC_REGISTERS 1035 -#define IDC_STATIC_MEMORY 1036 -#define IDC_STATIC_STACK 1037 -#define IDC_REG_A 1038 -#define IDC_REG_B 1039 -#define IDC_REG_C 1040 -#define IDC_REG_D 1041 -#define IDC_REG_R0 1042 -#define IDC_REG_R1 1043 -#define IDC_REG_R2 1044 -#define IDC_REG_R3 1045 -#define IDC_REG_R4 1046 -#define IDC_REG_D0 1047 -#define IDC_REG_D1 1048 -#define IDC_REG_P 1049 -#define IDC_REG_PC 1050 -#define IDC_REG_OUT 1051 -#define IDC_REG_IN 1052 -#define IDC_REG_ST 1053 -#define IDC_REG_CY 1054 -#define IDC_REG_MODE 1055 -#define IDC_REG_MP 1056 -#define IDC_REG_SR 1057 -#define IDC_REG_SB 1058 -#define IDC_REG_XM 1059 -#define IDC_MISC_INT 1060 -#define IDC_MISC_KEY 1061 -#define IDC_MISC_BS 1062 -#define IDC_NEWVALUE 1063 -#define IDC_ENTERADR 1064 -#define IDC_DEBUG_MEM 1065 -#define IDC_DEBUG_MEM_ADDR 1066 -#define IDC_DEBUG_MEM_COL0 1067 -#define IDC_DEBUG_MEM_COL1 1068 -#define IDC_DEBUG_MEM_COL2 1069 -#define IDC_DEBUG_MEM_COL3 1070 -#define IDC_DEBUG_MEM_COL4 1071 -#define IDC_DEBUG_MEM_COL5 1072 -#define IDC_DEBUG_MEM_COL6 1073 -#define IDC_DEBUG_MEM_COL7 1074 -#define IDC_DEBUG_MEM_TEXT 1075 -#define IDC_DEBUG_STACK 1076 -#define IDC_STATIC_BREAKPOINT 1077 -#define IDC_BREAKEDIT_ADD 1078 -#define IDC_BREAKEDIT_DELETE 1079 -#define IDC_BREAKEDIT_WND 1080 -#define IDC_STATIC_MMU 1081 -#define IDC_MMU_IO_A 1082 -#define IDC_MMU_NCE2_A 1083 -#define IDC_MMU_CE1_A 1084 -#define IDC_MMU_CE2_A 1085 -#define IDC_MMU_NCE3_A 1086 -#define IDC_MMU_IO_S 1087 -#define IDC_MMU_CE1_S 1088 -#define IDC_MMU_CE2_S 1089 -#define IDC_MMU_NCE2_S 1090 -#define IDC_MMU_NCE3_S 1091 -#define IDC_STATIC_MISC 1092 -#define IDC_MISC_BS_TXT 1093 -#define IDC_INSTR_TEXT 1094 -#define IDC_INSTR_CODE 1095 -#define IDC_INSTR_COPY 1096 -#define IDC_INSTR_CLEAR 1097 -#define IDC_PROFILE_LASTCYCLES 1098 -#define IDC_PROFILE_LASTTIME 1099 -#define IDC_BPCODE 1100 -#define IDC_BPRPL 1101 -#define IDC_BPACCESS 1102 -#define IDC_BPREAD 1103 -#define IDC_BPWRITE 1104 -#define IDC_FIND_DATA 1105 -#define IDC_FIND_ASCII 1106 -#define IDC_FIND_CASE 1107 -#define IDC_ADDR20_24 1108 -#define IDC_ADDR25_27 1109 -#define IDC_ADDR28_29 1110 -#define IDC_ADDR30_34 1111 -#define ID_FILE_NEW 40001 -#define ID_FILE_OPEN 40002 -#define ID_FILE_SAVE 40003 -#define ID_FILE_SAVEAS 40004 -#define ID_FILE_EXIT 40005 -#define ID_VIEW_COPY 40006 -#define ID_VIEW_SETTINGS 40007 -#define ID_VIEW_RESET 40008 -#define ID_OBJECT_LOAD 40009 -#define ID_OBJECT_SAVE 40010 -#define ID_ABOUT 40011 -#define ID_FILE_CLOSE 40013 -#define ID_BACKUP_SAVE 40014 -#define ID_BACKUP_RESTORE 40015 -#define ID_BACKUP_DELETE 40016 -#define ID_VIEW_SCRIPT 40017 -#define ID_STACK_COPY 40019 -#define ID_STACK_PASTE 40020 -#define ID_TOOL_DISASM 40021 -#define ID_TOOL_DEBUG 40022 -#define ID_DEBUG_RUN 40023 -#define ID_DEBUG_RUNCURSOR 40024 -#define ID_DEBUG_STEP 40025 -#define ID_DEBUG_STEPOVER 40026 -#define ID_DEBUG_BREAK 40027 -#define ID_DEBUG_STEPOUT 40028 -#define ID_DEBUG_CANCEL 40029 -#define ID_BREAKPOINTS_SETBREAK 40030 -#define ID_BREAKPOINTS_CODEEDIT 40031 -#define ID_BREAKPOINTS_CLEARALL 40032 -#define ID_BREAKPOINTS_NOP3 40033 -#define ID_BREAKPOINTS_DOCODE 40034 -#define ID_BREAKPOINTS_RPL 40035 -#define ID_DEBUG_CODE_GOADR 40036 -#define ID_DEBUG_CODE_GOPC 40037 -#define ID_DEBUG_CODE_SETPCTOSELECT 40038 -#define ID_DEBUG_MEM_GOADR 40039 -#define ID_DEBUG_MEM_GOPC 40040 -#define ID_DEBUG_MEM_GOD0 40041 -#define ID_DEBUG_MEM_GOD1 40042 -#define ID_DEBUG_MEM_GOSTACK 40043 -#define ID_DEBUG_MEM_FIND 40044 -#define ID_DEBUG_MEM_MAP 40045 -#define ID_DEBUG_MEM_NCE1 40046 -#define ID_DEBUG_MEM_NCE2 40047 -#define ID_DEBUG_MEM_CE1 40048 -#define ID_DEBUG_MEM_CE2 40049 -#define ID_DEBUG_MEM_NCE3 40050 -#define ID_DEBUG_STACK_PUSH 40051 -#define ID_DEBUG_STACK_POP 40052 -#define ID_DEBUG_STACK_MODIFY 40053 -#define ID_INTR_STEPOVERINT 40054 -#define ID_INFO_LASTINSTRUCTIONS 40055 -#define ID_INFO_PROFILE 40056 -#define ID_INFO_WRITEONLYREG 40057 - -// Next default values for new objects -// -#ifdef APSTUDIO_INVOKED -#ifndef APSTUDIO_READONLY_SYMBOLS -#define _APS_NEXT_RESOURCE_VALUE 122 -#define _APS_NEXT_COMMAND_VALUE 40058 -#define _APS_NEXT_CONTROL_VALUE 1112 -#define _APS_NEXT_SYMED_VALUE 108 -#endif -#endif diff --git a/uninst.exe b/uninst.exe new file mode 100755 index 0000000000000000000000000000000000000000..bbec58e6ed0d254595994f43f0720fd4ff93ebdd GIT binary patch literal 51311 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 Z_MTg38eLIv(Hf8b%J1$R-0T?ne*lO|P;LMK literal 0 HcmV?d00001