From 868a04ec158385239a1c950e36188d24ceeeb7b3 Mon Sep 17 00:00:00 2001 From: icex2 Date: Thu, 4 Aug 2022 20:09:35 +0200 Subject: [PATCH] Add DDR p3io drivers for x64 platform --- ddr/p3io/README.md | 5 +- ddr/p3io/driver/x64/README.md | 1 + ddr/p3io/driver/x64/oem13.CAT | Bin 0 -> 8091 bytes ddr/p3io/driver/x64/oem13.inf | 81 ++++++++++++++++++++++++++++++ ddr/p3io/driver/x64/oem14.CAT | Bin 0 -> 8977 bytes ddr/p3io/driver/x64/oem14.inf | 91 ++++++++++++++++++++++++++++++++++ ddr/p3io/driver/x64/oem15.inf | 84 +++++++++++++++++++++++++++++++ ddr/p3io/driver/x64/oem16.CAT | Bin 0 -> 5470 bytes ddr/p3io/driver/x64/p3io.sys | Bin 0 -> 9728 bytes ddr/p3io/driver/x64/p4io.sys | Bin 0 -> 11264 bytes 10 files changed, 260 insertions(+), 2 deletions(-) create mode 100644 ddr/p3io/driver/x64/README.md create mode 100644 ddr/p3io/driver/x64/oem13.CAT create mode 100644 ddr/p3io/driver/x64/oem13.inf create mode 100644 ddr/p3io/driver/x64/oem14.CAT create mode 100644 ddr/p3io/driver/x64/oem14.inf create mode 100644 ddr/p3io/driver/x64/oem15.inf create mode 100644 ddr/p3io/driver/x64/oem16.CAT create mode 100644 ddr/p3io/driver/x64/p3io.sys create mode 100644 ddr/p3io/driver/x64/p4io.sys diff --git a/ddr/p3io/README.md b/ddr/p3io/README.md index 13f7c72..753294c 100644 --- a/ddr/p3io/README.md +++ b/ddr/p3io/README.md @@ -2,7 +2,8 @@ Currently, this package provides drivers for the following platforms: -* Windows XP x86 +* [Windows XP x86](x86) +* [Windows 7 x64](x64) -Note that the driver, at least the build version, seems to be different to the P3IO driver used on +Note that the drivers for a "DDR P3IO" are different to the drivers of a "regular P3IO" used on [GF&DM](../../gfdm/p3io/README.md). diff --git a/ddr/p3io/driver/x64/README.md b/ddr/p3io/driver/x64/README.md new file mode 100644 index 0000000..71f7d35 --- /dev/null +++ b/ddr/p3io/driver/x64/README.md @@ -0,0 +1 @@ +Drivers taken from a DDR PCB with (DDR) P3IO running on an ADE6291, i.e. 64-bit \ No newline at end of file diff --git a/ddr/p3io/driver/x64/oem13.CAT b/ddr/p3io/driver/x64/oem13.CAT new file mode 100644 index 0000000000000000000000000000000000000000..4a498a2b53b286d23f443021fb14500513c10fd1 GIT binary patch literal 8091 zcmds+2{@E%`@r8>?0dHCW8cR+gDjCWge(cA6d7Y;EHlguvJ{4tV>^+wBQ4S*OH!dl zNRjppol1Y&+AOZ{V^BIa`(29Hz%t1%<3mNjGuqcj&Fsg)u4gysHuqeOq zbfqW?g_U&QVRBj#*Y3V=Zy^@jn7v6}j9>v12n5*73^s@TVDVYa(a5N%-QZJ%^_m9} zAP2}1d|QEUBDhQ;d&m;}w*uE9$O3%ZgE|suL4wRdc`>+i1hoWiA2V?82%cL&Fz7>q zAc(+0*}=r`^Py1$Em%WU6j};-gQ3{qVxqB=3LXi*^eAYs7;2|B%jOYGehm1j<83T>N61?GMu+gj*G0U<1(r7<>f-Ee}4+?_PqP|oXo64l)NaQFgK?a_K zR0~LpIK(i6$n;oRL{NR9D zi(T%`n@(6-#ydWeOlMOmI1+;y#bAD$4uR647k86?g9N`Dr@mn=~4H!N3I+sbT@Jr|Mo_-TD zmtu2CC~Z=0X`kchi_?kC><*3lwc8-{nERjSYfn39g?FxXoPX2dI%y6|o|8qZHN3V{ z^%zr0$30rDiqJc;jEwd^RPn*Zh;O~)L6gkugF6SOvip4PY+LhtmW(HwK93ikco(z9 ze$Uqy%(9&o_all6Xq&0}X`3zu%3QwEK40e1h17RyV(iEH8b_~=O|X-62ga5tB_D3y zXMEzfSBC~FbmcaX$96ap{G7S6H+<1l*8|DvG$Nxv0Tn8<$NIr`iIEZE0f?CpJ+LnERi`3 zrz0n$NM%Bgc-#xD%g-cE08vj|I5 z7tFPP)%(!bP9@G|vw<9cz#+>pjX7n@6w)@UoOG4{h%z&v#s=(luv=NWRmTqbEMDvvoQa#T?8ZT-zym=5ku_Hibs*l&3Fl zX&k(97M)NUSFoDeJS5LJW&)#ahFU~6JZY2!o66_>r% zEiJE1MQ#n3DUD_|J*@G~n*SJkI6jb_ns-?*zO-FD-r18kooq|s#^_Uf%-|U!! z@&%Ie20jT;ey-V}!S*JHl(Z4k_#2ZENP$^Aa{>k)0#jiFUKtp;>a>lrS;kx&k7MCk z(}d<4y2VUebcW&gwqzO^|5H;FHj8CUAsdGf@f0c(wm}xBhBb#xVM2*XiSg{-2oV0J zH$cI^YvsgQa9i9;D-&NLqk7lvkrzeYE?{1R*Z{1CEJG7J7nV!;HT{0vWx*zbg4WNk z-D&{2y~_)NE!LN%>k2UDRzKG6DY>%^Q<34JUA$`{M!EO;v-oT3q5O~Ph_#XDM~!qS zrq5l1BgF=qL&V4U4wy$IWy-a_tp20=WiPHZTB5U%-BY*baifJAY5l*X!_Tg6juN`2{F6H8wjAnv%>o-TIsmF2D~>qkP-l3$eLYf}=B(MBit)QQR&4kxb` zvfaJ9PwuL8Y9xfW6f4)yGkRJ*>URWHDZ9tW#6_uF<6QI9`fbaaGpaaS{NLHuE-Q^U zHN+>L>A?v}N52kJSl#vFAna?D>0)=LE4lsr0*z3L_pU}7`&f&LO>+K|<_6^l*ch0@ zrv*?YI*lnk(QDzYf-V8)mAm}Y_q^RY8&e{{F-iW9Ffr{}h)BzQ#{@Hm#m0G1*>MbJ zIB+Qb;tP->$SfAl6zA=1Pc)wgJcnT58UTpQ@R^BVgB90{*j99 z&X1Zmysdgdj;RQjIlRZXJ|TOv1jgC1W72#iv6$bdo+Us$1>vfMN;{sdzG9vHg#vI<2)I__US$T!V71S~ZsIy{81mzwmXb z7*WRA8Ay09J%71q+tgC=f~FhSO3mafTXA(pg^dIMUeP|w*b(GxX3@b6c`Y~fJz+J4_*nc;O7rX6$POm>;`M{P=`jz z$s?#^0mmm8!679GVW9~niUn)WG(y7)qQ7j$j3WPlo$d3z-^H62Rc=Uoi#P1JdOAau zxehi&)}V$3-WH52Q7uu_P9l!@Key+FRIp<5wZ zUsL+isGK`O-kO(oUbnoJfH5_)v(1`j*^Ag*;;t=xec9Gk2Xgqe2Jv> z#V)STd-}FMXbQjT^7-F=TJ16v*B<4Jd(3?xF)a9JBJpLb(x1ysBO7BA04G-gPTEg% z(sup*Pq8k6)#MGM?^Lg582ltMIQ8l*41t(P9+m}40Ae!n6;vh-;h7Q6g-*fqf-itb z-UFP^4~VpeEs>rg(gZz0$0L55IXC_@1rgvkw&3m#98DY#df$4ijM7IT8Sm6aZcibL7xZ$zMed*_x<>_}9 z*Gp$yQri2<&$4%SHxHp{0HMjS2@e>61DYU5^Gm`Izmw^g0bm5eG#r)+QvhN`zJbLN zB_NN1z2F%l0l4x|7Z(@DbvA)!&G1!^w-7WMR#yC1EfK`R$ZTp@eOMRPF3~Je&rsu$ zknnw-CQ%f!sd0!o7o$i@18fFzuncb!40`4c^W)wDB29gyxfB)v`hY5|%-i5G(o#If z#naWrm|$!^&tjGn`b*f)c0!YHQx9M2eRJ*|EcBja^%-4hN-+J26kNDUZ&FmH9kCcI zX*^K5QHAV1wKqFJ^iYiIdU?&>$v29a6*7!@2M+2S0Lm6yuRP-z7ZjtjqAt zf+_#@&H&7l%zbuj)%#pxCvD6c59#iCxFE!Z#asi80Lw)wfW)Y^Lov@>_}g`3p2qug{8MUE-( zX_N%Y+C6HYaCgg_V1~p^>TYX0Yc9UUWh!S?GY8b~|EsDl5G*c;tqRI)Ljg5G!-O z!Bv>7Q1Be&%^*m5wy==A*iWR92Adk-o1nC?FPRkzJVZ7~XGwBjE=YK7NIe z>96s^pyJS?n!NEd%THIGcCDGp+bH1s<}ImvU63rfD^TpfgU91fnu7#weWYKzTwUd} zNvGd1PpSCzhtjQ=OkEz3C}Cc%xAI;@Epxw_NlR>t`dHI5huxj%@4Djl_VcoFr6))C zYmZba=ZDPgALYls{r${y=y|X8DTS}-v!gacPqJQHWW5=^e{AIAJKM_Mn60J?D#{D5 zv9%P`3m(c$9W(H1%e#wpd7eXY+G0aXyEf(2Xt;4{OW_Iey?1VsE`+e2$p~)jw<~7V zn+kXN+nH_N{@alE3vJoyyxTQ6^$J%J0S|>?kR#*A0yILf1i}<<0M7?w5VuMMsgU62 zwlZd69~jgg=UVfEF?B)ZfiAs^5154W~Q5ATDQBZH}7J%BU2q{O*oafZV*5|MyA zlBeff)<%WXOhBzk6q6AgLt(Q_X4D*suDD8$C^wgzKZnR5*_Ud-k;^s{@HcQOj zU*`GS=<@VV)5p^UAss#P%#| zSTnA0H}Dy4pik32Bs(-M)-bQ2%-~dV)2fLh?bSMYSNFf?DD7CVwNSSxgFLj_Um(0Q zqr8urQr;)qSKXw^7j{;ux@m3eebFBHqGRxi+`(~z3yt$g>v`%L0gE|QX z|AG1?#~PfjM3c4;5OD{4;xZ;}o@GUMC+^04Ijuqrel6!!LMr==KfWs8BdKk~bdj^= zGV3JEHYF_$y@jfZi`C@2=Z?M8HIJyLJnTFZ>~DB5;BBjZ?MU0WdI$Eb?wQiWp1^C3e_AyO8V(g~_X)CTcU-#QyQPLrLIk`5ss50`Ik8X2u#)W&&S%O7; z-8X!K0x-^(?iME>UYC7i@5!ZiZtqy@n$VtHt?zYXPD-1EPn~K=XKP7>6ej()bIhQ@ z)XDjDVe3QTu{-(7hT}rXrZP_aU%ZpO8uMk=EYS)J$*#=#z2e5lcy*-$ouuaLs*PJL z^G`UoDulUs*6@v=SY`2Bm^Nlx)v8p_7iZH_PHUQv#-0gLSvB`KE@vBogPjjtUkfw} z1*aDL%;4$6g@2Xp|KCpmpe6s3r1*ZoSHb}C{r8|olz;?^b7u}$gfIk=S?7OXU-;fu zgqth)UX}$xBJV^|2ulDNbr)v3U=kc6-D)j=XCBTr^OpXGp4mGTIGDh4KuW2#|LEos z!*^;YSBtKMFgrBBsci zsW)q5c9bnV9Ic~GeIwiczRH}JwvGj2=IT%6RjDq3VM=4~%o;Y0Ui3{e`ujo?Q z?Mj|cdd;)c7vFR#@xVWm+1`DxO5uvYo%)9wCyx~3>g}7xgCG1kCgDokn;~=D&J2H! zvA#>vgs#k3J#a7~dGqG4>*H_hy)O#hvi!Grfyll=@u!|)Bk$ia3?t`uebG%T<)B5t zsj9$t>G6Y8%yHm*jv^|={BP&F(UN~jw$D-!|G%gM@6;Ft)M4g@^ARLwo%)&*z^U)g z>L7iQp0*(blY4n{zFF)%QBS3;iA}#yhrO@2w29qq+IZva>-Rg0lJATdNrr^%U_DsG zSXKxr-j_@a911<{ZaY|4v&kXG(k?u-&@h?&S^h$h)8hcB$zE;AhTiMsrdk%f67O15 z(r_Xx&foh+P0B{$xa*l}dvlc<@3eI7`l4&{s{NdPC*SXOnfeRY)zV%XW_QHz^Tmpq*5yn+I2v09Q_e)@V-25c#cteF<5-E?diZ$aZwH` fKC!NUqw}5CDMpbat!nU3i`FQYyJi+ktX}>PNtD2l literal 0 HcmV?d00001 diff --git a/ddr/p3io/driver/x64/oem13.inf b/ddr/p3io/driver/x64/oem13.inf new file mode 100644 index 0000000..b21cde9 --- /dev/null +++ b/ddr/p3io/driver/x64/oem13.inf @@ -0,0 +1,81 @@ +; +; Windows USB CDC Driver Setup File for DDR (Windows7) +; +; (C)2016 Konami Amusement Co., Ltd. +; +; + + + +[Version] +Signature = "$Windows NT$" +Class=Ports +ClassGUID={4d36e978-e325-11ce-bfc1-08002be10318} +Provider=%ProviderName% +DriverVer= 12/29/2016,1.1.0.0 +CatalogFile=ddrmem_win7.cat + +[DestinationDirs] +DefaultDestDir = 12 + +[MANUFACTURER] +%ProviderName%=DeviceList, NTx86, NTamd64 + +[DeviceList.NTx86] +%ddrmemDesc%=DriverInstall,USB\VID_1CCF&PID_8004 + +[DeviceList.NTamd64] +%ddrmemDesc%=DriverInstall,USB\VID_1CCF&PID_8004 + +;-------------------------------------------------------------------------- +; Device driver +;-------------------------------------------------------------------------- + +[DriverInstall] +include = mdmcpq.inf +CopyFiles = FakeModemCopyFileSection +AddReg = LowerFilterAddReg,SerialPropPageAddReg + +[DriverInstall.Services] +include = mdmcpq.inf +AddService = usbser, 0x00000002, ddrmem_Service_Inst + +[SerialPropPageAddReg] +HKR,,DevLoader,,*ntkern +HKR,,NTMPDriver,,usbser.sys +HKR,,EnumPropPages32,,"MsPorts.dll,SerialPortPropPageProvider" + +;-------------------------------------------------------------------------- +; Services +;-------------------------------------------------------------------------- + +[ddrmem_Service_Inst] +DisplayName = %SERVICE% +ServiceType = %SERVICE_KERNEL_DRIVER% +StartType = %SERVICE_DEMAND_START% +ErrorControl = %SERVICE_ERROR_IGNORE% +ServiceBinary = %12%\usbser.sys + +;-------------------------------------------------------------------------- +; Strings +;-------------------------------------------------------------------------- + +[Strings] +ProviderName = "Konami Amusement" +ddrmemDesc= "DDR USB Virtual COM Port" +SERVICE = "DDR USB memory Driver" + +SERVICE_BOOT_START = 0x0 +SERVICE_SYSTEM_START = 0x1 +SERVICE_AUTO_START = 0x2 +SERVICE_DEMAND_START = 0x3 +SERVICE_DISABLED = 0x4 + +SERVICE_KERNEL_DRIVER = 0x1 +SERVICE_ERROR_IGNORE = 0x0 +SERVICE_ERROR_NORMAL = 0x1 +SERVICE_ERROR_SEVERE = 0x2 +SERVICE_ERROR_CRITICAL = 0x3 + +REG_EXPAND_SZ = 0x00020000 +REG_DWORD = 0x00010001 diff --git a/ddr/p3io/driver/x64/oem14.CAT b/ddr/p3io/driver/x64/oem14.CAT new file mode 100644 index 0000000000000000000000000000000000000000..c6ee235c4827178474c45aada9b1e086b517247d GIT binary patch literal 8977 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 literal 0 HcmV?d00001 diff --git a/ddr/p3io/driver/x64/p4io.sys b/ddr/p3io/driver/x64/p4io.sys new file mode 100644 index 0000000000000000000000000000000000000000..7353bee7837e5658bacdb62f2bc17c68f4728366 GIT binary patch literal 11264 zcmeHN4RBo5b-pXDq}5uoWBr4SrLQx%v*Wf;1`WGW|vkxk0$ zckX*Dt^AW@GMVWx@HBVNz2}~L?z!jhp10afUms-Ij4?Z!VK6oXNRL;3{`!weOfOtH zypX+=|JwCKw%}{m*R@Bwlvq647H{08G&gp3Mm41=ti%(YN~BW>Y^hatMO(sUg@sPH z#rnRQ-Jh)d(#nH#?Ye_bj3dJ>2d|c}>ELw|#^v~(QlB+$lW<$4xt-QtNzza?V=dpz zV^90;2&HMJ*$r$#mV>dY=>R6SxB;-3`ZoG7`&o?Tu&mi8@q_q;vYHcVO41x2xi+IS zJI-4HrjYDFKuwHYhnDep85=8$nS}C; zAxsjTf|l`k!B5?+))DG!v~L3%$#w%;#-lLyZdtr5-VB`7T?`$fy9q7h@iJCb77uqs zK}fnJoyvW`OoO?{3%a?{7d_HIP`tzYKHQ<|_c>Jkp<-3i&u9 z^5igu$;p7b6o^L^b=04t#iIeYLeOyi>q^G@lVYN%zZYXJ0&XuKaP7n_7IV?<<>E)d zfi1;`>uHNpE94^R_8P8ZK%CjkG5LL);rbAxps2@k@e^O)Mo+Qi)yqBPL}tIi^9{o= zxPH6EU>r;M=(p0DjO!a5Ts-FP=0bDFxae@Vi{l(D8+hM|9mijt{~Tj%9sF#dk=Eo=0q1Tz|~Xx!CJXE+ExnLMny8Ec9T+ZTaK zHO8v;2NoHLlyAUi^PjXYV&!k^0k`LjJGCv3++>5)gP1t8JU9TnDo&@yku$^uT-F2E zsVqOu#q0V`kKtN$Er|r%nC>I3bBWGyejXHmi1XIFLtNbJ<$8yE2iG;Y8+@QWsJFPi z)#dMP>L2Igf|g$`e5KX>$wXfH+f&cdnMn#b2ZxkO>Zu%H`eC_LBJao_Loa6{!zG|9 zANLJyZ`q|7u5aU#kQCEtigjFv2kw9;$rIERb0K2^0o22@Z8(kZD1w)zY`JEPcIVxd z4TKir{pYlN1g7CClU#pJqt^_Vf>CwL$ZKJZi$Tzo@b ze5S5mz!>~f9G|*6P5v^-`M~Dl^3!6*aQzLgZyFh{Z&45Y3|9g@RlI7r>d+CRQ$GVI zE*=1DsN7Puim9OZGZL5&6#nu8sXAM#+7DIxp=v)=?T4!UP_-Yb_CwWvsM-%z`=M$- zRPBeV{ZO_4H>moJs~D47786(2^ZOtYJ3akxC!CNzwKE^X3Cru^Gb;!wJdm>p8o`Jv zAdLFt$QMI*%$(?vip%-H98H>|cRrDe_R~o39Rw&(W<~+szr7z;f@jZBcLM-x9o^@C z0x)0pdeG~^rF$P7^ji^h{VYU8rI{^6g7_Jaf3>URHe8AlfZ>L=3r9lXuL4!)%{2tpY z*(lK9#>h6B8>wiuT(;lzmuK8P*o^C2lU!^>E;?nn&Mqgm&tauy>BI^t*lawRY_h-x zsjHpR-b?OM5GRU-DZ8GB4&4`A9Cb^*_nshCWhju#`%e`mDlQ%2cXPd}Quytwuqb&K zeI%A3{EMM`Dd%WaC6EY(F~hY^%7<&&gO0r6E^{YRe&^=>W?u6M>&l+WY|?=TIm;)e zDV|HcMbC^5_keXeRjXpkaQzgu1G05cOlZyCeFpODKp(ln89N{F$AUO^%rYbsyjWWH zj1~W`1D#urE3b3P}+rL z5HnpvZWN68=)DA_8%xp}4@Ezr!p2Llt|GhEL*c3>UKD z`a5*exfYk1$c8n4*Cb2fChd+baT!&@J~d!(N+kVP)+Vwp5fO+ZujTK{c%Tx6H`kQN zGKGut;<^4)IBZb7TRuKqjGkF{1j*|SR}o1)P*{S@5rDVpl|jA1QFQno6d9XXxe*j8 zc~)7=7_O^8O+lTm0>s4Lo8=vJXbHmPG`c>iCCC8Ye*vUQ)yE6yh~q(W;LKX$3Kaww zCy+nQ^okltZ%3%dP=S=Rm_+t7$%bPaR`hXas#$NO-9+Mp>@=owE!;3_A`Bl z8}q0@x=T;?^npGru>W~V#jOGTc}hc=MNmC}dXBtRqzsn}oYD>oC#FJS)=3+rQ_khj z0IvK}QZ)SYqs6q&^hk;T_BOK%h5`WZv5W7)2d>$};OG-~|NM}!r(FrV&)fK6( z4TGRK;O@aHE?$(uL|NfEH(fk%RZ>Dm@`Q_+`ZJ?$zWzv6LA`xC2%mv%^;jw>et~jj zV7p?f6c>f~*l=A~1lDBd2`XEiN03aDQwtCpzE|KU28t#RK~?-j6+fyLBS4f|6AD4Y z6(bJ%qp%*zjW&( zVK>AkwbuZDc{N-4e{0V{o~u6mA-a+LxsM zH2O%MRWo-yUKxLj_y0TyYxY3>LD+@NKz5Q=!PQ2gXw}{a5Ok=^$$I1iR(<{yVZq=K zP^LkjM-K)i!_6}&$2^yl4%HY>Osjp9d7J2c4%hE- zNP#`DfqWB9{L;i(qDc`=DO(5C-t)}CSXUMC3yM0Y0|F>0J12ws))ZdloQS(R=M44$ zavI2)#GBY_Jbgr6ilGC2 zw1e6^L!hW{H-wz-DR8r?Vbl?G;?Ai;i>ldU(m;)5ps$jF7I0%cZ6j$P-Zzz%VIyfD z;Ow(Dx{Q7Lrf?mSp`ke2rS{3#;;Z8v= zX(2M-Rv0p9N@g0!0pz0JWFN@$#q&AQzz0p{K^M}O>KV_0Mstv~;Asm^T5#Hexz_p> z7W}dWzhljR-5Nh=!N)B)Xu*RP9JAmaYh9H!-eHY1M4SCzP8N_2XeF!B@C^(-e;JC4 z#x3JD`_{kTp1a{eB~}rMmUZpzTCc1w^Q^sX^(~%T*52Z|t!7)bvc4%1>1a`Wi8f`; z?aCU@>NU#h%Jmf$>(_c1+g2N>t$Kgw;5*y?Wz$Qy|99t$XD5DT1OJxw^}F`AM4Ri| zc1N0;>bs(?T76SfqN^zqy%pQkqji6^qCVR6U~4?Q^Wo00w$ryM08Hbq7JN!^Vl7R~ zwl<%w)r#1XmW8aSu8=LLC}4Rn;D1VX8?#pduE=34w0xFd;V{R!SuA%=mS=YU+8lN* z=9i}DS1n+xPB@sN6|!qu3fQu`1+1{b$?Q)sc0K*`1A7gk0DlIpcnxri?QAh{ITZ`% z;U#~PiH{A`>pLsut? z*(rSI`7WB5cwC>$t_RMcxtP6W>AX4H;#{`4ZV6;t4A~Z$x@lR)it#P^b!acrdiV|X zZ$f*9#>*UR*?YyT;LSzMfr8zxEuTN{urmjE*y~*L_}CWOvCmTMv&8fhd3MGW1!_lo zk9gDwqguidYlZhg}**1YhuTmR@Q zpC4ruqdtS%vTo#11@KO^LG(j_|BUu5`lkR3@G5x_eFg9?v_t5J0KH34NKzm08^|qV z=x62`$~R^B_GAWlg4@yFL%#vgf!tBD2J{(ug!0MbC71`E;9sF}^a-9st3dx0pn`97 z_o43rJcsse^h5Z?IqDrFiQ9q$IX}e|A5!p*a}T{K3Z|AP)ghF)cu?-&m{f}b zBV5lpOmrXPdyJd|=uQ3gVZ*>1WwK%JRPP{nmEfK|n1QRH8U(n@J)gBYWt~lp`ZTSv zxjhix6KM|DMNL=>)I%(Z+1jvXqSQ_;9B*xG4r5LWvz?d=gge4o*qmnUZ-LnsZi{q* z?xH0uh&g{ejD>0Hy;&Q>;9b2Z+^HcRvO`gSV@F3I9@!I)!!I$$K5=a`eh(6gJ{*p# z@fbS?F0KCPt{82*ExbDs?!wybth&1<9u9}1(GJFHF!FWaM-|wMFxw+qdtGB2`!4p| z-WbtpqVd{DXIn>jOVfklW{rI$dCqNJ20FDfqD2}zB9DYk@tQyr2+wJWu~qhMS_f@< zcW0y-zZI(0;$Vur1j;I^*DM7@{n1V>9_>gA`vA^m^=D7jsYSaUig$LDg}cKHHNxGs zRe_zRvaq@}(w2xfYLRHCwXV7wKZ=nwp~iSucpgb0+|?Y9#I$G}R76u&dvERK{PeSp zv(bAeLwfC*e-0a?TN0sp2|gcXAIDrn40#TD;o>KhT>;cRtd{M>XEob~p31hc%^0ir ztU;fiAK3rrQ`|)8QOlWye}EpUI#ic-s$%Coe-DHW{4^G45!T7tz%9Z$SQwl;Su2Zz z`bkOSVHJ>m9a;r`@1%U5j%~IwVWRHNplgO}k zFUIY1TmfDxyA9e=SQ9Xfpl?CHMXodV$L}0i5I#G{`yRPxR|e13tPB#am0S|QcVGwN zxR;P zC7^39;}pNUZ8LRGGM2$lFW%>33#9c=^Z_&*G)A^epJdKcQE$M<8LPuA`C}K(+X%_$ c{3G9fhzNeakJtK*+@Jq`*?z(8v!Q|i189kxcK`qY literal 0 HcmV?d00001