From 18bb9e19c0dd234e454ad8e81397143226238f6d Mon Sep 17 00:00:00 2001 From: "Dong, Guo" Date: Thu, 28 Aug 2014 05:51:39 +0000 Subject: [PATCH] CryptoPkg: INF/DEC file updates to EDK II packages 2. Add MODULE_UNI_FILE file that contains the localized Abstract and Description of a module. a. Addresses an information gap between INF files and the UEFI Distribution Packaging Specification XML schema b. There will be an associated update to UPT in BaseTools to consume MODULE_UNI_FILE and associated UNI file during UDP creation that performs the INF -> XML conversion. c. There will be an associated update to UPT in BaseTools to produce MODULE_UNI_FILE and associated UNI file during UDP installation that performs the XML -> INF conversion. 3. Add Module Extra UNI file that provides the localized Name of a module. a. [UserExtensions.TianoCore."ExtraFiles"] provides an easy method for a module to specify extra files not listed in [Sources] or [Binaries] sections to be added to a UDP without having to list the files in the UPT package information data file. b. There will be an associated update to UPT in BaseTools to package up files listed in [UserExtensions.TianoCore."ExtraFiles"] during UDP creation. c. UNI file contains localized name of a module to go along with the localized Abstract and Description from the MODULE_UNI_FILE. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Dong, Guo Reviewed-by: Gao, Liming git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15955 6f19259b-4bc3-4df7-8a09-765794883524 --- CryptoPkg/Application/Cryptest/Cryptest.uni | Bin 0 -> 1888 bytes CryptoPkg/Application/Cryptest/CryptestExtra.uni | Bin 0 -> 1330 bytes CryptoPkg/CryptRuntimeDxe/CryptRuntimeDxe.uni | Bin 0 -> 1934 bytes .../CryptRuntimeDxe/CryptRuntimeDxeExtra.uni | Bin 0 -> 1358 bytes CryptoPkg/Library/BaseCryptLib/BaseCryptLib.uni | Bin 0 -> 2460 bytes CryptoPkg/Library/BaseCryptLib/PeiCryptLib.uni | Bin 0 -> 3938 bytes .../Library/BaseCryptLib/RuntimeCryptLib.uni | Bin 0 -> 3584 bytes CryptoPkg/Library/BaseCryptLib/SmmCryptLib.uni | Bin 0 -> 3552 bytes .../BaseCryptLibRuntimeCryptProtocol.uni | Bin 0 -> 3538 bytes .../Library/IntrinsicLib/BaseIntrinsicLib.uni | Bin 0 -> 1746 bytes CryptoPkg/Library/OpensslLib/OpensslLib.uni | Bin 0 -> 1708 bytes 11 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 CryptoPkg/Application/Cryptest/Cryptest.uni create mode 100644 CryptoPkg/Application/Cryptest/CryptestExtra.uni create mode 100644 CryptoPkg/CryptRuntimeDxe/CryptRuntimeDxe.uni create mode 100644 CryptoPkg/CryptRuntimeDxe/CryptRuntimeDxeExtra.uni create mode 100644 CryptoPkg/Library/BaseCryptLib/BaseCryptLib.uni create mode 100644 CryptoPkg/Library/BaseCryptLib/PeiCryptLib.uni create mode 100644 CryptoPkg/Library/BaseCryptLib/RuntimeCryptLib.uni create mode 100644 CryptoPkg/Library/BaseCryptLib/SmmCryptLib.uni create mode 100644 CryptoPkg/Library/BaseCryptLibRuntimeCryptProtocol/BaseCryptLibRuntimeCryptProtocol.uni create mode 100644 CryptoPkg/Library/IntrinsicLib/BaseIntrinsicLib.uni create mode 100644 CryptoPkg/Library/OpensslLib/OpensslLib.uni diff --git a/CryptoPkg/Application/Cryptest/Cryptest.uni b/CryptoPkg/Application/Cryptest/Cryptest.uni new file mode 100644 index 0000000000000000000000000000000000000000..97c24baf078dd9948801bc4f9297e50cc7da51d3 GIT binary patch literal 1888 zcmdUwTW`}q5QXQt68~Y9zO<-K3gQ6}LL}4$i&96qP08`;FBHncr#I%(TAyD5*e)D}EbJo>D2=DFQq z&+*aT*`1G;Z%)+G+jKg_(znc3#OFjgkJ7`EdTVu^ugKc9$j&Urul_*J5h$6@6VN|_ zBxZvxW^?M<&OG)x7jRnLW8v(;dc-f`JK!`_m%w01oo$|TtS45r7rf8yJKl$^0_%eN zTjCa=XRsNQN4gwP{UP&HqECo+cD&v_v1fL~IwpfOlXgPLz|dIgT;-(BxjahjrQb>G zA=a;+dDUK7!&>%whgk{P>sAZUt5*hGw!Cgqx=#}59R}UZ98`r zlxyBXk7DlFd%inoO?oG>cZ_xW$Ua6*hn|`{SYx`Y%PR63ckO~X!Y(xeLaBdDH%EB1 zJ#xZIU97RfEL@>hm>Yht-O+~GC8xqnd_HHF__RE)3+yqNLP&h>7CSMQO&L4*%11ea z*BQRb{e}4hC*rMdFIr~_HAMD#gHxi%DAA;!l=Jl7H?LpM8mu4j?%DpPU&1#NRJ#Hp zA+`%jWLGeeO475AMjd!O^z3tg>i#izo-(T6)CI?2iD8BDU;Ii}e0{3%?$t>R zu@*uOhQ@^Rsb_5C>B3ME;#FXaS?+Z#n14CzE00QCV_84+=_9^sB=GE zWnl+$6ikX->w{YmGu=m8>mwyHZo4_x;||Z*pC52(xc+u6W{j%-u-X(hLKKHWFXd9V zsOl*^|G$@D(pCJg@f3F?)_;h4$m&p;Ld`u<)AD>)Y9LNce+BS&JX?F`U927})Kz@$ zTDPe`=SDjZ)W5|th5MYYJIvk&<%YM?q?%RF7mHvuq>l#nnXzjZ>|-VtwWadxOy2LQH2zL|i)ZfR#F0V~bh1LTxeke6QVc%`MnB{Ngq6jM{g}BxZf= zF{r{Ac=i!HahFXw$3!VcS&OJo#OmY^=C63fTwh{TW+|$O?0b#VpvP!2q_33o%-S`_ zMnC<1I&PQksO}v7P4sV(c2}jkLr_L_1y^7XK%Iae5z~j|1*_m_N8F&kq$RhWFskR& Z2PedfpR%7fF_a7_x%&PzZ literal 0 HcmV?d00001 diff --git a/CryptoPkg/CryptRuntimeDxe/CryptRuntimeDxe.uni b/CryptoPkg/CryptRuntimeDxe/CryptRuntimeDxe.uni new file mode 100644 index 0000000000000000000000000000000000000000..6fa327953c278376f5613e63d71429f5d8f4a750 GIT binary patch literal 1934 zcmdUwTW`}q5QXQt68~Y9z5r?ysDKBA5J_vm0-7in6`m^RT1&Z9jw$5N(|%_+wi`+X zZ-An`&CJf6IWy~A|7cjl9OE%RXK!q3sm*O-d&s2e+Xa#}yRl{LuFz$iQd=U;Ex~&3 z^_hJ|mZMo<H3b>mhYS zQEXX{*wwcf|39S1!WzjC%Q3yS ztEuDVf>H2MtbN{R1fmYT)3$faP5Z<-hD`^bTKh<2x@*8L@*EHBlr=&wHiCzW|CldD zghkJLZnIMtYp$`%ue{b+TmG!mL5b`Pt$en9JZERvbUm(9PWrw!K>dKRXZvNpgf|md zJI6zty92yLb`BD;BtDyP)Cb3XzkTYbS2&|X5@z+Ay5JCBLRbUU-~L|LeD2Es&$3s? X^vGM?)G6!qD+Yd_{lEM#R`GHJ3mG$_ literal 0 HcmV?d00001 diff --git a/CryptoPkg/CryptRuntimeDxe/CryptRuntimeDxeExtra.uni b/CryptoPkg/CryptRuntimeDxe/CryptRuntimeDxeExtra.uni new file mode 100644 index 0000000000000000000000000000000000000000..584d9ff08d9990e222baf015888e994296665d8f GIT binary patch literal 1358 zcmai!TW`}q5QXO%iT|)lUjVfUw~G8XSODyZ}*JO zE-bg1rJTy_C!RUJE20Y48(Z3rb&4hbIk7@m_%Y-NbGg4Io6aunmPlt$K!3{o(w^H3 zdxdpYuU^|Jc3feuu$7^Jt;W=IRmL_uT^K5&!4|UuE<4`B?mYLly|o@UeOD{cup7fD z^Y_^jpTkf&)}Vy@?TL^kDV%3StYM>J zR~hcGRjbsdj5??4Xt%%)Ov+qq&pM!pnIf}VA1RSj`{rDa8unRV9C2y5{_tAN82`O( z1_vREL#dZ??O5y9Q+TR}LS39mSMk4Lr>v1!-xKwa)v+?Ang^n$)%m>AK%Dk}DXUJ} zQ;Rpgr*o`QUBwq(>o$A}D%yFV{tnL+?sK~CIC~qETi&2an022|7Qt#rA0_sYv1^yC zV>ETBs(Fkzrqd=^kymSgV0nVrn4g=t~_#rrHf|@(&+Le~zQm}?Qr;r6uQg7C z9;3yOzEaLUUuMuP%+CLdI^HkeN!>a6o9N#n?XD|zhoFq=8(f2(fI0y`B4z-~ODyNn lPN<;1fhAQ>8P#*@gEQjAPuW`k{ok$Wl)3NJ1<^Va-aqB1(j5Q* literal 0 HcmV?d00001 diff --git a/CryptoPkg/Library/BaseCryptLib/BaseCryptLib.uni b/CryptoPkg/Library/BaseCryptLib/BaseCryptLib.uni new file mode 100644 index 0000000000000000000000000000000000000000..68b5107ff1ee0247f741e57569105a17653a7c9b GIT binary patch literal 2460 zcmd6oTW=FF5QXQt692(UUjVfUAYP~tB5eaiKvShDg{NwhY?GC8Be#-24}53b&8Ah0 z`oK-AUEAaF%$eh3?~m^lt61QD%oFUjU07xVOKl6AW)5s>E1THd#@3^s(C_2ZVeSKM z+img*R=1JO@Jwhs#0W$iGau~GK3mPsX`6U`qTjUgRgNN4VhdJhtQpxJt6H9EMsJ9% z%dC(EBBu70QRY3(C(L#k=c^Muqu&y1YL|>IiIx&MkCu6@DeH11n;8eJ+pO)9@xY_@ z$+mPHseL133W^anWz6VJyozAEjAvMSK0C)M+_&ZWb(|q9#cBYLs$Y7p4BUxl?_%rF zSM&>fg;Kkr9TPK4T6qgiil=ahDfwjBW>`|bnqM&A_f@mC0@_$FcvNQ~mTI3e9?%!B zafem8xai&Cm)BkF_86vCj-^LV)%TF>k7%FS6P_3J#Gyt{?YZsHm%@}qTpxJmiGRgJ z)J>V0s&k>co#2n0f`;^_RAf4qx5SVWGMSzPaj$M3An<_p`&gr$HL^2i6|>>_f}P>hbX-T+>%>%qhUacF5^~v; zv4yXElrwt0!B@Gz(7tCzxOMhwS6N~WHE#4gP7%Eh6UY1)l=EO8N;GWtPqW literal 0 HcmV?d00001 diff --git a/CryptoPkg/Library/BaseCryptLib/PeiCryptLib.uni b/CryptoPkg/Library/BaseCryptLib/PeiCryptLib.uni new file mode 100644 index 0000000000000000000000000000000000000000..4c6b6171fd27d9c5d89b75a17a487db34b5ffe70 GIT binary patch literal 3938 zcmd6pTTfd@6h`-Rr2dB^^3qfRnkrG%sH$qfZLAcGuu;;d%3xzG*@oI&nm^xktr^D0 z6jM@{;<0M8gjzK(u=FWD^;zOLrMV!Tud5`%i zJjd+)#(0!y@>J1^Y0Tm5F&?9%LfaYpRqRKT-QC!@(OYZp#U&CW_@?n1&Ti5^XEuS> zXIC^8S_bhat5KS{-($DWx=8on%zRf+2XW2n8f^nK7j2{D-vGISWZB{vxn+N@S&x&} zQ>^yl<#X9RblwsPvfGX})w*Fhs1W6-Vfk*GJlC2TAd&znq z+A(vrpTH|hGhmjC%oU^Dq8Y#`4kIPc2-+OVfUojXN4|(pRpb@ zH?BFWdTuO+_wdzzmwfLbsf3x{jh%SOxRc@~8vWH9tEXgj9?zk^fxAI1t|zHi58&${ z(})-MayF>Q4i#RIb-|G-jX1!P$W~)HK(4{=-3+eg-;cNG>%`Oe9;r_9c8YW#i)OP2 zwbaaNn+2nhGAma1I{pn(-Y00V!dF{=PxZZuZ{r6zJd?8&S#?-H=At6|YUraa=XSe0_7FxAvw^76F28H-@JU7^Bq-wAO7TqG!2ct7f zxv=m37+X~MPdD)>$m+g(4sYr8#xTb-ducp+;5GLXP`LLYc|ByuN))FE?2UClDY3M} zT7^a_N3dvD)@sV#s|Vj0$`M~__5^p$mC=@#Elto=V-%O1^{wFU8TqZ{wm5@3ti8Qz zEF})!7}9e`yzQyyPJMO0wPe2a*q*tZk9@O;)auIjh?u=U{*CE&TyiAs)w%n7i{=RE z>BXXwt)C0B@H*YqR#uLz+_U7{29h%>Z4>*;-p-*MfxJ&2xxKT2mQ(&E9%by(Z<-+5 zr*_)$E8j*ssV$;u4|nWBZBbo^%$h02hq1@lgl;slhC2Q&s<{bACuwdovx@z$F{)Rs zYm8fI?dtgg**kXC*-rMVcn8lx!nFszg-$iJlkEdmBA2GcF1+$+Gjsg{ueN_@e9Mlw zy?K1MWaRqLjQ0yYwRT@N`_z**cNVvOiJUJh@0qXoKj9WA^)e+d-UmkQ4>YuqJw!{B zRRfRnj<;SHzWaVp$)9IvNX~nFtv9P+9bF<^L;h2~;MS5K`tmSO@~yg!k1b+UV!q0o zhj{YkUW=dSow#h}?)$>qrMxu1)CPuj P_N!87{Cuyzx=a28qc)j0 literal 0 HcmV?d00001 diff --git a/CryptoPkg/Library/BaseCryptLib/RuntimeCryptLib.uni b/CryptoPkg/Library/BaseCryptLib/RuntimeCryptLib.uni new file mode 100644 index 0000000000000000000000000000000000000000..d4b9b9e9ea1e6285db17c7c6d6c2cee1bb5a3c56 GIT binary patch literal 3584 zcmd6pU2j`O5QgWv693^Sy`iW{C@Ml!2;syAtkNd39ST>~N$fb5Y{%GXLjOGQJiFPP zBy~`PP#al3`!zfB&dj^B`}belu^kovFZfmQLmbB>rZI{~%(=1~%XlA)IE&L5)352D zAalgpFSLhgPMIpYF^?6JHSG~PDzu%lUPU{8i%z_aUL3^h7$Es7joZw0<5&8<*t)dY zSgzw8+9v3j#|yL!lI0b>8FNEcMOtBD6n`+9q@L?Ft3$?Rca3D0J7;zj7mO~@HbQgJ zHc7sZ*jJETw>V|rbzd(SPm|UYteqzuqxchxBT&ql)8d5QB6(58CgT+|nCZ~>WUGE%pUX8&k9}ozGOV5Z(MW6_1svD?~rT!F8O}VPIs8;S1{%|Z9BzFH2SMI zGOJ{D6;GM{8R-^0-Auc_zK2|&J*{|lr(_F0_F;cPHULMSX~EOogls*Q9{XD8{V;>; z<@e(y`ug!WzF}8Cc{^wK5Q}EBX0~unU6Tj-oaNJC zY>&vq5DkrOv1Go=H}joOi##jYSZ77u^01(sryOTyEjSr+#hi;m#>i5ui|liJy_yup z6kWUQUcg$hjM*haJ_q{~+OOhEe&5pb)H!-a)?`Z;ty=VSs$qGFqVZ#kl~#(L6{F}D zk)C*FmMI3-iSJ?uMtpy(ay4~ofo!RpGc=Tl>!tCn!E3Zf7tR>C) z%Mq=ZGgDSDG37kwe7ZO1&(mHbH|2ZCSDT(8S3SK2N47LWQ-e`lN;Xy0)l<0C?Aw8} zZN}aN4VIE2E3EUmg52~}o~p0Ox0cMe9$RAyugpiT#G;qUx$cVDdV3qw&A8-9THA89 z^hU}N(9^RkX3C#4vhX6^don9WR_SH(ZHt{tn6`Z@@+)QzK|X|QH*IgB<%EBUM`;I~ z&kl(8;m%(C#J5H5lAC?L?bHsK?ZU1DZoN*5u{Wo6sE16^(8RwBn>$GKljc2ove@qi zt$NkILA#U2j-Fm2d&8!p5};G=IM7^UN?_ zASOap+aSw3JLmi3owM`tug%zuivLr7Rs0agF^B`& z7Q9WM4d5DCh3+u^U^h;0@@u#Q_C>o!GRs{+9mXZQORNpCT&#^#u0!-nB-cHjqIW&F zOZKP9>IvS=pyK~09?fM6O^;*VW+{s**4Zzhj1u=8s&TLK^?5rJG_7hyJbJxIzQ)8| zC+`DjN4#tO7+IsV8+OdfT(Bx_G(#kf!%8VLhPHq*{F9`$SR&vM>M=j_tgw~4 zcZ`>_RM*^LGq)C_JLHh-87D)m*mI*0F{0FIBKq84pB@D<#nv|3Gf-e17wh51z!O&%L?TB&+YjAGk}%)~P@Pc?8(ypAmp@%^pI z)y%0GvSm(Auuv*)me#i>UaLJJ3V9z=)+0D}&Nz+0S<;-pT+s@eopOR1Q|@E#r@Fa+ zp7t8KQ=W%B_30Us>*+0VWKR<;H8C2OlFbyAdj^&oy)7`i!`{i?#8Nusgq5Br$jwZ} zsrH(F>&bqbu`{ON%6{ZYZ1f^I&s}47-rkPsW?gb6oo#tq`UT1rFw^rTGR4n1U3itg zb0RBOR_S@lZ3E3YNZY(s`300iA|HUYo4z-&a>BpVqpW?-XPb!jz)m-Q;@L`H!w%JS z=DGHvc0ktwZ|zj$gV<$lL$?~)LR0?^Xl^6XOP0I5iDI8?tlHJ;8tYctyL+~b>>XTf zc9Xv<-XXJ};@XAY!KN0v$@e}xBbTPfKC;T_GfVx5tiFF^eFMk1oz(3sFFA*H{JON$ zSnp7YJ@BN@o#ofDRL)z8bNMU&kC>VTFH`#B{IqJnW1)-g0an`VT4bC#ekJUQOP`giVC73b}t-K4Dl!@Wc0d*;KvJyqb-j{ehoQ!`us1_@46fdBvi literal 0 HcmV?d00001 diff --git a/CryptoPkg/Library/BaseCryptLibRuntimeCryptProtocol/BaseCryptLibRuntimeCryptProtocol.uni b/CryptoPkg/Library/BaseCryptLibRuntimeCryptProtocol/BaseCryptLibRuntimeCryptProtocol.uni new file mode 100644 index 0000000000000000000000000000000000000000..400c4675d0e5ac99a2266b23b9bf819e3ddb803a GIT binary patch literal 3538 zcmd6qT~As;5QgX4r2k=qH?~n|jkc+2nj&H)Rw0PhUYR4Hk|2-+)cWV!KJV_?gC7vv zD-D6&vpYNU&O0Ax`SZJEC3Ae=@NxFVF05yL>)H})+NoG-w>Gkg4egS7!u$%EHhbR~ z&;6QYoYib#VGm$P>0{pi{jG6%L}8*r&{lkv#*u>Fpm9W-8|QJhJqm}xWbdGupjWp$5p zWumZ_oqt+xrhlHs$Yt58ASqc36k%2-HWiRAvd~1n%x>3yd7e_xCZ6$mb`;Hh^c~r< zec;rQ_jSPO4i?39!s<9%EoIF1VBt1ralT%$cEP8It~L1Sf}u|~DeD$tKP5(+_SQZk zq0CG@%hC~}?#K#h==gYt7(b3jWG{J?J3~$?PohWiaEcwRg{%?kXfH%~5!wb3IpEy? zAR75BpMpY}89W)nio>TVqpCt)Dc=+Y$*86mdFnD9ikxt)!{2)%H>LjjxgT9yvDau- zwaC+f&wH^Txslf&YAQ0P%5_*)51CiV4{N@HjuAPb>bvBWDrJSJ$?7^0eaF|42k~jc zSB*N6?5ZC~Lz-cc&w=|QJ7xAIG1DzX@OQvIiGBs+W5S%8;y{S-BFAO_JfyV zB>}HG+BGP&cMFCA-Z-DN!Wnu^AG?vK$Y|hNF^hdPYFEaGoJ&BOptH|!>{rTN?JB;p z;{{9Cp7*FlxFp%jnGpv=a&>lYn;h8TS^Zws6RdHP@Lbi}hPzlwN5qFmC&2J+0=*PS};sy0_=-1evDC zb;x=RozhVEwwpW&xz=Q{g{)*`Gf3?sE89O9_t_C{y|Jp9mEc3wPIEmo?KPNakWaF? zlfOSBbGnO^K>dpE67P?gFQH}vYiDSvbM_c5RXYQTSQ4LlTeiTl=(FtWM7pNrhWer2 zX#?VV>^&=R{`u}a1@E;y|2MzG+q;6_x{JgJ&GY?fzg2znyRx(Ay;B~E+V!u}c2{ literal 0 HcmV?d00001 diff --git a/CryptoPkg/Library/IntrinsicLib/BaseIntrinsicLib.uni b/CryptoPkg/Library/IntrinsicLib/BaseIntrinsicLib.uni new file mode 100644 index 0000000000000000000000000000000000000000..c1a9ab31b2203ecbf6308809aa045877e435d08e GIT binary patch literal 1746 zcmchXTW`}q5QXQt692(UUjVfUAf6CHB-DTf)KTN8@Ko7J+D6JvPD0y1Py3x+UsQ(( zBqU^cFSD~}&YYdy`(GXFSit|BFR=G^X;Yio#161&C9;KWEXTUAHSGx7nJsOLRkjJ% zz|QeVZN)cX6xdhRGH1)}u0UC{BW1@3pLT&?MoH|N9YUIeJqBGIg2JXaO%C}Ehnoh6 zS%ZVmU_XZsAg*AmT(97>A^ua?KBIqSFYG0MV8_+$wH+~z9JdL40~10HhT7EWvt+f+ zN|$wc)Y!^3cj`&8pNz(MzO^3ezT2zL3g0E{gg*yCdXDKg@ReREd`Ec9VWG7u%zN@{yiJm33Js?&81{|Sx0#ym9wPmF1O{ckXg)lY7qDbQ;R9v1BkG zQ)`c7w?Vn)FJqK_VxKL9QJ>n0?GtU+zA=wbGeA%E3D$_}8Zru<#zQ-$53x%Pk5KC$ zQOzM91BVjD=DTLU?K4T{4vMFMM zmwXh{dws-LJAcrBVMV-k_rfBI&mpw$6;6#Fp+uj0Qp}T`cSo;Y2i8yc5A3k27k_8G zY8N2H>>Yv<+67FclJxANQ38*B-=VuF!rF3Qu3WvS3XZ`N!xpS|U$%dLU0W_6<@9$M asR{<c4eY#<^m zvU;uRs#mXHkH3AbSH01)~DF|c=c!-))^75{PfKIax6K!3(iz;^Zj|&^gm{O<27u+o7sfAb5K9D zfjwe;W>4%XEwbb7>bV^;Pr#p3(UiF&EJ37xx4Ovc*yT~i7H3Q6Zp64|HiUxOi8ie-fQcsDcKzie9 z9MB8Nex(@*6i-Y9#VXT^wJPp|vdCJ+D=1s&$F6DJjWB>Qt#<2qwMA*Ldvp1Z|L$hD`89em}ZoWbiYzRLZX@dFm&*4vA3 zvxFLA`?QTyMo(a(iJp}6>pih>&u&OO)6yKq8jJXC00@ z;JE8|=