Date   

[edk2-non-osi][PATCH v1 1/1] Platforms/RaspberryPi: Switch to colored logo

Samer El-Haj-Mahmoud
 

Switch to the colored RPi logo, obtained from
https://www.raspberrypi.org/files/Raspberry_Pi_Logo.zip,
with permission from the RPi Foundation.

Cc: Leif Lindholm <leif@nuviainc.com>
Cc: Ard Biesheuvel <ard.biesheuvel@arm.com>
Cc: Pete Batard <pete@akeo.ie>
Cc: Andrei Warkentin <awarkentin@vmware.com>
Signed-off-by: Samer El-Haj-Mahmoud <Samer.El-Haj-Mahmoud@arm.com>
---
Platform/RaspberryPi/Drivers/LogoDxe/License.txt | 2 +-
Platform/RaspberryPi/Drivers/LogoDxe/Logo.bmp | Bin 185398 -> 185012 by=
tes
Platform/RaspberryPi/Drivers/LogoDxe/Logo.eps | Bin 250982 -> 1611682 b=
ytes
3 files changed, 1 insertion(+), 1 deletion(-)

diff --git a/Platform/RaspberryPi/Drivers/LogoDxe/License.txt b/Platform/Ra=
spberryPi/Drivers/LogoDxe/License.txt
index 9370146336be..24570735ee39 100644
--- a/Platform/RaspberryPi/Drivers/LogoDxe/License.txt
+++ b/Platform/RaspberryPi/Drivers/LogoDxe/License.txt
@@ -3,7 +3,7 @@ The source code in this directory is licensed under the sta=
ndard EDK2 terms.
On the other hand, the Raspberry Pi logo binary (.bmp, .eps) is subject to=
the=0D
licensing terms and conditions put forward by the Raspberry Pi Foundation =
at:=0D
- https://www.raspberrypi.org/trademark-rules/=0D
-- https://static.raspberrypi.org/files/Raspberry_Pi_Visual_Guidelines_2018=
.pdf=0D
+- https://static.raspberrypi.org/files/Raspberry_Pi_Visual_Guidelines_2020=
.pdf=0D
=0D
While the logo was obtained and is being used with kind permission from th=
e=0D
Raspberry Pi Foundation, it needs to be noted that this project is not=0D
diff --git a/Platform/RaspberryPi/Drivers/LogoDxe/Logo.bmp b/Platform/Raspb=
erryPi/Drivers/LogoDxe/Logo.bmp
index 8b407c0b132b8094d1eba326d3e05d314d48b0d2..ee211a9f81b8c20a16303c5e7a6=
08376939ab63c 100644
GIT binary patch
literal 185012
zcmeFa`Ey)XmL~Q(GsiCr31)%~YJtE-0vAz&NRd<l1dAmyB~*ecQ4&{h2LTx1zLSzl
zOKB~&R8onecBw?Ef0(f&JmGLSV%jm$;hvtV>TdVgF>beKCMIUap2hnX_WTR&@B7ZV
zFBfDc5(`OHi5JNC?mhS1vwZj5`}X%9fBL`pr>Tf(Lnew=3DWBtnSMbW>*@Asmt=3Dx_da
zsc8AyNWZ@Ug+Hdh`J2Cq_N@GiXwQm2k9OmC<X2~+BmeMBwEvEOAMLy2|BLqD`S0=3Dj
zf1~|({XfyZyZ&$d{?BOt-Tzm#zw3XG_I3TQ(f)h>w`lmDe;w^#{BNUui~q-H|C0YH
z8eaS_qXSF-Eq?zd+Q0N)NBfriE3E&AX#cW*742L0FQVb4|2*1%@4t-pF8e3Z?xlYf
z?YsA%MF;Ntm(l+F{sn&jJQ}|DpGJG`{i|sBzJG$>Uq}0U{#mrI2l<}=3DKH7WVU*Y$U
zQT}U`{~BxX_58Qd?)(1hXm|zcmj7e?{+np;3jCJ;qiE0azl?VF{0jd4SJCd}e-`ap
z{_AM(%D+VUFW~QQq8-cs1m!;m2B=3D%{t7!L1@UHqbe!q%#t^Cty_x*nw?OOFG(au$W
z96hu0kFfsx(T@B7Ui8fU|9SNE{r@R`e>ZyS{{J}IzWQ%RPp<wZ`tj<oq9;~=3Dj^C%z
zw$&d+L#wYwrPc36KU)2EG`RW=3DVE2CjxBnTq{V(`o-Tm*PefI#jZeX?e-$ak!|7!Hu
z{VzquRX>Tgu6j1wvg%T_dF83-(Us?-AFP;+29}RU8+%5g{+@%;_wU;mJ#z2vXv4A{
z(ZfrB9IapaRJ3-<P_$<8kD`Yb7o*;LiqS*ekD>f{^kCPc(fxM~fVL%CefOs5fvz7!
ztM2Rrtv_0E$NFgHog1Q6cRdoV?&^=3D0cRn2TbUqX<U$h2wYoq%XK8W&z(Y+n_M@tJU
zq9qINi@I}5qpoasbmxC?SF|XzDC+v&-O=3Dx-3Q<SY9xaICsN?stQ7+0v`6z{Tq$vDb
zSTjlymQh<eit=3D$3b+kv(qJ>d(_gzuc-JOb-Ed5*2z01EBt#}|G-M^+Y>iz!R(b`Rm
zqxFw2iynFGzUccuS|0U3u`(Liet)#-sRyFIq5GpB?CgzxxMxkY<-oe=3Dv7?VfKRU4~
zdVFGIwC(Jp(T}e@7HxlND0=3D42C!?M3J{|4)U{|#Fi+$0aPxeN`-yDke{hg8Mske7U
zNB`leX#amQ9_{#WUvwDxBlwN{>U4DEPftgO|I1U+p}&73I`~J&qXYlhB<e9neswn5
z_2rT1@UPBAhyV0EerKaYe{wcD@JA=3D3J%9T@j1K+!LUia?7or1yd^XzqchT<Gm!gBe
zx)>e!2j@|DDcbcP9g7b9=3D1O$%*O#OH|KL)z_wSvJ_W$|{e$Pe2e|$08_h&zehLPX*
zo9Cn9KYKA6{te2%c>#3%u-*gO-amUO+Vh*2qP_U-{_~%L_Hwir>s^2TTD0rWUIFdZ
zXvd$w9_{>#H=3D><bKm8YPML+(_ccY<y^Z|O{cDjwgZ3J#3a2tW!2;4^CHUhU1xQ)PV
z1a2d68-d#h+(zIw0=3DE&kjlgXLZX<9Tfo~TAUw{1J)vF(U_~ED5zg>3y&Rg@@dzX&w
z+q0we(6Wh%70Z`>fAHyD!-vkk{?YHe<KF@YKYa1bQ!B^wg|UgQ6}=3Dn!``2vP(7U{Q
za=3DfFxV{!V><#)aXCjRc4aP{oo&fG{>??4(U!$q=3D6r#G)((UB`WbL!>aUH@;XXP=3D(i
zF`gaYV5nCi@12lBk8HW8eL?B?d$-ik-$~_H_KxQ|`->j*-U*o$M?p%ZOc)Sb?`bdW
zIDdPaJda`U_1ScG6p_ye&j9aCCg}$QKa2ozq>BT0#Y>Oh-W<<U4}5;AtL>gt5mByi
z2lgr9uab`h^-SmsR1B?ZFC4lyPX>Ia#e5C)dkMah27u>@IfjDIJM0yf)2S4@CsW*z
zA35~dcN)6+aQ@<w?7AUh40Ii8TQS%Pc*^E~U@rW_<^bzre{Sr|eAw{amGSzManI1!
z1XJKmkO{kz_e+>}0?}*J>7jLPtFL@_(VMI1pYDzCc$}f1Y;du|lYq?5K*1;}thiw)
z6PV9rhL*%ny+2nwzN76gj21Q*Z6hn(74{h-O=3D#H<+6*VNlFvk}@I<D^M{}pYqX5py
z?dyBu)kDBfaASdliHIG+E+N*+s)AW2Yy-3gqY`*B>C%SysoVRaGwq9)C))`jA{hU|
zF_YfP5+@@=3D*OnX);HjdKLV}YA3x!KF)&CvmKM~)vjrdwT6L$}HgH_nFo+&`@gTRQY
zunhu+z`gOI?>L|{a{rrM@kZ?ObFQxhRnrTPeFNfU?8_Y`_%TS(&~`|X$rLxoKlpS;
zCVZEf-@i9s92D>hd;*D{2$Q<Sw}-ZMkM#(aoQ%qyV_A^!KUBEm-S0A{Gw}Vj{21n*
z3V;n{qA8%cAjn4ML@&s7Qo>n5BH3hshC*qg?YS8k@!e&;5-;X{PdWKc4N)vZt_dda
zSbw0zjv(A180zW*YgOurFMM}VZQ1jS@v4&T^c$SS*vA61N`#pKjs$G0_K0+RY=3DEN~
z8iGw7h^_Ft_*~0od{-Ht&8{v9*Z^$;pFqV)9!>IM5x(9L4mql=3DU$o@Hisau~?2FHT
zS8;98?-yb}*SS^u^~4VVY8Fw45Jx0KJIqHQkVz}=3D2XR=3DB8Nc?OitFRs2LjD{;{65P
zn)`{YPeN572i&~_0@#EYiADU-5vnN9ODNi|?BMG7wPyOi<8{BhbG+nu6S6SJYi*D+
z$ceDcGKMS5s#TS8fejRt!v-AGQdi;jRhfoScA#xYND@9fcoKdZ3&d5hT82xpkS2Pv
zwe>RSNw<Jo|EY9o;iC=3DJf7dIXivx6F@&{@JnzILzHUnN2uov_Ww6P-Etra%KVCG?)
zGfBo!eC)f9b0hyVlL}_SD8w8_767VEIm!`8;R<|N$+CBp<+nlx#c;*7Wwp-qXK!x;
z>h{2;IJwMgNNI_yx!Q*hKpUK#@snv?m~;9Goxm;upOJiROjs7jp02C@J5StmG@aoo
zW=3D{cVQ4DQlt)B5+9uvk1@LB2GVrCio;>TJ%D1fIJKl`1>x*h=3DA7aNecfx)|gU?wNt
zlvf2XbPnWjSwKj8TlD~l0e8!=3Dfhg*b&K>pCf9Gl27YEoqY<+^!px_1|0g)9Br!odM
z<|%c8YLg9b(l5+d&kl6lz9d{H+MZhE_!B8WD!?4y1Z`vS+Q1Ts*xw05102XEGY}<8
zhGge%pNOl2|B-e-^J7RU;(?p?f^1iam~v}OB(d^N0;GaAOhklO2^$l2hib9V97N%T
z<8{=3D3=3DSf#bHYlKpQ!>}s?mLPGv7KJ?g2N81!EYezG!Hu~z^#t3I`xwn^C!RaVAliS
zRLp%Eg)gJj{xuH)c4C-BHUKX(C?~{iR0#44+|@lSQv_2c_k2C|w`qIh!35(F(!R|U
zZrbfkVB{#!NGNv;!3B{7g3Y`df(?IU=3DEk{u&DXcFu8Y8qxB^RydE)0u^Ad4Y3LvAv
z9Uo#1Qn)&Ryd6uVw9@baC;MQ_?UT@T!6)%R)^55oaEUczmUwe7A2E!bQKR~VgUYRn
zZgm_ZoH4Hgvuf*G4~Bj^J(!9QHdKGR;$oq&1*ajnBMIz)7}ms1;8nt!<dclB#zK97
zr8f(LOir;syZ1KAO%V8Kcig3GFgmO?EV&cJK4APi+(|}&vqHEVznE<-Xf%W_%A~g~
ziEr<FHbI|N&u@zF2I7QLxDw5fY<d^81RS%x5J#^7WBgl*y`jcVAentIv^G0-`zDlW
z;79evr`tLP1_7GjH0(n-3rK_0mfEc`v^~zz86k(Y<v|<l&liq-KE3wa98vVb-jRF{
zf*bg0Vj-Sebxl4{I05+{QqoHZdol*}*>NmO#^A&G!hze@9$OBst0!0H3#*Dn2UEBT
zO9Pa5yBY3S8pvFQ%>yy#oWwu;7dK7jI*;8(zh(5r`24<g*}^J7Nw9tXVb0(#Z-I$1
ze%>7^-*$jvjDuU3WD8H9yFK&F41IE6zkFm(F5k6ob2-QX^Hxqhf}CM)KR|6cEb$NQ
zK_UJd?rv}2e(Gm4*L}N%5cu-7)6aAl@|`{GgAn_|oJd=3DQ6LRIqqB^ZoYbFW{x}H9J
z8~i!O(x<N+-_t*u&v&kPc#}iS=3D(a4o!9re<k3LCdw)Q{RU1%@#>^%JZ$F1xB`06Vc
z&z?GQ>h$?5Z(jS|dR*Z14}Sjo%dfw4?aS8DsNwwb&F4?=3D*}Qxdub%1b?(N@#4$u)m
zIoy%kx~XsZqRxf+{6z2eBbQ&D0ro#Td+5oP6NUDXLZL8{&mZl2c>AH#&;AZPzy0y6
zrw{IVX5*sq(T=3Dh4?yWoa9+^o<)^x(xAH99?_<=3Dpoe4iNS0hOf=3Dtww-bN7vxay$8=3Dc
z|G|uq`}oxMg>9pYAMV#2#~$6(*V{eX-u}R@Gr!H3DnEVk_!El@?MFMid-?_jHV+K+
ztynZZvS9L=3D^D~Idnl4cBv#YOOzHt8R=3D`)xu&YV1sbn@hxv*#~9`^L4IpIZL-@WR}p
z0liu!Y)-f}!RX37Jf0gJI(@aC3Ez6!^-BluX)AQE-#n;!8T%vQ=3D8_GQ@%W){%_E_w
z3%T#x2`4|TVP`Ke3Y7Z0bA>&>eGk#Ud1!UK@Zt0i-3vc5wY?PF1GS-T<l?s@f_BDh
z@O}v---S}(2dfo1>4DKW^V{{{z?B{Ok=3D29pf<a~f=3D8U^GbZ`8vcsIswTyhJ0wdw}i
z$4uE~PD<TvOV9q{w<BPtx8hPM?%X05c;eWdVa7%Q)^MrVm;DyR)Tyk^HsM%VgMffr
zUoeL}4)+Fo;x)e=3DcdcAl6)zbK4#<AGfFx&pryUbfaZUEE>HG4=3Da$L=3D?ce8jhuY3%r
z;D^1|3vwbev^4Jj_P^Wj^<sAAV3_7<c;W)#$3{4ur@^iG<4@jLbf=3DfTKd%Q45*uM|
z8TB$%BNs!qE8ai*1DNTpnLEezgW2&xVeTi%=3D#TvYeI$8jftE=3DRW^eJ+SnrSaYx-em
zFu~H0Wf3DHB+C^y<;K3v_wGJB**?H~*aR@G*H00zexNscmfaoed}{7pJ{Jk6vUbP2
z%pvmpX`)QJLDQ3)i^`#%czEVV7;~|)^|s&ai<jCRghCuHxZTw&4RN>vZ?`VEwG-<0
zZrNc0gGojuF5P04)fFIEmlRXEJHMST*?o0MZi~$<A$Yjv9*}HjpIB&dl%onY#r6}e
zckldjzBMA_%JYox9Po03Y?M3n0tDZW#t;~9{}$}HO+n*qc4EjwyBs~*-V%8BfprVF
z27c-?mF{|GikzEBxD;M7WZh6+GFD`#NX)@z^9q@vHQD_)(aP3T?Ta@6enmQ_Oxh~c
z5jAFaSfLIb;X9+5^~-MMX^0~W4O)h~63kNQYtj!icLYWAg%_RUr@v|qmYc-&#iLo?
zm&OqHU=3DQ&kFSZ8s-6yUzG`4iSag!{pr{<~dGV-#p+z)0b-4RU_6LNuJFu(MZdJ=3DCD
z?b@9Mp20FxIaWQDbIAY}iB8eCboy3KrC)C9krh7c2ctm?F#D8AE~MZM*Fy^z{^Aya
zJyq?y9b?-FXBf6LUz1ScS#XGMgrqHV$C0VxZWiU^-gUHCw$WTOGN6nB%8fv^<)|bT
z#M1c4x8;3KKg)NPXs7*aTO}u8rmPP>I`HKY4X4Kr%nt2uuD<@l6<jPle)!mlGv_Zq
z_uAVtzoKxh8_#<XOIew$WTs|P+jp~S4OuZdb!f8i=3DIm^r=3DT@(^cMTy<7#f0ID_ZIS
zCHt)g@kBP(xzpprGq&c-_s$>OJv2Gmv0wo%7A{;^DCF}a9iyvv3?F}fMqBf%6aBJ9
z<}gR2!<54U|4CyqgYf`@tS7b9mAmEVuK?Z~x$aVMLzdD&CfMjcRaL9Pt5ccDJu}1q
z?TdRJ9BW@Vv8-=3DkGZoq0{prnH270^4NAi>D<1e;65Z(v=3DoHPZo?=3D~Q>q8v~`)xjrf
zG%9kXuKcav2K*x5<;T2kw*?S~gT)VWKDTPD)3GGVGMR~);Q!8<9fh{>o_+<TCIo}S
zL{d%P;zC>3flIA@e1Y-L1n4!VvkPFodV;h7y3~=3Dbgy~0l)RxA_ZuMT!C!?KuPp8>d
z5$JM?rZSo7i9=3DQvv32~vzObVsdk-%wAmIQSlJRf%Lqn86Qq{VSxaZK@EexxxodW?%
z8w0Y|PLw;u3MR826m_}JK;kVOz3<i@2mEsBQAIzXB?iLA(Us}8tzswW>aV!$V1U@+
zud~JY|M+-UZoJ>lmPv|hD{D>E;}MrtBl#UyrtN_bCK>;JN4q-EyMgCMG%aa7$PshF
zdzr(9Ez_A&e*3g)ZY0A~BPBo&l!+z(l@upNl9?h3aBZd)xaL5*v!(6tM~6q-dm%;0
zqb2763P7^BN1-wTQa>EHBQ8yMa{I%@YbiitDi$IL`5--Txr@|{Q6QIxZt07455~H2
z03gsN8cw4;K4~PATOFJcQ9g1OX=3DVTOqa#P#`UXwBH>6k_Tf{$TP$d?+H~R5=3D;vZdZ
z8hanFdzj2L6DGUe7TWYeb?yP&^0C2@jvD-9ftFiu;X4)2<D>)afD6PtAd9@5G8>Hn
zwPZ0KwXoXJ!%ZP#<(bj84apvsVMUofl#n3`f=3Dgs6r|{z7qWGz1U!wYQ%SxH-&4O*o
zx{NbO)*;5qR^|(?qOQATZ<PC4Ze3Bv$~NIC`;r_p@{rwuU{5O88Ja*c`BT&2|MsRB
z-yab(rJ=3D*M8KnO<*21fnNTC{4Gmp&R!d$bLU2X3+X=3D=3D#@6K#boMT-WRDtt6pUg!tz
zp|0^;bF1iAcXrzB;~=3D~31Y9E^kZChVts!FtEG^}mPZ81awmWcz)=3DmYeD;emN=3Dmo4C
zDeo7QRV5hHLmT5YuQ%-B{bRC?mN3>Omj&fK`q>knq{zJik$p#H+X_1xYPgXV!|f$T
zg@WHLq;X-F#{fV*HV$&Z)?^7TrP2dqKW}E@Cr@N;pT|2iG<2jS%TyakB;bdFYfoi{
z?#ecN*~94tU>1xnm|+skW5#ARVr`z1o0@D0vcyzutf856bF90R4NlSwTA~<|?<itM
z77*rMMHCsg$I_bR&CVEH$#>w^G`eodGF%D-YDL!~pHygU*a$&)(;$2WDc=3D1}eP6HS
zDVI!?<YKMt3Ro}cEGz4VD=3D%%ZuRngJzJeP_y?%eU?pQU~4G~x>lek~Nm}ea@&<dc?
z2ktp4gFMzNGffUvPsTkwxX_`NNns<lrX+|B*sB|i!#fL4$Z&EX8&dw>59%WE(}K=3Dn
zKwj{IO_=3DA(4QHM`%Fbk6V3l~QD@`oD>4#xwwChQv-CzTl2I)Vc!}4(XrMwAtU((G^
zzwN`^Q^pWNDVX|9v~pOeM}tb*0_0g|oahMNXjK1&Cm(fh5SryhCBRZdah72hILQgn
zV11MxYM<q4+`3`W3h~oU91kfngQqagW>5787KWG65UCbGM1`D&PP)nN4_?KA!(F+o
zUJ$6>R-Pm8fcVPc@IWAui1EL)GOl~K@19Q8gVXJ)$dKfM;X}DV@Hz0z1y`^o{z)sS
z%^%On_5hBV?3Q8$OU)T(L{<@CAyS=3D<J}9--g#~7Q^H^>W9OQ@ZVHhOMJ;RmhGo-~1
z8i|BVnkk~RE?e*B&6B(VqDr_LacgURZgnX6C`b&T5+tZqTosSr+&h^*o$Qg1Lb%eX
z$~;{ogAWrAB4T2(oKE*GYV=3D6%W9{1V`iP<+C6q&!Wy{+eQ38*kGVBFEp~S1_*VpTS
z3vDLWdkT!cv*t>;LYzxZ&=3Dy*#jX8p`eUsm5c_xeZWLGA@Vj&`TQBzTESuQQ-?x4J=3D
z(Vp|p9FKT~KA~ibATVj22xO32LE-A#YwK=3Du3&GL@*_Wma{|_cN2EnwRwwoF(J>sq2
zsoap6eljAbMxt~+F-7`~BYd-Uu^S5aJjoO|ZT1EGjS3d?z<AA9#9E=3Dj)!%(t-?s{_
z81>$YBAi?fO_v)g5*|Thy;EG4pZXl?PJ88|%L^UpVo0^48BQ}ve9@9*6sjdHE8fg|
zSueE>0t6xr&9oX8(dU3Yb6#5}kpYP<yw&DH{o4<Z$AfTKOfE7BMi)VCrohFC&PBB)
zhMH{(N_Q8gTrD}4xAv50rUiSAB66rp*3JXr7H#6~yoql$-Z^f^SIJJX*%@r6edqw0
zi3P~)BOodUh9fhX^utT*KBf3vY}cinPpsB}og%L#l37#i3RJKvX7M5dYz!0}0;<&U
zgW4(KwE}s>%m(D8Rx=3DPenayhI_k#5%v6pY=3D8ZJ7-FVsrEQRO!Zo6R7{n9$NbB(3$r
zT89P>(M+3{%pul@I$C$H`IEw8yUya$B-do?UBfCT(g9VN4v2>j6jNd5i4~eN>7gla
z9{b{fUdNjCGOuE&nYpGK!cjz$Xvvg)B*J?TMsM0piN|u7o}pL<nN?i+kr0jaP_c|G
zcZ+R4MFGTOT=3DyE)jslN*jS(tLK7$zwT?(?UT{&T5H0MTvGoWJ$BKszt-qcomx^Mqj
zXl$avY9d^}q+%huiL-i<(1zICdyo6Zr%Z1*W&nJ;avjYg7{Qicrhr!=3D%ram}LdU#t
z-b{Mk;(E6#oVEjNazTS!c4#zzB^|<gF`=3D)(5W-U=3Dq6J3$lMMY>QAn|Stma(t`50fg
zRrgf6Vj58a8J0jnR=3Dq;$PQ^;BJVBeu-K4KuJsW%YE5t0aXpbDBX#oowN=3Ds4UR;mnJ
zRUD~z?d57=3D9h;Qfu|$HF8U&UXm(RgoZw5%VHE{IRXK0Eu5&3=3D9G5KNFdI;JoToJ~|
zqdEDR#~<x*fu>d^P)U~`s+Gr`yQ*d1sM6kX>ZEZNRWOCor6?0hTF8Eb0SuPNiGP(d
z>GpaXtX-qHnG3ENE1HR!EBOopmGh@6%c!Jg%Bddh#Hl_|^edOGdG+mZ2R1eiKUzSq
ze$d7Tbqs$>c9o_S1o`ed%#?Kh_)U3N!AG5aG{zA!Fkwz&phG|pkk#NP2@t4<9Ex;m
zQN3FSE|p)vN>HpdH{J|QYSB;1SkLR9)IvtjVQtYMMXCb}am6xK?0l>`EU)kx0NXRG
zz}|(hb%j{EL=3D!w!WJ$>svo~b|y4Y^$yT`&cz#_|d>fZv1w$tKjOI1o0b7!lOVCkEI
zE`*~=3DCL0~*{ta_>T9ZV9&7ya{7|S@x2tx{zv~i@7j0f%mRi6m@YIP4Q$jC)7wIa)!
z3@?0=3D#-H<uP~}<2O?k2F@KM?jtRNgPLiW0gs7vC~Yz>y159Y}F&N^G)3t3#!43};Q
zoq=3DNV2_MyQ#mNX#&3#+?G(tLOauO-2f`!?^#rIb~KX+mQyC!sH1vkZ@0a937$(Piw
zdS?Q;x2I<7J~hDRPWiIGCwRq}EW_ZZ`F&U4tS0bEWlJ5AV!qC~hp!)5OkjyD6B|js
z%I+sukdf3G2%r%VwnAbc7z1eRLhla>E`G0imUwr;7BcH39vw>bOP*P)Jxmi$S*Aqg
zL@70<MqZsezSBu~&Zi%FNtc7uunJkZ>ju&|GnPy1D&#~O$k(~@d)dB#ghuY1W*TcN
zQP5@rje%U?H4BI{K_I*SgGv#+8S>pVA7I;i)O@fZW9CtSw~$ygQ*wpU3Uy*JzjT1o
z-sp7tbfC_l{**RY?x2h!T5fCz{@PxFH@1(V@PQYDg?h)nyT=3DoO{;GM%B^LCX2^g_x
z1<O!3u`*&(B^*VrAb|;+;JErA>`G4J%53xnrO@{r9py?I!Fqx($5rL^N9#E?18iGi
z-8~tMp&gz$-&+D4Gz-b9kqvcPdsl63`-7><-pVDs8u1Q<6KztV@DStDk@O7|C7Wp3
zqUJ$4&7lNbkUzSoTJ`n`nJbmDR-qyq7HDKyQr&tABbge)l7$t6)!UY8J@ZofKo2c&
ztjcj=3DjhtChWe!{g-A%-*f+bxXt-(OH9Un0!^Vp-V>?fo<GSVtwG-+5DXg|Q<Kz)c=3D
z+G+9<12&ITPkk48Hn+k)C^67wzhw<?336#{LXjq(A(2Y2@2Rs-F)y$uLS7gNSJP#H
zpAnNyG)6=3Dj<=3DHaop)&~CmbN<2J%0852dxqPrVK8v7e&Xyg}Q32NFcsmQL&<8NwDF<
zCLS~Cnmu1^^;HRFu#Gy|mcL{vxm-{eIZPv`ATmJ@Rb>Xoo89l2U^th|d7CZej6#D}
zxjD3-HU>15Hw%+1M>2INU+-MuYk9`C_)UTfVuTr$ok0!MD3C&l1`rulT8*_ZUeuCk
zaHTTcHAj9Ic*+S3Y7%srFbdRYv(_%u)xt2;o0Y7|r1LlY?Hssg&rwJWmD6<89N-#u
znW<V57M-a<6|?Czg{yU9;0SJqvX*Fte_pWXijuLEDCMyLT7jZ^PCkK<v|uyd{i43|
zsf%3w<JI>AUGL|6AcB0Z^)tbo^t8bNxhxs#D{&_W+4I%=3DwsoAGBk2!I%jkik4H@fy
zcTE9AE8LS1w`Q8K&<vg#itE1iVaFsI;~&i_B@tvK2`yKJ+1}Yw{0K>+nYt*%4IvK*
z7T{#7ed_o^T#{tpezS2!q9{~TSU8SwSz;2iFu{k#&dd?t>6(Aqi*wI4_R)&6#T>^P
zmolzgXIQW=3Diod_M-VK58kMm+UTjNJ=3DwV>ycj<x=3DUGt`OEdS1$%&kU*Pj0AW}Q7B}#
zj@3N%@y*)q<g^FXK^B?aPYQ!J63iW}ROKoIKUi+~huyAD_RBbp0K!b$h?W^h`<RFe
zjb*L=3Dkr$>a#xK_E<_p}ir~z9dYYo)UWPw1Jjm~P4X%2RO)y7wBT~6vFwqz|##$s{J
z1|Yf=3D528UiY`{cKp3EMpP*xEFZZ`xrI7j;EjXnePl5UxVFFxncLNg;V*lfWP|Fjfi
zR;Zy2J5%YQw)#e%%$o=3D~u7>g$0@R*zc%`KRnFJzcs7b0#ztlT^W{OkD)IViE<*6}U
zhoP91J=3D1DtAe1DJ2nUK=3DV4V%)LZG0&^~VY8MPLgw1}P)RJfl(gIX;QEicAvSXc_KJ
z(&?_HzpSfh-xvj0h)WckQG(9LsgBsWoUk$qSfxbmu&}Yg&awhmZV+>sT<x=3DAf6#`>
zuST}FF)5TJ;4Pe(wIAq6gaHiQjc#bF>+vjzXZ@8$ih1dzURiDySkadWCeDc!KL1_+
zR>|v|dnzJKA}yY+dnv)hX^G+I!h>iH4J%lDpq~1Cbb7SXFd&ydUF-XycI<<O=3DHT(E
zPW;s5+6XlMD4119HX1x^mOW8#%T}vv4&_q?S1R=3DieDh3}z)Uww4@H7zro&@o<ib$4
z-c?6f^gf=3D(^@J%PxJwG!sx=3Dns5mOQTw>HjSi5eRP+aLmydytx`vz`2+i}%w96?lU^
z<69>47HYZWIz*(XP!^+2k}FC#_yojp;SYDXQ%q}Vh77TSQ-~S?3V4x2Teoe6ryKPC
z8>5@RB(K36pkh1x>Zee{?h1Kmkz%$$2LC=3DaK&0`I`RLT+zbkQ~oP5C$H810DA`)$7
z>(J8}lPd>q@K;Wbb+}_(33x>|e4@c_9nn^wxOpJc1CWL$YHvVDdgBG$R0MvZ2SI8t
zd2G%2P2?l*^+5}5sZyy9VQX%*#l-{gGEaA%_nz%*=3DauIQk!nB@A&f*|Xy6~o>bVTI
zrF#47-cgn~Ip@sbg^6Nj(B;r?z{@5q?BA_2cet}eJBL=3DaHGE~rl@YvrUoL3@?&@S6
zqkT<d3)O06`&iIYEumaYhK0=3DR+4|)aD89I-YY?p|fIog@#z#yz?FVOcOkf^LlN%xR
z=3D#>?NO`hkOqHz|41Ag(5M$%Y$qXmFxkXB3`R_B#86gPo4K0k6<FT<l$3K0Y$?%+3_
zRn!4TN(2K*VVsy9B9JwizDzket5T-7x6X;mmtt;#fVm`Np)uq32N^O&A0jJDG{acF
z;q(6i?j#0ufI-<TGY6K*dMj}mIN(@+e7<p)U&5`h?kiRpS=3DP{-TMaApbNG!Kx<Wcp
zPl(9I+VX`7mS~)8-mv(?I+h&H;?6sBNou(;qr&i#P>`+0mQ-s&fop5E2X=3DL|%!zbp
zl<JUbLW~x9x3Jc|H$c5me5C0c=3Dg)_S5$Q2KOA^|La>%L-B&pTv9B?aujfn+LBg$f>
zy$0E~etA9oqfCb$_+x{_2X9VUHX*rimc%Dc<IgPGIVW_dZ+wjNze3DB4K}!yoam8I
z=3DLF%yj>)74n!+DlTp+v{x%>};kYV1+-oupbzS~N*&PnT>n=3D8u(tRO%#>c@Zd$=3DKcc
z7K22&2Fjx`SQy1irUX-uohFjx^mxtfb<+bnLyi;L|D*|KR&ddxFyO{I2B*cIS-K@#
z_oQc{|FYsgAcg@C(KeaUdnOVn*i{Q!Ar)$=3DlWNJz=3DH8DappE!dm(Hwj@Z9kq#H%<0
zki<`6g4<}mbWu{RTfI#q8!c@1x`V{kIb_ZhlIVguD8`S@%12mWYuZfgQBn<FQ!x-v
zW7@NR`p2ErO1`V3l?(DriFGcPNu4(p^t3?QQOo~e7y|=3D$>a1<BpLi*YH?1hC3(<_y
z@pBJZ@?;XB#WNsh3e&yLVh+%&>AA`%g<@&f8ZK6atG0EpoEB&B)#>KZA4Sg<cox(7
z(S|;&G27#3sltDb1oeU17z?X?4m8Zcq$V=3Da8-u^`d4khfI}8^u7v>@1M>`Ot$R(kq
zqNLNnkvjME%@y*h_Lup<jwN$UCeR9}YXt~GyvWj0Up#GKyw<_vUnI7WpDr=3D+Rdm<n
zOs0m6qyr#kQRm^#410%_$^=3D=3DHyQ{paEF6z<9HPF3D9a!)d?469Fe^eb*F&V_Z}bg7
zZyv=3Dv)8qv`rQ5bPbC6Fgm(xZbTG_%&iryaE;(ca~C>+A%A9bK0f@%dRi7F)vD{?l}
zAW*YvCfS=3DxcQiN&#f~@}r*Sa`qUolzBA+Nirrfz=3DvnnoATRL8@?8+OE|7h77nkJpe
zqM}2pEH%qgrMp|XEd613pYfa5iEzU&gjonQFe&!I#wwlxQdAf=3DB$a6r#Ri0qJ(o%~
zou~KVVvOk%)a*(V0S)#qSr%%jVWlzjbv1gPdEUC>M~fK}^2A*>V>Ci(j9EhW5j^DG
z*3t29E9!SFDuYWEk|b%|ut+K0tjN-BRs@ySh9&K|NC+VVk8KnLKG~Z;s<OvFiy`=3Dv
zh+>pcb~3bBBEfo|T6_C$@aeZGI#QrcLxZ|$0xYt}vs40#vPuh3a*wq3T-1>Qqyizf
z!_S*z#redEsInT5_t4vnY1Ra=3DXcG#g5p!B-670n7)_lE3KgvO}J9GdWSqhq1f)-R%
zQb>fd$s2w7C5rrRNnMi)K?Q?Q76N9TU=3D$#O{n^Hwy0XK}owgG|l;F<!L<<C=3DNy_N9
zF(i0a71=3DTne8{L1B*Aj5UiZK>H;V7ff{PANo{e)W89B*|Lko5DNW)h>Rl7Qe($z6O
zoNGt&R19}<!Bi$_!3dNssvNp=3D`W>HO%=3D5VYiayi1;9vqKq$=3Du+fMuwW8WjMOHLa{N
zNgN6`8fa-IJu&T*TD#c+rji*&w=3Dxh!Ehdc=3DGnGW#esv`{bK}-{{K8a*m6-+YNmAU(
z<ppD{?+|?1*Gm9B=3D;gdNtF8^w=3D_E^bZVn2|RRn~Se%T7v1(d{x{!uLs21n{Vdr*Ve
zUOfnfhOWj1C)+$z&7$RCOls@Rcq95n+@lX;Y;*?)<ts?6KpqKJl^%$9eNp39v*KQz
zTZIsa;ISB_RLGZ9lg>jsdd;7!GZfSWRDyzhRb9f1wj(XPFYEx11E_?$f;Bpy3h6wW
z5REJ}11XbQd^5f$_w`!dty(^>Yga@RTiRKdEn0LeXmYx_PDh-_20$)XI3+OYoI^mt
z^w)hhbVvkB_zz?gL?Z(QwFFYB!FvyCOggOhZ%H&3K@J5-5RKF?sY&IJ*NC_w#nXI7
ztLzzVusswT60AdRXjS~o40ndF@dh|~rO-<D=3D|%Jb=3DM02{ew*){-qnt^96gqt!Dgj|
zin{vmJ(vR434KyXvO~w36b&xOG3_XcoGP}}-qkWi<a`jWuMS@=3Db3e=3D8DhKel7PsWa
zW)}RkY*!~8Df_CDNf(IbJqS7>piV-;@D<nyauO7m6l6JTW=3Dje$#?Q5e!?|qFkgO?(
z0;Cw~)N7W8a=3DQ1S1}F7e)7CQA<;tBi_)7!aar3^IKAJr+izAUsdi=3D|QlH3q!&|z4@
zW!4)HSIjxi$Z0RtD_LY@vVXiWZzaj3SFUN*wkx^2lJ9exA{*oI7!n0MBx0Y6dWxgN
zEkigr#(kK9+(}=3DBqFheh5kK?#Y&3kjtk*mvbe;@36yPEpO*$m0$NZp1>MvkID1?kS
z0C&axbKLt(6~8y#so1jZ?~WISIJqL3Tnl-Yp+oyVHusT|YkYCLEOB0PKfv4Bf{)A)
zBpL~WiW@s}+glvpQ*1e&<C!l@l;=3Dv2mHeQRMJ1_r%|_v}%!ZM{g0-gzmilM%<)|-y
zklpMyC1R;u1*0e=3DK<nwLe_!PkFXvA9`iZztuW5iKNKnqWqg_1<3VUClwSr%a*cO=3DL
zB-vH~(Td(5=3DC`!EdaP`Z%t0cfGrJ%XL@O3%c8%}=3D-v1q};Tj`K=3D!bJkC`f5BH|;6*
zS>rOb;h}tPJ>r6zr5&zqO+Qd*TXXD#sm!fY_7w(+D3Zg5oFT`lLrJg-10sQqVBpkR
z;{-Dmw~eg!ZLlKW=3D8?J&9yhb_LT*f-*MfGNihK?VdY#<gQSX_aW`gHbclA(bJl4~%
z(_HEFmc9qO^0`%q<~jqu+s;q25IdXD!cv`#0&sM<{l>OXbZ`KWHL<?p7Q?$my#eab
z48tEFy?=3Dk(KzUwt$rK!Vfa_AO$t8t3A>F9)$CrnDCkpKar1p-<H9JnfJP*5H2XlNB
z&V96iWsu8Nk<|(02y>EZt;*UFjbt+!AR=3D6<?jQL@BZnH(55`ORZCB{_QAJrMIt0MF
zx{tIq7CA39Uw-hy`7<X@p1%0%2lIeEO}aMvkb4IA<Y8C?Rr6S5z_LVCr~(#8B;WyN
zBWb>3hpOjFZL>N?eQq?r)rSDYNGB{{XIL0yhGr*sUV33(g`Boi?-pmk&f(RhgnUI{
zGi%*o*s90{en@J{di($riGXfp!~1`md-3^j_6|x-QleRwmOAgf!8e{aH*X$mw|8I$
zBJ9CKyS5|8IsYqTOXpBQd7zB7{RgC2K@R>h>Flg8kiWb=3DUQ+s@4)7>i;|wyTd~kiX
zg)@4y2kGT=3DXD)p>`{pxhd38arIR)TC)B-t{k}mOKQ3*6*PNo{Q;~tr9IfM~~mfH8u
z$d+p6i)-RlFd=3D}>M>HrIZ<SkjW8ZwWH*O!v9&P=3DovD)mJmd?j?(l8^aa#9&B2(*$A
zPj*WysJ2VW9y9!vWBpLq@6Y6X_*BEsE{i9(FbdeyHo<X<?3j9c$D2QG^&H1kEj5&{
z9&JP9;X6y2X)fB;w3~HtIA5|C5(cQbDdlF*l5l0#2;~Yw5)yhXR2V<2`r_8F1~st$
z{1f?HPsKpPt1OPj&(yqk@A`?p(L(n;?T>!_Xgdx+&;vswch<RSzJZ-{A^+ihWByG^
zA*@-&qB+4gi9f?zP;1cego9d<)wAjrmg6Z;-Oa+xmyh(f=3DQ>wB+&?hTzv01&_60ki
zuaWZRJ@Jx(tv%Vt=3DH;U#kLCT2RD5XZks3`msQ8QgVtW)Q%p63N=3DNE)5@{DfvML519
z$tuh1WHcBnUeG-Cp|4pvaQ(G&yZcuz8XxOi{P51R@6^ipN!-a@)yz=3D-k$LEV9e5Le
zNTv8Dyx)oL`~)Z7gHj&RCR+nwjQLixQMo&8mtXLsQ&_3Kv8|)>tQ*SjtVL=3DL<?A1P
z@Xnj>e^_Ude=3DB>B*`6xRLkA3J5sCE5cDUl3a)l>~p3SaCw-ai11L3r|mL+zU-zch2
zFt*7@w4|Xm$!yEly!dkt;5Tdf$wL1gGR!U&9+~4&!I_w@(|?G=3Ds_SNbXz5bS4$$c{
zDGv+Aww-zO@Ww8VPdP9XdxT6RaO!fyN!T_IvDgguq;AKEf2)$$%(ms`c0<-H*}mYo
zZOcm8SslJ7*0r9w9Is5KAOJ`x1ukKgO~l#@A{g}G(ndohwPG$)Z2!Ua)^*Q;^L%#D
ztdiPH!>7$#Qt{Q&3A~kpAqQ!SvP|DiJI(Z5u4|iu*hZcQxlKqO6k(?42oT_)`;3JZ
z4-I_7k&2&c$>BLOeYtcw;38hOXHeW!|HD_UDLT|<+g|x*gSoh%{>w{R6F4KTpA`!H
z29kw65myj!X^E(Zyu+RplMF{iX+w5qmt1CKW)<^^82jo;EI@a0WnqSQft2OF6!VF6
zOOR>DMEy5y07M^cZrfCZVhumdHa6uTtkoAj<M0xT63QZ}w%l!{?zS8KR;qy6wb2c*
zgyv`rFjJcS*HItieyn`MBE(@ae<*0X@$19!Qa=3D)tO8{Etgl-7iTUbf#Q41@zJ(j`Z
z#XH%?Zo*rE4U5D4YMEn(HLT6xWoxs1Cg~i<l1b50UgN73oj2=3DD9DI82=3DmLC&P*F`A
z6yTv0dV_mORw--kULAT4Vy4s^@2s<veq%!CT1OudOU_9#T=3D0$2&RLze`DG8k@rC=3D!
zeLBN&4P@i(ZF4+|fB)HYr;Z;Q-m`Ph@S)?U&R%-E=3D`QjYyK&aH0$s~i&M*oK3pF~A
zqV)!yFK*5+ocV2Fv+kS|xj~x?+4WG*6?T0ay>X|x9^7Ua!YZsy>f%!KhK*~lzj1Q!
zkH_2dg^tnjiOGrag&l=3D_Zfwi$L(NWZU+Qez$Quv@todYi$T?A2=3D8S93TjzlC!=3DcG|
z??;WzneUqGYgQ0)jY}BHVX0Yr<AUn<?Y5-%^CdkT)|^-&({_F=3DvIb}Ot<UQ(9$a3?
zk1xji`ykVzl$n8*6CL@9Cr-WkhYjqyeq^LzU%_TGg_cWDr;vywnU)0tC=3DI5UW(S%-
z<`NWs{K0$gz4ME!b3MCw0pIc=3D{<NiR4lWNAW^rTOS-ljQVoW9^dS4VfW^oqi{o`xn
zjt9g36eO8sb}be3b?4i*o|yW5Ktt%-{`TB@n}yJfsIwQ`oWxg5kM!O)2AR~NY|pe)
z&o^(JKXYWyk9)huktTY7y!Y7Yi&M_0g<hI=3Dy=3DQz7W+~A=3DBn<_GSo@pPHm+sJ;3iv-
zuX10?*UW~AnMTUXdpoi{gN7SX3f)Q-gba&Jx~HwM^Fo7d<<(<%#Y-yfu$F3U;?yIQ
z#Xcx*9E-PKYW^y=3DYtNnBv$dmrq|mvzw{Ku$|3H85;?9L5xuZ|)J3n){0N>B@TVM|p
zBEf7`MBpG`=3DJ&i@jt417_yk`mRYN;>p|-c0mfzWxE%YONVH5rdRI-O)@`)M#ivykU
zk`oR3_S4gS?S+SUVz=3DB46qS@<tL2MZx^f-E&9Ah4bbfd|R~TQpMLt1HNSVyQ;-l^P
zr_a<}Qfca-RpR}bo+#98;}SOZcg%ED4Uf7kAfp{1><ZC62+X9%>b*R^k%eC#%JIQQ
zBBi5pLFU^4NajUUvywc655(ig8r{nB;=3DVQ6!YZ;M@c}@zvxP;y=3Do=3D^73foUL-$lN%
zrz<|XAqc>llDJaBdP{e_aCd9lj>PS+2bRkZcSh0}5zG{4dUwkE1-u2pBuP-&I#4qk
zmbJcDapmq@KTo7l7~;ZKG|CTKEmA0-QG?U;>)Veuyi9fd^5G5n_VJZ{_Gpmr_}h$+
zx4*CJF672`oq0XMq+aIZQ>)uY*A7`wnR6PBu#AJ7!jLU)T-Y|V+lXH;Y(aC*7<A5N
z4ig8jX8L8Gb8W(k<~d@>8B`n&ZO_;9tRC$^cBu{tX_!fpe-I@LLx7kX=3Ds?2V1Zx||
z-j}al*t@a2kRR=3DwSpHxiE&}2*;JTIF6Jv$;qbr^~c4eA*<KrXaZ7WR=3DmH-<@`D_@*
zIc;M_sxyB2^?E+lryUugGen<$D$63z!Q%7SO<ufKPu$a!FpKC@0$0_k(Bie_Pcm8F
zHU<e2Vhe?<S!tpT1!>^;Nd0hVQ9Rse5~8(VfB3?ggTuSF_hG+fY;0_D#o#l0_8qzS
z&a}swpB)*?Zm=3DCGK_m~c&>99*I!oHocz?^Mt+#iVeG2l*BFASkWk*-XHX1ZENt;}Q
zj#10Bvah8po3C~(<l`e~<IT}j#W44X%<wa@6s=3Drw^MbL<_2QzM_Sv=3Df-+c4UpMUUC
ziy)mIZ(oC}Bh)U060OP@d|@k2Lo-7Ixvm$hbv7!!+p&c**@FNHSzUafM@oG&I%{*b
zJ&Ysb5zO>8R$Dq6?W$LrcQMA5P+pErl7X)x4GpI@ga*6Tcu|qU<9mA>9gtP(m_h!z
zrP&9<A$?*IjjJ%w3)U43yrCsiz8PF!<#|0iqLY8-A7>+WqLx!XIZ$7UQ}HA&g2ZeK
z)+u5Pv{W(Q!m|cvV|Q1E__or_(Tqd+CS0?Q6^zDZs{P)X?zA=3DY>GQp~E-se{kKw``
zQizc9>;sGCE-1KyvZ=3Du?ah1AV6Ou(Qe0yS11>t%a;phzRy!&!fk3$0>G+o=3D6V#Kl{
zmF}E=3DIy)b)<=3D#4y{6a%H#o#s~mrN?!n(DxBKn#tyU956(E`{gs$m`%cytxx*_`GN4
zaN6;`6=3D)9@Dm&Csn0~Z>yo}$mrTJ{DEQ^+<ikZ9`<!1{i!~~gn_H{m>Pa@L8tEb!6
zJsYoa_`&Y2U=3D73tAwEH(&Z-T3i5Dp|^uWAbZ9bG;QZiJ_wzytH47(c%Xu%xoh)ibN
z-SJD)_5Di)fCKNmH_Kii2f_F+{B$}QN&T~Y$-hKk8LV-V=3D&5x3vk7<I%rDxP`CdO7
z7~<|f<?`0m%EVqV%i#nnytXtD&tTNnwL`>@GTAM7X@WaL1^ij!G@Do^G6?(xLj~K=3D
zlD3~TmaZDSmZ#!K(nk_B*hEKJGdO9Wmz>im89_T`n2#;wQ|W0o0ADQ~x4ReUof=3DSz
z$)Q|iiLt~YOZZuh<fKraoreqOuXhxNv=3D?kTpvrd&XqYKh4Ht}JBxDmqkR9sIHGFTi
zb<D0w8t=3D`h!2*dyCJ3wj=3D1h|geX3i)BM#h9>qQi4lq~LS9+<lpY@-2naHRx!OS6zz
z#!`}5A=3D7OeLAIgXV=3DeAnHuUFw&TdGfI5{GfHYSba_9(u>1OgiP*d5$X4Bee?dSLfq
z_gaD@LGsYH!Yqf5=3Dox6$k<ZpVB<)aciDD#L4rsg8cXzW>ET^-B;J1H@FhTUEqTter
zJiFAZxU#Hu$x!<vt=3De6`2TsHf@QBNmBj?FF8U+JL;9;jP;IAlCz{#T0SkqhAFScoZ
zgQ(zDqQ%_7&DSlz8}8a9E@MJ#g1-O>awIsjweVVfcS-$4egnok?WP>!3-3Z4h>C^o
zrzO!WcDqsGG0MB#NGy%~U@iv&2jfk&MaE!JMu>LENL9Iupm6%3-ozlwY%4UI2~RDc
zFnDXsNn265;LCwpeMIKv0#0NH@MSq63466Jvf1Y3sZkx{Cr+C)A;{?>+zrRT7BT{z
zFePe?0>+_SGtV1Gfok@}<@=3D`P5}<K(xKi(vWZI-0#<8Q=3DEt-+6%Tf(K8fW_V;KR8d
z`f4bUq(|e58ZrwSo>r{!;Q~)&tDVb~ag-skwis)CGdJJRBwq4|wzL2)(W?qc#9QB5
zAzgl>+L5=3D`;2w%+ef!k@tOOf0t{w_RH0Od*G8BDP;bRCvT8wM?{c*z~|55h_7_FT;
ziuP`lr}WD@bF|ePckCN4Xa-q|R9Oo6yoV)n#p8|cTli%UKPHEixPnaC7uFB}8Y&J*
zrQq`ZH#t}hH^_vyp-%hq;+hBw#Up%_2~rZnrI11s?KFZ;s)kEuxKcLhDTpXe)ctH9
zb-h}sgq#xSqDe|LO|#1qY>uLX_#ihLOH3F|wiX@6LiXClpOjlv<xcTyqVmCE=3DG-MG
zy)#X6;+lnvwUADMLlH_GHUrt2U2$`JPQ=3D*lmo)2Q<;^YGXGYpMuqE9D12J>6d<sH2
zRr+3|SBPJ1_f~314N!=3DDIqHy`+*t)v<HEl2fPicbu_3c)pOkEFv;qEjyjRU2gUpO0
zT0)PItjgD{H?kOHv9qdotSLB(z1fyt;acs}xfrhvFl(uWe((<|5zK;ENJb1RjFEMp
zgVi!WlirYT@QQ~+_$q>ULwkh3wY8-t^JS&x7o-#8_jbxE*d=3D5ALI7z@HqtWb_6D1i
zGddBdle}b?CtEQ!q9ZVfWeNOGBEvVs6f9eX5Ic=3D+6CX<BkF;of;zjg)c8$L1r5=3DzO
z5XZF%rxEH27EO_q+JcQ_C2Et(V%?9{L*tWtB_0`_75<`K=3Dx*~ly{_IjXUgW5b9*M)
zQU;hYi2;edpf`Al+Bf)^v^%H{3^rLDs>Z}w7E41pAu?kE&{Vy{9l~w7ncnnrt+2S{
z{b*kJJR|899;s5@BgGaNG|O6f3=3DrE)YM{ODDcO&EA8@O&Qadgfa`ZY7`X?HUo-*>5
z+qEbOPqj5e*d@Uj#_`1N+IA|x*hcikXee6v$smIx^auqSi!0zt4Fei1lgMD$l5OFF
zOr=3DGS+D<U72_u-oD2sMfcm^x@A1D?nYzGRK6yWR)2EZ@IE4~@v4cJJ@#p3%bV{cd5
z*Eqjx5phY(k$yWL<q}bqN;UY@(tdrQ&1^Rj@CW}8DYwhmN-n&^ABkWlMQyB#WzS&~
zuxz}Q)9{H`2ithvnT{|CbxBhUkjji|#lwAsvT5GN8G-<;`#b8LhPcExC%Yy!4bD_i
zw~RL2e@(1bhVd_P9R2(wK!%JVD%+=3Di!<CIcn%rP5u<@vXQpU-35fN)xS6NJ~K!9S@
z@Ske&$6azUmh#O{IaT{`v5j~J_$zct2PI1=3DH)e8DW|@;TfCF3!E9OFVF<0;Tt7F*x
z<St$^vO@!2V*t_6+`O<w{C7_Vb#4%iEt8akQMq~(!i9FLPCQpHfCd7Wkf{Ela~70x
zpG7rfMlKTp!@#}5yE9sU`0`qzM{*>^l$zME|A3O6-Ux<D7Zw$RfFv2kj9b&Ytj;JL
z*3qvYWk^8iJ~Tu!&svWEJrl0ZM7c>YprU_~&!4RhIhFJd;m}{^i@9G$QziwYWGDsO
zw#E8cSb)RV^nls!)*rsyJEHeSqG8g#)M!B3eCJEln_H|iplqoqpslE25LtaOt`l`T
zCta{~upgib3wfg=3D>o+ZYxej1;NW-1UPNDayw7U&5gmx9`ylnmRz6Z4(vqOA$$9IZ-
zOcMqC(Iq8wk0qJwRC37)fnqL|+D_E5wjSxSopwlYqfqEECCsTDEKrevSrXZ8F&aAv
zITh;MNb-4KZ-w!2(*y_cY72%<W3Sh<bt(<t7!-bH2<K{Q=3DE{TEB#+g367Nbooz$K@
z+c2=3DTVI$SyOuUpkWRhd(BqwO&AdN`}=3D(KQVYpd`0`epYr|C+dz5dc|3E0Cd8vP@Zd
zMm}S47ggpa#K=3D}huD-jc-23<TnC<?El{}Q;s3$bs1wG}X=3DTo5<h2I#2VoMrKl37V2
zq24!K&*bP|@BzK(v5?S0S5i0xx=3Dgx9OSM)ciZ8SZ!C1=3DG>GC>G9K&;)X158XbP5lc
zm|E0Hy#_3D!D<p^i;Y_xN`WFyl2iF96OerqN*vbJl4OmnpOMGWb9b{#CKYbr8`rQ^
zZK#on!j0esRIKZnx+&r}+<m$MJEK3eq68$G256AvmvUT$eiBRAV<4N_p^eu4qpiH%
z@|^|t)OhGN7eZl_0-LmQ*TCgDvlbjw#_=3Dd)Q8w*lL&d@=3D2ZH`hGzw)4{)aF#(OBYd
zMW)3INtf+n0_7<oBROs+rP0DV<LR>pFcZoE;YJCG6q&_Z#E5yqg7t+w6{j2!kD0Cp
zR1A&$a6&8RaQEQ3VYRkJr47nc9Hn6gh*G6o6^Y7ZsJJ<3fc}8tuyN{3{!bN1N4+(x
z@>r&`vi^Kg5%uM4GM}kkc|lo92HK{MDR)%7Il7rv5^77Z#iLLTf=3DI`e$Yl-_0B?Z_
zOS$rHi*R>gnM~j4^vCc&(U&Wz3Zf{@WkU;83nY?Iz_JP~6=3D^c5-pbZym6n?p*4_<-
zdmpTc`$KC@LV^T~EuVkZH@+yOYy`3}JfNhi^wz?ZTO(iMd2mho0d);^<4>068HM?L
z;59Ikc1}%R0l->$|HO`Q!Rru6qBJtpfs?>RB`stn?ND$V(&`mD&NgZ%dn)|M)jrmg
z?5~$Cr{GG>ly!8<#8nRYs@(OhE2P*ha3jjLnB;V3>ODYq9=3DzODGNEi0Y=3DRUDGTX{I
ziyw26fH<4)vPuG)fV!^x(<)o17Ji~H=3DYZMdXeOc}ONm834#>phk)Yv6l4%Q`g2E1A
z-()hiA36G_v>Xjw4l`vPprdQu-P(3jO%Ig4<952o1Su5U9tu-p)yTQfAgoUm+zjFz
zbjyNjqa*^Z2cv_<0tE#tb6F90Y?K;|r@IofXB1K;*fs)=3DFeyO|_R9dYcr*q`S1I8T
zA+XB|s|S6`H-0}{yf$ICou%Mc(q|&H{&A#px}4+oQ6&<49u)hBoyZiXoD12{ufrSm
zLXINrr*`GgAdz*xwvs4`3RVXM$i_Q2QJ#1@bawsqTlp<K{4nedPe}=3D?f@W97l^cv)
zVvbEnY)Fy<McZmRzA|0CAM@V$02P8ytYxdMp^vOg|70usZgT2{JZ8zn7S|39qy=3D=3DL
zYjn!q_zpaSfW(C|z9NqHuW?0-AW8q_4K3Q3%1X_Y26EDInbhWKzVUQ8uZz!8Uom(j
z+G1Y*1p7!gf`Y;NIB@{Av_^fGaMhm2e;tQk6k{H`!KPn=3D;61BXwf=3D2F+|5NXG|Vlq
zIRq4#W9T72^&_rNEVE`*NS#WS;WEIeI|bOC5Kp=3DpXxwhNxLK{T>6AHx`6KlM->9E0
zTW6cqN<64pnoO7}O4RA{w4B1iILuhu#$07W{id-usw{YAp*~paT<(%NtJcz-$+U3G
zcp`S^1Ra-picp58(KRb@a$meXX<(VJOUo;4bsYROqdTV77KcV*0}zo=3DR-Z_V6G-&r
zvw6Dt>kqI8;K?F|oh$;Dm18X-qLRaedUVpoZ^N*9yGcxjB@Hs03olgp{oIJoQ&0<Z
z89-QC<k&@3*0oRBT2@J^Dje4!wuwOYOR9jO9sFU2T3&lW`FeT<y`VE1`V<hN(Ha@l
zY>&hh{Z?|CMjY~?7;-@jf;HdlUgX_Jp;Qq^6Db+@Z@Ln%Ae<VBvXMMsBw(~PvBw*!
zOrBs64%<eqRDp#Lr?VamCRw~<H~;mCc<imTc=3Dn&N-@+YmGLd#kiW_D`H)h3P^@b?=3D
ze1MM@%33ZMZxwE^#M%n7F<T4UU1HRj8$`>3*CGjJX>a<SkE`Q4^#D!wZ|W_dK<PH}
zG@(S(F8-)GFsVOWhS!??;Hx<Uq}$chPBJJ7ozD0Vf=3DTIJ-|UIPst&~ih8tHHawZmz
zODg3sx!j(C8j+v#xtW?o-e4Sav<hVx5tw~{!x&ZV(31hYWVh3*_{eLM`)JPM?e&Q^
z07iVx0s(5mETkwA2BB6BypyGfO$_Y>bB-ciqCi!?dKdUKcDlvK(~V`RmLoxtG&Yl~
zchSiOgEWibAdx`~VvqyPOnzuh&9Tt+^b*%!8MzVwpTjm>EH<Ceb5yG!6^4RQ$>%7T
z5hQ>#aP+;Ja48q}>I-g;IU%P2;mZYn`ey_X6lnvCS?G*Tr7A^=3D)?$I{@?oU<0Qh8w
z^T`8m7yPqsM@{?1vX#^4e%6l7CTvAR^&X9YNH^5iy|p*AVEbzgxYePH{Ly7Iic1yD
zVG2fa*Hl1%+p!Tfu(`z?*~ln<T=3D=3DY>e=3DEGXim%hxByZzX(<oi8UKRzWuy*r<?b7Vq
zf54Eh#{UTJI8X!XaA&2C(paXZnZC1Rw@#u69f9bUQCt$oQ*S8Rj{A_nNreF{S)xU7
zPC`i$0n*vR>?S4PQt6A)ML~AzabM^Hd>ooEVgHu$Os3Wrj#TPug(h(or%W&<p^;co
zsWPe(fvHpt{s(!$trXT)5^kn0lRnz`cI9Av)%s#QX!!WjHMkjO<ijg!F9qSseYO3G
zU2=3Dp`ZFmQ%;4bf>kvX`43iI9i(OROO=3Dyo?e1U`)W0GZH~s)8_+VO16JLuIzRNu$vj
zhyph8rqr)EaxqSxGXLXpp*al(YSLzc$~>q@EXFOrvBA25x3N_w*#L*IiD6d7wNozW
z96U;kQEvum<<6UcP*t9DO%zO3lfcDYac^jtuoMJ8u&QRe6C&s9!R2NfWPv&GOQ_jo
zLZFMnN%uPDJS(cqu~<Tx!@#N~xMu$c_?MG)8p~+Mrlz-haHh9Up2ib3w3C07!`YaL
zOO%<`O^N?ABaRko$;1dSU$vG5-4i1T<wbCw3}PZd9+L+WtR?cK_K(-Q2@0L?VK??Z
z!w3}ACXDT5kZ8(7t_qs2R81vl>$5BMnpU+GyOd*cD^zcP_D-n1+X#(RY9&hH2p^jH
zI}5+)>QN8~1p@^*;8AXxY0}rNuDt+xnTI0gvs7atAtI83I<tv(Sw7imBf$&Q!(vEm
zqjrW){@D=3Dm)$12WguZTmO(q{eQC68qg<D2O9kb9Uu7n}DY$l+ubR18fEj7o#xcjH9
zfhRL$tLrqOJ&PKQ*lPQ$O6RgA8Dm>2$z+)Vjb7)5-j@rQ&C4!?EW0cT=3DZb2GqC8M|
zDUez2FsjFmOTA4lsRf6a(hKU{c?9E6j8KI5%}BBX8+E1zunV9$(13sAHf^C4v}sdO
z!2k&adedn2`JaQDe-c?#Z(9}a%F*;x(?iB8&?^dGukDg2GT!WTGlPe{eKp5l(a*;=3D
z(JA9LHn|NO%o5d7EW-^X!+{M{up=3DDw7P%$GyOXl$yWwAG@b(E_{TGWQupcFdvXEGY
z9*R=3D(3|7e=3Do!77x4fMneBx(h6e`oddm*5Zaj=3D1#7XExf}JF7Ra>TAeugzPqFU<WcB
zuq!v!zAaC8A~^ywo<{4$y~53Xa+!26bT0WED=3D-0NDS-$BoK;3q+l7ZK;-n(W`_LfC
z<V!RfVzQ)kqE8{#w=3D76s;8qnm%8Wkn)lSS528N!2YPSzBgpi6Zv<7YkTa;!#`^%|a
z9fKZzX1I)#E>p3hSabd-iuRZH#oP?}o6?jl?~(;TA=3DJdi6Cn~P2@jkoSBFBT(Ut7$
z>6PHtKYLoDY(A!@provWT_rNQD(DSt<aYsX4NIcbUPtHSa%{#OSn|3s7l0;R_fNs8
zB4`?C-^%qv7$Kls0VM@gLekVbF``pC{R^Ek#ZBN?Awg0o$=3Dh?KnFdNoLp{#2Ad3u}
zlHa-2md1cDm2PkVaCNeu3~DA3<PN1ENr5U0SQUD}m9c@P#9G6YmZ3*gU3>U<roam7
zl`gf{v4kH8r0U%=3D+8FhUn&a^{YBZ+}34;Jc_%XSwg4eQ_b7){r2tH)ZD5IerGb(`2
zHLK;e8?RA8hl1mwrPfrRnQ{ft&3FNKU$A*-0m+tJbSO$Gnec;ZA1PKAk3_Ii)|Hzn
zmuaur`k&8}P4Oi~W`Lv;gQ3Dyn5N*?fbiH+JjzH*DVS?pD4_A#x2ZQneY}#d!3ln`
zf#J!VgrG=3DSVcKEdWHM7xLKgqRpj;nV9$H^_ckWVNr}}*waAsNWTD2hn!Tza{TFPB5
z0vq5*TQC;Y1-`%S_T{TDzeLa4?P^u#OA`3;*ITIGTsMHaF8OMq2am7`7Dx;cDa)|P
z*ZHi$Zalk3e#8|Wu>$>t7?~q7IPjl@nQ<CZMKfz$R!?b)*A2_--bsl-L@KLQ!DX99
z3wKD=3Dh!d|@u%(3+b4Z|DvW)j2$Pe{>QH|A$1$(V>0LmNqYH+r%|Cf@>czc5O&0$MG
zR9K>vX`gZ@YJ?4d8?Fdv6Tq&J4<MUsD3MV%t6y!wK0uYVqW|Vpxh-j_4U6mIe-81_
zwn%OS6-%(ltT9Q+-iq_FiM2sJ8rbeKiLk_)u%I;MxwoHo@Wr2OZyqICDl6r8SNGNo
zOULj8IZ?Dt53QpSTGU<#mE@l<<hvud<uTXfy}E$}x`yT~mnDg@VzWpE0uEd_oU6c!
zt(ev?uRZZ6-DgK!zQj|LHPE>m&NE4}LNLboyjrmWMp>0KFw?=3D38eC9&*UdY6`p)<z
zl9E`&Z)jq?dS`Wp@JG>ZeE&|Sm17I=3DK~HM)(K^rb{oxOnIrOx^Eur03NF0*L%Gh#)
z$>5zwiurAsG9<nA=3Dl|38o@4JZU3O(42RTU~mks1@yQ&#pG)ZPzgNmN7h!>oFsQsGB
zXB+UzZWH5syR=3Du5@X^vgm@(ot4Ib62lqAkw@et|VP_JuG<!!p54Mfj^EVK;Kr8+Kb
zXjl$Q$I92JHofx3>eyt(*19{?r?Ddr{?JB3*&cXnLmF@eLER$R>=3Do}B=3DG*|-Y2%J%
zO#rSv_0X!?gZ_y3e=3D2cUxxXl*MgO#S>(zi=3Dr})*{4vhd=3D3$a|&nABL^`$^y8*2s+I
z?nVU|W?5)%f>>?LvK=3DMXo5u>%K%v6KweF|t*cnB{U&+-=3Dv`sZ$q5UI|0g9J0*0~yX
z1gq6SzWYvLiRM(g&Rw+0`%0umU1);0Wa~VlRoC=3Dp#4nZ>_z@!RTPr~}b!2k&UqG;Z
zQf~1yvzczK<Rh~*E%C?dG)T%lrO2ynt3hJ05wq0z-n#alEf{3BbL%(=3D2@2zhJ=3De<>
z)!{Ums_78jqgUdz0FbRDfGeqtt4}`DkaK$D0{PV5MiUyOvQ2LltLsBO;urVgX+j-w
znF8to8u=3D-=3DpR4idoD7h`<QEQd1zwoDPD*M#L$My5!~sCdd8uPtiiChnW?_B5wEsz{
zsFn+%s~q)mZ$6P|Y$T(eU1OFhvb?cbrG8O!30$|L_MCeZy@uz76c>^vK?;O<`&#TT
zGr1zJ##n;Af?-Aa>w29PeKh`kx*UGUCU-u_G`44@z%f?|tVmcXhXSVx<8xLqAdhu}
z^Pd;<s57>JrpiG~g<1&rj-n;rDj5xEorqC}+)TLkUgy-`*Tof;dej24vh_!4UC^c@
z?&7OlWHgqVDKZTo1v*^7TVG_Z*^In}o%!HUJ3?hX3NFWIpeJ!f2m%NVZsp^RfJg}C
zz!(M}$)utz%gS?|H=3Du<{ho~Q9rb#kq&;}dj_Ifwp4Ua;hng_pAcx`dr&Es@HH>y99
zy|-kz2W)eV?x*`%4qqw^F(+<Vl^8}tlSHqzcWy8wd|;t~(1?&4K4^d&i55Ip*UX<|
zM?B0Uw)f&9+!#iI{yEE;Y%T*;q+p!Z#te=3DmW+rQId6glTaNC9Z<pQ_eJ8!S<byqLv
zM~CD+ErWOC_4h%@y$=3DI`zRGa7%K$WQ!!m%tauSgSK!8!`ppU@f361(EuDMawtIzuN
z^q+Mw3}7qQD{D~Znx-Y;A*l%S&_!$`<zi-dkf3(BtED*Q*&|u-S=3DYmCrM+A^KGd0;
z(d|~%e$+2reIy=3DuRF=3Dq@Z2he-+rBx{Z*Boqje4F_U?Vl8s{+SD6h$HhiUG!!xLjbo
ztS}6@CIi`e`oFAi;?6~amTJHWxl#%l1|mg+CgsR#XOt|g)q?CG2tsC+AW1VW4e420
zU-NPQNV}O`Oy|4mz9*=3D@)h$zx#GQJl3oI#pZ@5V_4gg^VZ{U;M3cIh`(+~s>4;?nU
z#mSCvxD-#;I)I^d!#nAR$E8YOT9*rXiYyC2h09N9EGNmf5j2VY5cVBx)0As);q!wI
ze$9vfXkF@ycho&TY=3DT&8Rj+Nx_Hj=3D%Q_A1>Rg)&~=3DQk2dbDC%})XmATw6#IaI=3DV~A
z3Fb+2N@6M#>Q4f&=3DLC0vD2Tm|q~WK&)j~AXxNc(+KkO4R=3Dui=3Dy5~D+571ob^(!lGJ
zeCMD<6o>A});TZSpxsQ#$MYTQ)_#9k{KJ}aur+dy<c4%#8!RHUTFKpjA~6bZsCVQm
zNTAaVwMZrqn*h*_)+}Fp1}12K(RP3Wu$V|p4hYo78HtGsh_s3faxX)*6-03Z$t<(*
z7VdgGpRW4{dA)KrJ+vX--1zq3VCd}ES9eWxb@eqEhKbluJC{{?qAA8eaBR^j@=3DR#U
zLHQ|P)s&NclB$HQY&88xA9msXE5qFT*Ab^6lMx8I9UG)dHNh5FtIptT#5Oc$eUndF
ze{p|y0|IHFFftuB2}rZdeEh++>EFkEA*<kncXYe*?f`RzWJR0BprZpP?VoMf(E5NF
zIc}IJG9&eme(BDSdH=3D5(Qle)l2Z<&0Ip4PHpp!ywKhvp(#F;HEI@m<;vsbsp&0c?V
zecxCv-=3D5!7_sYa9p`Jstodxc#da_Kizd;w_EWU9N7=3D*Kx&<Yv;bAOJUEGRJtTCV=3Dy
zKaD*(qAm*!(8?reO=3DzV^LnM(Z(Xv&VsNefXHQol)?t7bU^P=3De5mCMi8zM5bT2+pnP
zwT{)W+{SM31Kt}3a!??J^F1nHfq$}u0V8%c7bslfu8U0L;rB{g&}D~MlxXn_Ix)t7
zIkBKQ$L9SoWswmS*<lN7HG|im%?-PGX?+?uu$L3Ov7jP^az_hynV^FMy;H6tHsOa%
zf>ZrB;JL}4_w@*|M6q>XS*4XjHA)<Wk}aAW<@G8lAiy)1+Zg5r(3uK(ssm@OgTKDU
z3Zd-<i#h=3DhsJWNK2*vzNzuk93f^?IWN^LA$ZDPrh1q^s{YnL~umwZiU7T2r{X21Yb
z7|ddwC+xub{8wBvGW**YnizcJsy-R**5{z*3Os~+_{Xj!2~{CS3dzF8&;wvXQH@pQ
z<;=3Don2Y%5@yaez3>Qm<R?+aTc=3DFk-B;2Jp=3Dz^{6%P!<<*v-Pib+&KK^Ecv-ury<~u
z+;TT9Z@wW`SqtFlC28iZ)fx^qZE0pAZz|j9w4d3#eFAd44<$NLZbAvKluEI%CbtFz
zS*<B6l`}5hMAi6o*PMa6Q36iI0+uk?AU7;o@}R`{=3DDeeFxL_uBb_AhPN}Ay<xP?8<
ztv%PS8<x~OARZ(UQT9#%)ufv$+cl`f9LyRLtSNSnHahZcZqBW(-Jj+8BEi5(R(YXK
z&xr!70Eg3nvu}Y7c{K!LU=3DSVU{`P6U1NC{2-US)DOjv8qGhwdNY(gO<8bcjs6kCbk
zi<yDA@jmaZg}Ax)?IXN$?9RwV6}d2vkx{?E_XIK^?qG3B3Q#Cl%1?RaO05BS_n|;n
z!$gVeV^5OC;mEb`0tk5Zvg$$@xE1&SO192buUf_5#`0J9;RaG7NLNB^(>)8d06Av`
zCai>x3hWq^Z4NMcvG?fItFJYFe>jE#Ae9xO)XCVhGQq(dQAG-@GBFr~8jFq6Z{y@|
zuv{yQ`|Vo{HULxQseDh4kL0gNTmXA?iux_|N~Wd9*iN?jM`o#th^x6eSjw%dse&~i
z*>I6AGC2Gyi)-8XoxiN<<lmm+`|JRv#BVr>V*nHr3Ii5!+uUH(0E%K+teMnM$73xx
z{?$Fp2_nR(vnehJBT;#qeK_M-7q~5U!ov$RnvJLX^j!-k-Ab0LW21N*C!O&`pDI%Y
zKwcHN8MuKP>*Df`mfqlX8SkGI{M5puJ;831jub1(+2Ljeiul*uq^!uIu<7)le!P|F
zwxIjkJq3+`fFzs_n?3rk*?}2&Tps%fO%jBHRiy{}<7Zn?2bSSHKD$kHO(g|;3N~=3D`
z*%%0$1TgSSkuj9xB{j6Ht<}%gwPxJS=3DlblC+@Sog80=3D+C=3D&^pura@)m=3DUt<o09V}V
z&3vDZcMYn!opF$EY7yuv1*PhA_PPcdsNkU;Zc8dN)YJC-bclWW{PBIqZo%QfwdY@M
zX+DUeoiT1o*UU@Y`6B?H!aQK}L_#!Z*awDAG28kZES}Hu$U6ZUdB@iR+>}$Si5D-3
z>S(O7AwoZJ5R_I<yW{`D@Wg_V(RgMbN13imTdBX2%NNG?oUVT>NR5Dl*>%_}r@!)9
zfMCI7=3D*oLl8#n|HteTcZ8EV^EBePlYWISkZTBHa|lveI)sr3rfSl_#94HVUt?rxjr
zxa&eG9$OFIp*cO}(#(}cb=3DQ}Ur?&QW#^b|3ZNySRKi4)^(jAPrn4R>2Lrh?N;$@b&
zb5AIsAtZ`zGdusXrwvaIsskwqqVR7;E;YZSo?1<f_ly;cGo2b5?Pz|qeW5RVj|8OB
zBWEkTy&2i}_@E0qenTO*qlK$J@2ve^Kevi>Snez6uyB_R2owSYLd!~-;+A-3@JHWl
zD&Paqi8RPTKTsroL8EqeQFgLbvKEZIB$>*sZF({Bm2`Y3&#x#IZaV(s{m>2gid&B6
zcGh_krZxzU#9i7ErN^|IKgOWU*V1MIl~olcg2BFc+S3lT+P=3DCEH_bz;iO1S@bX3HG
z-C(M@#WkkNWh#Xm8TQo*tt`K{Bc8N-lG$6S!p%NC{oXhpb~bm4TSnUsd{${(-TdqK
z$Nji5(Y?jsS8L2PHrFUTN%D}ii3sJ=3DJ+nFY{>6Q|X<pJbn`yFPtix<>ilhkrW3Y=3D(
z)tvia%C^bxHH+wPj^r@@(G;u@m&x4p_~%n+f{d0I`}0Send|*=3DBsa<rk}??(mPg6J
z5fov%hHt3G+>^hn`6>UpogGEjA8kvyGQmWp*3%~0ZIB_X^LbG|6*uJ;HG6RD`FrDy
zB?X8LtW2GEkvA}FzR2(MsXqn)K}w}d55(KwpH}w!yW;W3iM^0UOJxECl4Lc3lp5;E
z?w#$;e0w<Fcn4v5s-a57EPFz|QTe7JC#6eE;(bk&esdsR0`#lW)OW#83&z|Su1;|N
zw?woCi(~E0?vHV8FFzgM;Rge3j-R9;_*@!SyaEiF`1E*R+jxryz4g2~nO%wvB&P_e
zQfPD9gKR9ZW`@R_72qQyHaAO}?RLJnxP3D}uVf9?I-Oon{Z7z&*32*M8sGKBL^EVf
zsV}>!h1-6gf2OUlc98DtoC~KOAVJ3|M{7>nNToHo!jUF%IK4y9kG6+7$jo#F(nVF_
zr><Zb^Iai#q}j{b4rUjZXf#chnG%wp_xsJK@$R#=3D{?w}wqeHkyqchj&3(=3DL*etKv;
zzI&s$gA2-e4|oaEQcL2=3D<4tz}D`hswf3Yw2a}j2tmR#_IjYxLN)dwFsr?_b}9&UD2
z|MLB9wh6P{1~VPvMw*S72FA^e{NyqlyEcF=3D5^(GF+Ud6fQS|ZoCl@Z5)a-1#BE*6T
z{!mge-P4g<dwTkPs_9*Lp+CNt_iQVfm7$<9X!}CE=3D>_|o8w<JJZ#I*OooF3bP>}7?
zS{Q8_Yuc=3Dt$l2EIn($aP%(%p_bVpkYJ3`QT_0%)tZH4ZQ4vD!TQK^kx`L+%Fr#<i0
zs^MoBqX#ITvpZlW{8*@ft$_tHXoC;5b?kk;nbZ%rV~b9HZ7C>&SxW1h@+!_|a^|J(
z;3xq1op>9}@@Z&IytBo)y?XxG_OX$CVPg5p-ZdN6Z`knggUcrh?S=3D83C!ekVY~}0>
z|N6|T`0fD)y80J@345%Wu|?+l<Jq2L&2H_AqDzH^gT*jj)sn3tBbA=3D=3DD*oA7I+Io>
zIvDWf*~jv!^k6za`a;Ws-h1WZvE8Lj>sBmZzHHe;8%w*6U3{TA3N4GSV7z|unT7c-
z%y*n+1R8Q>1k)=3DQ<~#R1TkmxW6+#YXSKH}^usaLqIR|lDT<29(6)kT_R!{pI{1ydT
za!?K}iEG~xGK~dae)=3DKP$DcRb@t8)&G}Z5)d}gezqr10X_+z0Bex|>7@n~+rrs0dz
zUD*F%;CsLtL&$a%g5#Xi(52(U)2N^S>I?Rzk0gqe;fTOqM1Q=3D!#W`sH?P@IXy>myN
zd2nK+y>N8A6Y1z!M}B1D!6y%$Zu}@=3DBJA?WSh5w@*b(qpnE!>w&m<%w<~f6RttN5r
zV;W_~KURYsqtDH=3DzWEXN*$2;`K5}s1@ZP<{`wt#F``pz}TatSibB{bD>~zpqL;xw%
zeyJrf^U3t_gX^R_!JgY8m}TXmrEx2V0`qCmjg$51kK*LK72R`}E%>?I*y^W!=3DhMa=3D
z_s|pu15?rsEFels1M!aL&x_2}majj)`u0y>dH%WQUU>DV?|ksleC{z-oAw7|h043g
zeD{-MKr;X`4?l1VrrUk^>bw%6XYey|e*k|d4HicxZ^%K(XCM6J^x=3DJbc9eQ2#zs2|
zg^|MO=3D=3DkJ=3DL(l9UK6vud+aJ|`M7kQ%nUv1Pi+M+v{0sZriO1TV$}HM36M^%@dj_u?
z496eH!9IjNS790&nvCc9tjK3?Tspjc9gYz?#wQjn@9iJhv?-O^x_Q&4f&O(Xx+lj+
z3;D5S{X0)x`PuyKNbQf;GWs>n!(dma`Mx*v3vS#Kzl}TVjlyQdghdA7H?w?+5>86b
z-$vl;H_jedjiWQ{Lh}45_5&4rm;lWR*S~4~%E^4bW7FYtZ_Y;_eExKdvmwE=3Dpvlyi
z-ED7S52`Vcv#j}S72Z0*M5}CnILwF)7w#z(w`8|Be^R?e-JidBXhlcc=3DxX)2j=3DBRR
zi3Q52TaeqbvLn~gd-$a}ojrwZZym+Aw5iI}VaYi2ZqSN_zR9_sCu|XhYPLO{Nnix$
zVIFMs%@R9ds4(8bIq7P-Q%Wx%zBk+Ppsx2x5fD+-`>X&^IP)nESTDfT2l1L?t=3Dye4
zMPVRZ%-$XL`VDi39*4cjjt5K`YkH+P2%Goy1-|UrlETAF3Vj%A5N+$s&EX0PZ2tQE
zllgYuQ%>=3DT!Vr<JzY-1gzIr25T$Rf|J^Nkr6Y*-hmpZ6r{96|=3D0xZ}t%5VD3Kh~9R
z>3w&Eo&m{!vr}LsCU3hpp2H*gpP%W<F2WlXnY80azxA_)RoFH_rv^|>Q@EfB#Z8^L
zo^!Jcy}j81egcGu6Kwl}oX3?J0UfAm_&u80scpU0Q{4n3BzP=3Dj5U9K*fCY9)3OCNq
z`1TRE;hR&7vb{wYCQw~r=3Dv~uIyrD=3DpF1QV#kVkw=3D;zwpN1h4-{4|7w386f9OyvbEJ
zgD^h(7o4|_bv@2gZGIh;Xyd0n5=3D5!}yY~#7c;~E+jxH|At{dXKqu$i9h3|lK!iOI9
zhA;*UND5TTS|jyKx_D3g%uG+JesVt!x+I@N2}!X|*Q@}VDNfDk%d+)goHgz3jsb=3Dl
z0rFTk-!(>w8?O;@3=3DEF+G`px*-+=3Dd?$S&ob>ri2y1{l0Mh>l3SUM~(Si5jvp2$c&L
zv~Y7kg&i*!biR#Z41Q#&0|fj_8}5-~z@;{H)_ogwg|Hiz-R+;dq(!nxrV)M&SrGVB
zDvizL^S841bZ+!<I!g#7hJITSlpt9(n0dH{4S`W8Q8W1T@e|z6wtbrO`;{nNjJy4@
z9qCWhQVR{LOogeRL8ugUBlG8D-e5yxc$bX_D(yp7W};5(OsRWj$HHIjh}Ub^FL+yq
zK=3DP$D>4gMt_JIvWLnw*ebmsBGWXoglRJ;z#<pLE^3Vu>dccnb(hqhVW9yTxCa;>vZ
z_-NsfD>7}`@j-!F+{*L7Ouhp2{+$a38M;J~LCt+ih%r4_1rS(oiL6qDj5zHegpJuF
zs4X2WyxW@BhvG*bl~lG1P5^&Op`J8eu<6-UX6#mNed){LcHQDf!wePr4kOhGGBxa!
zq>Fv6zY_Dc_HjHoOy}*$N{C{X2Zi#9KZWB*9wTz8j$wsVvkElZR%2c2%(rrLMl>96
z4Z~W}rIBiQ-h&$5KV*<veJZN8uAd>-yCZnho*7y3zI>9HG(>5yvUnwIi;u9pgu6V1
zCcIVH31t%mSt^-QqGBnj1%<F<X)}Z>tZPc+zu&^ykezL5yu+X}anIJuk_-(fQY4Nq
zI-i~)Wb@0uuP|sq2cS48&2@x7jq{=3DFIrtFoYW(h`vR&`yy8RJe^O3H~e}b(HC5p(U
z(^L^^oh`s+#Z;=3DaVA>PKzkDoL95gXfhhrG7nXpdAohikeA>!E|UY9+deeS(>d?Sp8
z35GEK&0czKkpmpiIjKxB_sB1&)%8i??rmGiZ%J5CQYeO_A#QzDX%(#Z{xSlWB!J7?
z;&jw>8=3D+6`)XVk-FNCutR}f_~TnpW0DvsBEA@Q_6&L6{}Ja5X7nYNa_W~}U%^=3D39+
z99md9?URC!;l)jApL9VIf$$hLEV};||K)K;GJaO8z7I$dEwt+$YkH#tpH?>Iu0Sj5
z!>=3D}>ZcF@=3D`Gay+lCCY}S!h}ZbMP61N;}JWA%saJwe9G_X|{o<@G4UVwu>~u#C)p`
zv-m)@whCN>8gSy8XC-Ncj+9ZBO^I=3D0EjE3Y<K5(GeK$Zt>MfuLYD$G$bLO+Mr_RJU
zQUMME!Xwdu=3Djk6%wNNd2O5+{BsBB)Fe}7~HxNKTiBZ~I34!}D|HfYsLT-Z<n`nKoA
zzF~59TE$KQb?f2=3DpDmyrZ{;WasLQ5PNbtU-C6p<P=3D&LE{9lK?RzGd77ItO8yCB`4;
zXX_0&pT^2??Z0iC7-_Z}eqaO_JjBg~1N{HDcP_wjo!5QGNXC*wDWp7hTdPjuj%%mW
zxSqIitf-A+EA>dujAN(H!{euHH6Ay1;zttKdALn8PUEy0kL`5aM=3DZ(WLnJ{`6lK0a
z@F~E?CK9pQCK4e5mKP!@7$9PT+|>eDQkwpM|MT4ib^%ZXxg?<sFBbQH_j{c4KmT*S
z?|%30y?291NaRnfCStYY#cU|;@K;V!7}cqP9HN2W;{D<b^v2YeZhVzrmxB$AH?o5l
zf$IQFj%6gn4DjvOzhn7DURiC_dx?AhWx1~ch1oC>#3iVZk%ezCar?(_Z2SS^+4{e7
z6BAmSZ#gtcix{YfrP(AOCc+7LT^aVVPXClmZPY_0DOb4e#)Y1g`>!|Ntmt<e^DF*S
zcLu*Dggn;NyVT!Sn{D@{q(8AD^;&{POC72($^uh_0m`>^@BF7XE_id+CzosPO~tG-
zrn(hvMT8?c)4|*jx3EIEbdYA(J*18#q<D9sx2OO93SaVZYs*(k4U&k20XhCi(;dI@
z$_qG~xD;Y9wC$Vk;%bSoaR|(?8?nGTvmUsvcKd6V|K0+!-~H+kkl86|83PuT=3DuLT1
z*FMRJO10RyZr0kd0i4&}Ht+ZHf23!+;MR?71AccbSY*nwxNz=3DUUgTAP3s`s=3DvcI(A
zO}-3~I=3DnH;5y0n<fpqqwi$OoJeEx4lzWnl^OLa5aB`gg)?m&+4*}_QEB$`DJOq{38
zU@LZXneg@RnD0yZ--mwsYSy+Ha?;~$JN)0h*r~*2AbKH@pIPp&2qWO?$lU|TvlHss
zn0d!*mwjPAVSlKbN}1$jELfuB(DtY7S)x2pQKnXuTBph_ViuXvg!SvMpNIcHzTrpX
zi*`53^s9PItilpBgdFL){f1wg&w#6x_o3zQkZE4PC<6>RWd-Q4Dy47#v3cL(|M``{
zcsAyz;Y@O97xb$;m}zG)<*$<h{i)xmI+a3a%G16wUUU0gj{e6DH_tp!3d;!vEwpHl
z?#xj=3Di-mWtypVTs&DC_da`>4}0ZkECpYWt`%(COK=3D*)NCymFpd(C_#cEW&23XFHBe
zmKnOk9X>#$q+6&_v`Zn7Rg28)@0@$e^tC%*5$|aX=3D_bEPkMe9(Xus~AtIqoaAeW2f
z^T>Vo%G+b;5FZK_86D;a^@)najG4IO<{Rd|UF7!^|8b%etWi_{-kFJFq(yl)K!jgr
zA1!f}At=3D-NY9R8iyZ(kbPwIZ{V}3_n>MKa*fF&i-P;zKXo);x<|Hv(u_uk_35WPUr
zy>IpV7C;!36EW;%L^bST-|aWg{blYyiH8bkXA*)m@5TygG!CgjiHKvIVkar18UN00
z^vc^-HovXq|NQu!Y5r^hYKN5UKMSKcf2I%UeV{+`=3DA}k|TiZ9^ypm3AO0>$h%EAPX
zotR}>qKDsp*Ijci#{Ht^pQ-<AD2IfgA~p1WmQ}BrI8wg3wrU8>_M8kzFMGwmZw{cJ
z*NqO*G+?vN&_|BiyGKw>%R6rPg^RkKqgio__y6k6E9+ky)p6SrXfy{l%Ql$g+i&_8
z&2jWeoy*bKaTYbTpW1PFfm5#X)rSLDQiV`Lg-lCq$!DR9aIaeP@bfD-=3Dv7TDK+UAa
z*8X$SV?R}N#sBTgex=3D3CwMg8(zqCAzj0?ZE$(CiSjF`lgI`WOb)TI0Cck=3D$`84m3y
zwa-}0L}e30?^9hJ%o7x~rYt0guEeeDiM-dnw(0SJ4=3D>m4&5hO6I(0#{QnJ2g=3Dk_-(
zzk2sOG?6uD_x;P?m|co6K_Wap$$U1mT%@aED?ZdD<P*z%E^Svu)kJ|sXysF+>{u*v
zR5LErxQTdY>YLo94XJEWs@HWjUordavUrUP(%sU4lT2r_k~&Mj{<b?lw!FCmH5qVK
zcR#yQmm=3Dt~(P3c&{93Xe9edPp>TS)}<L|xY72H(k#Vki`x_O<3y4=3D~r4NXEQsZ0iG
zqoC-HRqtt}=3DTBF@L9c{z9WXoLU3!2%%Aqr|q3n)ZmjC=3D>Z=3D`Efc)9of{GZ+UHt{F4
zVTM96Gta5|PIAa?Z)yHP=3D|5ZcGx7B|7R&Y-PG)u!9Z3c<^)Hv(+l+oXbSKYKfb+Dy
z?zY!|r12J@zxoecxr)UeHs^@(UMg@~oN(JKRxI+t=3DF3g@T>0Pn^<_Vv-Zcq#L0{qm
zHj`n{;lkTq^YX7XO8L|>n$2<?yryR1j~Q|hFHtO(7)g(Dszj*|3Q^^@TbsWu|5bl^
zS`Tl~5%dAtvO<W(Yvlhom*s)BM)NOu@AI!*@w2H@Crc9ju#tJh#+jhoKl*Q*RK8Dh
zpl}YgOro}M2sz3~j8huv#I-7C)T!6au0_R{{k!E&PeXk+yJ|u+Ut*w9I_jv2a<wmw
z(yLdj-E=3Djc@@nGdLU!-|;EIpxp{ZHRY%0tUD{RKT+vnVu^$RPx8l#T`oyPjtryh*K
zGX;_7l&erJ4S6Xub~z|7Yr10gmmhttwIF8Jf-{5jkWTvcTUOopf%ATIe<8$Nu{vM=3D
z<>hyU`E?R(paLl!Lm}5($;Mk&{8=3DM1oyujyvg&E6|5ToLB@?mkB4oH%;4Y;yeW_i>
zBTTON)kZCC@7Hf;rXj~|wbDXM{ri;K8Q0zRvNzpu)BBe8akt5|wlBQvhC6SqlNfAx
zZ4cPU`s(((ezB?fH{ZIlehZqZR#SfvL88vT8Dd{i>)sL-SgVdcbTPGf$92n_@6-Hm
zD{n=3DN7H<%(>Y*Vz9{GA9*+04A<`2HK*oV$9zV{<H{_AWMO2*kl=3D&)sBw{~w^G3Pnq
zUyf6`AV}*FFteRCN=3Duq6=3D-4T;=3D>keXdMI(r+kST0`<r~+_90H!>w+zVy6Q59$#hDh
zU%O(}yFW9}HwMkpmf-%EKX~)9kLx{e;=3D%ERMYgRzOaw#MU;m1xX}OGf|FXC63!V<%
zy4#3zC}M_~WO3LeuP#%?D0F5JsYA?9ET8l8`v3KYH$=3D3%J_s}3{T)6s-}0j?Z+Po}
z{F5a}?FB;m#^>Js(Hmd!)3?1{^T%usNl-yrTEZbeGWRjjPc45<8oz>G@dHK4ff?zN
zLgda~qRx!#UiQ{I?p!tZ`{u7K{~4dCL}*9=3Dz_PV&l>3dFbT`m%{qekC7GI$GOQG6V
zKlR>!yj<^jgCPecW+ukikBgiues?a`KUl@j$ZK(=3D+X)^dX3=3DeD)Fa&|36W(g!&`c%
z;j))Conlzo2bQf^b<@XRf6J}6{@mL_=3D5^QcDubVT^~+b?_>nif_k*8b0ykI9rDgFs
zfBCsjyz9=3DDEAP?^8+3P$!z{6+h<^L6KlS>XS1z0HC&j<<OM3hc{$~b<<d2!rKgtjn
zLmT2V^2xmZ9e2EP*@x%H{KudEtq=3Ddo+g`;>JU(*cjVraRTJ`de-Sw02`QRr%{fAfK
zg(mZ(Y)$T8{L!a>{f?jf_)YrJhE=3DO>`q-TxyYtSQUcTxhdKuMSue;^lA6Vcn*56+F
z5w2#yqq|Cs`EhJzK!a<uP0|MfZIdG?&^J|YT>dZ5`!>3}zxL(-{KfzD`QQB=3DEx-GF
zU-;sm{>4jYn!i}r{Lim`@pGU4)Ng*`!ykCR{yzMP-~804Kl_ER{N;I`i~IVoEq`_W
zG0=3D$Z=3DsMw)2zGm=3Der$;74=3D>zy>yNB@iJY`9mdh(u{}0}>?6tbX9lkvmVsfK}nNXx+
zmkK_-cpW9TU3ce-_x;0-<}2laPrXWqftk5a8jQjZBHDMLBv<(8664Ry-to4NF1wK5
zg}72?yma;a-{1WB^4H$RaR8d_34)$uxjP1<kR8D{U!G3td&ak{TK?WIzI1I~TFC$R
zr(V0_AKjV;m^c9FU?9#JhVX?~aL;u%Re1f4H@)vqmX-}KaWtQM*Qy&{qhAgnzTw%#
z*Ux?NL3U2}_McdF!!4iu2QqhGLSFmIZ{4~oy+oK}fa4rDs1Kwrq3l~<y=3Dvv_K0M#q
z#1gXPB@5+CpLqAjmaqD;TM2a!^l987{ICDHTVJ<o#mnFIp)bDFFBvRp_x$;%KdhH|
zti0)!uY1EAZ_%}bTW`JPmY@Dt|NPY-y>ZpYuK&<)H{aa0q-}Yrg8TD7{LBa6bKRR>
z^YOdx)QR*fUiF$czU@69{LCNx_m`?YFG<{Yf8*<4{fjSs=3D}TY!%2&VsjhE&H`YXcw
zj@{e7y=3D~jJ2e&@3WmCt-`<MFQyk<kkrp;TnZhcUgx9-@x@rrPCIhAZa^8C3|<#MHR
zYGUl<$j~E)yY}wdwsGy{RCzJ7*R0>Xb9d)~qlMwIu`?5uO1V5S^}@v7H5VgmiM8o?
z=3D1gyUdwZc!EcEpcoH!%fMh5?S|BlV~FA<;}Tle-9hsUNWr^ic!#iDSw7us|E)y^e?
z?^0o`K0cOj&*`tdy)V}%+xm*f2F51Kr9->7T&nC#ZNGl!zDLK(mC>h*eZXta31xvq
zadO9{%3d<<?;jnc1GL*Z*_q4b3Vpfu;&`?E$o>be-p%wIcK4L3l>r5W7}uJOfaZkl
zyOrHbhQ3P&vb`*`9A54LxPb1^*WNeqTzRN#)1_-zyo7Z-kB&`_7IS7l2j>A%34Mlp
z7B6whw&>^@g8dkPWS$l}L7z?S>#tOMu6SSX*ngrr>VRiJv=3D0PPqhkPTA3VB!$;}ZK
z<=3D=3DbPtXscvlcsQ8hmMv{b_f45Pcg6IC!Aq})$#KqwPU-l<S?}9@TtjSo)NJ<SBSv(
zpigWlOP}uksiDLB_wCxYrDMbWYwuf>=3D~uh*#vQx&9e$+HUm885iRYQ|Vd9F&GX2_;
z)S-?o6zEuxAE=3Di0Ua50~O-ITTg}f98^T41-LOXEWJ#)GIvC**!O+!zX28y|!{hhlW
zcqvRqS8qS?=3D*h|Q#OT1FrgB9w-xmQU%M|tmegRjo#FR*0A@=3DfvXG`0zMC7bHR2^fM
zQ(uI~^By8Upy35A;L8<@{r!UjrLoFXx&O#gKOft6c%(d00zMX|5GSGev^F+~(N=3D~M
zZ7T3|R3nm_<cFsZUj8w6=3DR~=3DfN1gvU0s$h01fYyO)~cm~fU2VY(Q>7@Z^M-cl8e)E
zPiJA`xni#|YX!era7XlR_A!xM`6B$p#4qg3x0lBryg1Dl+Uo9u(}TjNE=3DdF!OP_{6
zCEN=3DEmasBCh&^EsfVu9`a_PubnXFx?eQj&@l?U<=3DE8}#sB^#qp6GRdC=3DG(hwUD?<f
zgH&&+w(o*fT|~u>Qkhe6ffK1Q;df7s!;$7=3D_{8B6VUxxqqs_JFpL=3DTaMJT<(O&*vS
z!~&V3kkYZNKDV>k6p3&3Z*}_Q1?9<V<rdm|3ug~szQgdgsS(kSIt_vjYl0-YLLrNH
zk4K;crZ)ULnXi233R8J;>b9II!mJF+LP?Cv1oaBp;eXkrMHPH3HVO8I4iovQ<Cklm
zv8OhWS2!^4dF&HBLA2`u#!@eHMj)mZ%jm(2<KxP<TDy7ov10HWfivR-B1xnZQK^^v
zL`)Qr#T5X!=3D&n3-d5*$+&*{)aOvC}#XrxyAbW;b5h&Dp#24!?gk4o)*rGs0S`sL`g
z+q;fceX&i3z-hJ+auG&mUS)B-OMbvk{t2`~cjb8VYYAErLOW{(^NHe^@CXEYjS=3DOf
zd~ygFqcLpC)v~X9pgMkd_tHK5-oNwkP_;6MQPI5}LIsAH_yoT$$5O_7u7^@hYYrB+
zG}k@#SStu`l<`2VU(-&4U5cdD;Sk(=3DvMJSCGz|a*gsZas6<!IXeWTS=3DN3YK1szz((
z?5*E%WOQn*KQH*fqGL!#KrhyMEOm@K&Y17$DySnc3|8bhKvmFNYx$-34V9AUw}-{P
zXF4F$B4B_PYJeLY*jz{`fs=3DYJ(%IuMCjpx;<VE6hNV;4Z_iR5jULDcNE@)*%;7x07
z6i0Ca7FJS8cDj!{#60$3qUTB~F4Vr=3DVyxev;1X0IL>=3DISL5VCz%szEgMmjpNQyKLf
zyA?@=3D!AkYf&Lwj!=3D-8(*pC}@_!$ho$#V*mxR&vo_MdI8QWJ^>O3y#d#Rn^|ocx%5L
z+gt0V#{p1K02@0>xoc{&21F4YKq;3wxF@hW+ifhScc40Uc>9&SWVlc~b{s5E4f=3D$h
z(1-{Iyls`evQWVfy}`N5B8`bq;WErBK!-iiJ^AoL3NI#qQ`JNVh9Dfh(xn|8pbB<Q
z^a_*i!Za-dlK|U0YL&3}7RRQa+;cHtTG?jZp~*^nUO<J=3Db9tggSR<UxES?DbDf%J<
zGom-BN&I<?l7V!SLba7&O+KbMnHM3&$yz`d$13l#;{efGDWZWDS*kB&MoGeBCyo2^
zrP|OH|Keh{_wMaF_xx0)q{C)`0p2Dh&>Z40Oh%aR$WEpw<1tSZL_G(Y_IwD?#klbn
z&VjyN?UkaSlC?B?R~XT5f`tRs+7HhJ_cS6mS{td73{v{*A1j}G;d@tcLb|c@!7W>N
zADtL)*EOxM2-v{XKk=3DhnSw%|4Ah+@O3d1nOmqVkm_9NS_oNC>*mM2Dm1DcrQa@t+s
zQ0j~0ju7Snfj5zDNO;QGjuKUL0BPITo*yU=3D?0;y>mOa~NN90vWcXag?%`O(|!#@Ux
zJt7-J4O$gsy2>erWvax2qo}Ao2C}|<rDaEeEz@}dTguYdW97z3?6Vk;HY~!BcB4#i
z(h(bfshhZ?^!IFEGT(~b(=3D%-56;x0Pt2luO!wLGZU{*RXkWVF-IHhv&?|Kxld#Y74
zysnDn8WL&<Uly;W9Z*sV4lP>80L5-pjQrV++KZ!CKkl>6wx`&iunRizfl2ZJ^zw-z
zJt8e)(A5(Qu9GOIrHu8}$=3D<0J%`VoKjtK&i#bAnV5-3Ak0#Nrysui_WSnnb@z=3Dc}p
z3WJ9_G6JsV_TF6s)q!5@vMp>KPM&4Mewddw?1nuuB<!iziTLCQ5eJju$6I69j;b!Z
z86BODzr?8W5(*LPJP>J70YN0>K0V|R1xjXlEH26SO_Y~_2X;MK8|qDj37tb7=3D<d<%
zV{eup=3Dw&r*c%+2^(wLu&$3P72D~`1$z`D)=3D2ozd87hp#OJIlHv1<a_VwXy^v3VfDg
zgwck49f8|VPhMpY?0j06)D0PQ$xJXuXmOVt*dv~)m)OQM@3JMY9$R6tGrP~VWB^(-
zrtgCs1tt^fOssqy>>7;RkYd5mm;z{_8L^^6Zn!43h%$MgQa-T0HNEsAq-=3DY#TJqO<
zO#W@5xi;>A3(m~SNMIKOj0?m-v~Y%!?(gPBmwU&DTk}<SXVu~b&}zk}v8FYy24Z5C
z6pVw#AnWCLjcVj89rNaVp;GBucM;rOdXvpP(_&vpz{!6kF>;1f^57V5=3D>;lG(6hr@
zYR)bUVWbJ_K6$D&^tZL`J11=3D53`WH-6dJMSliI2vL31Y529Bsk4g17(m5!}~PPx5>
zsj<#0e<5h&!Rok1o*AobgvWHD6`5M-w2|@}vmu}26k^E`GZVuX*B+p$cYLf>)6cfH
zu3AQ<wChw|ha0I8mT-tNNwCotfLa_M#wQz9TiM>5$;S`M>dW`nhIU<gJTFQ@XIYnh
zgp%-1Ye$m7djbTFqEw|y0aJfI`y}Bu%v6<*B~mt1h3&l~r(1LI4Xe7Q(GqY#9Nmmg
zVdfJ|#(0#A>#PoYYRAk6Bgj_`TN$mruiG{rZ(X#!xFa?`S<~H<K_p01kJQ%41egwN
zk|DTmmwUdlnRD2nm})91=3Dh2jIp|V2vSf!Qps|QTCe;4_|FI0jqBEy*DN~|(WsQaS4
zQxA4GlpS`0A<AcTBSTgnI9c8M;=3DHw}#;!>XJuzGWHy{%n1d8m!&iI#=3DP@0zH9D2Pz
zfjyN%2sPa>*FDz4!6%H~r*D4+13dUX7Uhu1Svwm@76_%;1r1yNqaL;iCB4|e5_eY8
zK!<_;TF(_a4j-uX$E+ts2POysn=3Dp;2W}lo08CMC0$<_SdrM8uj!vwAMPyOywBdwp*
zb=3DHdMBB;~^-+?egZ4f?S(S6h60nvs4*=3D~s}%5i0QMyT6+E2mp`#c<)C(lP%0Xldw}
zF1P_$d^tXZ4gzDru9-0>%e8%iE3775m56wms#75wVz2e(dZ&(GjvG++)CPUTii55&
z8aRDc2-A)t$K4RBg@!9_6jBbwabQz@mue4L`q#QRP%2G7e_3zd3!ilLbR9VINU?H~
zYYtkNNti{gK}G;ai5-G*Q0$(;;X%1R*HJzTtubEZjxQyv%~$^K-g_}K(VbhHf@phn
zxHrD3fKrr#)cm_YfHQ(fL1jqP10x32=3DWOIe=3D;IQq^!4_aOT9-A?muw!O7sAkb?=3D(>
zodZP$y+|`eFa>rK3@Y-uUdu*!u^e;R;}i8%$*yrVYUT>H=3DDYmX9X&VFx!9W$b#_v1
zo)m5=3Dk9Iq<L68^*0B8*<)^X`aX}%)RP?@fls1mSM9ov+oH#pTd(6i-=3DKccbYgzk4B
zfcyus5x^ky*}5>wGA{y3oO_X%j2lnDy%!8|$Il;|a|7<?lc&0mRfiV!Y`~g>)svc*
z?{De>8%Iuc12mKxxyKcvC^F$X+Y@4gHra%WZHS8Ai!XCz&G3;c{Q&;Pr^@Ldg$Do^
z!=3DP>Rv4G3a@E_$$s2XXygltv(VI2P=3DBpj7%?;f5Lw7aUM?!H3raP83QCN>w|-8Mee
z-ka;qRi9`&kgPpkb<h|liX#FDgFr$73@aMqzz`NtNL*1($W<X*T(^7p3O_BmS2r1^
z1FoToKY=3Do=3D6iD)j11Zc=3Dp{l4TVoBhs#ymsY=3D<k&Ej-6`$)_p&dEp!y7MlST5)~=3Ddd
zM!0rY#+wJ^L)Bsonz8oL3tCZ;=3D9AD2I{x*izG0iFLD-Y4Eq|`ZCVy<Y=3DVFdg3y0A8
zO78E`y?menpQmF2B}^b86RJrXyracOs>s6t78=3D_cc4RBQn0mHp-nl{Xs#&A!b&pmr
z=3Dqsmh_SE!nS140|YJQBj^W1<R26UGr%tJe9=3D)|;h5fb?5--zpjDIGxBnaMOzIyY8n
zKHQv-!b>UJF)@MC1WqX}fj%XZ@vh=3DDb7#B2Jzllw@M1MH*cRlAwS!I9v35Q;#<Lty
zpxDe0)-J%rb;rxZ28)zP=3D;5X@X#1&g9ff_zk4S|7AegDY_(vJNl6>jL7jZry%qmPR
zsOAMjm}KZG(3N<4s;%vwgS7$SZ(KkeL@8fAn{uDZ2(Z!)7H8SsIDJ&tCt-`V>Mb>&
z!Ap~7>}rk(t#Y|yZRd*x&bl9*@{NY(6%zB$oqC|L(T3xby_N`4gd4d*rzwpx)G`Jh
zA(ZcBpfXfjWV=3D)uoGftq<ElcKuS{I#r>A7c#%HG-1=3D43?pip;^5g6cO<A3d?h_{i{
zjUG$|7FD)eJdWyKrin96G;KOTAVZWItCdVuj5SqiWLA6MFFQDB0I~Y(9iH<djYHGN
zxO`=3D~@DF-zX`(%IjaDoX*;-<ai(F2LLr!b`rB%D`$GY4Xfwt;VYG^ifbUUDc5cD>|
zYvYA~IU!2%QDzx7cn|wbaBs1CwCRS=3D-PI8VGR^fb71op=3DE;k(^njFySJFNl;FhP~?
zt3B1!YR{yE6Z>LOLpgCxT|P>&MxpRhDWpYGYjR~cK4YQOX&IX@PB)*tG~v6%T_%HK
zEF)FmeS!rdLW7_-=3D7cQjsSKA<Zs<{{v?i!3QC#;9G|&3i_0$xiw2~J&^<<HV-ihXu
z;|7biOshJ_MxhZ$j1DO79j`PET$@f*qH}>;ANN%QqdqwXi(QTo=3D#DrbA6#1S1bWgg
z4cn`aHyv&o@Ll3g=3DXAeDPOHN_FvP(J&2g%$jBrIbi4IIzh8nQRE7%t4{F#ZSv#af6
zr!~JtJblHTM0=3D8w%h%2`3A*?Ai0-sfEs$w3Lbmy*YX=3D*jDqC}8x<4t1s%}H{8?GQL
zCF=3DQ;3E-xm7_hsDT16AXa&(Z@TN%A<6VZojibF^sDy$w@Xk|@F>}m^oZL}D^(gL5+
z!IcQrR`8RfvFGu|;bHY5-BV%bB(tcN8s|#SE_|-Jb6P`|sWJjLa$DW3Fge<E=3D-695
z$&<hW2s*(R<~T%|b?upVE4FeQ;JQQ*|Ea0$Pw3R5`())p&r=3DrJ8xHH-(Y(?ll>nJi
zM0}Q%BNVPg5XAveiP$$<@}iaD7y2}<Z+h6}q0w^tcO{WwM;ob7OXiCRR0mja61sX|
z05qmUvlLnwnnOUR0!?So9gkNFy$n&<K?o^5bJ<q9l<$8a6D``In(NvatVf}Vpf)19
zOV#Epe~Tn~-s<-qKUW$a6bh-xfVn%w9$6_I2&ot{Y*S=3D|lj=3DauU^_8YY7CdPhiW`2
zlopA#T_K*#zS83hU5ndM_2>glu4!MpIa&GK<Y?0{*Hs(lFr0KK5or=3D?MkFBz&b259
z=3DJ60aW}OJ3DjOL{@v+iy<y@1Vc?n%y=3DIW=3D)J%@XWW0M>fi3CDRDXju!U}7ih#6Guo
zsq!@DV3rGMV=3DHp`q3HvS=3DUh8Zmg9@%IPO_C4XwzbmajHnQ^+iNY}`_XMC#JOVtBz7
z^TVbWOl%!1=3DNU@9WTr@+8pArQYD-#$s^_g!R3<YPjSGnB>;2)>z@tYFKY6}`REBnO
z+xs^Wb*nc%*b{v`bc0d-!59;#!K^z!*npTq1%PUxU9}OPJkUSh7%BH3sp(!ui%>aE
z4hg79B<6CJrtvB>WW#7NP@zG8Xp<uAioVy|ULJ2ee6KyCb3Bem(&je8Cz4SseFmwV
z<ROEXJgQSema8_oUi8kmfzA$3qt`d~=3D?q~jwnt8YM((!W1i;u6x!wf-Dpgfh9(mM)
zGs)CJ`f`J{BaM^(T@}p=3D9db0%ztbT>B#0!5$PGN+*kv-SH2kPaP$@NXn8yY@!Gbf|
z^F!6c%{ou>Z7Pusw!oV(Sf#Vji&ycCI|0|~$fQ1+(A-{_Xuf=3DyVQba)?x+4frsYyC
zGOSr!!!oy6V1PuQ?U50<gkaK|RhX4~uIY-^#-8e+qD!qX-{v9BLdf!E05$F}HBOf@
z+d5B6bqdv_Nv^hP3lrF!PR1&y8ZXJM@6jt!Knt0%a(LIno=3Dl0woMcecix$rGXr<i#
z%X<alTWg*w`|66RHC!PQw&)CDfGIXs^^rIRIBZoD0&s?UL-$baaKl7dFHVWKRKhfT
zVX_vRoVLoM=3D(+i$?BI!rNthBg>r0FQATHPFT;N#kXrq8#W2f>858DIT^~NM3*K0{+
z3$)19MhPskvO=3DG_SJR1J791_vZWyU_tCxk=3DFwLrs%YDFXMWC926#KwbtC^tgEsr%m
zxwdPxs#}UoJ<)~V(m@n&k(GQPNt5&1xTgOY?eVedF#U{Xv~}wQRa5kl+QEi<MecuM
zdN9wI?I_hpP!-lT2rKlLOt#Io#WE$9a;;)f_v&x`qvLhgZ91hd-C4r2Of|mu)C+q9
zToA2&<I_40ac-d??j1UNxPgF<qar}9!xje^Q5Z|4*hRS5t;~C0^hP}Zu0_PVnGnUe
z=3DRJr69wMZ_uRPW`2<;lz{d|dkD(SR7s#0Bx2inL<QB;SgQjb9nObI#raGkK$CbmwU
z=3D#HpJ69c<}C<#La0H~tNV?E}26d@d)7IJFj`^w`D!M~<!%Fl<wK9!T8Xym?N>Z}`W
zm3gl+b};*lp-Yv*X-E^1$PC?xrc{H_lMQD{>ke0SE`TYvh88GI$CD%@@X;CY5G#by
z3e%AbggN(bw8jm(eS;8{0<U8QfFL>caS7$hhiZlcXQW}Dbno!=3Dq1o4BzP0Cvle#sE
z9v?Cod_0aM;+z|0(eX~rI|1EvGHwWPABvT~Y8FdA;LnmE@rB+KXB!Vd+jQE^i67M4
zfCR@!a61KGvX}rtVavc2(BWP-XjWZ)qBV>+NZDD_EI}HA0x4&Rj_@Gp0811Q8<6fC
zV^j<GWis`Gt77%(hQQl;oau+!reQl1l+46LEX{1D=3DEVH`k1_r*ONurQQa3X=3DrNG5`
zlAy~cJV4Yn`w_<b4%9|{Lp_}Z80cbAfXN&h>%&#6FgGB%7myLEsFW{1weU5n22wA4
zXOF+Kun~|!%*zx22^fIrj$X8@Y*nGatj=3DI-&z~tbkhl3r?Su~LHj*|DFeHUA3C5oi
zkGwFuFSkJa`yCX4Awfuum4{ah1KEZr4f$eqxZ$<0n~&CxDHiB|REm0d1F71J@Q;$D
z2%y5|F@U7K-(5bwwzV%v*>z6W9Yg_!Nk2OM&vA7oJ|jCKF!053%eA%2m!^-*zE69@
zL0-jad8}+EPttplrbL!(#|bf*N&5UZdvuIvuifH}4hf%HA{o$D6FSgkW%+^HGYyle
z-DfJQ5>+iE^>@r92<%wkNgm^ka`?n1@+s>sKRbJfz3?z!pyrOa;enVIHhqFLpn{S=3D
zFWLyOoB{*7WC=3Dc1r?v+ELbWvexVvtDrHsS`AERZ}Y*`4SqaoFjshVpq&wB-Q{jldh
zs)$l8L2*49v^qXf1VTyIHKE66e`~w$VD&`0_MHWSWzj^7R@rH$wXpKR*UFM&nciD@
zYW|b-1qeQW_Liz=3Dhgq*S35h7^!x(sRuxn3guGZRMl?Bkg{12yQ54UUf=3D|!jv#t}(o
zO^qbThGMK1+7f4p)F>)9Uc*V)?|ocXrc^aCOghOD#%QQD31V66#8&<XwVv5m^d5M|
zXCl!e>bSb)*;tIDlM-qnPn}bBqT`}e`;)EvCi4C>+_>uQZ*^gXtP2p(O;`w#7ohNw
zfq{s!{7~)atVb&D*;|s8P=3DG|5Qr#}p4(^;epjapxRGHevGxJ~FIuMsX17g52KhOjx
zcD358LIg+T>Wuhg_3$igZTl({x(2IO7=3DSfaoSFq%i%Et`zK`mt!Hzfs$+zyi_{YkH
z!J)wzUFnokBX`*KMh8$7YbC%&L5Puy14No;J)^S*jeB<wob_x9THGwwu1*W<Knv~d
zUN)|&H!_zRub^dpcW=3DCA09M655|dQ>R{~OqFo>$qqVWVB_H_B+EDvlrQXQQ+9h5wL
zVS^Gf-#rvCQ3FVuOC=3DN?8yM*CKRbVzWN<HdyXS?8Qn9x%su$Z@kMzMVX?a87(r{0{
zQFsMX*V4e>e(Lo8nd8yjdrCYp&k`I+7L3@5SZRCAp9Ffrm1N_OzJVv_pWW@8bQiT)
zqhpsqQES=3D;Q3<-FIWIBhr`cys4IccvsshAP98ck;K!%l|0+eJV8>~rtefjo@%CWz0
zKQ{9GdA=3D#VVDj7AHay+6<^DDItzN(9ks>N%Aw`r028{7>DItU?s@lZf(dw)-oi&}q
z)d60Gr(&<c&kkb+4s(G`lmvumQNGQTx<cX1{`t{w@&r_zYqA0^+GZVr2+o*NEEB&m
zTp(S?EggvaPL+?$Iu7g_;}-(VaT<CpKw|hvmH`DmtpObWh2o*jqHFEOokR1Ur_T?5
z;oP<LXxljM8AjHR9sD5CN2Jla0|Pb*xru1k6{%-tPPo=3D}j!x<Y*aUYF1Pu;FGMwu*
z^knv^qAUyguy^vI1;8FHC9$SP&9kWrUzi}C{y?_D$)ll<B9i&OvFeeTE2C@oSI?;H
zhH)ksDYU0LTT)4gHW|n>U3GZ#kCXM{#U?sWN~L&!99w~bp;?K92&$aczQV9r9-oPV
z4P7Uzenn-Xz-G&cXezOo=3D1g>ma$G85UV>EZEcj^T!xQGlO%hdc93mSjlBnRv2KOg6
zq0M$_pv;ZedS<?n>*zVFOD=3DQ);WZwmtis4FmFPoklB8;b$L9ZfVzF$`slPj(<Ci9x
zkT9jKxlsfF)kbPdwB#oy_t)=3D7>NqquDfYo$=3Dh8M{Q)Z;whd-3dk=3D?GQb0Jcjg?}06
zp-B~otf+6H1g6BBq0nPVlBN6<zn0E-#_jph>f<vfDcc6CJZng?Wu=3DRFf)o^Bqe~>-
zBd+#)N1ti9wmXN%i_F+pMH%)<r8=3DJgX`?k$BDi7A0u*oarL#xsvx?0J_1@CB>oVEn
zz)~7vw2pmRDo5Q44&jXqdo`3#&h)1yOV*w6EmejlnQ;iRSVX~@K`Z4zQC9RZ6-r;Y
zOddE<?cZIWE$p3`Ea+A+P`Hs2eCqxTNx~<aZGd{wnHIgcqQSg_HS7Uou$uwW)&@EH
zZKigqqBF~4{mgQE&)GAXfwai1Q3HRp^1}6uWFa!dnKp^NRHZ!YAlZPht?kfBH8wnL
zC0XPck?9jVNec;h!|y52C81f!hpMIe&s?nA&l?_*7r};HH&SmQCj@cXPvYXQd%We}
z18>k>^{@|WR(3TTWf^<Q7fxHJVQ}Wk%KE*3TN{mgdQ|A<oMM4I;v3v4I^hjj;v8Kl
z@-z}%<g}O0b8+|E`UXA`Vs;P}PS6?(5r~60_M%=3DHR%D-1>MHU;fA!3P?0&h8hjgc$
zx`0rET@9#5J5rHDLuXrrZoz8&dZ#H)7QMTrJf^FZb~Xz9FU8u{*G51VxbnsF$?WHh
zHXk@sEq#|_sE2BAvZmB`nO62l3Rbca<qvIDjK1@|m2B<P{^<wn0wVy$HS%f8zW+?U
za$ORR3Efnuo;*-Ib@u44Gz@L((M2H&^sf&vw4-hw2Xkb4L7qZVliB{-fkl(NaD$z-
zVI74WD$>LiN<b6*j7dqk5jfqe*AjKbVfXGGN6Qr+2U6H6$oz#!aH%kKQ;7AFZK);U
zl4MU=3Dya-b<I*ViHo78p29dIHfu^Rph8756SL$Y*+YS=3D?Jqo#%tZPYcCQOFOUEp?@H
zvWNc8CoO?1pu3f88<|w9eHbCP<f~7$>?QiU{ME~>Njqu;+c9OV#^qfmabwkk0eeGd
zX>ue6Ph*4^875;>hfjC&vFjlr<wJ>*@PTVos&?LQpO~3l&l4{l6P%&I4Dgf;J`jRP
z)9OPC87fO&%Bo?O?5VfRA1hZ5Z;jg>ca=3D1CcE@o`gyUo+)RmC1R&@k@2e5h`gcp&u
zL$~5*SlL2{8ItboPdEZdP7}CvIdR*;N?E_VsVeChp_GHnUXY-`%|Pt%Mz*W7Nv1^>
zW=3DlM$8rAb(RQZnI^_GbCd99kVcw@KF4-x0VNBNk*5*4$xwzx507_UAakKf<dIi_E(
za@4z$qXTaVt7Ot38G@0z4|nqW7eV&iCYu%gK4=3D*wq77F1%o;cio;tbwaP<+N?QZD&
zfBJ4E`zb0>4Z`eL?L#ja8fn6KOOWW~MvIiQY$$3{t=3D_ToK7P^Gwq-KKMuL=3D~iyn&@
z__7HeIwCk6NLr~dO%Gfn;zU2qck-~0#cR7N@<3`VS#VF-AyAu`FoP9Qx*4?Eic8RI
zM@HkWV$qNy2LzCb7U`PF75jh7wfQv<9-b%<V5UMsQ5e;|4y3jdPGl}LD;5bJr_GMa
z!sp(T65S9&RyCWH%#D-C@vDZBMG$%*N0$}B6{FmY&$Vye*r8H2^OoAAj8#?g#j$d~
zfBJ6yq0=3D1AU|acoSQ1!VktlIVU+;7aW<iftxKs(!SPacJrD*2cK11mpm>y)pzva+C
zbu^|1ig6K9Z>m&GJIR7ht!eBkaX29lLkJ@rYwp-;_$j<-__wt^R7C<JV_flQV}vv6
zRAhm~lWOA@a-1C-ax))Ll4~EBoH)8i)1fs7COw}Zmwbo26OIo{3TZ0tuPuD8vQPju
z<?pEF6?*=3D0Xt0U}kJn)w`(6||`N8V<H1e$LES4*}5sf9Yz+1Ht)?nK<6L8eRd{_0J
zO@az}S5faX4s&Sb7w}H*Cq{!_Npr`PhS(<Y1bK2g+S4MVl3hWn%#?a4wO;kbTw!!_
z?4bBuv%fm7=3DR>r3z>#nyt5>-u0ft5{%Ijjr@r9mMXrg(c-SxHUO1UzAX6mFa9jN1?
zV+MT;5fGglEI%stA3R*1WZW^e29k9W?f4p9bpC)ESOdQ>L$|v}u%7IZboj$pFY@qR
z*ziCV2BCzgm)9dylopjjK?yYif-QhM8%7JxW7(xsB$yP_kK2o5)u%hxwXN?O*NHYm
z89_xsxY#KK=3DenPsJbh9>{yO$T!`&VWvAl5p&h~wKcWm9fY0JL;B6rhDAseH&W@!Uh
z>Bz2)8~2UYMko<pFxh(TQ`;lFG5{B4X2;jFw68o^CTvWQtP1wzlW@A_E%@ZcYy<RL
z3usW!3El#R<gg%E>M{`8R{@k`jIvF<H7fRFQHh(-OgHaNP4#SDx3#N(2<GiZ%$0Oi
zf*p2pgGY9Vvxjzd9y(ILk~ACR;?rwS9FzWFFuZL%=3Dq%)lj~v{ytEW7n2{MK_aDr9C
zN`?ra79z=3D92&r3BMH$Xhd9sFzXo$rlP`-RYcUE@jI-v>9hAl`9dNOgiLFu4Rn#m95
ztxg$6LlrV`g)tjwPTwDOZQs|U9Rji51?-FD$%U^GE}r>lu|v0t1VkzH7^gkQjG*@&
zJ^Z~fP4ywnM!BY{xqB0blxY!QStJjzqxRtvlC-QFOR4s3zndbbFnEE#$)l5CH%9=3Di
z5sOx&I!Lvr9m^z7v-ebmdVmgmRM8F=3DQSK(#u9NVQv7W=3D~(iAwuCYg;uT{_y@+ppT%
zzB6XYpa7QPq?MQ|>WC{~*cZ`eE~75s!O!A4Y8Gy=3DFy|rLhL{PnWZP(i6gIun4R=3DZ{
z97x}MM!!Zt3;ml<(+CRok~{;<a2Z}4ecUW6LVkG4VPaR*P3iB)8uG9Pvm?sV_*Opu
zY2w1*7bsabAbp9xgjO4kB%YvPU^)*7s{t(NvO{<r<pOGx)yj95&<8BRhe=3Dfr<{4_e
zm?)3IHc=3DPE#?Eu$vk~>T^}1WGY^0W`My4;&NDZW=3DzHH#aNw)wH^;}mO<T)ELh7}Se
z7KyGZD=3D1};36oOc-(0x`GymB}?L5niV5BqFPNJB_F%lb92tU|HAO=3DtpBr&5-vC^Qm
zAIN9Q7Dkvo^CW$iqPg@`{i~eWz~)UqT;}~th-9UIEy0d?4Avq;F`|y=3D5#A(|>q=3Dg!
z9rH*pm`SM9iL`Z*jI{^U%HmWd>=3D}Bpg}1-S#>1o12m+xA<&Xyk^pTgmpnWKHT?*|E
z*HmR-YQyZ*a8)%Km+eZBn+J8&)jvzVI`2al^U~k8c61n6&@XwY^eSxxB28{GT-IQA
zl_JUm1Fb>O>;YS+lIXG)5-`0+RbPAg#ZJ`cN4`MrCY@CVW}z{M@P=3Dk=3DWaD-6OzNA?
zj)H6|qPDvABf`fp<LKoXpsL#$;UfkJv*0hpH1)sW(FYU0J&lvqUP|B<klIS7@X*l=3D
z*O^MX5?kTdhZPk_@u9X12)ms_4KBw@6jrz*^{}4|ea2gH?WgXI17k#xJD<^pB4-J!
z><Q9RG-GWn$#wzCfMo`y9Bh`b*}cFuFiHzHQ<fj9G(4<V2ewdx5eTF#0N0;rOeifD
zx>doaG;n5PTpJ(6iAWNlhCa+8%pBVouW*aSqYN>wqjlkQ3y;8?s#cTyjEbbxTde>p
zGfksb2?)G8^dhQM2Qy<pP%^LvWbM%&MxYCCE5YFagZtX27rN(X0SDZDe4NWxAmPIl
zfN{kt$=3D4!h5ZMHM{8^PisG@2rTP-Q4suqh-S|xzRLt2nXLZbuyI-03YexijPK&O;-
z>;#9PNkv3c^gbpz6r>0Pu>Q%xDYB0^mOseMMqi+7!5)|<r4?e?P=3DZ-n<u2maAUpId
zaiR!0L17RFVb+Zvv}jYWV%-rMZUinhaD7rL567?#)2OF%S9BFs5<ji`0mX-ExLhc*
zaK;X6l+L8q8-pV_1gH)NNGxP<poU)oj|L&dW2qYZPg(ShLVNd#zvpeKx{!Y6_~K_1
z+iQ}d*7^Q3TrsvfM0-(36ApICM+dzFK7pV$n+&A3&VhGAB%C2+(OqN0XTvOta8k|Q
z6HhJBHy4||n)8|9)2wH>V9}9nwo!^fU{wkbq->NefcUJ1J1{#zg8ZuL{-}k;wYPVl
zdbsNc+^&@`O)PHk4+HnrdZF;x(S6SrzboM|jQ{<Cek}|<Mi@|?Gb?nANOV()#Zec@
zG=3DqwrB#j;1gAID4-Pw5`Q&=3Dqf`uUV<w}8VDE|(4fS%;u!oEr$XIsEB=3Dz*VlfH@~hz
zRy22>Dmoj)<{%s=3DLERI_+uBNlJkorTJ^8Uo9fR|eyV`b5$1FV*pg*D`Y4%R$4*|Au
zE~}FqM>cl}1{WOS;8!bx4O3-@M+L>0CFF7gCtGqK+~%{QFiqLGZy26}SnW7LCvZfE
z^J9DuD<U$~#7k<bBK(8hNT8<vag+r+o&N#o_vq%c!i&Fja{ie5t7rAL=3DVJr90J(3P
z@Xr=3Duc8Al{2Vem%c|^6s6I4!P6yuHBgwfQl#}?TRL2{^$!&u80y?wXbibL=3D>kL#gK
z)Wa9>49i|e2?$u+>s*T*V36xlr|3G#dE|$=3Dsj*v_e-*`%rFXc@>2AkFt}wme{f6_?
zK9jqCbfo*V@0WO3_obL4A#wzvD14GE0AylM@BkxJG>HZ>R00%VYygQ7`e#M>r7TCJ
zYPel{@7W8yVl@MKZt6Sd`Ui#v^cfl$JT^Eu_;kO&2_PJzKPLS)iw+Q=3Dgc6td$SOOC
zK3ZTc!<XYsHbuY1NM2BhH8v&xbh^}kWcX6vr?8=3DXq7wJMKQ`spW+FZSMg&MByG(ou
z5XV@el6)uWp00ugVwM)<g!N>|X6!5U_nV->!J#4O8hU#4+$Em`Y%f3Z=3D%arVOR-Rt
zj=3D_Q9Gk*OuK@SX}HbP@cIoP926{(X@0P(Kpu1}WpQ$glQ+@Xeg(QP_*?S0|A_xsEZ
zm&TmUXDcxV-}BT2j~N>jx<LdSP3eewCGkEzGz(t92gESXZD{A(D#B8q&D)svzR~d#
zu~{tk6%t>MK6>JkpMuoy3fz0oeJpq1w`R?nwQJX|Tfcto{u9A{vd2CUSWn{2Im`>8
z!$N>5kg+zI;gO^~1ab;kdiw|Y-YO0Ywd`Wg?k5`wUF_br6KUqUc2p;1p($4!QYuCb
zLE+EA4;mv<H38RJMbRYl1k(+23{<t!u5ym`Z(hCO{&j2DiljB>>%RN$xwmcI><8=3D@
z3x2`+>;8t9kV&gi5+AV>yJp?ahys@?z~~98C;ZBHTQ)XFUsd-XKmG%~-h-Up>3x~%
z`&VbFi`=3Dfy+HI_q^cA+`=3DZnuAAJR*Ti484|W3kF7*tTa<Sj5Cfn1HS}OmXPjDYleK
zOX0+<=3DL<8PmuLH}jTPRLfMU3GPu8o?9P568qe-L~$gxCMP&(|EOPr&cmQ!dip54-R
zoEI=3D@;@pz^mgd;LS$A+kdSPmN+Y=3DLd?_p3Zg@T~*kzfzFK;qjN`gjD5`mc)^r6eKW
z|1?!>j#e1c*M7DhG;>t9He=3D&yy*!y9F?E11j!up|=3D|{9pY;*`P*@U=3D0C+20T<H>_h
zSZ@)sDaR~lgT7-{^p{`c9=3DD6NW}BWOmp<Mev3`6+Z~pWG$XEo!N#`ig#XdfX&MH56
zbS0~I@YyG)Dg)HREx3duc=3DJ1yFBa#EwA)k}^*hM8P9@F#Co1LAk)0dby7-ZMWf?x~
z5;|TSVWb>H%A~Y=3DctVeArlt3+53{?=3D%$i$u-af~U?c7IvY?wQ<H<nAjO9K7frBgYO
zIG*Gcf(BFUAX0+uu95ZK;_#-n2lf@tOpXmP192qMpn5^~2h4%BxQrdoSNr+KT2rBc
zk<+@}r>E-y-)r7+O7|Wc4g|{xVHSFTX`z#AWovLl{`7Zt>3MaAQUz2RaULw|SIk=3Df
z?v}cNazH*kKDI?aos059uKUcxd#1R>)jWp@wgWR{h|DPP?76$HPqEVbZ#s4#d}M5@
zGG02SiD9u&C=3DR{w)atsf%az!D;9&pg*!anjvElZEoqHavpJR9U{X2=3D{zR~i;V0Ri?
zWr!{W42?u*#gz8;v-&<|Z@O2oH~Yz{2Tt`)UGj|We1>m7J1~4ODm)+u5EHr5$lA6Y
ze)*N~DNJ(R10zI?aE1d4xgVUaJRST~&|aQ7Biyue@BX8MqbIeDmmb}JVAdnt=3DfiPn
zWotHeY}&M`V?*QIYEMNSmYB~UJ300DN49L#n_3+}%G5|xdFoI+L!wIA;~|folrMCK
zo1LdWSe{<g*IbJ?V_UU+B(>Ty<#DvH%p<>>$Hwdpf$JT9;^0*F3S`-nYaiWp|Gxfm
zWmxWVe;({#-Jp40@KK*?H56W{osDC@L!y89RCVCUE*?_Zq32aSkjeq0)kAmd@i^gU
zxEW422J3F|f?f?@pE&G%p_NbV%xn4P+Q{9hpkss|*cd(R-Sx+-90W8X7WLbo+lTeA
z1;agOV?&Rq#=3DTp*9-WvR>F3apFV_(#QCEMn?t3G-q0vfZ_~^dvX-Im=3D-<lEpqgB6g
zv*S!WKVKP7Uryhb8_bWFXD*WLOJl?3G-uOjJx<pitrmOhFS9%}J;=3DPGaGF~-@7_1A
zTm54WF?=3D-P*}VJUvGMYFslRVAHv?QwW9qUuoqPVd@kb8td!T+e&^;3;80mBQk?aje
zYYO^KO21-sIJ+nEzP}!*J~?a1tTR)Wdl?ezJX;9CowXA)zl^b?e2V9MCgbtzb^Fig
z4LQt-X1`T<b;qs)JwxT{<?pDAviyOk5ANB~bbn6g6qCCC)775ryIWq6ojWz_t;3tn
z)h_As&Z02RTY1aq^M~pM8;<gWOXcj^$A+#_wWK#de0TUn<1>Hj9^BP=3D?7$`7Szg!L
zibO{?rp^e{+Y0i76O+UHXD$Kms_0cHM`i{2!{=3DIhm&}av3s2pB;Q3i!uI<sNGwb!<
zYj-`WlN<dS_wlU9&IsPv=3D#!a(rIG5a{jfaMe{kFC893`to}B)>`V;ZW-?)EP=3D}f&V
zoZ2}vn`~=3DayT5X(Hv8Vej(tbZR8Ll)S=3DwwjQ+Cf2FPuEGcQ*N|@%<MbpE=3DahqH+G(
zEaQspH}>6)2c}+#?+h{k9eef{&OJZ#T9hn*32!?OY?;-o1LzZDvtxe=3DgWs@!&ak+8
z)1H|(i7a903EDl4A?4gnGjDZS@&;^d?5BZu?jc~w+i?xxH3qIRaE*a$3|wR28UxoD
exW>RW2Cgx1je%<nTw~xG1J@Y1#=3Dufw;Qs@=3D-abA6

literal 185398
zcmeHQ1$fm+*Phg=3DAf*&(fwmNPcemp1?(XjH?(VLOyX)fa?zXTCtE~RXy*Ig|$;1l#
z@7L#n%$zy$o|9xUb7qoTqEepg9zgob;{`xE@i<5T;Ia5m0DcZSxa<Lf1Ayb7NR%2J
zfB*dR5BUA}-+>?q;P1cx27mqa7x?qfKfxb=3D`~f^XJb;&%7x4D>2EM+&z|YSQczSw*
z-+ucIeE$3yeEReW{QUFJ;Fn*10X{xHARr(BeD~dVAYsCUASfsZJb3T`eE<FT;HRH{
z0)c^nz~A2=3D#EBCJ{QB#!;QjmeAaUZv;N!=3DS;QICJ;Kv_-1n=3DIx13&!m14xo23CNr|
zGl+_c0{8FV2QOZ{0Kvh*AVGozAYQz9;OWz+Ab$M#pkl>};NZc7;NioE;LV#iphSrh
zAa2~aAXTbV;N{DgAbIlSAS5INJb(Ti6f9T}eE9GIgocKKOqnu)&Ye4he*OA^bm`K8
z%a<>MSFc`yjvYIK9654;@bGYuB1H<2C{ZHt=3D+Pr^;lc&5a^*^pJ$rT#85s!*6)FS@
z7cLAkWXJ%rWXS@aJb40MzkUtMmMsfz+_(WsmMjTw-@Xm5UAqQSrc4PIEm{PUCQS-v
z&6)+m!oonOPMtvM(xpL#3KhWP$B)6yn>WFkGiSh&BS%1=3DK7By4WXZs-Tem>Zo;|_N
zojXCXV#UC-XV1XBd-p)DT)Dv6vuDB9ty{s6Awxj3X3fCcw{Jm%1`R;FcI`m!+_^#O
z)TzP6ix<K1<Hy0VW5>X$Q>VZ;-+TiuUAhEj&z=3DpMH*XF$Y}f$u<jDi7R;>!|-n|R1
zUcCwq95?`~RH*_E9XbTEX3YvVZQ2Cp&z}$O+_?irj2Ho?O`8VVw{H(xv}geuHEIOP
zl`97_X3Pk#T)6`B=3Dg$vv=3DFADEOql|rqoYBaHf_L`EnC3q)vLjtJ$t~+nKQwfHEY1w
zv138nv}wVB0RuqYx^+S8)~!LBG-<%ObLYUaWy`>lB}+ilrcFW7qD4XV>ea#N)2G4E
zp+iBoY}vr5QKP{2?b|_(8a2R*6)QlsYSlo84jsUZ88g7bg$qIY^y$H%L4&}+fdj#|
zZQH=3DARjWXyN|ivFGG#!iQl&t{h7CbPL<Fc+s}|_pyEj<7b}d-9ZXFmtd^m`Si2)~0
zoB#z16aY<{Gy#()O#-`j?*>bkE(PPqj|aPU?E>r9uLlz*OaPlVZw5t*6an??*9Vg)
zPX^`7mj??LEC4%p>;T_>`z_eJcP}Vjyf`>|^e9-ocrn<xaU<y8zdxv4xiV<kvL)ER
ze?J&DY#7LwFCW;qZy%^vuO2vm{ydmFcP^-1yEf?3r3)B5crX|_awIr>_%N6^ZyuO4
zXAYP;bt>rEwJSJz@+9cdqX!s0dNi0gaU#f@H!tYbs}~qIZXD>|y*p^zwk@brrw(Y`
zxG|_%vnH56eL7gad^u><sudVBW(?@tw=3Dd|{t(&t0`1kxDSn1ZEKU5e!Jx9*?zG8PJ
z{duQK*`ay=3Du@m3lpO*FC<H)}csbASq$Jz}~;0!wTf1d&;8g@$?`0sP=3D>qneF+r$-W
zp?9ATpY-!4&vrfUzka{|6$o3e?vltIV2)DU7Q3ni{VQDi`a$M?(It{2<T#7Zio?<n
z_<w)qB2eT?0X(wY_29Wp#mUD1{tQPTsOBblki#8xlrgGtCd1bM>w^9-)}g^PRLjsc
z;=3Ddk9L;ibi9%v}uq)_zw|J?(+PeJ>>WFQSw3Y7ZaoIuwZ$aB=3DoaImR@Bd+SQ|KDZ~
zEEY)(qAB8#|BXgDud0H5Oa+=3DHoV4-(W@H>^AbgR@Atx*Tf-rJ1hyDLJODEn@k58c_
zbz6uF7@b>;7+x|3JLqsr<edL_bT!?7&k;%A^ykiY%eA<0;)G6h{vjF5c3RtZRp+E|
ztm);Wp_&l>!wjM4=3D}~i2z3W{2ttw+M=3D^2r0=3DSZz{FudS@IKCRLcWUDfG_4fxM6uGY
zYo4ho&7qYgX|f6}#a5>5f4t#oDkVs?Lfu_eJ-H&3_0Ry-m4bKwOUlvWxSketnU-u`
zE`OR3gH~x*dRdZk92vn7`wx=3D?R#5^alWJ_Nq&GC-ms`lv<gs~Gz3TqI^Jkn-MoFf0
zXlrQD;y3lStbsVzxb*)$p!)pF$G%vji)GfQ3*yf9jEKC85PulN_Mb2Ij$*|r_(~cx
z(edxrjG;N+WixvJf5}c`1xaXE#H^=3DTFR*5G|C<ZDV#^GFfv0ApFUgN-$+!i6u|oU5
zUPq&4)fw?w8Doueenlgx7JRRa`LAyi3fpowJ~cLikaw*$(U-JT{XjS3edB#u>#Y3i
zG*$bUg&r4?+OD;g?)d-2GL-CmHby$hO8Z}-uH=3DWFuoL~>JNZ%#{C*9KW}N|{&EIAC
z_545KY+Xz(K@gqIdN&uVtg1!c>1DmauUKQ%cd40Iqu3B-OL`#lSQVQ-Bb&zgiUVdT
zw4q1hsYF5$S{Am{oTAKco2uDoJ^mAU(V+u;RKp<b4p$;(bwM@7DhPECXss?-4Jg+2
zX+~eDVCPl1ME%qYb*KElJ_AM0dus$hm}_qUv`&C9eeM6-Ia$8vakZi^JV|czE%}2c
zgnsR9hVW(7=3DiaHcG%iM_d4%oY)Yf^N=3Df>;q4%<=3D0x`Cx?<9+#>jGSpdu5k9Mj0{6a
zu;~BUj_K0b72nhfv62#=3DT~ZB#tF74-t0&<0Us+5GS<h;B{F2|-nHnr@SjrK9L3o(f
zQlno`+1eyr4hwNh#}deSTzG<Chs6>eTg{Zw+|wpUW1+1$AmzO|MgkJ3TD2jee`#@Y
zcR9S8$JkpEzo3c5$>9Aq<G(cQF4zY*ae6AUrO>^{$8c<>vDSnMv^km@Hu4n+4o*op
z#3sbg7kh|Dvti&Z<NmeZ^k}V?@WtH}>#>-F*GR-6;D-N8p8~@&AZ}<^TE*V=3DzgioO
zo5N?3ohd<^oDNywc7U@~%f7@j?&JebNG`S(({Ke}d%f3meI7cv*T<SydM}RnJ!1`;
zC5B!G8wkJPv&9nQ+DfuE(+%%ver>g13rB>`2d@&01WjYdg|3Q4{zCdSv4hRLl{Go|
zy}~$ySDQDlt)Zp|W|ph!(du83k_)}3zPhgAYs19a@iWO$S<kElhC8?T*S<EE`{^dt
zoh7h0jB=3DeOCc~>G{%a(|vNqY{S+R6l>c3!ny^Y4dRpoZx>qv1MeF*!`ZOKR}_<R)`
z(V0<QZ&suchbS@$7W6g)L``<D#w)HAG&sp?{@3^<j=3D2zt12s_({^OHc6pgmEe_{fY
zTh!~@SWK00`I@k34L3YXO5S}}Tb%oiGxerr9~JUl6^qG2?K9B6yd^Qml;pfq)4GgA
zzJH9&$T37vHD%GSX1{2rL7Ka&AmF-+&ED>{;x33dFo5-%hb}k>bN|>{F4egHj~kzE
zA^tEb-3OGaX66lvpykU3aIQBp5U|K8c6|kT(eU3{@T{ZzjIS`KVs4GgfYux*-RIx?
z@a?@2(fVZQJoeq|S6#clx^SmmiM$+><PWxNl&5*ZqE+MT`8}e`)e?V5qE@p+>~~(&
z&zE<HCyOpu<L`|88?AZ2vMzrbu+F<4Mc|b#&y3SHzn-r(sz}|96`0teuZ~oYnjm=3D9
zcr$U%tsM<Qq~wWbNP}rte;ks<=3Ds3i?<c)839;jR?qsp_-KW1_52aD!LX(EG=3D*O*w4
zzU?<tu8n=3Dvub6Qmu@h;U75`a~542*^n}-X+7nMs%c$L%a7w>3#Fk0LUQ7w-)oY3~q
z)i0WgKgr?zYkGO|KgR|Q=3D~pYK#`^`BGC|1DR_(U(OWU<MAp#L@<e`NoHfV*PKrqN+
z<bVV0ZwDkET!)nSA{4JdF<Qa$-+v?-8(WS2TJrX^Pg9-B_bICJ0%_n!wo9?t;&GWP
zI(a^_lcsSebE&YH=3D~j1klzivr;>gtg%vKP4E!+>#hzaabY*&k8%b{*9`x9UB{@|RM
zypFvvvn(~_a8+h$y?{BC-6r$I*6|ekA-9_|`r>ftCMztlMb8ncD`3^WWdZv}WkjaS
z1RwJ$X2xNlp5>EjDvvdmr<T$u@ww~f>QR7Uzd~%D0A~2(|EO<D{yW2)SR!}Szt|b^
z4Fg*&o`BV?tN)4Kb(5<66I6!VrpQ0IFKqtOWyVi2#o7tj%$N}d|D%6{Ko?W-Gb!w4
z>~*s|{pfa|^PfXAoVgeypIV&^Xgx)DC3dJ$^rVBP8wnX}$cAnwO=3D}oKTE@7)f}zh8
z9%P)%SUCZAFxU92gXu32H0IY}lrw_<sY36=3D1{HRWl}OW#=3DpOyJeOyC*iPC43o5P-x
z|9q+|@i!YaSD&gcc8F#YH^r$*xk6)%#(`7rG&M2>9&?J5Y(=3DRGV}+PP?`RD{--!C-
zWF_=3DX=3Dn#z@75d|{%?=3DJx2Fu!52{qM7B6Bafhn}Emwe=3D;=3DwA9UoQS}(H<sr|YIiXGS
z&0FHzGpBd`xNPv?Qmr0sTiCKqO5KY(!_6!!i@s&dPQ&@0$7^FefgflFO@$v6=3DU8S%
zt$MUs*ectOj97v-VVa6h|GHT~&q*kcsn8vijI`f~OEE*Y9$taJ&_FnAb<JG;0JKg<
zQ_7@O|E61Ul~H@{$3K2cy+>&ZpP7w62&Fv(`shz;@ST8Mw47&>N_@gBt~5I0-|Y8W
z9ILGjmX3|2g`1$6zWxEoSBuap2&Y-TnxiM4PO()otvRKDJO06QM{xw-iKg{do@s^o
z>mPs}1<0Uy=3DQ0@+x;X92Q3*_cD~dDzIe*eOSoCXuSM$MA!itn}d&&g9ymi|q-KU}#
zZOZ+dyWL=3DEInUcNC6^c&Ru@^tT&{9nvpFmY6KzPo%V03n#Ga5hn(#<XfUm70E0^sy
z7k{IH=3Du6heTy!g;luVBQW&bFjmX2>?LL{rjj!!8L+{Ji|RQFT#qNJngjOcaB?4v!i
zWc3M54jo*u{3zcTv3wR57A2#0AERQ72S$<X;nqhjjW_qhy#d82{j+T7q=3DLd!p>;=3DD
zq5D|dltxmRvRA~KiN;|!W?E^Gk!`mK{A&GadL6X22&3^zZSql{-MBWIWN3BL32P?W
z*GR=3D~O7|@^Fgj@osnbTuh|!!m0icx|vRtwPx!VrqDm~|JHB%Zb1Ew5LSkpm+`_UBT
zB59Qw;D{`_jM`WKS}dXwsZcI|kH-jy(MsZG^w3Du?UsEDcQO4je8MPdLatIy!VRlB
zH_29GLc4H=3Dz+i~5nCv=3DbTT2Wnqzh%DZk)<V*_%z5*Q9onQ7gxXnljuB$?Gaw<wCNm
z+|sIypJj#k(aYLzu?A4L?F?1LrmK-W!PdPc`~nY-AiUKDj?H|QRPCU|ox+we)Z%xC
zV#&gDJd>Dg&ohLRCPZ%2wCeH)jIA_Y)_(_ub^@$>00ZzGKfkF=3D%o~xjP>t-PtpeU4
zDURA%?}-4grV=3D!SuvORJ8r71P<&n7hRu(DWh$|Mnhgzh1FQM8&cx91#R82TB*7Y_0
z^OBH--*I22TXS}klWz)Lhs>HPPQ)=3Dg>Q>!dIJDNoadW@mEGFtjh$nzG>i{)z(1LK^
z1WZ`epBz|;#`=3DfAJXV$;<BM%$t<-)L57awLv=3Da{&p{~jbtS*ziaKuu*`wm??bTR*e
z8O*Ep=3DA$mnA~SKJma}3dI4lQ-Sr9Cn89gFYiv+7jo=3D6z~z%1@XTFq7BjKGu&`^+hH
zNZ-Ph3Mm#_pjJ{5G?36O2o)?+PFIr#yPE3L*^E(N;qH8AOb;SOW)Htb+D%jn;&{b+
zhcYG<a)@Gc$t;;UWO!LN;2T8hTCl?0f(Vjjb0cEJCYrMSU0Q4wVAW7UI!B(Ju~_+R
z;5~IrzS+e3QBtd}(5#e2g?>RyBo;MHON9i<x-5Z+ZvvuPtV}Wun*6bvE~a(56kNv9
zigl~k?I>8$lv7Hpt|rOS8r-9!6#M!}+i;b_GJOiz+}R1$!bLW>Wi4gU)fg+^S;?9g
zb18}GB@ANqG<dc}k*I=3DU6{}vAEz+&32Hi-u!pa`+I_8sy+3kUa3t<|C{;Iy|XryH1
zEgM;>!Z?T~{mi@tgWK7KN9!`qp|ei(Xu=3D|$8d&Vpf^n>ZVC|wc%Q6^;ShjMn&T&Mu
zSh>Ok!Pl@1S16d<kK?vV`3ZzJrh7}bdbJWd??_-_z9StvxDo`jcXUHM{;3<OdB)$i
zobo})_59+dI6ZG5URg0qb>T^fXIRslyrj+{NX1GEQ=3DYqp(LTUo#kZQf+1^rH#H&OW
ze#^EUqFE4<l{Mu_!seJh;hHIZittRzZt8VPtKEg-@esExyzhwq;*u#}(h;-Yo~HCE
z!nB>qJC#=3D33up&aBf>I+-y<hhte9KjDTS*Otl3r3l+Y^@PFfZPO+{FuV56o0FT-ct
zv5~xzRKAwDx=3D3^VnafCc30$vOFK2qIE!71ou?cFwP$ept0U|M8k85UhRm~U0DF{gd
z41gj;cH(NKx@CDK!W>B`oCrlQh-5KFNlQfRo-suZsbeTgvDVUrHbt~Fz6|RyW7(>j
zVn?NL0`)9zFBM)rP4yyC#e&escz%PjJZ{D6lt0m{IWUjX<EL3(eE56LtU{N3Of(*U
z6OT2bGc!M*mS7S|5(i`-JAZYDh%T|C_*a6(5FvR7BL1@sDUyWV5xT5+Wud(XsaB-q
z4K<9@fZ%-`L;8#cw2&eJS#ZTdk}#5ui;{^vmliA!#*8NrItV5FxIkINRM87ZG0_su
zl=3DurqJ63Y(OAwZtMd>#HcidIC_>CzIoMniKrBG8tgsYhr|07(IB-30<q)dZcL{aJ>
zohJd<NC~Y$;Ao!J0(-Rh7c!P#N=3DM01n%+@VlyF-nytTl4eih-AcSfy1K#RY@90WB~
zCU<l#Wxwq{jz4%7a0U{IMe#Z~U|w-p2Kjn|j>fvyevk&GXfFQ8DQjM`>a*sZ*P$V>
zjcgY>rZm4DJp!9pJG93&^0HQ1>M+spcMhf4RKZt=3DAm4=3DxI-+Nul^TDch3OO&u>j_9
zv6TV9OW@!r<x>VU$s#kzxuK$05Wa%`$AZnL#1=3D${hn)?)4BP^Wjl1}>98CSkld9p5
z<@kqCp1+cp$MpM!NVIo{3MzS5M3{Ig^b=3D{Km(U2mFqQ|EWjvwe3)9YcnOtA`6^c4k
z+^HLQF-RIJ?$NEtCD0@#q=3Di;|V^p&txw4e?PX{XBrH1s$LX<B-NNV*jtx`un;=3D4hz
zA)Uuz)RZ%P9<11_%@3**Y#J#CPvzG_az00NDV2EBNLE$KY{p2jq_GjgWMWxDfhHGn
z#;5|axKZV^yYbCzf}AhAgB^?N#Qy-3m#bc#bSiSNQ`fs>m9C?g`N6jiX#Zf=3D;cB$;
zh3J6vup+3ecYWb5B#RUW>u}P=3D8n_+Nz^WY5ui3c79Tp0Sp4afM*>tRKHc<mzSVL*k
zXb0poy7WlQjasVt>TY|aTeAs)8*aOlQgx&EBC-EdQNC6e*!_weUg#LEOA!E-o8c-L
z^>#WHn_+LAngPN^u5R!Sc*Rt!?-$z0g?B}9E`5HNVh!{Zg>s>QH7ihD@UqE9S;s7;
zx%A*nyIJ}KealO?nR<kGxJ|Ws%tE#zqUDyFCTrW6s}KsP=3Dz<0;CMH)OWrcB<>(JML
zmc?^v%BkZ?(j<v&p66)YE;KDyJ<Dt3Nz_D33)x;-MXjFXb`upnLR-=3D<osxJK{ywal
zT0vN0AWKEJtVJdFl~Ir-)Az`fY_hw5LC~|si=3DO**VXR(Q%ROg%O<Ibb;-^CL?!~9r
zJl8$Nrdq-GPra5tsHj_^Ls=3DIUJ%aF&M^jnK>s_i^#m1j_6kEU(XP_1mS9@1|#)?pv
zOkBE>@~;9XXC!A`ntZii(#>5gDW{7tTM{e27s3&;+OSd8@-<ywdSN8rTo$yWCPP>G
zD5OJI4vkIF$^Xou>J_u`vW&pq;~z`_M8n85{7^if5#lg``?(45ujIg59OZ$nRZwN_
zIi3*UB*ab*y13dhD2_D!P!(6vCh|)$h%)Z^Wfj`S6GWBJoSBB3J%O@o4i#3Z9Y;N~
zr*>Ke0NIqF8!rm2xejN7rFQ`m1VM@Wd@%)9;U4W6d22!eo$!RB)M`?mLUh|q>e~=3D5
z2x;RoHMklc@aW0iSxb$xJw=3DzLNZ%N~VNw^po{^UB^FTDmGl;aRK^e%Ej98_iMG#W(
z<Zk9^s!<q{_FXV(RQp~-b8Xpr<=3DbZ73f)BES)jS#YD;(0yi7^>!9V(GDlW(|+02qo
zQ;qr<iiBo0#l!{+P2U_0Hw_`aT}?xK9Ih<;=3Dl~5hwS5i2vrZ_Ho;;O?GqmQx2B9W+
zq`r-xv0nkVcAAFCO^cwfpG9Zy@=3DR@Rhg&gIpX)|rL#a|p!`M15Rq2GL@`h)vs#ANY
z=3D<18Frue1RF>9e};U#WWMQE~7J+q<#vF}t?hOjn1@`xAAcpMf`OGBKZ0=3DVb$`A}+V
zv(>~@Lrun5McnMut?y^r_#pYQcxVvXjjGq6(*iG)=3D&B82!z)X@IsZ`vDr@bbq8ijq
zjI!-bFv<@V=3D|wlZEB>Bf;1n#;+ugNEc{O%cT&7kl@x%+%37k9p09@tm<@9=3Dm@(&2Y
zky%rpZDwk&K#cd{RTbq537c_jxYFV*bX0bmUya0?9M!z69_SE_Tkd?E5%`hDVm<AO
zHSxx@gmTU-IsA!kv2fO|R<FlBB!BQZuM&O$a#1rmD=3D}QIYUVl=3D!}zKV{((7)h!vzI
zbcm*?$;qE+u>vZl!=3Dok)vMF`4Hx*`4%3U!{QZ+mNxLF=3DMj{u>R0?VpGoB<U7tS4bR
zohQ>QboQq>MN3O%I7l#>9YN6W&}deVLX#h*S+Shf7Y{9Ur^PQsSOIuT!9sc4D6!$>
zK1IJ8$=3DWU`ajbMcf)BBGH|QM2$sC!86R?5OQ;j3IL_#-;K3hoNsZ2L%z|?5@)b|@&
zhQB@uqAV?)UyR_R%x;@S5L_Z5psr<TH53i7;)Q633quXAhiU*Mnp4vjMQFpy0(fX?
ziwBGyLt6>6b`k1spj`m^X{%YglC1_#A2+Y0n8DwOY)JBCXE>U%8OduCCB7Bk`p(U_
z{oMi=3DQsGl$X9VlzBz0q3J<3ux9JXh~AG{{j>7c~R(0RbPAMR}}wYAmjK}Y+RQ(p`p
z(tw46m)^d)4shmJDZRe~<<AtggAx3c4R1pb2Dnm{p4Xrl!AU7cZX8xM4Aun#>a8hy
zW;*5J?~<)?ij{Lj)UYa9zvEbz!eJV%e`25rpH6CA2fIai8{GRbLzzf6HVH1UeQ$n-
zPQTf!=3DjA0aIw=3DpiR$r-_{d$yRX+`MX9^#+r6UF{E-ets^vjTT7Q_1%0REL~InmSSg
zLWw(f6nfng>NAh}hSCX2O5$y=3DL~wHvZZTfsbR&yDV!)N6hi-M6R;0+Z((Om}JbQOU
ze0QtPQa2_j{}rSvcyRv>+1!+=3D41kP!^N2~e(FSIOh5XAplRzX&<g7ddvnJuzL%K4V
zT5{9hxf&6f)}Tf;kKHyjUdq6_yG5iuWTWn5UN?J0cQ@HpS`kOhKYb&L;B95pl)-I&
zxw_E1fn=3D+O!W||oLoFx&+>*Zh;q=3Dd|`N!HSZ_<{1Fh2zm5-kFJLF1UhYmw4D6s9R;
zqk8^}`uSi|iIdU=3DO2{fE*@a#g>1V*Z?_|!6?*LRiruyPXhTjX~X&M4g??=3D^H4l(Ha
z2^|pOds1kC(tMt1)YvSYnIBt*7m69)!Y5Y8k@Cok2u&rP#f$b+T_*bQTV_oq5<}u;
zx>8-^ldEaXNA3qtByV5KUxSE0d+_Nra)*#$5XQ<z)WG3wo|~DTr=3DH(-20MJ7jiz3B
z#vaRx7`->O=3DkLdoH_pIti$b1=3Ddx6#|+uGzSGaIRGDJo3VK9eFeicecYl8+F!h&{*f
zDw%y&w}SQ1%gr-$@g|Myuh1I2TtCTYU*^icfU%8%^tQGvLqF~%CFJSaETSn|>#C)G
zW{XhM9a#&a<6=3D>VmM7F9g!t7vxBKJWUtQO)?|ORNk%uEns$TX^(aud+*4Xq*QHWV)
zrJTm_I&ls{bhzshYC*K@X5(?Sv?F9l!f=3DBxF*{8Jo>m*ckk&LQ-6v^2bZKsfJ=3DfGM
zF`S{v!nC)98m}>q_IzXprZFr?Ez?pOn1MP5#_Wi#QIxzDW<y7HVIxGjj>_O*4l|dv
z6y7J5IJ1jWi3YEVTFSso&5P4?_yMRy-kAhePC`jD-`6gv{TPm4Pb*|G<S1vmLuM!8
z0>_Ug1=3D2T)x>Z&0tp$jqJ%lnbcbm{rI>$W&q@r3*+ZuwH??;tGh-B7mpkpXTj{dbq
zpOV@Nh<T!tdMIMsaAhN**#N=3D&mD#1tN?MD4$Fw~pcP<o?t_uG?ghxE1#yNx(LRhMe
zhmWHuqSjC)<z7BhYFv3V?f{OFRTUC^LD6JyvR~S#hQ!rIe!v}8{}+b_PL|)yzLC(p
z2&W}gw#BMB$LI)EVMik+%l1HQ$VJR_5~R~s2Ex@c>$i2iwya_8GCdyzpKi7CZLPVC
zhIzU968Xh?w^`O&tt{*~_ILBUN*hJ`B!b$}H7`JfiHgd0vPe?{f5K7^&9N5Yf}7Aq
zV_rm9V-g0tl@cYc`+XcCwnsEZ&VFw*A;1mvUvY7m_#5W4plo8t#Q?1ru5`dtd2w<S
zkD7mo`1cjX$l;IXRL)_nCZSCxSpN>=3DBU!cH<3$U@4-%JPnNP+w)g)6uQDP*?UTFf)
z$pn>{xvp$n^17I|vpiR)TN-`<F0qCJQC#EOv;^2JVi3sZsCM>2id_&ZF||ooWciqr
zw<NH05Jp?p_q$Mj$1qxf%Zo<%OJYJ&QH~%AoKy89bTD4#esPuINxf!tYiiUH5e#L9
z$%Pr~PCs&K3?Xs`DMUHa1J0~5;{n``3yW^1{i<tPq!WTrlD->Fw`Ev>94tC4bIiUZ
zEo4evB$Cjpz!ur%QKY0qvFi&Clr3U(04}P>aW-_rErA1RHdFCTm_(az2w{;((1g-_
z@TO6pMkTDAdci<~o{&h@C_G6NSU+F+0L^5bIDEpJ2w_o<pb0zpwB^o1iV6Z>SIB1p
z<=3DT;yW{*WXf(lzz3!&wKx^QYI-)<KLNe4LN4`|u>R9qurPP`afV-hNp(lG)PwyN5e
zV)7?W<@E_!QIMbsy!om#q^NL?6N(Ww&+HU~bdneS6+<IdF`0ZRNsH`_hp6x!LR4%g
zH+o4~QJ%l9ggQa!$s=3Df#rx(W>yA#t#qb9WFR+3)x28_7=3DeMNKR+FCAc5DtzhB$9YG
zjQJom6G@9yN-fLYT!M_dirEN@yu%+rtmefRbxtSrttE|8DKiL3VIbE;oT`n7*qXdp
zNDLyyf&~{Q9CGhp4z7H$sE`=3D{)DVf}_n>$`yPJp1i0k{xJ<~^K1MTTYo`HExc`F)L
z;RZkOY9*2=3D=3D|xF0wY7v(A7udAgHzNfTjq|q^OSn(<wn(W$-Tf${=3Dp?CG7<CN@*<IZ
ziVot{N91F@d52EC76`tVxbu`cU;dU*%}c0<@0WVbDH%p=3D%9cipONr&Z`JDPdJKXu|
z?5(l9IyLyR5;-g!gHSy}Lx<UBeBQ%5<|~sL$0}XvGn3)es31;+*Ko;xoPs9Uis3ei
zx;=3D>p2=3DY73B=3D1~<%>N%2wMGzkMN;0)N)s?3!W{^uO~o>l`40l4Tt=3DHLD{3br_5?wD
zx1dv$OjtTbn*A_!g1|eUAQA%i6pZ#2h?@?BZ$E~UsKr#3IGz0wl@nh^a6B%b<7DoS
z?<~b72Xi7Z!&VtLiq@lfZ(idV8bl%{Gw|MUM7}0VCJ96-M4MFM9Z=3DQAC2d&wCBw81
zw~Evok^)v!u(zdov(M!4)49>4Ac9}2)Jez(c>^w~^X(EoD>#?x)_3ojIJ*t?(TLyc
zI4$HOhCinrl7(|3>col<=3DP-Ubwsp>{8YdJ}Y`w{8x7&d?rc`qZFLc`zOV>H2jw4c1
z<*8Hh4bd=3D(PbL0RpKm%oIg?x?3A}EC^OXjZ2DHS{G++fSc31mGH%ezIo@<^?e$Pbv
z{Ue9Y!ZlEpu@wKqs8zV;*wM`y594g;8xy=3DwoD(omsa(P}&)SbS2q{~0feXXlDT}4}
zmnQHkgo|9b%`%}`Kxq>##~=3DCAv<qBPnaHixzi}u8ARL>z#ZvqOXlt;}Q*eq4w^=3D51
z0)~BYlBN7l<sy*_j@g&Qjy_MM=3D1nXu2;Hxitjc-xUW_!`R#}Cbb=3DM*f+GZ10jP8Uk
z3OBLK?c6Y(rJRLj<{o&Hkbv*)Ej$4_RMu$kk-U^#4#djn2LL1SKS*qs9jgS1@^h!_
zl}5D!9{<{E%+|Fr9{_x)O#?ySz2fWh$XUx2H;%i+4Ui+VyOmwS<IlNsl&z4jB`f*B
zayk%8=3Df4#aF4rht9eNyM?FAm=3D5Q!W?n5?eP*^0-Xvn%9Lt;$2D3>^{Sc?(NbFK6Q;
zB>tCqq^2SwQspQlmNg5}T%IQffye(Wq|?sgI|8nQ(BDp*knRPDd9L`AZ)+j1%xpt6
zIx0L%xp@2sKp^cb5}8~leC~x)lh}qJ(c<ZUI(Z->VkLbD4C0d)-Y$#?hZ(5lfbp1=3D
zw4NLre`_(juIkp<ur1m^yFZ=3D_mDu?s{D5M8NP6@h<)GB?`In%4(uu-sC8-yQR-&}G
z(gs^s_;AEL$60?&Y!y$i1J!>BQR%3ZY=3Dp9qwNPR^)MJv#4$ABlBwX?56=3DP}o*Badb
z!7=3DFQLcraFg(cw#f<?H7@etKAg>a!?2p(Gq5k$&d0@8tN%xoUe4Ag7w{KGI*K&n;7
zVW4vgr$AGj39A<;o+|PuwJ=3D7jt07q8$q9G5)n*v_x;f3s|1V;&Ddfa;Wme@VZTvz1
z!YDh-hUZ6l@Y*LupIoRL2j{V+o{*Y>duWR-QYo7L*X|~W#J?caB(>6BEn7vh!IWWg
z*p;Kr`=3D1r#eH4pO;fT^~Zvh?t2wFMsg4imdi1;Q2U`TVw6}k9;!ssSZHUp{)xJ6Bt
zh}paZSo3*h(x^*30^5P4G3!fA!Ai}O{3Zt-Iwn(HQ9liFx{5=3Dr@li_)#V0|ype1EZ
zJO1H?;R#jsQob5-mnz_Sn+&JWQEd>qn-p*-wW&6&A`T=3Di3xei@&>HJ_cb-x$M6{nP
zO5yzOA%P|r&8dE21fNWZL+i0N%dK`EiHWxZc`U`hKOUx;Dz2VH=3DL!zdSuFngxMrz7
zmN}%EP1^_pr}bENOw$vWqalr*`1cORZL1{U(ouj`FU<14OkP~IRR4x`0`}6l;j}i(
zj%hk&!AQjNlWDy?3drq(?DHPFf)XNV-37O|n!?UL0cWY)J#nQr)Qc1O6bZ^(8!VA3
z$xPW3lF3QQjc$~4hD$X^JeL~M3IS9L>!{4@{HV;966t$zc{f6tf<oDSmp3C_W9ICX
z07dtvGdrn_pQmp}%dG5(OHnV9ny4ADrfmw<@_cKQt81aX|B;I-LJhw#n98dVDJzkZ
zug@we97^GDY7oQ+w!&dsfqZ98!V(+#AO8{*uc;4!G{k;4N%9-5m{6t*l3W4e9MgW%
zMB)_UmDaLhy8XPv5dL45#HJN%Dj?T!MHEq#8CVf&ifX(@Mh$=3Dvdao{ce2-zH_W@E&
zwqu-@SN+I@qGUJNwV%~;dyvAhk|E-+Da7F{PK_p*L_&%x1S3J%QG+Ha(&jdRc{9@{
zUrxzjYd`-9TXmMnt&~o~w@6ltDHX|Fnq->Tul%=3D<6A||RBpx_T>9T^50iN5UdjL>7
zb`L}t%fG@)9`{V~j6)q&YUr3FO&6sBDR6!rfSh5-TIQ9J(KB`+I2pY;ZZlbtk>htV
z9_(m)$G4c+MCd|L0?yKmDuCf~RX6!_I!pb{a)**c?;Vet7{&%1+3rYALk8KX*-z2-
zK!f_Y#h%L!633OwuPPP3Lo_-Gof*>viuG#@6(YIB>t#jHP#-R^%mIp0%Sg=3DMU$yh&
zTN3(;)MbCC-+Qt;{PXLU0geMyu5*w-073Kt9;8j9*o>KD;s?RxB)784XqGZ%ENMXZ
zUCBmW$8tYbY?S9dEr;)5$g)EZgaB1jm}Oe^ogQmCd9n3B$h^jSsZKjM`&Gyit>_is
zgGP4HvgjNW2JB&~;%nH8qqnTyi8VeGgdFf=3D&@zKAMd8#%XTE48(HVXKJR9<9W^pC4
ztp}ROGAYt)S{-yq-%b^~8cic8=3D^IEhy~y~!u!bq68Q<YWH=3D>_fn7T;eGHYWBx*~10
zN%2;-Fj6z?Kn+6=3D)@WDNn9|5K*`pd(CB9S)PzrftRAo&xCS*QYDKJpdxB!E8XO2e|
z>8k}_GH6y+Ec0+x6o0A;n`nHcYF4E&uKG_Yt3t|X>M5K=3DnJudt(brg1#Z|Fsojz^c
z+_|VLZt7SZt<4{E+n_O?O2lD<#nMvy6#|+~HClekf;M9QzM8b*wlql)Bm9-;nGM@?
z3g$b)Z;arqpv=3DlmqEN(tB5YuUmI|wdg`nM-70zn&{T6^Az8cDDTw-Hxbuox*rb-6D
z1<Q^bK=3DZ8ALsCd}t(P|ho#;7lx=3DEb+iq{GkU!2jnezM+~vKYmsoXymew8BNP$a%`k
zd0gflOxkZJu>B@lmhjj$G2S2yItZiKX$4h0b<FntE;waaD`KkF<wgrnKy9u&F=3Dst`
z7>!b^7@Y?7FlrH(L%+8o2bT9}*|*@!XpMbbh|c5qP1P%>)N<6PS@|4ZB-0yHW?|v*
z5~Ow=3Dlru)>e=3Dr8|Yd0L7zY|qYRM1rIvBu5sbK+&%Fp#ht(MNe%_%`M&O0;us9a_0t
z{pyq!g7naeT%0HWTrky8Qz3_itEgZ7k>h5%xc|VtPQuzY3#;cW)8c=3D~Ase>kTXs5F
zfi%1mry&(KJ^9#LR;7WirdE8Q6e4GpRRABx+ii}24JD_yp@Q~fF_p%)JH-uVK~MMv
z;ah9Eyun1T0!7)kemV&4GN{E-v^oCip{0&$cfE1zM17^>TdxpcUBv+6_9hIVgq6C~
zGngl!I?>w5UWgR>O)`<y%J@@W^vZ#3_FF@|6oP^kYs2>;cy(1`$RFt-^kamEx(v{m
zL+4^D;cAv1SZalce{(;YQe!mAQVbe@5Hy&z?ysQs8Wd{GI_N~*OQ|TP7oG<hwB{0<
zp^|*}ZAiGX3`fzzoOwi=3Dveg-jKLCZ_YCedwOfhs#lrpyRbUp;}L0`qM6=3DQe36y_0>
zl?@_9AM_bi<^Bafx#Chc(*HQ5Z`CE)FiKzjgW}oeFdf|05AM;4s&|yes<c-pT!!Pl
z4x~sB?*)8IVKPeULHe9ChEx`ER(q9V(@;`Qg%aLMbp%M_f++<IK5~*5O9rb!%TWcX
zaL=3DM#f?(w=3D{5Y;$5DGP*!Kh66j0z^}b*>3_&+NanIVP>I>a)?vIP|KD6JEbFdNpE4
z<~Uk>4ALHxZhKUs>I(l(dnhWb=3Dt;SGNOj=3D{sIOU*SX3zG=3D~pXhOrd;gr=3DqSyHiZu>
z+{LBNVhm=3DgJ18@(F${$@d9q}QR%Xl1keA8JyBb~dLn7hxwvnun=3DQ#9;+9+Z`8m5jn
zh*h!jJ(E>`Lu*PFWIszy%uyT)wVq++(|Xt#TG1G^qj7f1DW~euBo^wbOw|<w^n(A?
zb82^Qu*&-d{zRX3fNsMOHGpy{s${o+QF(m9;R^2DaB#0s^l9Lib;FdmBh=3D>oum-+z
z^iQ)n+^+XM5ko|Mn@=3DiA@)KLaEqxiM1%kv;X{&-}41dS%m2!H!YZDqzUb|)3fl0fz
zU0l&!tpgxo@KJ)h9LlVM7l78QH)&indsG!H#z%fWmi`vV5YkQ634WN$8w8}PSfSLY
za3Gx@^&DibQY^dH8kg2Cs;RgS(d<VB6@)tR0<K;VG~RaZmWmYl(v%c^?lj)NJh#%}
z`Gw`F((Sv^8Y?Uk>Lgmjs8YCZ<1I}813=3DjU5aq9a$~M%(A$=3DY76g8q+cDY#Ln*m)~
zPS4Ak*|;8|?kfOqapyEHPc3~|doEnPAjHpy@!-|0W_E6o_P!uxqjJaKJ}UJSIJ^Z)
zlNANpr+%~_@Q3YqluC{!ZPRzi#GPBGY;IDseZ`YC_wD<9U{bNuf86YoMI~#7M~Jr`
z`9eE_G2L-(jkSeza0I5u^$P;WcVCZ}B*n~8QjM6m>rllsjI@GZ=3D7UvEZJgW2%Ck^w
z14o>y5MF6tog8Z2ER;=3D%^W3e>QaZ}Om4M1iC^Y&}(|kOSwS?)KPRMR%<1mD1H<9V5
zIZN!&iL`hV5@ji_4dWt2@P+7IID}kBio+LV)3=3DKv|I}GglwCQ9QtiqG?XF+)m)M^>
zoi(*bqQhSqMndKMmBM1?gCHciQkj->*Mjdq^oKSiZXJ{qleJ7Z+e3+d){^yS$ao&g
zNbOIkU8T6iL<V1qRf>yy!&TI)HwElFN<q$f3i9%H;^dpD93Q1u2adOvATi&?c^LK5
z!%10gN}?-fzbcdGg26|@z}^gp2r~K6BzapF!D^K7oQzmW-n?QOA~{Pcqf-)XY+w{H
zBo}d3E4@Ioew};AOc;@#%)wZtfk5djzMw#azel60F7OORTALJiq7~7XkfqZ<7i`Eg
z(sFuTlW>J+Y^WMBq7nbCS;=3DGtf{RI5Pe9ZrWM?h$Fs-OGWXqv#5a#$>MHk*w9~N|!
zIiK6OBDMNR!ibPFLQMc|>!x=3D-CFwG2hj96ik`6E_DO6TBP`|`l3^Do%=3D2>qb^r#cQ
zr-0S7t8*V^4UM8wCiO3_4#z+%|46v|em&~R<YYfR;+(v+ukPr2*{~w<l#*jjIlkkW
z+;JjT*rssagE@3{d~rGx_zx>4EiCjU%m_jiJ^JgdplG0z)E3wDn8bLu;Hy+r>wWa)
z4(=3D05;!VTsT2g&a*x~q`C}KI&e2NMR$@df@W?^M8#Trf;&6V+SgCh3^k9Id&SgJ>v
z#|G;=3D(}5LmXQ_4D!VkbtRD&>aY;t`uBL|<tGJP6&xoKl))m30pvEMe>RYuvS&c}f!
z;Rl9MnOvVQ;pTRY+$pMOSm@THT_Up_;x}iDXv-lSk7P%g$NC7r)s@QXkAN$B?NR2X
zR_;86;rREV#7y@m*M6obfk|~U!#1rit9F6w_1X&?0b_TRy&vmU!plz%bOphC4X?D!
zH%EO{a-Ym+)A5rx5ix~uPq)pkimXyNr&|fHKyKO`{se!X#AWAKwPCo9oCYs!jF0{K
zMEyzQF_cYPS224QR*NYo87k;sX+FeG$$ONx5H4NSJqSBe)E|C7N>WDGoRp4`Ne!)z
z0CrXq=3D}*wtWafi+Gi_VeaEs!DM4F`E!V-!q<_>lJ>Pd;06obM!{fRQ>39xbKFMD&4
z(q|Y8{~Ah1`cO7w%Q2jM+>6i+q&pZVAXPeBU?WO17NA{32Cn`z9Z5xAlvnc*>n1CQ
zNR#3(j_|INLdNMQpajHWS23Kjm&r)y6Q>;|7FMsj6G0e2F)EbP+KWi20f2e}x=3D<Lc
zCXv6IE(rR^5CANoL?V&x_iu4Z7Dy1@7+CL|O4+4$&FWxN^yNuG1a1k1O^amFSWwFh
z(f$vCULx$#{|p9)$W*{~!kqPl<Aei?3>YazXb}k`{S0W*DdP8#W?A@Mry7ZUHKEC#
z%q<G-FWjn;e9aWvEIP6pYRR5j@o3xuM}2|;YejKQ+*?`<7;}jP;qOM>)tm7Y6_uie
zU(i2+Gvvl^c+{Nr*9Mdw!&Px_X)$2TDbgM@c|z+&Sc;{?m=3D0$(R(^U{Lc>VnFEH>7
zc#e5u{{UzqYH_%(*MlABA`bl*2%>bZn^DdyCn<njb8t9yRR1W*|2i5D@5-DQjIw<~
zUu}&Xs#{SEZQL&ik?8lBbgR`PkdLvIp|AdVKq%H7+dF>;09&nHs>f{y@2BzT6(iT4
z>eggJpi?2)EPCvaOSjT#*zQ=3DH7EfKc9-w$P>V@m~GiBBy>1?G}lR5sY3>Y58bdM&6
zp&>~*%^WgS=3D_2UKzNr^%o+l_+rFKQttPPD%sUt8EPj=3DmV@328o=3DfpO^b*jXE+%;z<
zeU<{gk5mGV7U~-qdg!xFaL+*zxNE83>s%3wgU#rU*yW7pJU2?I)QxaTmC%H?{_W6s
zSL0o1RkcPNnI}NFp=3D(<l09BKsahYfol7<{MZrr57jyCt&?S-Or*M=3DlSS!1a-1s%${
z@d!S9^sR~ETkC$X#RIIL^X;U=3D%Fy#nX9e9`hIH6fW!;hriaA;ge%o7B6m3kn0+kjn
zpzW5_W??q?-;qd|?OQTcsA&7nuI^IX>q~hR6htAxDjiGdOL6h-R`;j@#49*Wwf%E&
zq$}1OM+evc=3D2T+~+u{;16s+v?@K@fUOkgccR+z8vZC@?#8W2<Vl=3D-z}r1p9bo&@92
z;Cg}sJX-AI$ut*6LzD|Nyu`PWAA2;4ipJ}>eKh?mNKV+}m(`NWeR9`r_D&gxugy+s
zDY3gfXaaLs;6Uirv0>8~Z4i%$QzxY2e7{&*xo2C-Mg?JRwX96h@ZR^kwxh1oBRC)G
z&$lp58g3ZX9l=3DDYq<qqKYS|z)0})sj$f;yugqjR@+wA!iOd`oA@3Zq4iXOT&tx}py
zfyt%6&<1%nG&!~F+M9CZ8YM-?PgXyqxLraR(-D0u1#A4e=3DO6VrnJyDLH}ec@ROI-a
zkGo4!Bt%ky&xj#Il{lra*#%+BJ6Uvxj_IYpyorL<?`BxG<S;{cY!LF_$sQcTh{bOS
z6lmW6`krg2uUxru`uR5lT29YVh?U213J$4c67R_mC<4oB?KGbsCXwqApHbH`zc59q
z@9~bIXm~5FQr~Qi8RM^}YW(F!{WM3zIX=3DD3?;XOKzMGM6pGY7Zd}L1$5fi#Aqj%7P
z@I`4SpXv63SD@BvBWEDptdzV4bn>O#sydkXLZ=3D~NG3Ksjo&J&Rb&Bd-T=3Dkss2Ys6@
zsarSY{J}32VJ)+>FY5M%TOfL3Y5vVk5z9XCk7KwYI2qgQ)e6HGY;UTTkI?BT&hCBV
zeL5c3GHyA_SRKVR8mOmSV*FcBJmAgplzn5sDQ=3DMzEnCf0eG~*Oe=3Ds(hTb+K!?o-VM
z$VT~uL+@qpu9B$L?=3DD5cEB(Aum18Jfk!RLk-Re)LB^oGNjFP+~`^;*}PFvU*Tus$u
zF4VED&&9)4sQlfZCJnn(dhx+Zl@9i<Sb6V*V|&)+j4ksy=3DQUNm2{l7y14EOMjERny
zjW>i>++^Zku=3D)%dKX<z7EcD~IepQcwd}Enjd7r6WZHDw$@ao<kJ$Fq!@+K<U##6$?
z!PAf;%ZhWW7XA3(*QWa(OOQVm`Hi{c-rVl@ly%%BwHfI%htJ;Eu?;;5GZsI-b;0Nk
zHeR+o!A5w3n|FDApmM!1?74E8@`jfz=3De1KugluKq%h-!0BaQcxW<G4psplnZeq723
zRF8>9PRMqUmPyXoMO9AtNOLRpY16c)`MVgXf@YtZmqFc0ds}@<T&T&KS!eC5Wt-y*
z<P66xBzy8?|5e_}&wX_}#}80wg~Cw#^j+1^<p?A!^)+=3DStA+@CnaZ!4Fhz#3s@O7J
zW{sYBbQ|PJIj*2;7OiY*ZN>asSXBKt)yV#wg%f|=3D8c}ykX};u8y1s4cGHMu;d>^6V
zwdbe5vZqg~K1fJ`4J|ZO+R?m$I_~!^IpXG-v#sX5XwoT9jLJO@A<8o-_Rc`Z2Ykc#
zz(&PqWSdgz)wZL3$5U?y{U5A>Jhr6xH*tBTyg6ZQ)lh6C$78Gb`PiAkCTbhT0|(^^
zX!L3DyFU0xuP@3J%Qe3Z#ok~WWKz!?#kH@Aj<hDR4U0It<_Q(b(2a9Y{T3JPkMu}h
zQNP#J|I!tQB@UL*Ni7g8Vq`pi$iyM2!V-SL?pvUM*<A}2TVj_$vyWfmDUk6|P7H@w
zjdx?gRN72NCE|F~@dBh;3n|wd;0E>88}vMyo`B=3DAP}c`@^;x8IPhp0sMJKuhFSXtY
z!awT>6HM+}*veSh@tBpF*FP)x5`Uu-l0uivnFv3sqTE!IM>liGz*)BWT2^jX)qvSx
z9UF((Qi5-A$21Z|{+x%ZJ>JG-X1o5YYL-&RT0%6jS`SfZ_p;&!#-8ZOc&_HC(KZj$
z3+IU|zh1%K>6f}7>V$2zRm=3D!fzw_CWZToSCFijY5IABFU{Hnfx!rEq&B*F>{nmRT!
zLeTNMT$T-mbKhVXF-|t}jU{?48vQnxIvEyX<Lgl%4s}VW*~B%Lu8A@}a$`LFcj>V-
zNKG?kHzix*JJX;#Jz}HC7zEF~Z}O2#0_Z`SF+(YrhBRT0QtxMSuTyM%zUwF+hD2xe
zyz0p9^g`T@srnXfyZns)`!-=3DK**PtF`l%wwk4<}%K8jK0H{6&mk*R>A!bc3lP#5g9
z8@01mo!x@geW<~2?0W-h32MnqEt!4W#hXOIzy?_mVRaSA4|pW%0X+G#`|3)mt)b;$
z&rFrKQ4Lr?6ur;-7J}A??`=3D=3DRmh->$f~*NS>o)5!{N}6ThV`imQopbXo98Vj(DyY2
zRZvi)f6aF{s%J@G7hV*&VQU&9TXm|-@y_RgU|CjdWYrU3k7bZxMZ>6z6)ASwb_)c4
zM~%Kn9B9wC&+4=3D6>7?(6!)95z6l32_Ut2Cl0P?X`+HW5>nbl>5q>0WrGuWeS`aDdg
zR`k6~(M?$nnW4{QJPvJ(J^<7&l{12@LjK8&+p4mRGvGZ*RmxD~4EkH{eeJsT9U$MS
zM3uiu=3DhvWgg@<tlis@3q!JL-5N3F#c)h$dMdevFl@&}pCnaZaA*abaP*Jz4uBOkO^
ziA4<US>ODrz0n6%w7wibahyV$Z+UVGja0;0@-<^`Ykvl29_d#1_sLNhme(q(ZEGh1
zu_+f#?g`NJEKdbwS|lN<-bho5pWy}Jo7XkV6N)$-%fc@R3++AupnZ8fL}ze+jMoE*
zufw#-Wn3GlWW~I=3DM<(h=3DY(D`B|HgKrS@<REr?}_a3~b=3Dz47<!$+N#dSiT#L8a{w8x
zcpTFi4bwuX&0G=3DtMtRE5=3DG5^>_p<Wpm*O%ugvYEYp1_942}o*HYPc{uz>2DB3MH5D
zEo(+Ta6E1r_?-nVtPs;OI29+nfLhEHE5mLGyY26Lz!t18MF1GBtZQH<2z;^y;f%xu
zJ{e6eWc1@(Vg0f7MV}VTs3~Tg0sn>C@taq&x81N#M}eZPuvZhB+mt7l9QCYpeDL=3DZ
z9!-FErp+@R0YtJC&BbI5ZJT`Izo|P?9O`apM+3p8rJ5k_#Lk9xoI-|zh+h^~sy@S3
zf+b}0Ei$m0=3D4Q#s7HP-TB)o>1`{*1yex|QIV9c&+JLi^w;w#YRRCbLVV(NRNmZaKP
z+%;qM{F_MC!nORylxa%ke}Y<z>>-QfKZ3TfYYBSFGGTWxE(1RmD(g}|79=3DKMLI+De
z&e~}>=3D7LylW^Hx@@~jA!Xc`FbtbdPn=3Dp--)Wq2n@;V;1`*K@lj0s*gyE-3CK2#CSr
z)kqY-RNG_M#ScbdYf3B8j~|X=3DZM}ps_D9D#z1qNy;_q{`HW&#_u{GmSOJZ%KrjP~$
z<#%3EJ<yOb-h2;DW5xdyS9M8yUeFgGnPuIBh9$`iT&q>}Oyp}3KbX^9IyH)2tc}=3DU
zP9<A9Gq&ZeJmvNBrdnT&Xn}`cwAT~etC_&Q3#cd7+X=3D$=3DY=3D5;|5|a;=3Dg|<y2(@sav
z^)_nSz9-6r*E&!aTgG6146<~uFdRqXL+kO@z|A_#6L9wg`#!pI0KL^RuwGWdM>HtJ
zy>t(gUqO4eb=3D1>Dm(@pY-4X>PbT<CLKZtL@304M!`ao%O2mX%2p37XmC`^9J-!01C
z=3DynyIK1AF0L!W^w-EbTw;}fM<n5O93+JQ92QS}C5D(Ny6H3tw@q>?3qEmwFR!YW)b
zeqFMSI9jkD7;a&7caA4Ed#rBT-n!Lj-;>=3Drdu6!k$Nnyl`or!rx^;WqVuk_J<R6hU
z?N!mB!gT155ah56Z`Lyi-c&C&-ru{7utSvs8uOAe=3Dx6GZt~MALO|ixhC_ykf3q!Y`
zH9x3n))+$-blQ?#GfSD6^#u5+31CVMBr@NGYDySm7!0R_78uh3euJ?ly*%UTZ%>=3D#
zu{!ISa6K|@Puf%C;+K3m4FiM9kF_0bjXni(SpGx{D}8^;lwmXBonv#gVNp3IL#_!P
z&ZQlXf!40PS3Ln65e8JEBEg8c5E-RXi))d67_yJj`$BR|xw-0k*Scu}XuNyVpi1gM
zqkz$;2@Ql_Q6!;L{Z|?jNy}6~i8)+&OLEdEnYJN!TpvsKZoh;9xyl!5C^%^QDY{CO
z<q+g$$ul3e;QKozbwF1&5|&fS+ym_y$Y?k2dMihwJ;;?hqy2wbauxQ3g}bgie?gLI
z{U6g~O`~2>Vh$HR(O9XpI7N{>>pCk_T6<H$n4~h1MWkXPiP>;PLKie0Op55B<oOm>
zUt^A*_sD2>xe!@ThxIZmp$=3DLI?rLE|s0upG5CntQ|4if>k%CoUPmI)q;r9}ra(Oh=3D
zcVE4LPn}%Ol3Cp(*1D#%EGQkH4aJ&GRHxxzEmofvGAu>3f$>S@pBS75$Z1=3D`%16%B
zsiHP4EtlJHj9g(mapq)@Ma84XBJ1w$GFalk=3DRRzgvpfU>=3DO|jYbQ;(dPLtR9%!$a&
zMje1gx!XBQp&#KVT$?7GV%lt>+0o$TO{Xn`aiCLZQJr;f6tssE{fXL!V3s+m7R4Wc
z9e1I}fY+VE9JaYw63<0XKszoeh-o&KdiMSeYBW_W{2W?E51xoF)^cj5jf{mlhNkB2
z`$3V)yV_{35(gfDrkZq*f$l)4q+%)DfWf-wZ&0V}Gfy+uLpO5>L+7Y=3D(D(e6HG3Ya
z1!;SjR;HUg1|q{dp_#r+(*`v4DeN+dMi#FI&z!#HAF#{vt|QSoN)b$LbZVG<PBZrz
zNU_nP=3DWtedE21F$jk%y+#lC>IU7ee^HTO@@Y3*ks^|i<yFQ{aEc_MKuXuJD(*2*WZ
zn=3DZbC&{-9Pj$t~)vu1(Z5`-289+4Dlhtj*Xu4rner@iP_1eMlOZ1R#aK7t;2T?}@M
zn6V~Eo{6zCjmbEx=3D=3DdT*Cn}RpVl^n)vtqNUnVe@`DC+LwE1if?_B0dRXCT!vOFAKB
z`@(mqIn~<tZl}ajG2mIaNa-;Vsv;VV8Be>r9+S}r;2@GURj`iLz@XI(pMms;w7AvU
z{nM4MxI8gP2v4#5stI6iNPes2uV*`V7sre#+Zmpq1P$(>M5*5vQ`f$Pw5g&DDI_tS
z%1_hPJvw`0IMJTC=3DyY*@8MpfUWyc_V<8@?N7eI1?uQFbbGU(u?53)Y5Csur~fd2Ru
z1j7+?Uw#=3D|Da$kQbS9+~B{gMlg?P|1WD*?@QM!X(TND#|3VHU(C_FA!(Id#@?XNh9
z7G5$XbTlMhrpyO&7BzOktwLcrYqfMt4=3D2+U_$<@mg~FQknA}-MZl~<$RQPlhX2V$<
z80mE#N>o?_epOEJbR(HFkbD4)%2nQ^Vi9kuO4;R_+Q_gtsGEE{=3DY4H-dW3@mJt^Kf
zNQP%%xCzhNbLC~M`7`lGj(Qwy{v@H(m4t@IiY{l{80lR1$pe59Ju`8@=3D483)f<zu3
zaBARSOFO8LQ@`&uBNt9l`TWTs<Im<Ws<3>N#pL5Tjjc_JBvcr)+bQjFE*sa*1V~h^
zxEM)Z$CVLEN2}g=3DbC_>%*tL$5v};y1JoL8x*eY19Ksq0lnhQUB+w_ka%RYB@V$s{u
zQf(L}E`cNdbU0i~Va>!<h8B1zyL0T<>`xtoN0;>C5il}AI4f(_K8E5;U-z_SFpiAJ
zQaj8KEER*bn5`yPh9{zd4*q8lFDIDQj?2$%80|1nVwmoHNz82ons6M~&8*|!Ic&@1
zWHcn-T0pX$YThmV_YFg(LS74dwF-QOt3ncEIcP;WrI5epGshau=3D*pBvRZ^yw2(~ER
zoJKEf^wU+<3fUO+)N%hr9X9gdBGq9OWN6S7ghH81(OvF6K$upws$b>$(zDomh~DvY
zrWVKvSfXYGYCDQZ33s3-p5k%IYGj4l`nyaX?UfxDqYGhraZY&+LEFNQM~QBph@LmZ
zNo3q{2lYv&%L0STP?$@4IXu1)gcZEEjZ=3DB$k>ZuIu9Tr=3DMILy_x}Nk*LvyvlW*#L5
zcszUkF6M?3T+p{s22DZpEupuC&zTTBR1esS;=3DA%$u5{A<tm3xu2_BjGNOO{)J_z3a
z_Sw$;Vt23*xjvK|tjLIDa`;l9=3D)$F*7g*EI6@rKC)sbh?<B5~^A{^||4%&|}Nf1mW
zj<o<)5`Xj}=3D{+3}`NZ&OEt04E3Y0Sj4!7#?+p4xO*@`(4S{|5dM>k$M_hi&Vwvh@0
z1I(GwkoGG*t44-a{1dWK@YS(jL%G!48rgQ(WzNTy*ZcPA(_)r}TWL>^-nf`Uy(t#Y
z(XcliT~8+T2`uz9Wr9OE@amq2zhqQr9J8r>pJ$`TzFprK9-r|fkkdrNJ}Tu}sw4S`
zr~h2CGRMGhZi)g&D#)|KUdjT6qdAMdM<m0PIyq+P&rOo6v8+Lm$`zjYCrmGMBgZRh
z*8IxY_EtP>HWYytT}Ezm<(Xu>6J@%cN6&l_YU;ys$Y|hWdo>Zcjh4I?1fH%-)?nB1
zH0+CTS}}udhx09{w0yb3b_A=3DllBfX>o?j@ELPzSy7<klK$5Rj<dkT?x+?tWcf*_oT
zg|5(ToL-`>QD3LCV$?L<DJS3p#`FcMfj1Cb-$4+jA}!L6jW7NehV+$Ad`tOI{e^iW
zRz0Md&KLe$kHAWajHTNlZ9;;XUl^-s9@+fkfLA_{4^`pns5fG*3!kK&Tx-y*;4#Ej
z6)`&l|DDhnEhEDARC-6kfTS|_0&X{4QmAbYMjcu+q01TNu=3DThz805cnsJ4j}e*zET
zw}T|PM9<psi`vDBc{2yIv)sAdqnrhcfByip##JqnOhF?RN><{MaxjfUBn6)@KcIVn
zBI+B2J97_Z5IX2^7uRJ`eHH>~JbzxSx4dP?rJ%k=3DfQ+j-iC#+{<OLCqra{H;9Deaf
zKpMv)pmGu>al4O>G=3D#kQxFxM+%=3DWiSU+X%G7mmUOik<!N!i>bVz{QkiBKEAH2-`zK
zZ`#hhOG7~=3DP;XD!gHBWH%%tAVab&;~6i`%Vnk;&|ixRGPrX~oxztnsT{c`Y78fpry
z8akLePhp7-((Gn}FvwvDe;m<AW0|ASvm|)zm85fvYQ9tlnhu%D7IQeG{og6Xk1UO}
zCG6k`Eib|-C#9GlA$SCVwItLY$xnzvg&vF2js*NhI}mc{Tn$4Xz#$;9AZunmH94g$
zW($1cfW8KRm#`0Fxh1nVL3U<IQdz13(9j`n)%%-zy&UAQ?))!`b7>U0-RD=3DVT%}5t
zOQnmXb^H~nSEfwX@F2Y~^z*wWRK>t4?75nEHd`6?*0Ug_&j$uNocFP7T^<6HFeHDz
zMtQ2a0@dr17`LJKUAssn5Y;(%G9XhOU+1~=3D@o@dckBsb|p}KSB53+4_@du|_;pngE
z!$|OUbm|OqX_~vlltcOUuGPu-y0=3Dd;Y_P~ddphJz6hAV7uPaba+}=3DJ46oK~zW#=3D91
zmLp5&>{xC|1LgSsk!>cx_xh`E<DQvX7L<>P<N)NIrbI5_B=3D1mA5#cDvXIi#Q9CIY+
z&?2%NCL}S!CR?U9N8AajDOjK5wl5FrS)Pn?-LGy5rBp|m#?%*nWyzbNe?mq(ie07f
zfm3;VMS@<)PP_V(Pg7kW);7IM5TYwN+4drv%3%=3DaHJ?0lV0N_pEYzu9e0x5r$pm#w
zZ<<3x)la}gnhb?TTRMO|p@ctw(}v@PmlRd}B*$Fwm4m-_Fk}rWp5w@&{ESE-l@pE=3D
z;4fuTlN{uSMsfzd@w#2CS0K@#egcjY{0xG4DYF0Y&L?A)V&5i`*y}RKg>*9~|A3~k
zYaRW@T#54%G-N<w@Pr?LVyF;Y8yP0*ua`<9O^=3DXlIsf);=3DQyu2vvhPUID4mG)vXA2
z4#v<ok2o-_<L)3bjfX*F<@qnC?r5DjBrq&<nQ8k<E$Ek1ZXbyD4W3!mhr3M+3ELH)
zhB+_!(ITNXGyLs1qoi^N+!j+ovz@)$jn=3DaDvgL&A5psok48SZaJ+yC<-9JpJ+&dyH
zBzZ{IvNL~Ok8HS=3DBjY?yrK+Y9n=3Dm_IhboVh&2n@smnEq@v~cQg1*^)mWo*t%Fadzx
zTj3qiTcrzrsf%N^Yi&zhq8R0VPu{6k`M(19Q-2xzA^af?$QS8U8I{LneTZ0Z1Me-b
zIvKl_PZwC!2`2fkP*6#QxZTU;NMEi)eCDV@VmgaPL%p_z*#%3gsDE$Vw_?QS3esIs
z0k#q6muTU=3DLWncbp~E#IP<o8t!DKv#px8RAemg0ur9w7zOQNDfEYwOD*vwVW^4K9%
z+Ho1BbiZjDbX&NMe3Z4dII8s?@w%XU{8$+u7Q-f}<%SMh-2cs}Mb*M44s77mo%`|O
z`K}&hC1h>QI#E=3D41-$G?r=3Dl9t12JT!qIJo8rHB=3Dht%j6o7t_+e&><<!aH)l?JDFn|
z=3D~`{|-YK8pY+}1dL#2BHps?flCgNW?rMIgSU&_A4WbN=3DVeo<}AC`U-!9Iyhd^5~2J
z#3{RPNf-B;gRgtWxxx9FwMf?pJX;2rx{{dyC{o_7I|IwBsF^4_%^LorM{XNJBIxGW
zCSKA9<hFK=3DoNArVk3{!GaIQc13t90-)SuH!^c5UuKBi=3DK?qg*A<+3In$MCBY`{zyI
z?d|28n%ODHHg4qFeC%QrdQ-}8jd@nN>ypnQ4L?Bc-(@MGAMkAK7>y_tdf^>y#-ZU#
zH?9En=3D>*0okFmT<9XhwTK;%6pzd#k<62X;o-JP~;CSi+&2!~klN}a;X+bdq8x_bt@
z&Z`DsT66B%8^&xX5{fUb;<kkN<QdxO)R*R$8w$50aXhM{QWpj{dg!h&OLe#h&WH<@
zE;2Pj4RO2r-*i{+&K6aKHJ1sgD(rVY)nd>SAhjn`AEO8(TQ3)5SGBMusSZ~*QpTly
z^mS}dXnkNTbh8f^2Y(f>L$c8mRj<+MzkYtvvvJYE?tTD?uV%$_>ibfSdmOsI3NlG4
z_OA~S;~x{Pt%V33Pq&xu+7Paj3CkVS#HWKH$o-6jY_N+dn}CdKUcHHgIZ}558x|rR
zytgw)2s1(D@$%iT11FvJ8%QgqsPsRMwhV_eg7pYjmW9iz`Gb!LO{+58NRLlP@1(v$
zQEJ%V)3u*#%%CvF>+yIu*-I(SM4_Cxc4E<=3D|3X5$8ln4N>G1pAJIRnAOQ^|UZRa8^
zg6>vR`2%J{t?ETKHgi7*$VQT4VfX>ic>;vUH~Qy4kP8{+ps4_N5Y3eQvOUpr{X%#Q
z6zl9T1C@~V*XV)_AY_Wv`rhaRi-3(2ikG^WMB}l~gr%$DL>b()$-3tSUG@z!d)H|B
zx(b|SF^QTY9+>CW(o)~Q?)tLl=3D3z+;!qgO#rbSl&^+>5{))<3#+o_XZ?%KGd=3D<2Cs
z_}`1P!oA1#xYR$F72pUR_3qen>#DDa5-_YJjEORK$q-VhMo*9L7>vekvpts`4=3D;z;
z#n<<DOh>#@<jC&+ASMAu7a`STD+8)mSK?QBb)ls*`<~eW{2NrvwWaCFgZB2Go`pL#
z*}U&@y%3P;#~O4nx~RcNY=3D7rj<CJ9GGHYbrB<Yh3e|8<;fz0bkb|l%WVb8kenC}es
zM>Q_?Z!UUVr~jR0>8yieLQ|ZOkdWk_AWUPTubhu$S)lnr`OR|P*8~D%qScPL)_o*o
z-Iawr1t+~wS6r$|7#0%d%nTW`Y?IW}au{T<4@$CKY02?uaY(^p1EO-KPF=3DEm!(7~}
zqIO^|zO!ZZq^T2i9DRCNOw8aDL_VZIJ3Kub{F8xPtR2v)I>k>PyM0J@;!!6M@B^}-
z=3D+*bKBMB|eNeh=3DL6KY9vkcxzxn7dJ#2Cm_*=3DZp$yxNqhG^?un6-57ZnSe@75#>vU(
zKW5UPx&3a>9e22CBWK4_WTl(~^~$ke=3Dojm3`0$rKyh84iJo>J6g3VNL(ySpP`+vJ~
q$^OiITD~%_B7Y4OGZ!6(9FP`{zV^R>T!W%Sv{_c}gIC<`L;Zi&u&e?A

diff --git a/Platform/RaspberryPi/Drivers/LogoDxe/Logo.eps b/Platform/Raspb=
erryPi/Drivers/LogoDxe/Logo.eps
index f40df6b0149a9b45e2b86a42e074a11c7bce6796..d7c829242d1bde166d5e37bdd80=
0fdce78d08808 100644
GIT binary patch
literal 1611682
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
NNB
zWZxnPVI<q-0TBt6GIP85DwwxvQPe7svl!G;MW&IhL)3!xeVVpDkBZ<uYrE{1J&B$5
z-59y{+6#A|95}-VHXjdW7FB*TF9KNYX0O<fo##>2)$8P7kIwhQS!+qJ`zUg1{dunM
zZQgL-Uv%}?%&QZ3XybAc>3w+6coNr<$`lhy8g-^#i^x9mkV?01gEm+(C7`)(y}SmT
z<>Iom%IGS1gSw%=3DAB>71ZsT)It#(PEpXuF{*8*W)hnu*5?>BR1?aB;dCtsDGMz<>r
zj-$qS>7*1ZLv#4<4^s>4%B~%gO<n3wUZ?Wo+d$oNSIO1fu_>E8wWJTbc7I+gje~LG
z<5|(eyI>zE+@`Z)_YDqJdBYt8^}86gGgXgn$5hKz?D1zq9?2G2P4Ch^HWM9O4qwd*
z&J7I670>Z^Ofx00j@G7nD3Pbmd(bN}4t1$7_$vqid<Sap7Rv|aUfAFSb26-te|6w#
zwMy=3D4Ccmqvit<9w05u=3Dlbao<!Z}Nw-8EdM<nftkK6F1H$cUh3EbxCaBOL{39FGg~{
zcLKZB^p<RWW_4fO<HNt`idm=3Dl{o@}ESl=3D<8Ob;y@>B1M|t2`UIrK2J5pgLF#;yU%A
zO_O?7+wU$z`(=3DG8kGy3#b}wSMxvx!Tv$J3EZF8K>0|huze!MK+_N)Fo=3DGrV$>Ba3u
z$ihwhobDg>)88?tTxGu69@%JeSFqn4xW%twTm@4{Gi}!{@&3quwO6fomtli8a&AN9
zue;LpL>4cwyKhp-Vz8DPpOBx>C+HyB!c-pz3l=3D>$Sh$P5xqE>n=3DD+rGGOQQqxfU0k
zXW2K{O+M;@)ASZtjkJS>md5OA<5jYs4#a1Heoqc(8}yJgdk;4kcPX+tc6`(;=3DMGvU
ze|aM+IYOm>`z?-N49;YyR(}yMwdhacy|QlJPNY%?gW4W{h3Y9P+-o)MpYcS(wk}kI
zRzM$n(D!076hUa?jdCGpobGBJIadyQjrm;tATWZnwk2%;4Lpez<kK+F#7o{^$$B&w
zc}q0*XHly)O=3DBz`i!8$o0b|x6%O^8>Yt!Cz^^L~uh{K%UHSkHBZ49B?$Vv+5V_gnA
zx9@Rw)W$KZUY1jc^dzG>kHS(ei)Zk@tjwoYy)1Q#+8dZ&vp$VKsGf5p7g~feyv;DL
z@$1|EyvB9(yAe(K>6tSt-MyBBUq8ThE9hk;<y&u|9nD5(X0zjbecP8yQ>lKTm64Ek
zsT`=3D)g5AOSN4pw~A8-8lr8X18KAxA5j3+4ycCwEb<1)FmKi%v_5-ax@wO!t>xUsd|
z(Ed%#r1wPMPzty55-6`bxwpLjCXLshQCgLFsQGF`&KUH4$K<nF`_BmWtXn9S$&O&R
zFHVlnW#)UgUK*)S9KH_Ew#T(<?AUv})fxg8hHVxmG*&d!4OKmwy<klBLx>;(<>@$_
z{4L)iTV8t<h&N;QpT<`khGB)jxT|9BHi$DqtjaimvV!zzn5(yN<6g>_y}yJ~V>?#C
zi=3DK`u?|_-;4pcW9omLfXn~nCWOMk*D9h5j#?LR%P(SX0q*y+qiyK)oMw-ez%1RF$(
zg7>jj&3o&$sr9!qR2){)HS`7%ZRWiTo!=3D>H46o?)_@)LekA@2JS-+fjcecT_tqnS*
zrB@~((7rwR{qRgJ0aF+TXr)u;|75toINjB7zfs(Fxxm-6*7$OrEo;cbQwA5J9<8nH
zo0*mSwyh6+&ScRMXn|3SS?A+SnU*NR_EZs)xO3Ocox4qXUcyyl96wr>q>Z3$ek9T)
z1@l<$XkWy8bcQWAeovPQK^@%ZyxI~5-Tp<te9WVs@2@8ZiQU#;qy~4O<EN~WayHZS
z0Q`y@5mr8v+xo*Vw@yjy_NYGX>fz;e7F=3DG)75FUyj=3DTIy220paXwGLgF4n})?KK$a
z=3Dt#gzKgF33;FY`FE`ObScL7Eddbn!<YOXcihr~+l-+%ef)f?r-$odKP4k=3DW3qsO&p
zlOYZ*wd*LZ=3D;uZrW*EptOu49cI~p}|0x%kOoLik3w2ArdVU}y0)oUee3+9i?(S?R|
zwwtk)yL}6mFlOTJ)e=3DZOZ4;xslvPM^**RbD{%YwZpcDjpsXIULUAF?;o^|Q|f<GFf
zb!m@{lu9rftN$8D3oCBaz75h|Tnl$1=3D1ebtpW3M~DpmdE$;~gHpn;*UN?~SrdpzvA
z&8^KMBHrpcifmE|)iZp|5G7p=3Dt8n8JAo5Q^ifhnPZWulsv(inNU@zrEU7qmmxK7UE
zzi_H^!yy`C1<+M`C=3D8B+b>oxU8S;IgULC1{t58AHFLifmxT?_3TI-U3;nj`g#mZ^@
zb3qIGS8g>KJGv>|QTBTcUi}}G&?F8RgJj<+_1a5bOFr*7B<Hhr<yGvkc@n|eh-m$3
z#qG-ic{TbYLHz6`Yy56yE+&p2-U4q>iL$+VI+MYF-@UvTv+so%2ko$bpVD}piis9>
zmMm=3DB%hcgq_2WaAYRsn>`BP@!NGa=3DG^UM^IFqjP9rqMAm^Rp{&oU`h+(yFck<MT$c
zqtk@I>EL+i_7@j$cIk08dkPai{2Q)*kI}FohTTfucQXEZYJk7}Oq6M{qjS0C=3DsC{j
z#aqq-wUGy1AfIuTi{FagsA@Kt=3D$E17nbV!ut*9JdouKy3%}RN$x`%iF2xwNP+%w{;
z`#C>}l2Yfo!<hZ-OY{B92HQsOf?=3D?Q6>|@6bE|@j<DGeuk$gL1xknvyNwq$&0)0v8
zo>sMW>7#CwW_vwOb_9+^0QsiB7`&CuQdLH*%~urj`zCQ+%7XE0l^VT!F{sSS6}C`6
zoVpT;G&RgT;?+U3%W%8pg~xYLC56{E7J0eQzMBMH;7L-M^P*4_;ZE7hL!g%!;glc&
z{iT|$)0~i>@|Q`uakgKFnaTgDTx!<H<{9jj1RC|9nb4K){c`nPU#Ksrpg2^{4SH6G
zYL1^=3D8hV#5kKlt{gcOG3Lz8F7@J}`uWP9Ep3ZswXz(%nXB+ECK>A9uC!VzvB%g4gu
zv+9kpB(RHi{8(qM8I<)RvAuU~rVI7hm+@=3D;+lX4835XWO4>2|%jS1&;_2v{A@|*bm
zoi=3D5)|Mwz&WK{tFSYCkyK8nlr7Nz$aUy*5M@}$-Ad1xxi$J3Mx6|8lsKHh1txYgGd
zP*^M1!lW%v)!~`=3DGI^{`B;(?hZbzLN*ldd0WXo^AHZ3RTE+fT8E)PzX*a+S$YnMz?
z>{R@0God~_m4;Ph5Yow0dt4X><wiQmp(qz-TZG9~(;l=3D5=3D&M^sElTRnYZ!7}8I_8E
z1Pk@;&ES4N4~7W1PIUE@un8Fq;Qw+TQ~F2!4qo~3u47tvFzF`q4Y%%GvgBqhXQNLt
z)a&~<5Z{RO20gZQ#y#aSHEzkcEp_ZNI6E|OGOc5M{>Qw}f2@2tjvj$px-Hw@<90kQ
z;4cQ9O9^E>t`#_vJ{)W<dAXDmN!EU7TNA-6OY~QT_F5z#))DrmK2EM)2!}0Zi_K;$
zezlUz*es|IE7wWg%kd49$cRQ%1=3D_~et^j#+h45F{^bTk`N9k9;%V3|!&~dNMZ2VZ>
zpxz#I<Hjx{Cy<90{Mj@3?2zHfGYPUh1bqHz3Is#Y6>8;Dek2;Nh4HUCFVOb=3D+LH-G
zE`cW69VrnLtqD4Ev9ubOXTM7M9-(D$3h<8`m^Ld#b@q~&zcxfn7Kfam27(v6jof%O
zOa{k-S@FU7h~~DktQe5L$V?_&GL>n&q?3mtH0+u0UfAj_>p9e_@o;-ZF2Z)dx_BFU
zRWBp+Su3h}4L4+zo#K8SCCGm!NCjI?q#j<sgTW0UtvtA0;(|O+9ad6qL+?xShcq7t
z^{W3xiH1<vrUrgtdY_CMx?T4P|CiaN>iWJY?RL}Wp<%9;HUBO&%GVIS@GZzWg0Y%(
zr0Jg;HTp{<f9O=3DZ=3DNcRapV?;?bsf_xN?dLyN2_6JR@*x2sX6JnJ8s<@^_#>(xs+Qs
za6wnaxV%wctIcxtZ8KM<<@W_GFGTu)!-*=3D{CyX@jF=3D!V7^}3BL5@P(!oi<BJJ2`W>
zVNUy}PT_jcC7kgnYXS{sHExFwzVlZnse_i4Nk<y=3DN>Md0&*=3D$;A$<mM()QAxtl!51
z2-8Jv`I{O=3DH>J$Z04=3DnNwd1t1xXlVjfc{r&ZB4T_#G`sCIETaN{TY-xD^Tc5B)OR7
zSJg)B$$jV@5s)(6_>R7<4R$n`W#}tDCSD~FQv<s9$oDRA8geh*IuFAnhl|Nsd8T^-
z{Ewq>*FDN}>+}S9<uJISNrOL+E3%dE;6n~t%pb3wRjob-v)@@<l(+B|D?Rt`oOXV_
z`<qs-&Hw{HEu7eYO7~h4eh7RLB3>eG=3Dn3)r_~pUWD)J&Tf6U`=3DKsz(`Iihn%PXkP$
ze6gGs&H84*Pc6Lql=3Dtxq>%qB}z`athm1Ht6IAIKokwIl0XLeAfN5;*&=3D<_yG>@QZ^
zU8}!(WkYT?ZyBs)e#KpW(a7E`RH$|b+Q-dfh3%gw!*Ugn>e;(eX}-FR<(Xzj?1kT)
zd(bjdt$*r6t1`$Z@As*~B<fwPIBWdzsFZFnXMSI;)9K)*{c>$LPKL1u`Ien3@6(k!
ziF@LQpRk(Zj$7c8UIM9O+xeWl4suUV^5{dKm6FaZ3;z{vM+~2_yw)40VuzUvhj703
zWu;o6xzS(YoIBvsD6aJj4g4wA!MtEaWY2v`)7@ZHJuTQV6V{d9EIqWl%yIaQmj8^q
zmww?gT(mRmurFRqY7uT0WT&L9?B{fJ37_huRhwKx`jq$A0zT}Fq1)@ZzB=3DZlxT-7O
z@lonT(+(6AHN|UrH)>p)9_~#LzRuS<8^D1urlo&(@rDfG22+u=3DQ8~*wd+=3DMn)F_@*
zOH-(YwzcDq0EXCjX8?1Jv@)x^`~U*5CN9BN+~<#$po|S4Ix<v()>YR%0BZ?=3Dk{9XW
zeUwS^A?+9U*R6}pb|Af2AKB9e3ZK0IzWc#`0PES3G85PNL#uf!1cR(z9W*-Xa|YFQ
z({+_MtUndY-){^RMrCLFIuKL3yHUBaQe0@YR~gzg|1Mt&HU8=3D~B3$i7Eo(+SySyMP
zzK8X|tH5<Lb3;1QbiV2VL+BBthiBPHjnx?7g=3DeDR<mUqGjpEr8*Ez;~;Ll)w@Ab&$
zg5Oss(Tyv}yR|wt-&4En2K7}nZLtn`TXR8`OD*R7F=3DWWSUOGUF-VO}u)hpjbIhX5%
z!0iN^P>fs?Y)t&o^7Q-(Z$y53Yn%?1ZN%2+`{RtLtY!`JJ}?3lp<C{>uq=3D{%k4A@;
z?D0UW!1=3DkiOnqKm+BMja>;a5XDAQOEtfA}GFMtrqrZ1c_^Rj43@y3QC9bOTyBn#WN
zO1Ut_kqg;B3=3D79+|7Pn$TAA!|>p8Q2oh&$ASx)-$Rn90gkyUeJFiSMe6?l8X-|oCH
zCZu?4Pyg<0K0a^{&B`^sOuQ}ZwHm8K$bESnPZ1;~=3D``%j31su(0g?K5?pP;s9I)I+
zZB>cgt>M23v~;UfwF^gY_oVM4-qclbILE%d*QH^x`(O!Nl%K{=3D$`|WadKgv@EPGAr
z{;`)guHC(U?OWhTAOF#Qtvw5XN(+7nji5Wb_qYg_hR*zwCV&yn<@xy|&RS+Q{x18Z
z@S;E!RZlH(H)p#9&nNv4E@cJ!`?%M&T=3Du*2N#%;%ZIA2E#)rbVRKT03YN`CJi)7S`
zA9yvIb<^gWX>3kkmiGjo{-exeSNLOhW_2f@3+-0!p=3D@Aly*Q$U#s$2Tou+80buoT3
zC?4;lE1;1Oh1F+-zT$QOrj$m7(|V`b#`s>A^2B~~Hdb-osJX+}4V*WYa%S~vl`9`!
z)^gpu(#P#}AjwtlA^&p@9|DGS`kx7wR_>#=3DV@o5x^_g8)L|bW>uif`=3D4izNPTbBNI
ztLH)l!BukZ8bMuWVPv`a90(Z=3DK*lw1tjWe<Y&~UVkz8BXeI>^mXn`iB81^t->gU~u
zdoQ5Y!s^3eTKMdT@(3W2@R`vLUHoNm=3DY-Ui!dQnD!T6Cl3zoZ7)-_I;qkLnvn1~bf
zE3X8%SspI3cPWATm(g!m^XVQYPV(3TPRrO_o~_oc-)fzF!1se&=3D&z3$`R}lRmQ<bI
ze$uCrTCOvkvQEFhE0$&o-0n+L+x`-*FY|}KiG~85-&hN0{;d9{c2VT=3D1inyx5|(8E
z?V{nkuXJjjF$S)7|7c5KF&>qoX%4RI_oP@L<c84w{-HH3J`U6)+X0rOZd9G#bK71y
z{j&%)xPwCNvT;iPb9651rgBjjz80sVgG7pmB1MYGp{OWwjMC!%|FQoI*w0>T)tt>a
z#y8&gx$Od*YDcs`z3-kmaRxT?XFO$kPKAQM7*5J@RmKdQlWX-w&~UZiIKwKXZwuYr
zlQPySme{Qx<%bwr_*NYA<qzH58YRaxjQtZf^2wqJ-~Pn4dm-`1?HBa4N-#`#6DZMq
z?Z_gVNpMnf;N!L)qBtfh{m@qN=3DbSs9FC6;hO-K&qoOsi8Xi5B(UVH~RdOeVOm%Rb@
ziAY4V9}DYx8qMI*;m^MhM1R`1+-P82_tf~@$Ku&DQHb*&)W*j|5>Aw^SFNw{b>mw!
zgWAavR@^$%H}futp+C|o@mYspuC*#ct;WXEuYbyk&sT}KCYP%3VY?f@NU$C%xV3yL
zb4DS<t0*_JW?!%~z_|TO4>oDHs;cT$86cDXDcsFNsB-(YiV0A_D*ue|oouY@n$L~M
zg0@+)FakDMmb{kN=3DC9ADBX`NusdjFUbgF^ww^ff%E@E{)`22x|=3DI?J*ps#sIM0^I-
zX?9b4TXh!|%#<X))oeJ|pI5Rx)wNp3AAnX@jV-ON*!xQM@aE&w&s$n>&1TuQYpjq_
zeQG@1UIZX`^^}k{$M^lCO6+zmwDz*Re_ZQ*Yl)7>MANLr9N~u7^^L>Foz7@x3ZIq0
z{~fEt(8)_T!j(|1P~TL)`0K4n0FQk<wpVLDO~wnPNyQ_cTtBV-Xa~26`nd}$(BG90
z4HL#+MEHx@9wa^2!`nse(KQ&$8p?%zjG}0gReG&6vOKQZlkuIL?yq|&EFFdhvbt-n
z2~1dB-oJ?u<j0-%>+l6mtk|;wD`*DE1udN2X0<rL3eTyh=3D}=3DQT<(1{&n(Fxi47fL_
z@8WV5U|RF9&}WtlK&<(%0_ca^ZHEag+<YIlq8@&a`9Z?<>`h5OO7I=3DGo`;&hpH%Gp
zRY0E_a@Q3Y<f`Wey;F-TLr;8-5w%rz@pmt3;-Rg_AY9O^y!Mr<-M>)&d{&C<%pf4^
zzaM1f7Ul&?(cb-0$NpEb76)5kcby3=3D*l#+gd-Q2P=3DHGCqXAJy4hnZd2`5L!@d~#S?
z6B_5K<K$BSL;IpOBUj4!I@0J`=3D`3_*y7a3i+#!37u3AA34iMx{&b!mP6G6Cq8mExZ
zH|F~Nc{8c(JSmT>)}(fs<IB|;d?VR?AFt*$*kLB(MV?-&TvQ5~^dmKuenYI5$<yJF
z#fio$zpW};*Uk9C^>1@)J;ZPh<ac5*pTL)Ynmc-#bQ#rFlJ?Nu<%w;yW1ef>zu9&t
z&vGzs1%P{~kM)D9Ay0UyGUZP|`veB)jO71jRji~tBgG26v`#dttrn0^>wvTW04@#L
zmtt-RW2@+Mb6IRo)8;x7it^}&o~6=3DOL<yl!{xMISQ%f)b{^>wXDGkSqe0}Bi3@xYa
zva3WaOg$})UyE6M@~=3D`h#|@hL6a(}acHSAIk+RVNW%MQ-<fYZKQPLXc*LNS@`-Nq*
z)AK8{89nU$&+tU^fXym}>KA6Ksp0di$%T$&Y@=3Dc7zWK*-85Q?mr0^ZGkWTPj?scmo
zNqZ0lRMsfZ@xDB=3D3+K~e>T%E@(CjgHs^A6|>>7pKH#E?)ncoC8BKLQbx9!E-dcvNZ
zVc?hhyS~twxPM8NgN=3DFBa<ywPO~sM$O7;EHrP4X&tpp{*GV6>xxwr#XA*naK-t~F;
z&D@tQSuZ@d>{SkOpn?|?^x66pj?mh%*rV@|aJt|J=3DvsA_&bCx2Y_)<3_5XSc1*wM+
zt1dFBeP?C)@iF4tn0r4>2m6@lK<^b?hFU}EZdH7ZxlL$<;RCV?&4L>e_@+#7x!Y;h
z#;lbSzdDfafS6>Xng327PiD8Gr5tkoZeCbZ5joKqT!!qJ9K_%rvVmF(hiq~|a0(`|
z14{mziK{Wcs6A195nev;qGhexi@g)P<Y|5S?aZJih6dB(0fBRJWjC2!1O$ZCC2{*c
zr6}13_|V#y7HU7u<UXOcR&}NEZ9Ixib*r*cwX~%_Uu(VGe@ev`SR9F0xRNTTVcy?&
zdClKBqeID+uJI$j666y+kdTHldW~71gQ>h<aWoTh$@Q{P?L|BM`L9QkCG+M2Z@_5s
zAecU#WVk#JJ9aAF7Y<B~r)0tYtIj78OyJsmtKJ*a`wW{F^485p%3ZA84~gY@U8%#`
zZ^H%_`hT}hIn<JsTJK&=3D0$g-GRu<n8x>EJoBAlBbraFPs@?L2!y~=3Dh}JMk-VivKnz
zd`B0Y(!CMTSm*RNy0W<5x^<f6^J|rq&X;bA6yR*x>YfU<(0RDu_3WCM(VoF_foQU_
z?yho2^+OzMAV^mu4hFYd-d(s5cpjj*@6Hj6C9=3DQm&(7ZhsJw2?hV>(`(srF=3D&RD~r
zcMFk7e53P@8v_{(>TzS@%G2Yf+4zdDh4IQ~j+1<(k%_h;8$+?Ynqkmpoc%_AliUw@
zq9cUNSf;*8oqh<SQkX1m?l{DlXn*{R%Yi=3D}azE>|wt1-3%9TwF6Ly9$Y!oaatxJt=3D
zZjN@iS5OwoUo!s%9Z4C;wdLv~^!$=3D^evFQXgRIW*hY7bZ<oxHmIWt_l_<L0FN9EtN
zlKVKi(_~leU*VuAUAlL^G^+n-jf*aETMvZ0*gqPe@c4Anly)94I+S+OQrQ{ufc}Uh
zC}j(peyr`66O9f6i(Z4$VT1DX@29sz?n`B)H4gLv-`BGGXDJnx(@R81zMIteZWnf#
zl;iK@3g&A{-h0r-81=3Da<?Ku2-V8NVJ5o=3DSf`Iy?}Z~v&$^^50P)4OhmrcX~k<>nKM
zT6RU_+j}k<^&E%kI8NE^+uIX5rIK@vdXv-#hcEJHtyu|kI8-}%4hdUlcUh}p)atsy
zT(UUKRoiZbnFzqq46MSdP+Q)x!Cd>>1;VmYdA^40m!wW}=3Dg*uph*55>RccjcNm`pp
zvfi#X8-BV1`y6~<PC^i+beSzen@<Zbe1C95a>rTo)pY@Wlm7x|zReFwWFGbb#uZ=3D?
z$XK#Q{vn`m9?RR)jZvLVvrS}`kJISNH}BsCmEM=3D&jT|%FJ#ElP4%Um^ze)(TV|ArF
z9dCo}OFXwPRrgOV>T>a9fKwV>FF{Q$U$WVx`JHfv&uNx@>AsTo_ZJFShI=3DhyS=3DX?<
z=3D~j1zy@`V%B%F8N`(gv|&GsF-qN__fVLpcs4pDBruyRw6+1FI8)?2d0`06;)d95Y*
z-ZQ!j|1i7(-MJYSTd6!EfpkAP9=3Dhr#5ASyV6I<z?__bd(<l2Az-Cy3W+)zZfbnu}k
zPOizt{?Irs?!o;_5mV||USmOrKP=3Dc}e!sb$KXl?s{O>Bwt5(gZ+cepOCf$J9uifX)
zUOg5i^E;wg(Or=3DDrA-2H%k1m~EuDAM#-QG>)c>IS=3DG3o$>v{uVEWzcr^mE~;K+!OI
zLp-jvzeRXj&Hi3U<+rWxk$ayZ3d^v?FxcU_;ChQ%4HbZ4{)_c_))oCHe*=3DmrSex6E
zu85tPbE8%-iH9!q#K{T2YL<rN1?_`2(wBy=3D@xAq+%>H1t+WhLr^9r7UZT1a=3DJfHc1
zNNT74e9J_nurgwv=3D2c-=3DT5864!n^m;aWqR^OF%bA;G`C(2AyOm`h^NS!V1;)4tWiJ
zTW)xqX_>^D07Ij*zFw{zHNR>XyMw&Bac7U^Oxw4d?gd?&G!2~E@haOUD`{fcb1bTk
z*<5h}09GnXst$kn<16;_R;VSDJ)FnvR-?A^i_nxy31>R*3%yNOtO1C=3DUr5l#Y&Kv^
zn=3D(|%SK-0UhGLHiJoUR3mAO?f?Ehrzig!hoAC<eE98hUPIRe|^Sj{aT6fltNeX9n7
zAb2iWM4*0T2Y@np0~>%QhJaPf4hfB|my07oD!E%Kp6=3DZBGWx5V#lCqM5|Z0=3DVCa*Q
zR^~m4_vGaHYya}{c01V_;^?J6*9UV5;+x;=3Do$Ga>(t97CQw5B5T9pqY$krqZlq!2@
z;b7U(dTa9dXIn@?1|K=3DY+#>ipu=3D@U#yvNq+C@)pDw7YlaS_F~L3e4OfVrjh3znU~M
z$s-@6*nr_x>fHW!7aJ@x^}uq-%&zvA*#>t1l`wf%DU<|Ubnfw}N6BPKmo}&2=3D2Iy;
zx5N7L6dke?ymQ{G^tb6DyWR(RDNQilpQ@vaP>2uI!jx4$Z||9F{*8?wMNoG;+vjn%
zBX$|cn-B9BQt0++Vq0%R9;(s!JNY)l{3)+tpPB8z$x}G35<`mDd|i^{%Q;1sXIYRY
zotD3#%_?blM1x(mxB@}#qkSW9E$Wcx?}FEYnXZJL)~wgTI4U>WUt`d2RLnn)^G<(%
zOElRKoi9!dY5q=3DV&9xDMKa=3D73)BCZIiiTf1GwTh)9#Jbt*HG4C4sTS~*!C;zeOr#8
z7ok4ppiu$C-hHN)q9v}?ouT>ox|yibpcgl1@!|8gZLV|dxr3VH3#1~{QA-TE4+6WM
z`&&_^Q4GE^NF8|--+RTd>)mO<7eB=3DQPkWBA{Op#1Y!7CvdS<J@=3D#sO0G}i7T*r=3Dj2
z=3D))c0{y3j6l~s}R@P%W~Kb%+%lI1kVJz<wTl9T(+<oxEO(oNW9zuXvpul2vvcb<zE
z$4`HS&A0B(V&@W#Q+xO#PfQKnQ7i3x9P;g*7EKPb^c|wByrg~IoiVyxyXB=3D{II01~
z0)s5j&NCnv&sV`IkO0HX!JW=3Dvtv^NlUfHLg4Sz6XM0H%jt*`9xkB<io+>s9%F*-G^
zeT?N_VEKzXth^{P4Q(m9=3DaxwAiHjyq&SY1bEYt5?Opm8L#7OnC)#>Dz!I7-edtt=3D9
zdS3W@fFyPaTBPgrrR|X4?h!aRPKi_4$KWrGJ_qG#vGz!g4F!VN3cvl%IMFQJGf$RA
z_jWQ^%<g@d2-O{aIT33h*9u#$l}vY!vqGM12%k!I5#9SE3}^2r_<EF|ZEy<v+l2W}
z8!r;7J$GPS?LuS%pfdCfy0z0b3hl#o-+%XOlM$TKy2HOFS~?Av&?yZE$KKcK?N=3DW5
z0yS|l)jxAwq(1YgGjitFL@A!@-NSoQK4E1{Y>~Geyh{P>mK742eJ(Q$a;p?P@fQU3
zrug(RpldHRFSq%#Xf@Z;xOzzzqat6>k@4A_a07h%qf5SEw|Vk2oEa>2+=3Dvh>cV5F+
z8KOY|n2xIsD+>`MYJd@868%b?yYb!S{&$Wxt}p3b2%p{rw$&XcZL*z@5`Lkh+x%ai
zE79W|>f_?CHfkT4c=3D|p2a}f4C`Su{~d^=3Dcr`)yz9@4mdB#|p<9;@>cvUT;u^bANJN
za>F+*?M_|B{`-jUj}tyl^33s6#W~`O)GkHr+0Myn9cx<Xc_*E$vHQ2!xoF#qO4acZ
za)SX!q)zG^PQUghMpUDGH@|~aft&gW^2vxiUIgK{iV!0Ib>dODcWUXjBLZ)KJZ(^m
zMHZik){H=3D3_We13lxg9XLuc{{YE!zVbkn~2D*_?AmX>{^^D4t+gmYaXLV@FPUd+mb
zOyh8W!O2_EpV^_qDETMZ0>cZ|$>RaCs}znndOeWm$<^LX>d@^U)7|p(SC~f1n|Y8|
zw%MS{ifvaHAa5ESX4VGZ$av!xEt;AHH4M4=3DEZK`YUV=3Dn~2}4np=3DT+m4cjuu~er0Mb
zta}}%=3D;-JtUz|%s+=3DevvK3^{l!dh?q>(<Uu43^#5LSrzeJfe1~<Oq?8h*nP6fU_I2
zbzzk+g^e;FD&!tUZy=3D`xeV<y1c~;36J=3D{;ldnDa*<zzG1>{m)IqLRm$TGLR}FF^c`
z`Q8XaQqB`heW$r+#a?cTOIh7xxldVI*W!F{1OBwuS08%ej1-PyAKPOjObhn*JpJCe
z@R@qhlrB|40Mb#0d$M*$jp}B4{8qLDUlUwz0^9^;tkp-g?yHpGHS7S8ojwcp(Nwgd
zrD@Ij?@i*d7xw#VRRn4Cz5&whwF+~PAma1_@hbV#g9Ral+8DtX)3;RwywbBeWb(;I
zZp^f~_%o3DAK5urukjyTU@s6A*y;Td*_$SX8jqJC1+mHM=3DqinAd;7DqjvVT&R}b9z
z1dW^Uj#b*Xp2d7ixUMiqY&mdV?f&2uUiLdqF!agwz`U?^?VB?1a7%r$c|}BerGQYI
z*RCzTX})?Dy*b3Iu|Hc;56^chkHyM;6mpYpu#@i-x)VSS_7Bh1?XmO9i!i=3DeG)#T|
zV25O$8<U&MZ6p@!emoRzviocNWbpAlzn-I32Uo&z=3DWvdX!da0%*%7@B$GzoP1Hc#B
zv8)Yz*)>2fJgPj9M4+3HJ9}4Z+{td)9A?$o()Q=3DQdkwOVCTq-K`~T>^pZtxq1!#3(
z>6g9h8|DZ3(8uIFqU>LNQyfn+?ZKefql?+M>vQ?(Y2#xtM+z`fD{H#~ocTvge|Rz#
z#{}4DfacfV+2h+3zsjpF_nJe^k}eIZp6;yiuz|m{8L<zJZS>D2JA2^j>qU;)PLHIS
zY((6uC~PwsK4`mdpQ`=3DGa?s@`EqGyIx6G!*BW9a)Uyz$VZXV7Oz;52`_~j3x^15AL
zC0K#@rsFCZ8+C4)&%<H0Ic%u?1J~ou+zt|su(@krYVN8vcuFU2-C5=3DS5Mo`fSdCeQ
z#Evj04&$`_jj7y#wRF?OPp3K0uSB4gUWf2}fgo3U6!U6%ed-|8<0l!=3DCi4#g`jYkB
z-9XAeVY8c?ThzWSl6x=3DvDIp?sZh!tm*-fG}d>7FLLqWEu2D|F<dfD6OLz$5%AJk!>
zHX;86Z=3DtS@d|f^|%R>b_?TE#e>X$d&#rj@;BW1&XpAPK4|Ba~j715g!ot!R6?lr#J
zpdmfGRS+>WJOo?W|LSA1jNUya*!_g1T!tt|p(iQxV7&9~gLWf71TS4h-#COYayyKh
zsD14aU%!ga)Zd~zfb-S~2p=3D*s1!Je_S1`Rkg-PjFyKprYJ&GGw_4acMQv)!Y4u2o>
zH~DJ<MCe-|cIuhme}?&U8KdkA1B{$b_4Zg}plzA1q3A@eCo6fl%IrV<vb&;%?GLY=3D
zQ>u@wtDf0k18@A1vBsYgW9+~!N{2cEb$)8y6TXOR-}}Y;>r=3D~N*}q#_jeO&v=3DNPw|
zRg+-ow)YK@tM}!bB|+>UJBhCb=3DD3cx9!|5Yy%+9|QA+QW9Uak7$+!4I843gPz+IMS
z%J$zG#<`KgVY)}&4IN8O@!s>+wZ-UNf0vqiX?$3w*|roca>~I(v-fOzA-Jjdt;kM}
zZ8tAE@_5eTT~*2d#qu0)yV*Q;inr5X+dDT4*T(o4neh>-aOQs531O_c_sx)XQSXd@
z*B+V5z1SG_Bng>vqhr{c4wcY8uju(lZ@YM1%#GLL?^Q>=3Ds34vi`FJ0c?%JFY6-Kvu
ziQZiefW0oiedgzGV;z2%BdDUdS8YCz2A+nhr>*93*Fvh{mEv{z?YSzBS_kvHE>BzJ
zT3g(^$-+1z4T?uNs`qa2xu5_7l+h+xs<(NN{I$Zn!j%Sp!K{IWF63rOT7elWm8hC=3D
zAE$5jcJ!>bnm>)~cKQ@xRL8Zl#%|cVUj~vWm&-k-XPuV@)BK_<FoKCRPo+<HFaz%4
zw{1O#t@RPv_crNX=3D~U5;9$=3DMnWi&xd>E8r5oDELn&t_?jJCz)ubw26dS^IyoL1)G#
zcLgBPWw4!<Yq>NQ*}vAee1Hxc?R^D46s=3DZ|tMBj3*-;i8J4lMkWOh=3Do2K%?#AKkY4
z;*lZL3E}C3#W~P^z?WmLOZ#KLO{<}CWk;cs;*APRLn++0R&SVem@dF^nJd?KaIWnq
zB=3D&tV{ErQEl#7t*mO88l#{qSJ7k6JUME096E!gKTVXnkL8cJfI7k+y4+%1@=3Da(BP$
z^er<tn{M>{d*!_@)j6upB)1g(eHX@RRy~}A-xaD<derW{9(;ar(b~WxZh%Lg$PNW+
z?2B=3D9fk}~vzAYY|HM!?ty{t;C1L*;}`cQAb?%cSpjf7S~T(`FT$)Mc$P-|AR@%RRk
zO~Wbq$FE<B1m!v{C+qqz6q!b+oD%g3t=3D3c6Idt`$OcZXVx5I7i+gA-f{&$A4mLpLV
zN6&W#<uobu2l<X~6N#9uI@?^nq6KujjhC)NT<)9gYk=3DN*L1jJua$GD=3Dklr(~Z{xoZ
zGUz`H>wW6epEKE|y?E;$<w8;TNfl6!Kvz_Rm_8t_S<!%@nc;pJ8Z+{ZE-B8Cb_lCI
zFMWAJT-tSWn2vodQ`|<y5xvjAB$94#m<eaE!E3Ee?pdfxS*;-mSEVdKDZ9O_1B0@c
zJgP5v$Ie=3DGaZy}xsE$#h-c4`w8qb@%_O^^7sO>$eC3||Q#zga>dB|*2<$FB|!ycKF
zBYLoIUQcMIi{oX#xO?ZyPBXKyZY~`Rrc%0^ftuz+7cBT)oOyC3h;yDwz0uV=3D|IxM|
z=3D8?y#HHJa>$UgTJL6LV(tH?ei3UttCtTJLAfGox;tCaY@ta5UJvHO%|()VMxbUJMp
znrN@3uh(#1z93j~hTml~am2cjRp!oJwYP%$K5pzbxlX?*W7ow7BS$OIZ&ajPQ|^wo
z$=3DElBUnp@eA^PW}*CP;Xrj!Y}pZ;x{o1p<WEV|dzX7`t?b-MPtF=3DQPT*2`olBUV5D
z{vOJz9BKZh11_S+whV{7cRe0j5Wx9^`KI2&;{Pf+W4C-k`=3DB@(Y6jlOO!P_<{QTo&
zyLlY1#wTI){NP<0$Z5vxhJn2yF0BK&@8|gXD{Pi)?-`?d&~D6A=3DGTi|9^o&gj5S4w
z+K<e}(d;Pn`OXHV+t3`E^X-LRJpX3au^v#bMc2yjK8ME;Z~ev{ruEE9tkIYx0*fAr
zqs*_MlSq8EHq4RN4qAFX?U#`>p#uDa>oI9w>fvho_r{2U0T<LGNOjP1_%~_2TldK$
z-iB_W?3P3DOpecirg;EZ35T_G1tezF$kVVAMoMq!VsPqHmSXSzdaefR%U=3D;zPrKWd
z$^-c%IeGHgK1~Sg-4d)q;XQ$$!JAK^IV2!)<Ivx=3DR_j2qAfZzn_?P*VB!lpTwW2Qh
z3XX9yh>RUXp5vs*!*hv0OkKzyCX>^&HD5(Sce1zwu;<I<M9&PcDrCz7-G4#bWS^rT
z5OkY$w%Om9IMrja88SO~jt~&+dIrP|+x3w)9^!UMZ%1Q+I{)l$Z2XQs?8(FT@jkpw
zN}sW|xK520ms)E$`TcrEBRUPRWd(XX#E5kox8kk0ICIye`avlaT8@i@z<n<ulMMXO
zY5O2_T_DkZB<ttsJ$dl#zUIwx-HHY0vC{MJ_737g;c)BaI&ZbaF$(=3DFf4UkdNhyt~
z*qzA_v8j@x&~yFmeM;r3EM1mDN9qZJQCs49@LnZXs$%a(OC5c^&&^$_oy+hG_nLvt
zMATrtM1MD;g0<Sug8!<Enj$}ipvUdjd$e|1L&&q&EW;p~uzw#2gQ$$kJu#*>w-4B>
zb6H02(pj&2d&Z46Amo<|OK28?)m&y8!+gHeyjxh=3Dqk7PLHS}w(f3@z`oF?PdKAmy)
zb<!PQb`f;*-MMm6x-&*1Bf`lBwaw?jZ|ZNtbgsYtx?1@Teh#@kq%1u;iZ&47&X4k9
z4$RwF+WxtP{_p+t(lOllh+H3Ptv^tNpvi2^bv4qd<hao;KRU0_EmyCNwO2KV(HG0-
zyJP4>L9$_!>bjzFbnGx~mo}sRczkO7O_QqN`pwf30;aihysFL4JiDz$A>5MUZ9NQ+
zEx<0+_YQO8Ch}x^7&R^?05~j~e`#cNlJ)H=3DS6ZB)XIKePWI5Qhd;8xl9_1>J8=3D$RL
zU(86xwVV@GDcbr5y?EI|+%ZDi*i<xgaI<I?f4j4fkk+fc?p~))E-KR9m)5fvf^*$?
zR>Ruo9lV?f(g$;FK^S<$&!*75&7|!;Wq+37=3D1N>mlcLnlrFs6r&d?5^*{40fpm!vZ
zpt%>!@u}YddxLCJ>vFn{nyK9-!NFk(`6!$Bi2TL`l{B@ynplEc2SPs&N`RtFh1D6#
zAr437l37J&M()*~&c5vfb}<fyQ?B1ZLLJ!Z0QpYUT?~l`mHrOJFnfvuDU;)FluRT0
z*xEpaN<99usR~Lv{#x{_!-yo}2C-0o!s_$T{Ga&uz156tP!6Vi%JO&T=3D=3D$zrySE<9
zbYI<+M!~X<7l`w&50fdiPR?KGo|#OAS)%1wf6X=3D**c}YBv-umSZK53xBX=3D6!VPO<1
zBS8LFusUYUofn3gi+T{m@4sPF@Q~Cle-Q1u^`qwTc<V@i;in{LpV!y~USDUq<7bC+
zF3RIe{lQ{qX&`RN#;vU9Pryca<&BGN04}+|t#+w-VO)q%-R*7WtahCQ+sf-hdFI8t
zMYp=3DxoOkxN$AZ<VSK6H}6>qt{3vAW<SG%bHw#;EC<QqkJQ-(;f@+s2cUNWWozRq04
zR{uAKSnNX~2S|C{Q|&qb{5a@#H8JYr2)du0#!!sl=3D66@|znSUfnKrx1&m9(4PdcK8
zr~AL0(ycXd^S2#$z)qkR2Pv^f&3qPp^f+S8jbbuA`Pn0%+qz$}M;f{~0>nI1gm?6h
zkETJ-8_qVF(|=3Db+Gv(g+;vG&2*SpDSQ227AiBe3JIR=3DRc%=3D%ujR?ehe{ru?JVu{6*
zg^@J7qxy8^vh8|>hd22E`2r>iekt;F`Ygi@5Z{w;C$Fkf#$lM$Zx)?jG+(nnzZUf5
zea6XifXpSh#y8Ju8Tw+Wa9#vO2T0od457X|#3?tCen;oiOGtD5SI5F37TdJpk1&G1
zW$*G%V@~53vu-RE^?jiTz~epb%I;ap<Li7k(@(oC7H7TZt4AEzj8p@dt#;qF%0?wo
zo>>$ZQ(;LIOJml(O_60cX^kuITd99;Q)boW)-}lA0vGq9Kb){|nn>7i$B_`i=3DS$sB
zeJFoB<}ZcEZGV_67o;uw%J}U(KH(VHlNYBdZqw!t#M*0oiNmDlC4HY(pKfO}we|dl
zE}x7LEiH}f<+YSjVpCYjhHV}P>SWu(D%|-#d;JR0d0SjP$6-k*_3kcC7UbGsOzHsy
z4{fOQp3FM?cL=3D9cG!m2{j~jXQeEEDTfC9LI;k<y5uhuUm^F^-$)Pwq^6Tj;pM@#f!
zIqp_A+hFhPj>xdQsP9)`s)%NQk6f$9cR78*zwfG*YOe^D-dix#aCb^NI}}PCA{FW@
zcY8dRj(7J&5#@Yse~UujE7N~rPk$5R7fpY~m>U5t`2$w=3DR%;DZ!d&|-tis=3Dry!(Y@
zP>rfho0jFu+yA3e91;;@`$IkBVXxh7JYHtE*I5NHHvaons^1l=3D5!Q`dtv%`xqh9?x
zX${xxAd|QN8GB*$jCqm8{b$4O4a_$sqd{$cbe%bhKUOiY!2MlJsgtn^oe_pQ>RWeu
zdM>-(r&349&&LcbcbfvGy`?|!M*k7)ztXP+)SJrdnSZ`5r;1oTwB2b)*8O~>_1XDQ
zCj|hDwk-P7(m&J1>e!iXz3p0zZX78<p8s&wdnQzAx0ilSIx*A3sNAaSS-Xi;2d6FZ
z%ANd2Pzo1gks9&4#31^8`>%ppndFd3DO$Qs*n3Bv;~K19i8$YkzC@K??^oSMWgRfy
zlE>F6>@cQ*TuVLmn?OAJtavA<M{M%<$z+_l`=3DMFWcMDu;4dNG!b?>;aIGMPwz7Y&|
zhqKFlrq}Kx-Yq}A_I2)_pp~mF0JMNefw-@BIb`(){YnqsvB7=3DT^+0v~s6~q@7I1&n
zYcv02I-m`<&iff0AoAz$0-f~9`LOH=3DDl@AVJ8qla?23p|9;<!z^CS!6v9pqJUrZMl
zT)TjZyWvA=3DNIgqY4kw_?(=3D@;7n#0TA%j$jjeMj&Gc~tRzBbg?ThI2^PoPM7HCQgo-
z<US4yfCIAUwcj9V!5BrEoF6ydZbKCpkj6Uar_arr-<=3DN5sX|#X62XAzp>&ks1k2`*
z<y{1#_|Y-#qulI0QDmKAvb`M<xY*U2O7?O-{fdkamG@1W0XxE|KR;V@t1Nq1ueCAC
zs|(eozK_k$zlB~QUn(z3R&h5euH4UfqPE}!`#7QV<&a#ZXHX5^SNf=3D2pj&Uvt4~3m
zG!ZLV{%;<h0h@6>Nk$LsY}C7(JC%H6^ypo7lLzhLFfh)41k*b)E8~vUW{00~zIU{6
zOB3DU_Zgs&w=3D^^Y?VRiVoo+&%-_w8KY*`h4R6XBXb=3DEFqC$4v%_j|2iJUwEv27T=3DH
zYC6jcp-+eBn6%0mGGdB<<xS;&J?!-J5a22A5=3D$3_1OMJuNe<p*nAA5j|I<X3{&iQY
z6U7BEXE&`$9OC_A4m~$Et9_S#?>QG-9&~llHVl-i&S)t0|CYuwSK8RzG8*+i8emLw
z)|06Ro`J3A9qPVVt)mYrZ6FDWn84~WJLzU+LRbO-iPzZue3EBZn_T@@_5QFd#?1!E
zvvXdY>9r*&eh5dq8?9EcTy6?->sTHlX|gPA%Ee}WGG+*MEE8xQ%r1n6hR`*HUQ(2C
zH-IS>fn!nQf74U+s&}zsM$R|FjCq1!I9I&?aZ)_J9Nc}!tdBm=3D!Gt(=3DT^UzL2{C<*
zYn&ts{c`;^B6pt|z^sI}gc7~0b#TgdwO}scfAKwUX^8Pp%q>c#ncI@X^)i#J0pSuV
zyKh;Yb%LLAdIGQdPyo*v1g58Pb7eh*)eNmVHm}_!qs=3D@xc@}oO3(>v2^Sb&e&IXv+
zB>yg@QVMm;-t99NsoFK%0-nz~&ThW~#qFfzbN3HG%&&z(6I=3DHZ1-l_%W}ixSOFuOZ
zRIhfwUO$8ZeV%i@(-}y;CpmwN)+=3Dp5Q>&u=3D*;SVPUjOHX=3DDh?rafL3w-{PkCn0cGh
zkSTx+{A&K4dgQZK;P;!ctj%|XHHMd;&7Ut+02cXDX&1e#&EDzmpH;sA7u}1qz;4)W
zS(slR=3D|Tv0xAMr5l0__TvM0>F%GE!XA4yL1ary}Jz1*y#f2cN*7RR-hQ*X=3DN){h+G
zncaPL=3DcD-ROd@|QCuD<@`J4q=3D+T>|!>74W0yLKBXp+6h3`USt&N(i`X<9vbk?(mM4
zg+pMye}B!AJ+2xI2%oQ$8Lqoo2IJR;U71gXocqgK!oCCL@z*v*t@3IVI=3D6ywob-14
z+D$6iY~hf?bfn>0G%Fv$$Aj9Z^7Q=3Da8$!+_;l7{0bf<Y{#*D<{>^QC}c)Qha5O@94
zKKkYkOzfZDddq$Fl74<94#c@ZTjccd9hZ;xaYDpo<q9nAu}Y1AxWkny+n`(<Unl*-
zl_eN2&Sf+S_kHe#DY@4=3DRQ7MZ-3Ju7q<qfYOMX@GlRcOY3a_J0E#mHSv$#RkAeZCy
zPr_H(Pl1r?Rrnir%}M^?QKLD%#NB!urtB3;a4<6ucBRZbW?T_=3D%dz!*=3Dx67<!|_&=3D
zhhF$TR?O<t*<V(gSAo=3DJ)o-wJ0q?~MPuJQK^1R054V2!ZP8VIfhK)RhN}YzkZw&nI
zJKXDs?f6+RnNx>YXc+q;+i)6h!siOjwJT?-pijR){@so?c$ov|WjicC<ZHvHcaJ4-
zW@#jb@a&Hm0lHmWmH(#8ai=3D-FD7nSDmk*wFKgafZz3<LVf7lQ&-0NMGgak7=3D`$ErR
z%m$!F`!{LijND?x9O}~!a+u^T_SEJ3dLUVyR3Y4@nIrz*Eu=3Dg^N=3D@}|@|<5G0dqPu
zzczOKz1)Hb4h#GN`(P{JJmhaR2kHV~zKgA%3G2mb{i-!s(qVZt9jz}K-w%Kmo#j-=3D
zqz|hIYz*Ci$SYq88~4Tq0)4a;IT&Z+L;LWRsg>T?2LR2bUY3Z)*4+Kdb2%$)jn3te
zNGp_t+3p6MVXia$-s(ZCNIY_0Dqj3~eGD44@+-L8ho0H1kya#>w#K<USUhqQ0(q|1
zsy^Y1e<U@AQoSR}*kXznPR9ZFK0P1ggVOc)_5Bss)V5yfpy=3D{nRbd6Owu@!8RaaF_
zkn-?yJIQbce=3DDb6>8557pOS1*BN7i8bY%W_?v}SkzrrPP)VwxErTt5osF&otq>d{W
z0l<9o_FK<J9f*BB!nM<VmY>kA?&dQLq~Arj%QxMz4w%r-aa29q{l?WjKd@KPmG%8`
zkS$vq1%mSq`av$;d4K*lw823R6dG7CZb4fJmZytMw_#eSkiYn^pF<F7Jb}dw&t(Sk
z;J!Ft(v59BX47MbyIj)0`V4PYobJHG=3D7#&6?dzv}DB*bnL^C}897IX)PeN>OaLx6^
zhVp2^cs_o$iqpjsCzf&{YJzmo`>UccL!%j-V5bui9k`uBX|DG>$pSZIJMyQ6rlJ?^
z{<0o$lxgS8cdS;|Wr3-^+x@Q9_^syJAlxmAdG<hZP&h+-fAiqbMz(&Z**Z$;h?YT}
zCw$XI?NI}wj=3D(20*J$_h8IKA1Dx$-|sxS(Z3-=3D@>JDRh`g?RK|_~6@QO+^?y>ejV6
zt6#cRxY=3D<;?Z~xE4)~Sn)>ekc{ECo9g|;{pD$Ncue2TMqIEG2CKdgD*XsmXZ!H>Q$
zMGuNF{qrO*oI58xg2eqLkb#7jG4sQqd}BT_PP^jmk<PBeB<u0Zee%40O2-lWH}IBA
zPDM~L?0lB@(P)7!;fVL=3D!wv(p?~-HtJ8nbNT4bm4aunJsq%9z!4TjwLyPESCv!5&9
z&iXSaK*h5^pFA!<<4Jy4PWpOSWvUGA#-0*3xs8%!PpAo{Rqz;cI9|kA7uS#Qj#<2I
zu_KqU;?WdR7CAYb-u9AzW2H`h)^VnzZ=3Du1R$~Ak?j)u~n+1W92i5`_S+ZfGU=3D8d{<
zVNkj;>U&VEmYLV$>UDM_h8f<<5ds0lxZuL9XcViV8|c5wyBnU;;4N~(sDd?UNd_nh
zviJody5%?LLwM<2<b~xmSgyHSj<3}zL^=3Drd@Y#51tv2q|D#tPXnwjlH*<HFu(fHeR
z5BuWrN4rqBRQQ8oAo-3PQmr&PqxfG1vnN+Ytjwt2aKYY)j`r#SA`rc3<K@IGoqMWT
zR8~&EN4%&0x&Figm1_?@0}}V&8Vw`sS@||w@-wFM<w=3DDYV=3D!5tGeV5~IOckDU6QEZ
zTvi&x>8=3DVR?fxz6U~Psr*Yw|R&MVS08rU|e<JW=3Dtaj{F`ZTx=3Du71)5%atCBRmwTmF
z?o$0y--CUhr*`=3D7kf5w|gH^fG$lzwJhI@%Du^7K7IQ>wgCbPR(C1`RtbhAA5r~b|D
zvnT7t9YIDFCrzF1p|+PBcB$B|e(0c@U;7@kuYapA)2TE!_HHk#gZh0??aeyjztctI
zW@#Y|ZycbA^-rkWZQr)1%}Ccv5}rJS;*%`_h8VdB>1IpAHE&yyj$pO^`e-TXB8O;D
z`c%Q9paOHb*Bctl!0GH;0dYMasqXr&Oj#GIJ^l>ZUJ09}?*0U_!$E1iU&0B@C4xpX
zv`A0+{hR%soTK7jVmrB1r*1$3p)Vel|LsM*$aIbRF>loLVmY~r;C}p@yQ2939PRtK
znq7zi_#dHmk?nJ*dG-VF)B4D$tN6esHR-6(+`x=3DCs$_T`C2gi--Z#!{lxxSsZn36|
z+!vW*JFlIGV_emPF|hvdtU@$#cj*P+bFH}R(Ti3)B<19DfUfBFqWsqJk_Wh5j2KXN
z46b!Y!0}TAa&ERdelp}M97vn%>GioQAUCH4?6pSQT7F(g7xTpfczR+z&=3D<ARY2vND
zYtQz+@2h%`JMuwO9Q4S*?KS7E`#4uE^WXcgGX92Xmc!J!`-;%C?vv)@*IYet`;K{k
ziwaam-1e8(yT>=3D*3(xb_5PecsAQtQovVM%L1i<JIZmM0dLH}E950RjPhCdYgm2aq0
z2l{-HTaTF2A<UOvsHub40^lcEyAO`k!E*5jV&9KnRNEk`RPtAGMwe+xD{q#_H4vuy
z^eU;t-mqk@wG!mzKK^L!&aGBDHLa<*iN<gm|L8icY;R5c%TLW$T;|_C>W$!-6t#sd
zHs}m059n|C{W(50rpHzdMt4WeOXafn8@GLV&)?cWMrxY*J~65p?Da{MemVLqb>G^m
zD$36M-OS*mL|Db=3Drl=3DJ=3D`L}vdwI%m4PnWu|Q=3D7s*U;KDZ|CHKhH97vK+h)PP;3QR8
zmBv_Z^f=3DF|&iC{{YG0q7S4s$AL%kt*AInEzY(WL<*ErfUBlI%pS*R=3Dcd;^WPPs$6~
zxuucfQZfY+=3DMWvF6iyqVdFZrqlY-=3D}f@>|a=3D8ZhjITkB*Rkm+rvh8f0Mdb6XFQ06L
zr#@6ZM&J_T^7W6BmHTLZg_=3D^U4m3a>+5JWEqjfx126Jd*cVJG0`YO!)-jI@VU~?IR
zr1d%W{ALzae`k%}lE?a8JMVo6y};;;`xusO#wXqOo~~duN4!2T7P?ZHA!+|CGu^6w
z<H~b#FeFy;Z@MyG)|JB<<WiXi2PMDAL5QXIEz_m-!T5EjqjD5xuWi@|rzFOG1FuFm
zKSBx2n;6Ab=3D5hb%Q~pQk$A|2%4j^!t^{zn$euA~8{?#~VP4@U~Ww7H+@%Mt<QB3?q
z1Qwsu4HbJn9&cm8ULPIFoL>7h8V#Uv$dMhkB9DICC+o)>CxfVEsv_%QUwbRPgxZ~|
z<Wab&MFc8WEpzqD5kr|VcM`I5@<S=3DejRAz;puG2{hM$+5AeR1$i*@tnC%gOXI*+H5
zXgSZN1@t@_Ce2)MEENO&?VjDrnb9e&oD<x6ljM<TEbh<#2X0B>vEaYiuX}>`sdig6
z(Tsx=3D?AZQ-6m>bjU89vkN9w~0vPM<8?u_L?DW2xF_p*XztM02*&+s|14a})keJT7N
zyqC^!-90_3x503a&$+%ffth!9l!<$TSon*s<0(Z`#JCb>Jj7Yc=3DIMR+(dZN%t2iN^
z?rKWlzsdT5^ErJxHq59#&oc-NN?|P>Z^z?4gs0stv+>{vK+jW^$<+3wDdzG}A?e`b
za<Hg&>$O)QdzzonZxF28hpWV7ZI{e<%PQ`zwvAfHbl5d|!iF5p@*M++HeiWd3^tS+
z!l6yv70rC*pD{d&H-|$`e94VM5Eh*2dAx^SQoX%)z0))YD2=3D&3y;BqMpuQSOzVG)Z
z4ZuHM*fV3MtQVAr8n_-2*&AN~2NqrKeDgS(Y=3Dmwl*J)Qlpk0lL(>+Uaa0Ju~fOipl
zaG@0#MS|V3*m;CIqgk8_^((yA?Ol2K9Q1x$9~0=3D_kx8U`7Y|P^G3{%dk#wUqD82O^
z*?ticeS{xm{M;Q5<<ZP;9(wJK06wF?7Q+Gvs6SxZaGr1MA5gVE0SA;t9+WgA1N;!a
zpX#AZ2>#21G|`_g)P1`}RwQn=3Do&eh)=3Dt<i>+A=3D71Y83<^ZNa@Ac%aiZpYMLU&B66;
z2hZ6-DdycGC1&HULATg4)RgvvK8I#ZTUrE*RSeGK?flQE#1ByUuzz4fJI*Ynf4HDj
zbF;2>tRlnoqOu8L9jq0<9({Gw%16)9a4@9o<ErtdwB0}3Trr(4b}g4{_uuk80HV&V
zj&b*A?$F)`)yi!ojn9<WSN`HfaUg_|pGX*Qq~%&AFXw)pNv-^+G`a<DG#U?Ydlr0&
zhsJCTH>J|W+<Q#RZ{D2mppxTx*)}m>Q~p5M3cF=3D~cB!h)zMF?A!h+kU_EeQ`^BVQQ
z8#$`&AzWTWL`pf1O@JKN?~0q?JM+rD9?)uppyA-@$KWtTu>CI%rbl-2=3D26i**iX(*
z1`Jr7dTYpzW)~|#d^b*m#bqM5vJZ%eKXGWNVl~HivQPA}?~}f;id;DlES82n&00H;
zOKM$q;4E<Ql)YBx@*&7quTWEaz5iPDI>};S%N??^LgQ^(Ji(d2spQvD;g9<_db%7%
z>SY@LwI&|8#DS!E+I{trJ?doWuzvFknutelRJ}J~Muv#fH`~mboriaZc{HRo@qwu)
zf-2|$K-$rU9JAS<z(JxC@?#*=3D5dbOqy%+eu!;H4({nXx1wkNEs`lGxcVCq)ya;xwX
z4U)#x#Gf0A8xGal`Wa7m-(o&-R+CX&=3DG3E_Y!bV74b%jyC(FT)+7_GXC#r?;MW)sC
z#J#)H<~ai%hQ-|O>SU5qk#Z)Fi{`|NTh;xq%APnFL#^Ly+&3+=3DkbbN@(AT&?67x-?
zCX1DWdzbv)WlWY&k5~IR6M1`}3-n+Gu81*wE4AEic7*3KY>+Cre{O^gd1+^Uo8Xha
zS{gix)TZy(`T$G(dsmG?eS?cF=3DFqani^Xj`8|w12trnMWZiGJ-VAJpa8bT!YPRS36
zwvKW;Iyn`pJ@vQ-_U_5ND?e-PZ@j>1dkLVb`ZlxY(om|TgvWi#ja++OE6V))&PhN&
z*Aa7#=3D7TC(m=3D@}}zsWWt8|#*Jr(g?vGM=3DS6rMA_n=3D}BB_!eAv-6dRddgU7@uT07me
zpXYt6KKX#>jzK3x<9^-;DWW!&Sq;|6=3DWv(!f$^CaSQ`t)LnUn2p|-%}KErnI2j#Wg
z8ke}vU^lVG@y;zB>3UveXYeM=3DPm;vEQQ3l&lL-U6%R^H`TGM1?y~{59FlPbOY(jdE
zemtcl--<2bq21Aavi?^8R;vrZpi@1XKVC<H#$VIZbel9TWM?Eks1T`1pF&yZVeJ>R
zcizlQ@}crXJy}u2v%n57rO3pWCq^Z=3DB4;QgC_)Cn)Sta57~=3D8{RbypkGig5i^iL1l
zR_ElNS<mfts2UPXe-|ACx~50pbzhS3dye5-DbsG=3Dx?X_P$^PU!Bz-1F&nZlm>+z<3
zW7vqxeih8!OC$Q1OQq6NAuVJOKHWUqqnohrDMj!@{87~v%m<XL%JQsAp@#_b`LJSm
zx2<TBM-|>=3DNxrq5E!+WL^}=3D@qHxOK_ai)l#x=3DP-AUVio?RO6L2%gK8uI;B;;4w86K
zpV6N)pF`9O6pnw$2;c83b@0A7k}sos#iuF5iLHZP>bbbyhbfzBQAgs7OX|ws^<BZ%
zL26IBZu$85Ia}_?jTh};%<Xc^-d~T(u+hlVM}_yA<EP?q2&Z!q3M0acyi(>5ndpJ;
zMV<9+GwGU5zgmYISlvh<L$XOz)%r)lnZpFtFU0A*T?nOygG9!9M%|`QIyO5WJf}hV
z3Q*9OURILY+EZ^4bN6%~m%5cd6zNs<*9RgTUpb+$?DM_6u{0+ey+jOWA0KXfOJqZJ
zCuIZx^7;VDqMa(o@n`&KRP;csNwnU=3DGz~yv1(4M*vTe25(dX$|HTDdua;0F24&BGp
z*!L?~epAI)wgS<;<z%xz>Z!w8iFbJXv&@vMJUR2ONs5`<q@M+q9micl2p$!wXYrx6
z1FEk0-@SN%QK-B4YVL>5<t;OZWZtPEEr{{Ehum>EFZs);_Zcy}^Rci$s*Rm}UU-b=3D
z5a?$*g}K+??Q3xt@fqi70Q>Jj{|K@EMCt?QczE!JjetA}xmiVruwyp1Z6|#v0FRAf
zCQIG+dh^%ppr-$%fDv<cPntYjHleR8aKz#Sai2Zea6V9nnfD6uz1yRI>s2QdDvL#=3D
zwb;{W1-g4!5U-zRRO6xCulxPL2a5*~%!uw=3D4!fn7f$x=3D3yzqiqVI_W&@}zI}8mZK_
zc>V4gjTO4W`_{CRW1(*8i&sE?)MN$c^2zwY5!?e(*WsXJJ)u-yFQ2LnB@KvWQhnxI
z&BNf_Ce^j{KGXtR=3DK2Nv4m}XK4aJR(H~1C53!Ax8%-fMTV6~M02E__=3DTA`vC=3Dd&~m
zL(DLVHv|hOkJ9E4O`C@iLubkZe%NBAFXbwb;dskQ{f>fKYqt2X7ygqP@3s7mCjMRD
zDc9j5K>yy#o9b$q`aDi}4y@ly%7|x3cIkBMAij~=3D%_Q#-RX=3DWmAAp~@S-{nzNo9%M
zIb=3D?xd2Kl;wfiKy9h8{Q`AO|YZ4e9$y=3DXKCG#E50O_R>pzu|F_|4FmySd+zahXD>P
zpa@{?mn{JXzoYdLlEK|xPtU#1Z3Pl^xvs@`3mfdt9Q)4QOiyNX+RR^uadRp1cjJeT
z+c<yTwTS@rFC1i{G`EPf2LDlXu4|`qVH7@s?;t{DlWj_fq$s;mv{R8yvMGhv`G3#)
zv;M8i_0nw4Ii4}@A&SkgxlZ}?b;1rZ^k!WI9<;u>nt4NXUu8jw*l>-vNg!>-yg-EP
zsoQ@w?`i#L_ETQDGn^N$!hHAw{tIIh?|}<#zR1396MyALsZ%dp=3Dfke$Z!(L&@9ZTE
z%|Fx{0;c;L+>(gJ2zoX;#l`S(#g=3Dxo7|#AqRZdBX_F+Ms9;dKFLNj1v^u;WvU;9q~
zwo|L%RxmV|`!?~0SXOI%vC=3D{OY(sa}8@0cf=3Dd%nSEjt%>Jz1C8e=3DRfZ%lF04Y2dBQ
z&xhQvWfi7Z_#FcI{da%T%Zgn2qgmXm@O4~`%j@T;IMmw^Bc>LHp7-ib`}6f|uU8ky
zK7$5Egu*JH-nzx3zs3KCH8i)Zf<j_9iixCDnR>9wDQanu94UuOa(9Xu7e4Z`T~M{b
zWZic?>|O=3D{wZ`Wg)s-`Fd$a1**tFn#+MZ{7a25I7m^;Yy=3D+CQoO>^~WO(jx!pJx3s
z=3Dwt25UG(N~rfL=3D45(7i70`ZlDq+c4H#>+-wxh!E{5chZdg_)KKhMbKsV-Vfdl>gd*
zt@}YW%CU0agn%kK3Zow<k>%n*4s^A@^iK^5)`y?KUU@Byf%<&+32%Q~5C;?+4XgM=3D
zIh5gPXe`OIFnstMw{%s}-zV<$LiBhW<>*UZic(@Tg!$xhn6qylhc_$y`9k~VhCA9=3D
zjS8QSc|Du*Ob@sU$h%8-SiD`*%^23@$IP7ukJVY4zUJ<#(am#|;`?c*)L-)yNj!Sr
zhCxQ7ZsY0XCV2KSGPcg|RzhUelX<F=3D<PK`2U$~c;*XbZ`=3DOxJ}-~=3Dn&!y?zdOz+Ws
z^G#!EEd6zxGpLhX75Ks^r&p2s<E(c4q}1w-x4UZK6UQ+1Q2i)cTKx6Dx0J06`3z`1
zl2Nw#+fQEJ;!PW&s`d-lG_irfNvRYfm#W!^AyPL_D)+p<yb^ODy&ccLIbXn*x)E8N
z8fxsyS0dxAVfwS7+~!2B(h+#rLX;<kcW{JRg`++-dg8OZ_geO@@X6O9AoecWNd(_T
zdKY6y-k%2n;eE$AfgW+qT~$4ZjG{NPKBNoJ2s|tw%`@Ec!B`BoA6CUo^RHy&yjJZ6
zAiHQrpZ%C-0YKG1dp6Wc<79OdUGs;__9(!c19X@?SA7ftAatDX;v_ih8+#Eellg--
zekF^GqEGET$WD^{{sAAutx{lgt_H@L2x<AfF}w8r<3+=3DT3aHg-s(nk?n!LPLYJB4R
z-Ve-$NP7Uv)v$j<(wTVtytEx*ECqpl<ZojYvFvx2tM$1l)T**(SUtt_zkM~=3Dh?5TS
z>2UVRdcN+}*9NR_<6!X&Rt`Oa1SGcWU-wwAaa;JJHrj50@~{LFh1Xnu)Z6v+tn6zZ
z_Je<@=3D4bpsSoFK}&gX;_5+IsDm*^>buTBaQc*D4yZ^{!fZ>5dB%ysvz+U>(9YE&Gt
z{k#E~js1xl7Rr^hb2M7HQw`W1T{j0xeTMJG?sT4DPi`_}7hAs;CV1Nc>bti(T;oz&
zVm~P!3kd0F7l`bOC3Jya;Q6<{+-i097q!EnF1ThkJ?Qz(CjG9?sveMtcs9BM{QAwl
z7hzAO%)+>}{@JRZuQ0I0);*E{2d>4*Vgd4H=3DbT*3S>(`UeEpPuz?-R}*XNYJ3@YFx
z=3Dp+?HKIFV5Z!Df%`_cc27JvPSkW6Vodo2el+<bY7*)zJJTTr2JvvPDCJd+S3=3DF2hB
z)}!v0tniJaQ^+VM_d8zuvO1a;i|%8vo)n4f^c<@}2w>>b(}*hMfoQh;kz4A+Okg{x
zqS-M)l*0xlyeqR{fr<NR9KWx9<`#dxi_GBiExchom{l7I726Ld64^uax>jl)3T2(=3D
z&`HL7!#dY^=3Dec=3DJ*il<Xj=3DWt;)2cvY2+o%Wp*6U%WMd43PjEs$^UXeQm_gOFkNj;W
z-Ac<sLlXWv9P@(4A+z-+6S@;&o8|kkKQAstU3mWO^)?ttAI6(r?vAs1yc}_tj@S9M
zgS(Wz9(~HcvTg)Im-gvPa8kNVZjqmoh25u<HMyn1fA{Yq0bV#%lKFbCkn}A85N%hb
zNlVHzkhl9>*@0Exri)QBE{P$U<CI0Nbd9uSgfsg^ryoX0tO~BiRy>5=3DnNXMn`+hV3
zSWP-7W_~q}qkXh@=3Df>(36d85*qep>yQ(kEEkHE^sMZVX;?nI$Z<#E)$9(o7o`{T1y
zTJ#Sr=3DP^spq(|SQ)5Jc`AxiEU1f92MLTkgXPnj-+1h3-J2<`{3b)374%{1h7<>6c1
zH^+V(Ao#vrjQlwD%MS9hS$~55{u-xMZqvV8ccI*x3>N-UrNZJ5+>n%1%#QPGk*XtX
zE+6t7K7^aaYazb|lQ&j7+@6zd=3D??R?4pW&gduXj$#IT-qt>ucX=3D2Uj&cytda0s&g9
z4>r2T^$93Rx_jf}b9f^Qa|yulDyBg6E>~H}H(cq>hQ^GuaG388+xv=3DfW1jQeN29UI
zU|0IA35#?*vzrfwl91EqmRs^C=3D_ky;Z@J!OwRkASy+^&+$s{T^ChXst8PCw!@pC=3D{
z`Q%hAuBI;lg@H|}VNU6`^3U6InIDtAy}D4%?dC4bGvofjJONurvuuP9#zp8E9C*J0
z^qL$_c%e{eaM#DsD~X39wDB_2JT!q{b^pBIBi<-4dJdDoWIUc~@34K_=3Dc<|Y+k>Zf
z8@H{nSJ(Dtr7`^2j?+K=3D##(?Nj(KwAR;iv%lHBfmDf!|F73KWK%u2zzVD7yS)*A}B
zOrHs0a;{nXHplHgyizgg-Yh7;T=3DN#zxagWbK~=3D~(?5*2;BJVaWM(d$O*c5A1&k@me
zu@oT4QEpO+Pa5}-7O&DazKG_f_0mW&{E$nzC;tt&T+fz{gXCHG7>D5|*DILAD;iC8
zM#C0V`Pa|EzV8WxBy!jDiAfV{L#IC%E&SA{`OQgeEpo`{R@js`EXzL3_oY7W+{ll8
zHA<`5AfmKgDeL`m>HU<p2XKfiXcRhJUX?-Z0%2loy)P5qdpNcUn7tBLhFsuPLc70N
zK4@E00PNY@S#mrw<l(iUO%s86-02GqI)XSSD*X0m_o&@`hTY($D~s(?6HzuJfA9KD
z;7m?-TM=3D?;Ozyq;K?lKT4eVjilOMNL3@)zwa6m`vs;-i1t8;3u9Q&ze<GGj#&3v)c
zZY`}}o@|CU?>lv_F<`tE`AW3<ui>@MmAqd1)6bti*=3D(u^>{w*}-IdwRetS65n+Kfv
z+d{6Gw%#`mn5Co2$|IN#afLwO)KhpQed-F`aZgUU*A#d4$+p=3DBp%5lv<8do16-slu
z<;9EsaASX8v$ZK~hlMqAy7b96&(6^7-hY|%N4*S*Ate-r_WpI~O}?{>G@9fZl@__H
z320Z=3D_1$kcNdPYf`PA*8))U>%VR($+>&M_Q|NP$jTz8=3De$SViz%k4W7*I~Cjhz5Tl
zeKa0sVd1GTP@aL>bAPwU^Or&IwQ$tHDBInX1!I33&Xv>&2+E-Z987I3o$N}*!6rtJ
z3&CkRgXrLQcN!_A&(Tg5(Zja9*(av%MKkAbEBJgb+2#88McuTADk$(NjChl`j`rJI
zH|bXsozw5kchwo5i|5<gxRQMCaa4am7<)FR>&JD`>z0(7+4;y<C%nJ-bQj9XIXK&-
zvhi=3D9AI}x)L$1<e#E6bx#rMeEfd}4i6_-9a)@M%TZ`dV;8eht7Ozclbxv35L?N9Sd
zhEH+Z(T(zS4bix`S2)-|#Ko?H`l?Ol)T}jxP~^1Rw-(uOPad{Pd0+z}y$I=3D}lec9O
zP)83<E+d^K0Hngkx4Lwv&8bLBgdR0Y)M)#HHc7Lph2P_(Fjfki-5#}S`v-CZ7SxD>
z!WS!Y+&-7{I%1!C6kWU%#XnB8>m4>9fmm>k{PkA@|Co*0+e{!2QwM2o-<*ATly3vH
zez<lre0D?at%R@zPf$8OGr2uXpegc7p9PODfYy=3DUJUvtBDPdzHPHPO+QlSbpLRJ*C
zD{f91t4qN_hqGmwn+1zQz4Lj4$7%6ET;hGojy%`67NKHgROyou*YZ+VzU)euI@c1G
zk0p@l%jjTNzBc6xI|@r{qs4ycsme^QOmda!0U^I4l~aImwK1*i2AM?I`fkW3S9o;S
z)p4_=3DpWXCWobI>kLF>r{Ln;12tM$n^baT6l4J9+___aAwh0}X8UheN$Q;G4nn8R28
zlAg12B`xkRyTuflv7N%&VLPql35nF8WfmKT(Y@^#s{j4w-g2#W9Nk7HH@^o=3DXH)pg
zGv)khbGDfDlPj*~GR#g$A4+s-32TVkRTl7Im7~WbFx*e=3D99I}fKv6G^y{dZ@SK9T9
zfo>`Eus$q=3D$rBT5BX>7j#%*+N?nSv$;+y?9SOkvMgoA2BYgvhvv1vg^ig9AgCv!E+
z!oSsiJft^`N?V|*I|0zK>2zOojj9cHz)M=3Dpl$7OQue7cMXz0$^bKE|+|JY|B!sAlz
zq%~}~-H(~xZe4#Jb49HS^)FR&Xdbq*oU#1N!}Jkxoah81t=3D)n>p2N1<>6yoV<qtU`
zD3n*UuPb}*fj<d!n4K|hb@>CN@}<-pZtvP~ATKNIblX`=3DPQ0ds(N1bzzk32dZOEw`
zT-UEQRnpmSa|DWr!aWP`#@BjOz03A;a;yH;o<Nh<U^WY~SH6gQ<Q4(0!pT@%ncJ{5
zJ#?zC+=3D?du6zJO=3D5PL)=3DwEk&gR_Zz^G%BLK<b{o@7t`L_E8CzaYTAx>?E?DJ$<6zj
zoZ}*?-sWZ7V*;p`>`s#z9_}-ap#Qy-D*{Lm$I!0Rf7uh2s`u`=3DSf~<JqCte-q`{@e
zd!HR3QPyokgJHwn-Tp+|Le}*6X=3D#N;eRxf&q3J_BsiAF3vk>l8T|b77_-=3DB0byxNG
z4%R-{Ge#tOwsKiKksjF`u>IvHVB;s1+A{ZPzq;2-^L?26uD*Li7+opqk7<E7`en9F
zmZmtNF!kf@;o&e5I6#WGMr$Q7TxdMZHL*}F(i^=3D9Z~h*<8ChaR3V8%q*HXHd-j$?O
zjT<f$l)O4h$tLyoQGb>0!?ZN?rE;u+<I(gZR|=3DsoesqAgSFnJ1d=3D1c-`+&GMd-d&l
zQ_BwC6L6YhsY!x5I$|UjHHU!c<~H3!_WpZ~D>Vb=3DEDpfgV|BDhKs!GLsv+{*x<>Y$
zOOcTFy`nD8bG@r=3D@#x#x0`Pyh{jL`8`OW@A*GYc=3DH+n*Z7)+6ExIu%{K0=3D=3Dls__Z_
zt|blItddV-oIv+w`(9NlV7q=3DSKMI*hZWcVk9i`Dk!qsd1pE;_xEy2(5W#@+Gxng<!
zW|YnsIWDM^4W4KOAoUVZUVEx?0-c|B?xRm`QDe$+#J|oMp8Vjc&5Xf59)GQ1!_mUl
z)6LAoKLU-m3#)vrPOT?K``%T03Yf5&43QKlD)au}@O;nNjtDE-t5@oMJNC-sZAFI(
zuTmAQqvrFh)IyhHH2a{C`DNmeR0~ShZEo?7$6q7*YwARZ^z+JC50Lg9gxjr`l#<0N
zAY|6jhXq03S1#A{@sV^e2#TMe09L(B-t7%tTEooZY65HTVom;9okk?XtyZiFe@fL4
z4<olL*|)>_f=3D{Wumb0t*Z+k2A$8i=3DBDl{$5^N$A<S&#m}WiR~uo%^S`N$ob>HE~`$
zhun!6ZEFR!2=3Do2!3qXbI>k&xjVSEV0<xFO&N@(Y@^XB^<jg!w4@4cyNV}X^F1xt=3D*
z@_S-;xd(JAS4SmJPO9bKhe-9@mefm8Y+Z&>O=3DAY<#NOf7IK+Q9I9&{D>pRHFT|03<
z#g8}<N?2zai&?%>h25b)K2Gu`#CZ<j&@!Rpy6iW}=3D4Y+q4K3Oo1Dl|c#jIUjHyofJ
zbpOO|xICU_tG7iKJBeO2K7a2PIJ>s9en%Lzrq%#u3u4V9$I)!v>dWMDL>EStYg@5m
zhuq3K=3DDzYndzFog-h(&T)+O3|cMu<_0cY)di1(pi<gr&SXdnTvhEhLyz1A9j?M8oa
z-)Glu1+m9q3W;iFLG9pEe5fpF%hzS`=3DnWrz)12>n$soTqu<!G2Y$l?KAJ}15j+!t}
z+dXYzO^hagcnRE1mHq^J+>cJH{--ua^G?^GFlz#9ADIFR%wpVdQy0_VZzWyqRj+Nc
z6-^d$Q-ToIhxK+KDn9*q?ViAf_2%dKYt$awoq79+&!8vEVX=3D>B<6glE)KXae&QiDW
zm?G<NyZ`!lp$hkxzNoc4@7sxo2T^}|?CwFOoo#p8a4Ve~kP}y~UY!go`^Qcz4*NzK
z_h_*_U7o>K(yLqtvVl5{`5+Oml;daMK{BeBUTfN(FM?d(Sfk8WXv43+fr!jAsXFo&
zdARInQ70xLofhV$-R?Mq*U9J!rU<`qC@$jb&YJX)QCZ9B;pO~$?hLhUHqIc;l<xd>
zVOKiGI9jLZQnIR@CK)c)_e#>MZs8l#E~DShii*sa+R;#r+uj#)iCr`P82{}+eQisq
z7`wgB%rAsg;_KyEW+Vc85nJ6K^iRx~TG&`X@kOJzS}0rBJUGe*DsX2g_<#?Tj+{v~
z1aA+px<VwG?K(#Ho>g7fLK;I`4?j_24bf@*6NTnu@m<A1@R*m!Rij>)hsUe7|HcMY
znpFI&GNqIuQkpj(okD|ZW9@Z4ZRY82r=3D}IIN{WOk=3D$4gf_c$HP+s$mMz9Uf3R+#l<
zxS&d$!nbZUf!RaSjRwqDiG7<S)WmZ?@G@vj0Wr?}bFdby4&%(~=3D@w{}_kFb(kRzm-
z+t_aPyS-b&t@j0;|9VrM1GLGnY-Ze%#oCoL;{K2@{DlSGFDp*F=3Ds^0KYHC)XhPB0s
zp~;|S!@d~a4)*SLiMaR`)fpICztEvoiK~Mg5)T^HJM1#Tx*vG@EeGG2SnIZh;ub$g
zI?;a^myyn@x*c5Ji(@Mr+8z!P8rSvsJT7%TTEDAG+%PWORp{x2TAJL${_W5qZrN#a
zF=3DhHOBtreF+Ifk&M2+TqfB#M4#)p|%w4Qr&b2kld6>Jm5ElF?Ij^D=3DQ08@^&I|4It
zXuRBJxx?3o_V%<8wnBbk-_mS_N3-SFjI>}=3D-AB|6ty^NRe=3Dl$~?=3DKpAJmL))@#}%k
zKbNCqWk~F8e)O7;8WKLqzWWLd5$jIB=3D9@WFKa_;d#`VuWV@_|&<|f;;NLCxKvbVF_
zhhwXFf0eEf+80Zu+ZjVD)y*a9yua5adT1&192x(cCUo~uf})uuD{@x@FrZHOnQpLU
z2!GCTt|aQOc$-H*iD4HDH}%zG`!@19q(*o5E9&o^zHk?t`p-?c2*qLn6v+Oe5l)cx
zA@4yteR3R~`jD<on+~AyAHA8he|EVt<jn8l@lmXIs=3DbLzZK1FSFYg*)-O~Gi6Z^K4
zciwwG09qV7-oCcXp<KpR-Fq9Q@@=3DM&h<bd`ka1`&q7!vHZ7je+h&ABB=3DJASigySRq
zu1CFP3a+}vNisQ08ZbwD>yYPC;J#Q}UmYQS4Di|Q^!btNRi{f0xqcUN?v2a3Q)_ep
zjy1>WOKtyJb8KG|kBrVyLVw$S!+Oal1$9~)cZSRMx79t~s$YmNpABPDK)Vxr{zpjF
z_4sF8yxVGUsr|OHw(XW$r`uF`HuGfTKph!(6x@Cg$ZpchSM8DMOt*I5iuVB$Oqa{g
zd<LhB)exInQ_Cvvdh@#3Xh-K#*K8NIU0Ubo?;_Xh18yvc9CWkE-E9@neHVvz7G$u<
zY7q%O>w*xs`*O9BUpCW~AKrSFI$x(p4ton*b33hf3gA<+l-Ktj96GY|iaq%)^w>KT
zdCt&{U%_T)Qv3@2SB@=3DP5D_`G$LZ6<>L8<Ba}U?X#=3D&Py5aTn!MzQ%iQKU(#-OS%L
zkOGu|q-Gg+aNYgqgT<bBvvEzOYOhZ33Y;f**NOmcBC;9P70AcqH#=3D;Aa?;*(Tb~~L
z6uYlN?eV!EU_IBJLaqCL)%sEa4-bB)DkQ^f&`qRF2E@^z&LMVPy?)`wcd!3GLG#<T
ziqP%!i4(O32Rc)kU1aY*3rVnQteKX)kjc3;Zb+jan5S`yV>{fQDxb0ZeIb|r8dmi_
z@^`a|rEGE^W2YO!u2tG}pa2T3KdNwlDM#fhRdNT*BN(&F!dCn)PS0L~^TSzVU!W8T
zcareIl-d}z6YC~E0pCk@pfBg6Doih2eYua+g(V$2jyT=3Do4S*Bl-?GOqulap%-B|d;
zf(Xi0t-Yz0veiQU^3BI;U~OLyrfd+;X}{U64kp9Fa&F$@)%r2!2T<nqU5qF2b+7dN
zobE7>j!`f#CAGQU`h^-@tpUqt6hCT8MG7F9R4&BS?83sQRQ#qg#j5DNPwpg4rR%O(
zJMFDMM&Is*PI&(Kf5P>JmZxA-Z$?$2e{%(}IfMxJw>J!SIKFi*z!sR%t@&JE?!4|(
zPfw!XC_a~une=3DA$Rtn$POIcpGK)71MxD~~)Mn;@pt!@kL2lwGZUM`i<PcgZZu}8L-
z9EV&(dTV*<$5>Wb^j7BOKWXO&)G*JHYT}<)#q{y5bqd#7c~JBPqnTU0`k=3DteT!vm)
zwU|lsRN6v>kdw2G_1X_}*UQhjmV&CjdJPS20I=3D-`-zw1Gu;u8%u#rB;GKtJS>XW<l
zdT9}##G4esuruaMkI|=3D>_REX<U>o1(Ftgad++G*4K8anPl&_A<3Hw6;EJ0@vnOvO)
z`(_ACCmg?wYqBv!GIQTZljo*UJ;p&>U;eE7y|gru!bj)Rd(BF3<`mM+aIv}%i6@?W
z*?$@A`&onFug5X6CjA5Xd7u-dD&q*`W6l9@INr)^h#3xf%=3Dl0Yn%o2{yr9bV&UPxl
zEn58ETV?G$%j~59E^8!#)KF)-E4u6EYt(w=3D8o)&Ot9F0?p^0^l)TOf@6z0XSQhV^?
z;HbP?puaV(>FF{p=3Dv$!Zvs65t*3tvRF>gv%n6CL8OKgs$uI81?srwBzX$*i~S6@wb
zk$YZ+j*B)%@;NAb_P-flwQRzW8}@=3DmIVmfFQksY_Jj+Rt`97r6M9)iuF8+rQd~sbr
z3p?ZcCH)5MZ(*SEhd5W;Ss0Iqg!I_CS1P}-g88|4;aFvOes#;=3D*h1VZOh!ITqpi=3D8
z%UNpd-r)<{%y#yS%IC}zG}Rwg_CsHB&?F=3DA)$DR>w9n949RhX?E4|m5Yqzy|t2UlL
zilaht*Zdg2LaQf4bg#5|b4&)t)9tcjfDV%!Z_s~N6*GDEn>=3D@~JfAhvNAp}e{t8p0
zns2IYnH`J2m{qzy(b?X*%R!;o$XYqWZvGz5!1MQwb3Z*Q8yXIdYW=3D2jtHx<M`Rj8s
zI+<K%2IRy8^W7*3{yX>$AIEZcM@1)Rv;C2%3=3DJpkf~bG;<>_eyBxPEAB`2mPj0^HL
z4Bw{wlP{ZzC)e@Sqb+2U&0y)a9tUUOQ?JGfGVk4kR-Wrz4DJr(cP%x!wDT^p!<^8O
z&*uUA6b70K_vDS2Y&eTLj4ogqvj3*-jdR4#1b@lD(3X`m2VJ{mC~mmKR=3D@A#+DZzg
zwD_0|xsO=3DxW`WkqRl5SufD`gr=3Dgj)De1)sr5(dKutL?Z8=3DG1jCZq<<rYfaT_t@#_N
z5ngk~9>&#6=3D|QmUDj`Z!qSdWvL8#`w?4v!2iT2<ipQSXEE}J8~b~tR(=3DtX}WaCSkT
zL<9N-L&radmyP819xrG{)}@`emB#KCr;jD4v<2csR4nz()u|2Cn`if3Ft%DBpZL68
zE^Ar}h}1*m`@)}$?JwlPIOW@a-O3snKb3A3`8P=3D{`1lJAgD<t}6tA;gNh>)1eN~-%
z1E@j;mPek%^V~dK`^#l)>7@w|eU1;6D|GGy`_?4yOv>g*`EuVjJELO0SDycXw7Yk@
zpkrMTy=3D4CL!EV17dbO4dD21o{B6R4UVJG){pQY;dZ^Jr{w`>HMfOn)067bv|ikI}t
zHtqqBB;^?#Hg?`TwN6f7DCBC(Cpw7FyQ=3DS=3DT6lFo5FklZfzG6Ve9JvSprP?wlpoc3
zm-xH1A;*ublE%!m@O^D|FUHLrZ*-qfCe=3DdeT#r3%x*f~BOY5h*Sk?mUGN}&GDco7J
z*Z3L><?2D=3D`p;bjvc}ysnVjHLI)`45&yLvm3|q;vN@RbtLjyUm9&{3lsA|M8d^prw
z6+yoZ(aQI}<08p=3DycYMKGj5MB8s$pC8tcej^FBPkJJVy?cdGOL^}7+X<L^BBf@cKY
z{8;un5_PEG+qS^SqH=3Dh>#R6+e%xTNjjj01#hyKjFqxI!dkczymmHo%}Vl6S8j}B%+
zIGPbyuB@BKiZPdw-ihR!pR9s%+${f0k6p8g!!*Hnmm_O*5hoOhAQ3LypJ!QVABGS5
z4>u}QzKIeZas~zf=3Dn4jOVC><TB5^Hw{0!F;TX|*GV56V9MLr?tjc~o17L1{Iko4fk
zGDf>QJwKZN@?zI5QaHv}!2Y9#J=3DxK%`x;!0_48SwzVd-M1i5LMQ<iraw(JMuC7LVC
z=3DWH>Ang;SB)UnNmys^2vpIcmj6!Qb?#fWV5iy$=3D8N1(=3DEJaKmcr%LR9{MBEF+E=3DIZ
zTyB5ka<ZKpxa9{F*0!H{;z9S7Q7M7M3;tA=3DDNRgrClh*Zf}k=3D)hrFqO{`UUWC2{_C
zX5ZC*^1MP*8$`LNwv@xK>y!hnkA~rt>|0-mS+1axm%WC+*}gx>nUX~}D)4OnBXvF<
zurtdXoHZvOm5qs71SgERXTTd*y8S%|Cpf1@L?s$EhA@?w=3DG)f*A(!U!m*m4_14=3DK0
zaX=3D6#1<Y-yUf9R(jjY;Tyn!E|0QDtKcE5zieC5}4cIS<58!Kjy3(M@uwqYbQ>vM|<
z({2pZ8Qii@O;wgCg*lIFfG5V<dGM(p$D6DSt1|Id0I~XLOcEl%nu&VFNYz?%L+CD<
zTE0h+XXn{sx6wH~j$a7XK|V_t>+#{QO0_5avNKp<G4e#)->7z(PUBH}Utd}zVH8^H
z3IXgdqb$KmiBH}dxiTnoXLd)Zy}xaR!(p?~C-c{Q@MBzxIZuri&jDCS5}{Q!Djwpa
z>(vzJZzBF4JL(k=3D_7po<Xtfaqx6s3FYSpLspzS25$4th}(K&{saMjE0L*Xv%`X}D+
zw9P}4LCFXV78Wc?gnF8r)z7I>TQIy{)30)iRf_5Aa^a|IFi<*eo5jgegxqGHNAl36
zQrj#$Zb;ENjSHELlZ!tAczWyCFbF@F-{*YlG-1kpvA_4>sl=3D9Ngc9F!4fs%{4r$FH
z;E-+Lea78g5O`Jg6jRmd$2uR&OzYdJoU^bNX&7HiM$9GS`}LMFSV3%edd~GuppS8b
z)-f5bv#%8~-D*H!TZzsDYVt~3bp$KVZr-zJf3Yh6n<H`lp5bEr2_vp(DcIWUj4zAi
zf|gavrds6(T=3Dj_Ohq$A!y6j+6_HfSw0R>dJ;g)Hq_D=3D$w;7LZM8k763yT2ZI-k09q
zHt7SGk{vpE+<R4u#&nf^vH53S<K}CstR7JudYtMEwAy;pp|wKqs~vc_yya<_Der#q
zDEAm;0iQAulg_0j1n=3D2ozyG|LOu@80x{W{_+anz+V7PgO@E7n}|GdeGct(x(xOe(@
z)iqAqQViV+cyM3Md0YX6Bk-D>t{V;ytzBAsD5idvlQG|fludHsN_|Hao|_b1K&#-f
zTp#4VL8bptVHPu;^sbHjXxmmND`Dlg9zu_B8KP-RK}A|`%Cjjpt0%z(YIS?^u_+DN
zIyvx?*}m}Irhidk9=3D1%-$HMd6rFzE4Y`M)`&%gJRPxT`8f0hLG&NrxFv(bIKr>n*7
z=3D)n}6Y!^a}2#xk<ez2}|=3D727$)`HR&An7qPU!kauK6YdK-hwE$DNURg`}?;l?Zs^}
zP@DG&6AVhcd8udh>g6YA)4>-|>46=3D6{b^VnfVVuXL43g-26al}H4lc*g3wxWZXZA4
zLmdrhvy(Z4)^^U0Yi)lLLSy^T)PgM7rZ5=3D+P+fU_TRm4uu~4C|TkO*bI~%^~x7E^d
z_s5;6!xRXqVdHW6@h~cZ&|7}_EVf2JD^DIz&Z)>y&9LH>u{$`7sJqlEDo<niJ8S%B
zVN)E`oWnEr?p$P<+RmZ|G;ojxsvC80;@!183LXs?AK%%iNNXPOM=3D9<$g!2}iGgGKl
zdA}1@j()H6>69<%yZD=3Dr#$2Po%txu(d!HYgNpwb`yuE53_><Xqu~{dt;TM?(YO!?l
zFS`}_T6T_&$z%r>)3l47N=3DoINu90HadB45NI!cewSPbulWg8reA8T9_M&92|tF74T
zEBV#1EoOd80{I>_Pp#Jt&X#>#41|V@mAhr;yy;Cjm~bm4U?$f1YtDU3tI*Q#M`)}5
zG%RIMmOn5@w*Lx?(sX3@n~pg%A(BB$v!@^K?kA)qD&Ca8ZE6NgXbTxxK<hYodgqY;
zpVz=3D0YRT$wTMoMu8f5PNYu5e%5IVn_6=3D^%_s5dCz`wcc{yqG^n<*&9$D)_N?Z~S@Q
zu*FAG@Y0{1Aza++b{~%3zCWb8^5wDVlrihy>0&Z0jL7?=3DQ1%yQOohuG%3E%YT1ui|
zEgnB$(T<q#nLn9=3D!X2I}zG0Wy4CS@>shPe&<Yz~21$_Ya{B~sXa5{zJ<h#?I&2r-?
z{$j!3H-h(=3D+x@789VLz(KttI%C9hkT!ARPYvN;7i8{HPf*#z-0rj#SEoyP4#6lWjL
zv!{QPk3C3-*KB}Ijgg;LzSarz`n}Rgb^TMEKQ+;H#qI#333Qk#)WMf^{R=3D5IM95vr
z_qEVM0f-KW@v>HEq5>J0GMACg>MeQIKlt|~G5g+5*if%#x7PyaVX0rb^qS@cJylk%
zDWJ9ab*EZ85;JfCz*TP7h8-EpbxON}`#pZ4+s_|CPv&}>7;lk#)E>xK7W1`SYIMuz
zzFXBK^bfiG{4BSBpn2#-AV013I|r9|_Y~fuYJZSm5%LH0G`JG<AIVdb#uj#*!5b#8
zZ``(T#IvC}TNffbjs!+l{=3DD}E{_~nLpQD5DmfmmX?-5Qlp%DEp`R!Hx2ugz<DdFI|
zSThsz{@BMDNp1H1(5w1CV(r;>e?f1S7jCtM8(-ybJT2jySuiUvZ<$RgyJQ7bnoHE9
z2M2UCW%EQcH&*d<BvV#V1km|Q8nmT~<7jRQ?Q^5CGS{T+-LH^+A~g?QmGKVBblR#z
zX5|i7F-`y%0fche2S_v-?kCXOtBQTwv~grve$R#v?WT<qn!r<Mw6y-DWe0S!9!fFH
z%)SlR>k;=3D?-f@M`Ziv4?FzF0>FY|ac3S&|I<hwpPt`DJ10W$Fap`^Z(wRico+>AQB
zH^Cj(9Y6dNYYfa&?Y52i(v;;cgJdrU(;65SXFJxG?O(Z>7e{cqnwAfXcXjzmqkijz
zd_!fWykCpJ>u2Y}G#URTeN3A{B6ZCb|GGGYEXlCwmvNacin35zZcQ|f$E7R!ejULv
zy|n!Kn1`<-#S8sw^s$4-$}#)tx8%7-Ndq>4&_r>?spD|u6TufV^Un~BE7{JKh4<Lv
zj^$fV>&yJ4xPZw+_f*&NX3FD~Pvg6*Nc|}@Vs@f8cd6Wuacv71m?|-`;X}RZ2RZBl
zIWFMRPDh71;Ma*z$%&jEMG;u>sg#mN4(>~kOIjK=3Dj^13W?&~_?$!4dwqM8)TyQ{jy
z_CNh>>=3DV7>kK7fH-1>_Ci39C{mrVc^sr_4lfA`Ci3RNLTXRXpB7u|qA`x|Y@68dfP
zT9h?&In*IDa;aWFZy^t`=3D?j$45Svy1@yt)_d<acEVNhPT=3DTTq49vStJi1}pL@23u>
zMpgw$n};}$O!-hvobSC+*{do{@kjaNo=3DJ9SicQC5D3m7$_bYS^5q6LRRHqa7&Rl}G
zYH(v$R0_|FfRWTP?$tt@J7Hlcm@sy-#;4+~9gfwDdPyWz`kh3KW-5y26@D`a9zQ=3DO
z9$8Cczk1=3Df0B>ER<AwUEuwI0zYg3}N{PWk{qdqU)%BTm3JVD#nwHX>8A(Pwo(dx2a
z98Q2;nqlF5J%dmJ(1g3)PB$4LmZI5fGBOcp&g;>hn!Snf&VaAShiJ4#h;Xk|-7og#
zXddaHzSP?_<kflgHve)L&282Xl6km&asM9QNsp_T{IxKpD0^&ku8-O^NK&WjPV4<a
zXM^+Jws>8bu*qu;g@i^QzEzodM?EG2KMeaNvp)T!3%#<hZsv;KRgaZ=3D{x2YK*~=3DJ%
z=3DH}{2U<a?}6!9&rCi>T%(21Yd@p~9BzOWy_2$LzqfH-vA`Mj8mw$@pc%;~P&`FgUH
zuF)r`3fQ7|XMg;VoT^az?JRTqcK&<$Y+rY?dW2wI3r@>TDOj<UMY1eBfRO!0$X($e
z=3DXIK-!`f!|Yd~$&sgrII<r)BbjKF&5=3D8cdF-OY5`NR1slW1JN<YhOmYl!sp%xo>)}
z!*zDg)0k}rnOHvLYR4gD*(URKNAHP(cY=3D#r%hbO=3D_)jera-6lnRq1No629GRQJBBz
zy(87`kJ4oK)~-RJf`f9Uq3-2nJ!DWN$l~LUhMbk;NcA`)L6!>&hEZSVn!a@AzrnYC
zz}iFz>+DY)<v;8Un&GN#w7O!V+*JjX1-A3#5|vuT-HEeP*7KYaiRU)3Dn(#{A7<HD
z@z=3DGWcr&Hj;v!KNG*Z6#Ab3XHd$D%U;^KH?<+VoDlc%69!aTdI1dfe*&fh7b#L64m
zpI0B&Iu8Zb_}!t?YRjgQ{P!$R^J~yx*GnA(Cr?Me1GLQeY#OX=3DkxIO;os(os<va8D
z&K*8)Nr_Q}^-bN+Im9?l0Gy;FbelPRsD(&Q*R4Y^H=3Drjl%E-*>Y+Z#sr!B+45dMlD
zA3!#SSbJMv%?i|Yp8tA$mMp*RieH3kjZxs9D)G?o<-${EBrf)ktacwHV2IFvbmHC6
zsGfPZ&roLHFlkx|H;1YBD_3<>nYbsj6Q5P0om!VKoX4myR0E&Y=3D!s6&@7CWi+gBGU
zRod)xe?w-~DtNW}T90d;iA$UqVkn)GY)d$YkrMy4Ki3Pf+)tv{@%Ag=3D;%V<~$ytCw
z9xL}ft1w`jeHKc$^zYX%m*=3DPZT0hkuiw=3D3Xlli$b^W4Lx{lIB17O0}J5~cU<(`HSq
z^(f)vCb{ljkxuyv@W#%cn%^C|t8~^#O}DyO$#NcPzBeUi5G|J7*eKo7M+Uo?k|jA%
zZpPz8PDX$}^ea8i=3Dx1Tn2I4Q@_BQKXhblpD({2p)mv8imt&g=3D!qGQm81Wt;t`8VIY
z%((Hr)ZZ5@yEWa_t*gx++R>Z`3GrJLBw(pc8wmR72-B9=3DXw&ZCFt|xQ>i2sUz<96A
zvpfEsE2iSRvr0W9CgR*4IGbRVzAigunAQ32v=3D45u?QTnaA25rMMz+8x=3Dk02z&bJAH
zHZ1ut0Ilymf$UcK?<{C}ZJgYo@6)5=3D4Wc(lpY_@~Y5ux=3D&Ka=3DkSM}1ap|H_xC`lV*
zKYo`;)xHw7OLXAh3hxk9Bbz}dQD;~kyt2h8?LM)Gb2+#nP|eG~Tr79c!cLJt^+1#?
z^n5ZzK@@NOonGn`qt&@{6VK;gZG3Eo$`zNn!*~3Nj=3D3qwTnK2RUFIoOp}ww8alf71
zI`5F?s^rW~0G5Q4c=3DiWRa*^8w6VxAR;77vC#g|WD7TIk+l;unbP75jIVtGpWl7?Vh
z@@lu;^~04qtIhT3t>Qha2ujbcRy1%~V{Y{qf58y+y&vMiC+m>gin9*bPYyD?Vlcc|
z0rMKD*JCX@v(+ZBsvt^x<qM3h4wij~`gUcMR_p-ZuV|AP4Bx!o_<bk!8k_84IC1|u
zB~2KdsP6Y#df&eyb|_Zp*I;pH%mMe(VeRu;dYr3`9z5V=3DrM9~~YK_I^?!SVW&}&Z<
zr!Xu(r%;ZERP;#=3DIrk2bfUzi)s3!%#2o^j9`pC;L@J1Uiae_5l<=3Do1g-*|p%R-isW
zQ}f~ybeIF!55KCFM1TbI%FK{|Uaj}C%9K~~1p5P~AmWVYjCEduus+VWhdHc(Z%w`U
z>K%lqOazK+>NUDExnGX#@Rv8DbA^-K`>n=3DP+qYUO*W@*5;}2!voX^v<lYy72eczhg
z_Ll)XXE!OFugu~1>45ALWAsWYydJ8k<!;VnnsnXh3ALBj9>No0V^)Njy!^>!&~2~H
z=3Dz-!Kx4oKBq?V(8KH9=3DA)*}fdb3$bY&97Fj;0BYlOqQfel5ApAjE3t{c-9Xf80*|S
zw_Y88BY(WR^_jo%Ty}D;`l0=3DK?&+PFEtb`6?OPdj?$krzL)uC^+LmuTJBA4_y{6t(
z*&^~#4;Hv6;LdCw>KBLgI(q!%r}rwdsy$#pNsI{UL0FkW0C}&(tH*A5uzICWu&NzF
zOqGVM77z3rbKuPu_<Fq>Kr;wths#`b2VRBKI&QTwr5KNl(xMJ$gTIK|#xuVK>>iY5
ztP6{c?w^gd<?KIM$jW-yyvn#y!wcZ#EabPjhjH>)Sz!L!ZR<I0?o$RTqAn75tP&r6
zWSIvVJS5eat?gdR`QQ*V#qYN_{jD=3Drfs<mMDnAd^eM^15kK*Amdb)`k_nQ@U@M$?u
zp$>obmb;b;M}WD{uF0T{-n(oUU)=3Dx96*CBlVDrmAB-SXhFcs|(=3D(d^g@#^u0YSK^o
z)SRQ=3Dck*4c(!?6Ydac!(%r3#;a%ag}zdRW8aVO7;@|vR?*mM_^g4N)c_#Q3PYb&@g
z0hn@NQGK2u)%u0^fURAIU;l91%`arJtDby%=3DdN7hHT&+<(WFURf7Amcy@HdIU&E1R
z-uYW|w`?e4VeDGNnEQI~q?UiSSJRy`ng1(_3P$_=3D@u=3DVa=3Dr2v*08x1l!7*@wS<*~J
z>37SU4-@|5?LVktm8Jky?LDtG6plUR9ylug{P#MJI{iOx^0c{d(0MeDv+>3jXuPYH
z$YPV_8~A0rr#Y!=3Dj-S~4EY@S^u_~q2?mqg1Hw-m-Upe&?V`ZUQDt*)8p~_Y{)^5+I
zW9YGc@12p*hr2s2jX>+G$H?F^^HTV;)wIg5q=3DV1CLu88medeBX3O=3DLlke=3D3`0exGR
z>(dq*TE`Zsqhr2W2&LmE8f?m=3D?UAXW*=3DEHQ8ujw;bxD+*!m`dq#qfNmg0rBU7r)nO
zt!A^wl0uht3{{x?pM86t-P3^UT$+@tN&9wp)-k~>UH;ZEE$e}|M`(RM@0towOc0x3
z*c5V%wAeIH{#3@3-ls?HFSk)wSJFxCzS!Q-)NIUO>8_Wfx`vM+KmGv*>6=3D%HZL@ds
zrDNV0wU}9hAtujUq2zeur#XSl2!)QN4xSZ??ls@I_d4xS;UdAD_~4k18^TaH=3DU|P4
za1y%hh}u-!Vk2@t(d@+d;b57ivst}VVHn_WTq-|tUFoLos}!QV(su6w1~<%Y0p4To
z<zwpxl)a2Rj*QJGOROGfj<>pVz#tqd_ewQdK@*B-y{Ae=3DSN19o{l)xh{nLEU#M>|M
zQWMHyl`7zi%>8-Vqd5!TrSRDomypo`J3TdPfY<ujFG>Z&jF&T}E)~1ZdOVm3%~xg)
z#F~}?)|}2&6&(@|<uCqjd(oz)Z7`cnP+e~QhTAG5?#tc$BWRVSRGOdJqqx>K@Sq(I
zcdc9^fb5>Y{6*g^iu#J7xzb_;J$kjPvx8D6_O$kVTs7wJxD=3D08gMh5xq5|SsRXTsZ
zEq*=3DTaXS_0equEbx<}?kvbh%v$uTZAMWzLpaHi`d$*qt$k_<EP<@px<!QS<5By!DU
z&H2kunA>xSmTJZ0(yY>Y(@vTjFwgBK0Gx7BW2u*WkITA7e(Ezra#w;n?!WEi@8B=3DT
z4uThWS4e+<6@K!jp03q+-{EXoFTA49CSEOu6vp@GZ2Gy|1jiQ#nSLow9qSJepBL#p
ziI?BMJRR(y8s|@>t8q76Gr9V}y)`kQ(fjLZ=3D%FxKhNyRq8{mgw0IXI}eQWa%1E-6q
z_l?1HGwQ_9A+0mqFwGIKey<5s2Kfm~Xmc#{>k$O1AY|FpH(q_&ASx9u${ly#eC2%N
z(-l@<>{FnoXGpl($Nzj}7tW4O?Upv!XWe!Q+#SpO(3hz_^c=3D}@>$#<UJyv@CMNhCS
z<S@)R-`=3De5>_@Z=3Dt%UL-QQIr+$=3D<Fk(LFcp?$&eGvAt&|0`;Bs;#u^W-B*4sqo$*n
z$kBX-K9gGobbeiig8<^UCr|g5{AMPoDG>OI5qDOFP+Q8K3qYM({UXozs}A`{nf_#B
z(*{v{R&_;2zf*>9NS1`SeMMdzud^0@nw=3D>Kxge>`KS@3-z}r%h^egEtU*T7twKv~}
z)C}_2aBjf_b1MEZPo(y;`n0P8dV2epe?Ce;2V9K18dD^hIPQGJR#~Q*4o)mJMf-bN
zy+$jo1jUJax#8GvmKd!kB<tPz_5Q1Lm_!J7WD)UqH&n|yOx*J$bo=3DS|>BDhlbq@=3D<
ze_da~E|+FOiwsL=3D><Qtg=3Dh2)3K8{0r?Sy|a2re_mMypLy|A~febabkyNb4=3DYJJ}}}
zj-4ztv0Hoc#U=3DarewEim?w3<#=3DB6#eNgcVc+brw_a=3D2Xbi!=3DE!p>(H}eP=3DB}DVGmq
zd!|4&U-%l_<mI%u?&dK<Z9H~`cHmTy*P{TdGI*WuP`k4J64{Er_41Dkpts-RNG_}<
zfzy2-PlMM+>C99dqOhN9tCpIJ9y76<$*!~8y_)(>TnA8g(z!$ncbQ{XzvVNT2Cmln
zI9svs?7?Xi?v;P@eDMU)&Y&agus)WNq2SuvZ}55F01z^uM6}Qj3yF|(#-AJ%4ttX~
z3cOkx`D1ahccsYI>aTIB1u9ph%fta6wqC#b>a87HM!sLGoo^3N6z64gN-Wqd10&RB
z9M+-!P&;4wRxVN=3DU&y7+`wV*>{o1d1ZoK&(WqtMGT>$Xk?$ygPyIloz)u3il%AG*c
z)W%CCS=3Do;V9T%_V^KJ;E(L9{TRz%W6_PIWG%nTH+5PzKcH1fvG?0r4hGoXN`&}p2X
zJ<5yco5({a0GK$poJPBw-^W{GnyXAY<#|h6_j1ryb%C5;IU91^%l1O4sNP0l!Yx6$
z;@{h?#VmjTb$6uwx%(};_WgU%s2wZZ+C3GX_}Q>|7KfbKz7v1lzdoOVLEb5j$o_;4
z+=3DZ-`gs5|{RuGXp2upUs<|&fxm(SyNWyx~53X^xKtu4nJR=3D+D+nL2Ub7NpFxkl3=3DU
zJjcc_d2e>Htu;WjpkWBZ{@6RKLQNjvK*jv%@aF?no_QDv`v+Sz2oMh~mV2Ln6qeT9
zy3Z`TY4_lFQKSmm?mfUVAsblR2<eS{oSWUv<9?_OZ>KsCZI&E=3D7!hjC`L4GwIHtVa
z;B;+mHeTa?ZOd!5%AGLay3z!)T*1VUjC<(zvX+T85z`|C!tQWK{`BhU6n~z1>(qax
zdf3I&9QMl%Bj-Gl0&`Ha_%T|d?EO_M`Y2WTppRQ`t3~M5A@|jn0A-|Q8fKNbp<&NT
z&CB2D+MG9Ux&2GhT{Sp?9~^G4{c#wiE5l@z>3Xz{kYoS4p>_)bd&G!FYM?^Wc1yG<
zDtP2bx3_k>NU!lM8n}Ba&Np-7Inso^2)%G~iF9&{WiMSedfsne_iY9CvD07-zrJX!
z=3D!4x<nb$!fsy2zsm{~pzZq}o~+^AAP2d!^%+bx}eVq3BJavt-Kg`sF`@VU>ojLLLA
zv}5oixq4Op&iQ7pOv1D>{LG_lf;0>*(QMGi#>KAoU~1{mEmT?kw)T(7=3Dlo~wDC)>p
zkLa8d^4J>YewYE7`xW(3OSJYWOePGM1L|~sT+ZnX5XL{oK4T_n__QbI(aZ)upx51J
zLHi|GKCGAGO<o6303IH4F9t?;ZOoZcm?xD0IF7P7{f6|x>rg6PuVcQ1F5~|xI@d*0
z*(i)&OGQFTq(xCF9hCDiijWlL6z+e|{qy^^zqKs&zH>g$7!5VsFt<2C3!}Dblqjvy
zB}eEKr?*~-ZI=3DpEeg-9$ho8Bf<S+Lu(Z^l^?qVlFpyLB!vq=3DUP=3DQ@s-w#`#AfHGj|
zqNdZvG&lRP<2Tu~OYPl;i}uBt*Z&xWAV+W$yPKEVzp5No+ID$s)!0?gz7S-2q&+E8
zvJY%rDWmY|CzFgoH`|(3K2JAhaXXoA|3F5*Bc^}xpf>l~na=3DU6`zw*NWzrP}!>~L0
zGt}yhV5i8bZ3BCm+aH^!c>`4uwefC;W<cy+kWZ71-_W-pM-EAqzHg!n^g2?}?GB@N
zjd^?CqJ|L1c#k%5twH$$LT}F)_moId+CSM$ew8*pTlpeVw*4Ah5kFOG7wW!TG$eL^
z7@elQT<P)NE7woGaDHLU!Wf?XV&{~5`K!@1b8)uej?}HZVl|!5-Nat4W2z0&8xAus
zuHUo5K<*dbsJTp_hV#WK$K7DK&Rj;!t}y8^eE;}r^_D+fDnv){H(%y%^)xxd=3DnR}G
zP!AEX6P_<buWtE7bzgaQa@$N};J2+RIauT#`agoObccDdxL@Q=3D7~y4uY-tt`s>%M1
zZ{*e@hQ+e8ojKIDia9f;rR_XC*8<Z43Q8Fl&SP@UM5SUixs@7P`Xc&ss=3D?02fb4G;
z_qo5q&bm}u!-6@?riU9l^#|SV1uJsb<|&TfHra_M*H>HuG{W-)hcLM5wHEkYZ*9N2
zxqNMm#UwE6UubdaPZ|`}=3D+HU;<Ta%8ZuOC=3Dl^iYSXA@#p%crw<@;Uwe{g&hNrgEgL
zGw4ODGqYiLaQ^qF&lDgi5!gVkd96h@UUc7`ZFp`5&D-RXTIc5<1rx<fZlhbWYxP}d
z2qM!E=3Dk7)%TQx%3Yd>HoRqj?pTuLts&bgN4j3^H7$54=3D&E<ZEe$<!~(Oli;DC~Jyd
zFWI;+G3U7qzhQUTpjYbHfAes*#BJfGOvE(0T$&5uCbkX5TOPma*%WJFS=3Dwcn3rt{h
zh+7t@gKF)@r6Dt4M)dJJID>d*-yAhFSl`L+i#3wYXKB$B<QK`@ri76FMNVs0ZOC1e
zu8i|Wir9-1L4w%tFJ5Dy!`@5&yVPhatGU2e9H$=3DVZ|LS>Q`1_GEL^ySvJYFVP*cP6
z$9Z?(x1)GDWDS+mLh628v4K|x=3DxkHm)ir4-I`Doe>Jwu%mYrYmA?lEb$|bF&Iy?oZ
zY?^CS-!i|_=3D`%W^Y&pgQk6v7XRJdxXW4VeBKyoR;AN1;V)^u3_bCv~1fdgb6(4+RO
z7nN){-&e*k9o-J&`mCdA`7f2n=3DV^O_<n#oy@sc^}Kd)QLLFd|JXgv$l$*qUZc3%Iw
zoV|X{RX5D#lD9h^%jf2++})^Y=3D3adR6pjm=3D)mu1RX(xW|@duYe$iP?Lmm8$S`1PS@
z_fs4)6B+HbA@?s9<{$sZ=3DSt7cv<54f%Ti1R_`PyE%(W-K-cE*>{fwHt@)DDBRSf%W
z!;@Ro8S+0%uH!5KQ+a=3D3f-n5vi61Rz6<vzLaM+_Cd#|_O@JsNQ3-f&Q0%W3JF3fRl
zfHn=3Dv42|x7ehm@O?Tc&=3D3%eHpIJWBOVdUOK4wE}VjaKWOW(h<zt9e8s?jlrwH4~aC
zJHgxxVBU7hn*g~xW$au^{J<U?w{97cjZfIW>Yscdw1y*HvXA{ACQF~Y^-@{ai`@zd
z>iNH?d*@{L#}7C7Dc4>n)kW*PChUdE3F8}Q!p#DxIU~}G@(QCLPvFopnq#F0q@PB8
zQ?vTq{?@8Ng!b@zemr6be4fXsecomAeNz1<EcmaN;Rwh@8U?P*-BfLn{9|)pj8b5J
zIQ2t*B5W!g<YAipF*i^BiTni`z^=3DGyjG}3?`?qXUuU-}w`vXjJVygj1NqyrbsgU{0
zR#$KZvVp%{JAl|b3dD%c@&Iw2^am<tW_1@WRmc^NrL2XlZsjLDli7<qAGgTVW&aO9
zoW}3b?e)IB_m?Y;(?$m<QLpj)b@OX81V3uXDTj6eDj{X18VL^BgRys=3D$COvA>vM6n
z4F9S(yc~M&Jw2Vw`grZJ8?_C0WG62D2HP~8I9;iTKUuI*8lisT<GOHr;`t8oxK;m_
z+iH9LgB{=3Dh`bn#UPEhQb7BBkMuU(&?2nPXQr+!TRBl{d5s<j&IRJr(-|I`m@dozd6
zMT@*X;HL!4qwvP+RhIKV&WM@7jP07X;P{_X>A%^sd{0YfF-*?^3h&Qno29;Posid!
zvc6!-{c!{btlkRMVTj0fM(g8XbC~<cqSxSRC}b5D3n8ED0}8y`*0+O>RJ`tc@A>J-
zQ`FTeK6|f?S4eA+iWsNG{EK;Lc1^&?bXRn>(yLglPUJA3C%U>?Shn2i;y0~Lfv&af
zbC8ib0`(**9N{i@nO3cHhb<5_QvkMG{xcepq!7()=3DYh!YJl{XJ=3D2#CLe&Gvl0{gKa
z)cE6}5Svzm6LR>UKs6elW-I-M@xHZyh1}%Ba>284qpq4c4%*K31Si;He$ovu-0qRC
zWm|W<knP#x<oZFfr&fT-TW&{0_LLFG8T$GIo!t>>y@nOn*x}Uk{@kxFVe`0~3F{#6
z1Z7STg{anHJT{`_;$(ekCifu%XBc`^iYKb{@m;(F1IUAB*%Z`0Jzy%ICf!=3DQuQ|^Y
z-X&8QWNa5diGSsiygGIqm=3D~U+jHc!q<8!s!(>^)77S$Q-N4Y~f6|aNlE2)<UWuyk5
zOQq&}2S3d&r&r@4i=3DkJ-jEA1hE5d}#6pu~Llgl{R&j;q}Am1xz27Um4`aI<zc(;zB
zb9fQ`=3D9nFvNSX_>u~`b64&tn&k$mUdbHCzGNtnS_*r95*KZj$~Cq>MJzdiZAcwMhu
zb`Q_7Qpk9hE}3p5^K!nyXLfW_AFSl<B&j@Qw8W(KF<``|_XTHHj+=3D)8!9=3D$dJ_cm{
zRGYXM$l>uCypfmrNv^keS9A3qiPJgSMpUs|$~M16Mf<9@3_?j<EO$D+6{x|RaNAKT
zzwq`Fb6^8^$jVP;>0)%-!TNWN%@U*f43q|bsOrLDkIJol$(`TfT`A-%`nyHizXPT(
zDX1EMZbdYEe*g^7DQGK;oPJX;XbnOh!R*qyM}SOkTfP+AwT0JeJdL-!Y<!cOsM=3D{C
zec6F1Pn4{;$>jhMl;-;dxFf(BMx`3}mv>)Z>2MpaIh!pXQgO9GKJiO+0wg%-O9QDx
zYad%Q3#s;{s;9xw-tHGCfHc)IT8Y<Tam(UzwfM-M!~riLok@9$4oAim2hT`;9sa>N
z+0P-|2sN%A3k4=3Dd)Ux7e+&;{Kel_`+l&u<3s+~~MjpfnL(FVxG<&o|-x6TTX&<p`R
zZptHNq%zx2C4X!1N41*K7TKJ>DX!*@3Y`G~o<!TbK+S`^>izj`0h1B}kZKZ_pp4qD
za_h<JwHoacv^<!CF=3D{L*_y#0r$%=3DKxH*s?-9h>hOFU^cS-C}mnd|J31CvI^+B9z)0
zNx~EBwdD`IE6FmZ%IA}S_G)kAcbn#d?G%KdoXnVymim(B6msSi0@P_IGw$}UXK^u9
zl<Q8;S&i=3DfG7ly9x`T+}rd)6CmgmPL-Us~vl8RWu?|x>M9_uD_cpKE~WswV*p}#7O
z)S16O#HXo^fniHL)mP4c0MhE-m!U~6!I#imLDGYJy+3~%Xl8^&0$p}#`2Cb_yYJ_(
zbjUqgomU=3Di8gI`k|C-dqXASsP9@gZJ{QQ}C^ZkS%$F6JpPS(=3D8wF}v?ZhDjYCBV`R
zKT&^-PEI*73^V5s&uVM87d~Gc46ZwE1=3D&LaaoAFN=3D0!(ulC!j)wgKr~zt(`q8~iM}
zg;d@bySLWm0Kcz@3yYnb-+yFdn_bpnRNZ9W6?XnOLLjvQ;PzsT9ZL87ihIZMfeXXa
zAbnOF>fhYdI^3NJ2jZnalChung;V@x-D$j;Gt89Et<6cC&+1Ef5E~d%i}R22mH+nZ
zTG+MIYb9>yMxVyI;f>x$@_yVwt7BgmCl7^u-TA%p`dMo}%>{)ug7mg#G`t<^CA?8g
zN;YSFy5E|3up!%{Ek5)6AErDlqU>T?3#3N##WiaG3B}%+xvyjIn!hRsk?(Ii>MqZh
zAEN&SUFXvvGqCBV96BjPzZ_1o1LB9X__J<k+o$-a>-vP{h=3D$QZXz1@B6s=3DY3f&UPx
zb+>;rIn4|ArQ2x|0e(+TkiDwSxQbQ9k<W@=3Dl1h7vOjU%-eg9UOQd0oey>V`jGZL4+
zFvs}oa|KtTNBp52$a5Uydm-|M%}7OA^Za&HVc*->9?&`F6;|-mIN`#$|M_0u0;n5o
zO?^UMxz3kL;rLtCV^Vi|t@&q>Lqz9_OsI@6=3DIq9w9Psrk<rkKYG3<%uq9G{eu(<}7
z+SH9c6x^|E47dgfWC(29$$m<d+4mrMknLi3BbU30eJgo6l{Cwv+3n306v0l($4Ya}
z<Wv`1Ke)~X5VDL5<-N#kONHSkx~S(VW_M(3w}B4tGCAGp^C2HG1I?P23#`4Dy~=3DS&
z-7U5&&%O6r{VN*F-Wx*?Wjc7(^{e}il?F_N7=3D$iND9UV}?nJ-S=3D>q2PuUxz2|C&Ra
zoKL0^c`f%|!~cAkzxcT;rx~oQ-J&<N{Ku<RY=3DUKTzHoX%zXsre=3Dc|tfP{vfpor`?F
zTu#2&ZN1FrekLg>hv#Rl{pw5%N~`Yk-~kNW1I<FL*Q#Cp_sK-@vxbvWVL6?U?~jR-
zMP_47*S>S}QQ-nK>doDpMG>;vn}f88c%NCDF7g;)JFQWM>q79W#$S6ZU0N0Gq33HC
zJ>dW<09w6K<<;zzQ!P7G?n10l@U&!oiv~G8SN8-QU*}O~J7h;HzEOMavDlrxdvUkU
zJ;9&#K-1}%^d?@XCp4+@d7_~L;7o>bg~ArycI=3DmLhJ>k8uYa8NsBI5Rmp_L)O2r7C
z`~xU3-&FR-Mi{ysaV-<BvWc`T*r(v`rov{Wy~09%Md)%l?_c5eb#h7u&ZW*-k<r5Z
z7<l8$nP8bJD{Nf+uijpdHuB`z@^b07lAE>5jRpbj+Jd&k<1RR&(HM5nyZmZYHwdZK
z<9?0`hg8|4!TRa^DZg9Ueebj3cInXsGIRHx!o{Du3M=3DRRqx|Mv!{|*Ielx5N72|$Y
z8x9e+Q<@6ikWOFW+&TkYZbDY->TFYfHNTNDaw`+4isheH|Jw5_QZ`-Yrn$Xyh0K&O
z{k)scs>-oSpR2-Wy?X+MdVm8M2c5GZEj+Vt;qK-!K<uLKK5OTo0g;%1lsPK1syVr0
zi_?jrYAg|yKs2ywHx5Lrp?DL(@79#R-f=3D!EoW}Z2e07gEbvG(FOL}aTs{{W(8L2(I
zRxiI_saJd#OjwJ#i40ug9$$BW2mA8d&YluK`*v>KS1!GF;c&Lwa~IVJwYU#~kSC+P
z#`rN?+hhfJd&`e=3Du26_7qtY4*(ScQ{G3t#3N@jNva#Mg3z=3DYO6sq?7=3Dl_kn*RQ}*!
znLaC(;kM6im66V?t@jjJnqw-Cr7=3DCvS(P>2g`q>^6g$hG#qSAcQKsVY_2%I*eOzqP
z=3Da0qC&0FzUw6rGGDw9}F?L11yYbz80R(Owz(HUlaHo9IU5SC2%MOZ&gH_PessSill
zTXN${MLX?3Iit)~nQ9bvp8olD0dq-9mf2tvCL!MZ{<_E75uKS7&^Q*44^#67<U8}q
zX6$j6el^wf3io}|c~YQgkch&QDh@^!zu5*1GsB<XJuCc;_4_1KI70p2$_RK^dpA}u
zVVGA}2l)rUaeR_*Uv|Q*#yyId5~^rjX3%lJWtJ#VCJtk5dRF)gypf;XBg<cq2ku>e
zC&EpKJ*fwd8iI#p8q~{|{=3D7HW*U#tmQ78s+!wXwmJSFCb8L{#SVVqqD)pxJgHplhn
z5wD-4N`xKXiP*8AIA3esH=3DP^gU~83IV>;S!@e`-$w1{0kUSIFz@YG%aD>8UJEOw1|
zq_VzTKAMYP?q0Aepo2l053Na8QT4mw4u1o?^*RnOc9S~kl?dNG(`nK}U#K~oZ~FhK
z<}Uwt>K0lgCN|t(OR0w8U;mooS*hAv8HDw_a1NF9qGG<gIjjf?6QHg2$@}H^i79xb
zuFze+iVsM(AawHGMcx@N_q1uY?MOJjn=3DP4-jSK9=3DDO6WhxVoJqT)&KrbhFfYPwr>8
z6$G*ZA@C;XJ2l?HhpYQ<jJ{9nT@I<PhY-<b>T<JoUkXW(2g*D@#2hFSakcbioAf7d
zQJisqaHZgZKtB03F#WAxeDK>-cSrzs{<s((8BcO?+1NdrLB`*6vcKHi*AuNgy|;V6
zPV{*4@dMkhtR-JtibY{BoF4Z}b}b4ew&5kLz_7$_+x=3D_jzk*_iI?Ts@>1iar&qt@+
z`MGnMgMA<<`K}V{$#>w2{}Lmd#pZWDM@G~xx4J%clQ#c+qrRHFHOVLL%B34n`9ZGL
z2)=3DR+OhB=3DF)50kv-Wug1pU#aG-Y?~+<L09sLJcPCu)dklXi*b~OIfNmAh~4mv)Vzf
zai8G&>ufqy`?G0Y{P3##+uo$VXKs^9#oJ|6Yx?-UO3bmadB5>0inU(aVoP_%(ZO86
z?sZaQ`lZ8T5OmYaH?<qZJJGwaH<M!0vdw5>L?QCbl0V63FD@^6!F=3D=3DAtE?PPy4R2g
z+j!Vk3g0hdk1RQqj@DiiTGljr)a5!-HB|$lBMhFF)5CNTIqPR%stLWz_l>tX`bc*S
zRahR#PSYQLUiVq$H|*bgU9-R}wF=3D9&b>uPgYt_c`vZ9rxj=3DaO`s7&<Zkhtd9RWEte
z3p)SuPQ~FCnp|*Fx;8u6f;^|3h0cr2^ibR?r{&r2XOG4Ab3vijNamGu(Q6mobQ~l0
zJ#6|*%$4>@NxY1-<Flp>ZtqSr;YLDGa!QW{xm#BzJ^gg0-YrjTCoz030R<*?*yBCL
zx{{DY$Y*z^KMtJz^ImNjy^1n<phf)0VPd;E+D0FE9BcyZ<a7Xu24|v&gb}4>djOIh
zS)6Vhx4yKx7g74)lM2mO&&4lShN;5f%DSU7u4!0B(v@D-&Et7;%=3D{UUejbSH$d)|i
z5reP1v(b)ozw>7D-{)g-n-xx$SNz8HLWsdM)T#4}bTDDnsR;lxKqr9Nm0vcOw)vDG
zLG-EX&gs&s&ga#BE#xaWddaW9-w+`6n#VJ~T^h1&fnCnwTlV{#3?8`QSa#X&FV>J=3D
z=3DVnsz*{Ci$7q5}ipRXGQ2+K})$R>y8?YEuMljk44`hOnNY6xA;E!0^C#eu@Y<)4$!
zE$~(+u#$Hr<vqLazIHH*Dso}u)i?p>_vFsWcf$_p0)7ZJqfL2$|B=3Di9;Pm?swSrC1
z9cfBSxsvnB(y<FqnB%r`eOS@;K09yeMp_S+`n`bN3V2ur7Y>Ebzu(czmmo>*B5(H=3D
ze>HPEFeB}+G5wh8gO#Ijj<OXAn)A+wiGOiAQ{mPz*j<WQli}mfAO}B-WzY1(-~(*u
z1^1*>s_?!R?+5YSci0KgQDtCexMtPMNxXwi>^)47YM1}rM)dIHds*%encfDCpi0dB
zU-XwdHP$&KoC1l~)h>E3cO~Av4`i+)8Xs~;!qlITTFpjmaoWAFq?PGGI85xopCT^(
z5rVpQ0MQT*u$iBRrE>l^_P<PT)44CIcVp?O8f?8n=3DQ8`%?D}v-i;90~?;oYJH4{V^
zG9<aHR;oUh>91Qjqvi=3Dnc};r_wykg>I?{bj-d;)5?{hstA*LU%&`A{OL|^;XT$%Kt
z0}Ha8WC5lHRFGdEV1QD`UVb#CKdUWX%uAiad;bezay3)7sf&Yhz}E)E_H5$Uu%Z^S
znztv++fx~i%=3DC8qa9X2x-d+s-@Ur>)ACYee*RHvad}s|$nFre|)=3D1TtYTJXYLS$(?
zASZ7Qd*20Kn=3DfG66K2#VX<}ThNzM+bGyVc+Dzn&Ij{-9<8dS^`p-t~yU{*z$Btju}
zV%x3VOXo4$BchoP|7im|6mx_Vw&-oe+&mTsfNkhkDBB7Z_R?5F-V!HgTybIdrCi&{
zm6JeTtab!D#KrLvQ%~)4JD%<Sh(T|QtLss33d_Xp<x}M^MVh+()jRW$i#JIq{$UXA
z{EW~m@%79F2J^2qY0a7ibp(7l`1JRe)dvU86Ye#QtXK_iibF3o(<$=3D%)?J%#&gFPg
zt^X_z)RY1WH1g>(<{spS=3DxVO_<awl2lGniM)1jaXuk~?B|K1MHwsX3U@j9G*+Py2x
zEpPfBkld}sbocv-+>3i&fF*57+*1#+F4d-_p8@cwm4+6X*>HI~pC>6{9n9kyxlNnu
z=3D>gT@&;5MN*{d%7X|Jn?D_dX4K~4O__sfs_%B2!?-)d)aZqky|-Uws)G_5PJEkp%N
z0T65Js$jz^Q9E9TcW-r+7bULV+WZ~vlexIojA~O>=3DxZAXoa>>zV@Qe^xmZ6Be|1Q-
zEdq&uzv)eP`4h~>FPDOyvIi^*k(icT86%nx)jtfoeSnQR>scHBOWME3iYOww6#pVL
ztc{NBm5<w$6|MgO(9UPmQm(ckk5ec-T?nWCC^tCcHQYz}rIaP0+yqBzD?6z%s<T}S
zWHD2J@!XUk4;WzAeJTm1y4#M2e-Dz+E;;g%M}zgbiGgMOf|r`3UR&#zr8-t%aHX2{
zgLK`h?v-!lqkb?y$c*)>uA$v3d@j4otJ?-GxU|5M>rwcl^3hGge#kpT^5t=3Dz<m(qQ
zy1=3D!6A%0g&ULUU?uWv_0&rRrRx%RqN>W2$04(f1)JUr~p@LYM^O3VFB_r=3Dm%&O!7D
zHY3%1Ot_VJctqQI^IA3HmeZLu%412o@3HQmFW@2FT6G_A#~FOVmc83&R&xw@B-+Zd
zCMpgZTBioX%|GMk_NFbsE@`FC;XIsA+Dlmt`B>@0b8J*&HK$UI_v3kg_M)-It5EGC
z5SXpVe&d$>4&`{>-!9D6--8MMs{Dw%El$3p&c`(vq~E*`uacExO=3D@7{%j>=3D#-r)zR
zobkV+I*jjgCg{rny!WdE$V}pk(@H_-d0>{}byH}uv%FVH1q<8?JK}5I1Y|BxiAiP9
zyw(*t6x}3V8<mfb#{scCiB82L@s%T~Q@NU3p7Z2o)AHqI^PIs6CB6^f%x`t%Zttfv
z?|O?heH-0q&WBy5oHyAy1%_^YTUKXs8%U!o1ArLgqQb2H3WJQ5(0>x0cYirlDtTe5
zl!D&-ZX85%957sV*?CE_d|>$Dh{JuKGW!WI$s(u}=3DLMz9QIKrxr1k7C-}OI)l|Uux
zA*{1asb%POs)H|*oCKdokzNe;({ye8M)=3Da&!MSG&c$9I+>jqj`gsNUsuAuAd)?U6x
z;NX^sLnkD@(`SlQltLfmK14KaGxo%sXkVjpo2qZ6Wy;^i**Yv)wJ880;hpX8beAo2
z7F@hBS(|vH(HLxm=3DVF<>Z68Mm>CAG%UuzWCVEpujnbMj`dRDc>H>f!#Zcc_>4(&_S
zgTXb}Wt*DNom)LU@9B<vYFSS{=3DaCf6@WlBeCeiU-Y`MnJ`aNQd77iCq#7>(BGU|7<
zH7Hv*PG!yloDR<XH3wxG9j%<O#y-G*+gmMfoy~9U*stKhYWcOEq$H0Et<fRLQzhI}
z=3Ds#!ldN=3DdYoZ+lVH4=3D?gnsp$*5TW=3DSB)s{43R;Yd@HfN)&)Y3~LwF`Pcf-yu=3Dk%KB
z3IKzJ``#8~3iY!p<WL<QSpoGLjPw1ydfyf8W?`4U&-Mwe$F)j%CNLA;%>+{1sK@mn
z@u>)c0BHHMr$3zKU5^WSY|({3I9vADdDvRd(K%G~N>I}(pxa1hVI=3DrSze9K2v&NQ=3D
zbtd`77$g-z_JAt<L@V0(B<aU$QPj_u?eX*KxRX1%aGy=3D>A>RAA@i-lRco0{ZzX>c{
z;5;_x@&V?V^OJVLH)*Z~9gx<owm4NA;I7toNAycp*^hD)YvGRz3g_p%+b<qFS+`eQ
zu0N$*5p$%b%{<~<@?&4|DH`t_nbfb|oi5}Dt~@q}kc7N0AD{8!*Z&Qq=3D*tb4`DD+Z
zUnd>56z`uI1vMk8dDD4g<aDs=3D7sRTi;q){AoA}4c@p1<((OXIDz86EttSod7$zyg)
zN;5|*X81DCVzt2+Ht)?@Cpi3htHw%qknhUr@Amm;Wb{kpAM~C3F&FManS!BG?&|{S
zs=3D{3M-7IqYtHML{`23gYqv2v!)?+w%ma9Mp!@t+f+f>!xPI=3Ds(myaeu`^o>d9q14U
zpSsc1$7fbpc!PqOi3qmYnULLM%;cig#CSA#wPpv?CBCC@Ra2f-Y}bz<%B=3DcS9Vp2C
zwAX`5-Inl6k>(F$xC_V<aGaM#3yI)esT5eTZ(`-Ry4aou%gq|-x}CNMeX8MJg%*7&
zb&G}YUfMSS!6QziU(wsd!Q3wtsI{aFPQ}Lq=3D`a7<9=3D2wN<%tlg?-uk|!||3GVHZ2_
zBsh-|8#)2^RqnTm0j&#d!jl#YzWujMqdd14xX!GRX(K2s%{1l~s`rdBDW}T9AH}RS
zS61!i-NaQJ?T?CEI^X4n9m+lameOXp+~)nwl{=3DN%2uyowDq)X(&H90rF*=3Ds4;F?29
zvc!?2I>b=3DcbLxl{w!(Q*tUFLEu0r>csFu~|v3IKcl^$&Wx@P`XhwrgskB$@JyW&iH
z4SUP8qMTgUSvKHH3&aDCw#UuMd3`!cKtaOC*F_y~iguuDB|SWGr|jsU0(SP(yY7=3Do
zBYi|m^}1R6eTT}4yw(h)kMo)@Yg(3>;M8fN=3Dk`LP4hKe$t<K*|FHUWk^&P$|Pkv!B
z_O#(t$G<GMTiof?d*>PLO~D=3D|?mIvJ+{a}py;iH=3DZ5COjZK0vHbJR8W%2$uuVq=3D@%
z^8WZ52&{%YCwmkSSgU5q<YgyhvjFliY-_@P?;=3D4j|JPD?(=3DNNH-_J#sYG3@Ww^JKF
zKMtFfcu*}&VaP<(_~k_GbW(bl+chE7^4T!uT$o{Lg{ZO=3D*Ex;u!T&2^e`gH&)_2AO
zG#$>#-gFoBD(TTOauMY$mDa5r7XrDG6q}f6&)~$U>^!dq(siI-Wu;_%5DdDr^Y7lz
zE46+aN6G8Bi<XA<w35m>wH=3DnUHfWciBUCi1I6J?<yYiF{x9q0JD~Co%+C{4wO$8Ac
z5aU}%UG=3D3BowIMTRfrp@nC`J5ZO7#-K!|nZiVuT=3DFGCmErc2x-YTuF1kC2p$X8`<M
z{~<*lL`YF@IEJ}p*#VoBhj8+=3D&b8nGB%|}`v(9L-`(AuDUN$3R`>)m02$Q(~{**hl
zBxc5|b11DoSttJr0pGPM;iDX&_Z|pM%=3D)oep&Ryj=3DSbsE`?N$_3T$|dPiF`;ak6~?
zYolY@BU!qY7t{0&g6$R~f{p>AW3T*mKMJ{u7If~Z*3nAw0n~ysXg?n-utEi->ozW&
zQt{ncKUW~ghVVF`P@BjhRzK_wo|g16*AuIk`I-Y?xYcS!$&oD4(Pmk>YgrRvoLkg-
zu0a?@ck_|JqU*+dC-@<<?i7!&%J|;pk?Z1odm0os$Vz>nQ|q3*`-nIF^%2pEB3UfV
zVTkMNBaDOL?ssm3B2e2evn+15Zto||)lrGRT!!^IX$JNaIUCwMH#K}evAELSJ}7Sz
zX)bObW_id4dNZeG$*=3DJ2YzMntb$r^mhrg3WmjfG;!**OjNEis2+M&I5HdvAIR}F4L
zf-AAO`i+afYW<dPXS-)`qVI%Ht*aS7?5M<(Y0^_-o_pf+)x5~|#7%nc{$Vt>jW(x&
zCv<An+4>HV;r<&^H`N8q3C~Sta#;;KWgpg^<N-rV?(^0UA6f5JbU7Ow-OT$Nn?+Ye
z4k)tH2b1e^hpqYGOBoyxoWvTZ#f;jhO6B`Y%EiZvL3_JFZ3N?=3D)2R&4<ksjYmR61S
zM{LDyhb&gt-tIVECL9qh@s`rYg}Qw#4~oO~-`1XC$~mmg`+ukMvE9)R2X?>;&}(By
z`ftwRUDBU(i9hcK6B9#iSLIi}s9Hb;+^qXHvQ)`$O>n7i=3DkJTX8-<oIP{a?d_TI||
zNYvU4jor!Ttua#(yuGM%7^z}(B(_E`rv|QCfniiwId)F$J)NB!d$3C-(`O$?3x6c_
zgP$dbNeGARvO!)tP4`78f4m1;yuYb_bUaGJU-D-vXR_Csc_k5~Mdo#3`Du`k?>9C?
zA;fl8XRSfKzdS9sB-YH)we4COtgXTBS1uiyOTB%;PcZ9CE7GN|TSzOg-?K*nXG-h4
z(dm}S$92mO`L?WqW<9qy!C>jm@UzXQHSb2(uT%CY>76>4^DgCK?+J;kV*b(-4Q^;9
zo9ty!>zY!N;=3D&{8LL#EFTheF)xjrZ^`g@`d3|{ItX63wx&Gz(F!t0|pGFbHAGX9IA
zlRc_t4gBW5p3Cv|J|0K(<86$H<d|&6X!9!+hL!~8iJJ25;P|#o)UELhzAu~GLlMSD
zu=3DC{hEL|UjtbifrD0ftN0mYllVyM$mv+!G&<j?j}-LfrG2n@s5mChE(=3DSbEFyZzSi
zu*pUf*&53i`TISO56kZ+7EeE&-95LkuWZ_z3FBz-WC|~XC*M4Fid#~Sw$L|vxr6#D
zcE*DbwIgrO>Qypp`LVa*cKSG_E0fq%rgX1;Z3NMqSE9R30f6t=3D{FduS*0E>kcrAyy
zv8uq0Z|5F9fBo8wx*&23-bMB33T|}lTeS7ftoPpTJ(s`k(dLAS$K$*=3D&LDKV4@WB-
zX+0Lxym!L)e}0~@yZ9yUu^kDjAHObcusnw`;IHMDs|dED2^){YO84<-9LWBQ0N3um
zs&6m6b#(zo^O#K3cRiDnci_W{rJ^JGXW~$21uy?@ur2jApD5Sude2$OB&0iAIDCrn
zw9sOH35NfUt0(z>cj3E#{}W`C5f+izeg-(DstPnlp#49jrCu4x7`ZEDo5Mzv$+dVF
zMepso0?cLqfo^|=3DCcUes;N3{}z_$HDOX0|$@n(S33#C$;j88n$YIOhdUudIO&rB;G
z>p?F>ONHtz`Q%6PTU)dT+)}Seg(SI2GK)3Fo-v%c`2pOPvy1~H?Gc0Du#{%)+5P>^
zyvE3%s)4G&13q1qUZrYzg5`5oc@M4%*zY$MbSvo<B(}PL`>dsHjbeJw_s$>YO(B)h
zsh9fcmT8YYRNIu^xyVNcc`#sfu8S9PR(Z}@rF|soTji-@g@=3D*06XXc_EIb84*7vqF
zXis4)dNYtFq&foSyZ3h!Nfm^;yswyT1}*Al9~-CTZ{s_bw#OYZp}kM9UtE+M$4Leu
z(%o|S5uvH}a8|b>Sf7quLBoJQ*io61hZkC2rb+BacOel0+<}PMVMoe)F+3%0d-FpQ
zhT79g9)fPne)G%T+THMsT@Ek7d)S|xj~`@1rBkXYYWjx|n)3GJB2^8@P!A%%dD3Nc
zdo?PGCs>ocp2T<#{*p__+9=3D79z3&0L0S@#vl+c_0nJvv>2SSI*we;6$oCOv};lr9%
z369IqF!)vTN${CU?#tIRQBowFDCVN4q4H~UpHbKPWPxZGvJea(#a(p;Cs@QH^PO8$
zKNbDWYoqFZ4Z@)Zl^KBw5nx7>{&se1JdfzxdJLhNmO~5Vqmg4EpO$WDZ<u>FCwC+e
z>~B4Y7k~BS;bGifeGSGdzV=3DBxd;TuK9XWU^Sa{_NFK0m|deV7O#z9;5h&D9UU?Tyh
z(Y`v-W)q{cd08V$B09ki>e9nqgPDKO@84MFGIlfX)w>*!j=3DxQ%s95APw^Ph(cJ2nJ
zL))6bx02|-Ooz33j8T<AF;7oAT`J$a748jvb0;68hOy7&oWkC$;{m5Kh{qL|TZOC?
z&V}7~1$({Gr(MDpQ?f)gIs92`bq>xI)vRhyjZi2;Tyk*g>kHm&SOBxf^6&gNMK$B8
zb8Rg91I|^_E56pBjx|Ui<M^DtP3?6y&pm+BOyQ_#<;%SPVeGw8Z`%gMlJX5}rf$mF
zdqG9l%$0V3VGe;B+YbJfL@PBfmf>iBv<s~3KHaEwFMDO$F)I4s<Uxej#OoJ^b+Q^S
zBHy^X5|Jajr2>O~?8Y+Oh=3DX<Ti;>Qyp3Fzt;NB><_CIa4Wa`IPNB=3D;4$Ak0OX1cn$
zs43m@ho7-l`)%t5S@g!z^R!t*U3(*-eZTIDEwfG%em%n`3pEvO<ES#YPCxCB*NTQn
z4dsmsf&9MFyiGI_za_r(B`?$c&Y|M8LYR${G!Vw=3D-e@g-Lp);=3D-eqTGcl*2YO8%>D
zHLKrW#=3Dk-)0xE^j^i}@+A!0*&_1QYw-r{%EN2+L2D|x&WlQ2zlc^$hx%3SAm@-iKv
z1q@EGrZ3%w-MMM-{5w4YQN9<3wdtxK=3DXPhD!D>K%CdMJM+cb>me(tZq$76gl=3D)IKm
z!ZiO}WUWJDaJTa)TPM3^sXx1aQ)V=3Dgj!E9`7=3DBGR*DpwRP1@V;ZYKHf#_%?Vcx{WC
z$Gi4oJ&%>rXa!CjPA<ZLds<qT*;e^aDjUf76-O(pa|(mYX%##M-Sz#|t>cCFD%e+s
z#OhG)zt1Kgfnu~$t8C$o{L*vlUzMtKtFy@U7FZv3u|K#xLijOvm%{dBCsxjd-{mB=3D
z<8^iUMS?Z5&QWzJPKe#u*5~_!+E|%?BlCvM#2XBZcj4O7@89>#G=3D1g*3)CCT#zAd<
z*%k2bqs=3D`C+y9>Ic_Ce&$iB7lma?O?Ci~4zC8!UORNK2VpPUwP+V$y=3DNyp{c>^qsc
z!(Ma*&0@DPcx)~QaL3s4Uu_E@zDMQw5+pb$yWDg{6sNEZy4^d<DAluHa}s$@p)llE
z@=3D!YPe3Dz2sn?vkm4aK^ML$T&Zm$r%OGk%dkKk2!B!{qG{OsT|-z%M*A$h31hmJG)
z@z-ovwkb%cPU{b6-uZkMr4+*b<U&+_KH+iL@po8*T8PRnPo!Ihpn+f4<*>|dyOib!
zx1V<%S2|tzZgx1XQgog6_<UNOBx2JSC(%5xi(d9;U;bZ`#&G6u%ndusr@ejSFPguC
z$-A&3OO34h5}0axCa+v-Qv3hwa`#r9^lK1OKDx<67tI9ZW!vSvuxAWH%+6^K_Bb4o
zH_AOBIsNKD9L?H&u+kkMIb7)2^CNl1#{K5wrM4+KpnGJn=3D92OAOSvJ4X4ZGQC2`~X
z3D}74Z7Sr7Kso+14ja8{+-qd1mcQo_hdBH9BkeWEUI(;-L$|S0t`>>zbg9omCvkPe
zdxM_F#cdGeSgTV<@0BL*7ATU_KtAW0^{~1tJ~VOvS1#iB+3OkyP=3DPO5NdH^!M4G-E
zPlnZ8<#kB@5SD`mdQ;!yUTgE>#ozKnd-wz<y<My*3V(L(#+wgnjUlTSHils1GnOxJ
zSA6zOO&@n_I8-Rsg^BWPRBoqL4n|>du`?X{Fhymr#|iLcsdwc{jj&_h5dlxZJS=3Dfg
zIJNO4D21@&TleJirago8zF%C;28E(ByQs%UZvg*W2t>&h>gw7;*cvjtbR`LU_gJ^|
zoq_Q+W&!E9D-Q4SC^<*!4{xQ%w%e(ci_0^1#(RLDK7R6ExCU~5gE$;(5c%w`<}|_&
zhBs`oD?3Yho1@#MmkTQHJiByU$!3g%o>Ig#D<1FD*&A)#h0_;)aP^%^#<2y|=3DfadQ
z@j(u4WqO(xHwtFcIjrjcPeIEp-;VcPXBXY6%|7&}%iE@o<lnIL_g)s9q0T$5NysNU
z#Ohk<(d`d`4w@X9L8NSUeY!BaEqlR$yafBV92~q?mBQ6w;e&l=3D+j46^iEg(Z+$?k~
zyZn|rr}xgo%tSh4`d`NH78xvE&h8Z=3DM>$*PvT=3DVj*tPcFXMTEKm%}wZEOj4ijGk`R
z+7#OePepGS{$Q2wy#P9J-=3D%diirhC22<Y7(%q_FME0-n#ARg<+zJDy(ic`l2=3D^Yn@
z?su^q7P>PIuXj6CA{)KjGLIjol{sK_m{~BIwtv0NY#cqJsgc69JnDHieXA~0t0MPr
zzOx>RdC4e1Q#jxzE_%JmQn-(}EfSsEPa5-<zAF0{#b7x5Z%>sLyM0&J=3DZ<+{4%_5b
z)u{Q=3DI#MkDH+XPk;j^Xd!8)(G0nzl<>1f^QPl^Y=3DMjDS4*f?-f+DA#bq1T)23Baen
z6uB3Y2GG<H-$7^NEqNMMXn2+v&G+j<&AM6-HJYVj^g=3Dsjd{&24dD6i$W`N{7IX*Ey
z$6KpENuo!y@_k4!VPfya=3D?;3Y5uwGKZK&4Bam%Z15cve$eV2aE0K#+VOs{L6woToz
zk{Rr?GjUj7fS}v1Zwg3mv1}gUj9*_vpB35v?c~KT{t`67=3D11>&uQ)?sGSwMPDM+dH
z(bO1feEt=3D*?S1eb9nq#Rh%WhIGD?pUa;PT8o#p?o)!KdSR@eexEz82`eBfP*>&1<D
z04(C`ke7O|)piQAi{<;3zaa-!?R&LK>1(b!C}gh8_Q;uYroYLA1$cMh@P}1O9J;Tg
zBd{#q+O1+Q%JDva{VRk2WG>aLEAGz4dCr8p)HcRR?hjNmelh%mp&Wb{8UwC+8$-=3DM
z(UuisRg7{GOh>gc(t;%akk`doG?|m<18u5@)i>|lxWyyY$TBX4!y{YC5doctn&Q;0
zxa<5o$dTfhO(g2i9kblVYCm4pTE6zk>HI3@54G=3DRaVpd1JQy7ysiFryx#-qyh!@}=3D
zo7-U6V;s0CT!m{(|9jSuMqz&zdesx31=3D_f*-Tl#^IMAxPoP6x)e5Bt{oT}Hn;S@21
zVcC^BMSRoOxn`rk-A>|qfAofP^5EVkjyy}$IJpGU@d@E)^*P8rxZ%#9<=3D#IFirLcZ
zwt#y~G$`fi-`D?nvCe=3DP$vHPZJ^PNS9_lL0loF?kxIEwM<30!r_FJ{n76uH#+iUn&
z#Gn$8y_feT$TfOCWPoPvR|mig>%qG_I+WDU_AMsCZbWO_Vzo@3-S3HgtMjLJ{zF@$
zeS5dQq4Na5>+wHLWP2GWNpyyj*8Fjw-^N_sh0o>jUf<e2oa#HvMeH?KCs&Y5h_O|-
zrFL3h!ue!!Ra)B!+-zM_yfx}A;0Mk3%lgr29#kr5hbN7^%*qDoHLmvGig-Guw%$s&
zwa!_~ppSBzL9%Pw6W`TjmbCbU#$y10R_IkzU9LC5qbeH7n4YvAk9)jmB(#{&<YKg=3D
zP7Mz7DWWNtZ3m3$(Uvm(59Jk&!OHM9rnPKrKI3MO&c7Ar(x(l`UHsurK9-OB`ADi=3D
zAAr67qmROq%jY^(Vt3C@Z{~(v?&@uLiv-H#l!Dk3YrEnWBJjW$lFuo#5pzE=3D9;#^g
zJh;w#uUC|*`i)gs%*n0rOKo8L#$6|9C7mk;?=3DGjgu&^CJoV&SV_UqfmH#O~H5P?4=3D
z1kT%C%|}vkJ@eY`!fZ*M)K0&%yJf19Rc)jGtwVfvmqJtfQ{8#JE1`eJ5L3!GqO3u)
ze(#EtX|>xdgwnvd*GZK6^FL+h&}w(REFm3(E<4{tvEPDT@;+6^jZSNP$JTdqF2uzG
zXk3>A{@6_b-icj5$Mef)oP5ilJ#jQeXGRbTGz#ziZ4*(>E}RH2)AH;b(OcuFETDV1
zi^zI4n>X&5GTo%4S-b4@-E{4R5J+6CkBK;b=3D0N8TS!a%GJj_kH-Gxi9{5QmhZ@v=3Dx
zo$+6-vnj*xv<Nw+(W)q6%f~<#-)H$IgumxS=3DD1G=3DZcPIn4t9SgaefqX<{<?Q6t1CW
zQyGp2Dv_P0PxaSqoWDnuZV8*{vsu2pL2>*tIJ~3Y6|aZl<3Dnchcr|V0sI$-S^f9q
z*$uK+fx+7M?Ljf(o6>o7>iDzkIOG;k1^TFt>+X!&%M0wUekA`Iw<~G`)2fyWuXt)r
z9@gS7=3D$wJs#Rl$Y(>M>AXoCa_4zml=3DgRzzf6X{dQ*{@$%QBw}JI89oH$!0?BfxxzU
z*v)eO->iidmp@8-58lsK0R3e=3DYDzOPX$_Vc`ZdOnilY?&BEraL=3DW&p!!|6`zimwwe
zRAUi-*<vfhMl@se^7d%D2IA(qep;1(Z&q9)zB_Hf%5q%RR|w1YfN?gnM8+Bj-+U}I
zLXFJ<sFMAQ>BIYh4G#9Vgo1yks&^Q5m)YIpw*WW3sKPZj1Y_9Y)Al*-k}Hw;q%c2&
z%aDe6c&(SOiprZm1Q+w!8RX{Y>>3=3D-t6hb+gkcnT`M<s?WrZpXoK&{vF3XYG88pi)
zKySXwizIx+T@P|fPN_Ll2HX>X5^Ougr6x$Jl8rSO6lP<QzE4nd{^T;w)<@GtU%FOy
zmDLYs!5qC6UK1*gtZ;OV2irepAZ}xJHzi1wL&&=3DBGf=3DEpiQzN{lioMvMoY7Evsp&J
zl^cR4ol;5wsV$QMDzJq|z+`{94-P|Pg-o9ACvBkxf2;QmOVYyG_f@9L<H~kR6bh^E
z{-AB*6dU<q^5T=3DjK&h|M+4>~}aO$h~=3DS6F3Gx+uPCmyb$_*MFDFB;a%_lea(g~y^W
z;5z4Hqp*BJ(B|T&kA6xSKDLgEi6`j`nr5A6+@#jrjU<_DlpT)@mY=3DPCR`>#3{qDVC
z%QO1{V{Cx5R&i_daN&I>1f)~tH@AzJN7YbYuRaK^R1n8#br+=3D({OJ^PTyiNSaf>Wn
zr35S0!@?dVc4oNku=3D4|QP)^~?Vy$6x{4Po^yn*4<msztleNlVHH^#F~TXz3iE_@On
z`!)FFv2~8?(SARwfOp!u?Q=3D#~Un1BDmVz(dFre9;8>fuIT6^?*eH+CeA{Ou4Z5q&f
zwqh>C^Maqpkh!Xl2DfSeJ|2{tK;-Ay+)a0Kt@3;QA+<C&q`dMaUHzGVDNmZZ4G@A)
z0&5%vniDQky3`gmj*w}SxwlFNL$<S^1%alAbaQ{Ta2<s$0SF8wm|OagmKJLRbF9Ub
zP#kOrnX++5v~?bu<!@6p47T5|mdd1R)RlW}vzGbr@=3D|c0PWx`x_|_Tz^o|2>9WvD2
z1a6Dqm{~{Mk5XA22B|aGJ1|kiK*|)^@-}X=3D_7MPqMHMYNu`CyT2#5#{lK%W=3D22OKg
zwE{(E1<bg5gfs}>X&z5kb_3xk;a8_S$SU!&yZ@WssUE0TDp3z>xck9o%2_WsClC1Y
zs#L*RS1f9jMhoVgq02h=3Dp%!(fQk^OCZ1ULjrKz9l8*`KVi0fkdY>qAEn%Ha8FyXb-
z9<TC4wP36cs~67l;-PLnyLa)Y&$p(zt!;CV8~3c?gL}Cu{RST9X+x`PAs&tB1|pT)
zRlRI)>8R6=3D=3DoF-Awbdb;E!>@R>BfM?u2ZgD<h<#3shB<nzn{flc@IT)7_Zl1AvG*U
z!*=3D_@Q4OGKG_vom2UP!Yl4rbCLMXIQodjBTz9)MV+or4WNR*>U<{jUBp|#lt1j}##
zcwJXVV&x}vNBQTBBuFmunAPZ=3DKwNxDF#Q0f+Fn3l8z{xwaE4J7_bi;;6E^A9(P{lK
zoKnT|*84tBt9@U&HBQ&8ApeEX@Le?SJj^Z3)W{LmZVLqp629cVZ4U=3D21Qz=3DRB>XA+
z^#+^YgbOu9d|?TexZU&ww^s!70Mj`>w_x2kXa}c@`E3sLep4dyq=3D4=3D~EF3I+puch-
z0LfiPBoyj`a}|Bu=3D$%x0acs9a4C%U7$4#roK+xt=3DveDfO)LbiQ4d|@_bu2(~IBpSN
zDX00=3DgFme0!a)KQU-i{#Dv(ug2Cv<P4xT^s2|@6gxE$RAkiY!7fq(oW_qbudnxIx#
zxsH49|2lp+^=3DHNP-#gsd+PJdj=3DVI+PRCkcN86mP(AgfNEY?+DiZGhJ8x_A3Wyim42
zXQ$AI2z0)%2!J{i1f@Z4v73CBD+{gp`BfPz?|AhQYYq5J_=3DZgOD&yUDxBW@~C_2+d
zQ`s;I|AO~Nln^3HB*{>Q3Q-wKWtJv|?f<{``FOr;XK(d9_psKr{2{qo4s*5rOHeeZ
zE(X=3D**w|fbo*Z*l<0U@!5Ola~1q~&r?LR%Gcdb^7(6S!T(V$+Pg6FT9KM`hAVy3U4
zcHf-VhijS7N=3DBl2A<Q(hUmjv6M#8r9WW>7#X=3Di-`w$&!K8i(s;%g>iyO_xmx-Flu+
zhHLy5jIq!l6zF{I*TBmlG+vxUa05$x{oM00=3Do;0Lr~t3H^i+))ubKosa=3D({F)^v4F
zXf^U=3DbLJL{R2#niN%|o++W0jF>W$^#_s@t-s$H9{w@IdytA}rJl~>vNo*T)5uW%!(
zl7DIY^6p(IKBXzGT&Boi)S=3D0DuIshu%~HAQAKH+ujmDeVFHHF!=3Do_Gd<-Ud{y_`pN
zAw93H5o!L7`m=3D=3DSZld~<e3sAk#(XN2wT4&M6y_H$oB3CFGb~(7qm_!$y70KIE*I`r
zmX!BmI0BL3C}u|lJ-9F^%PWQ0MM2#$VK2@rZhn&Sa5B9@D)n++_}B=3DUvuao86RIt(
z@4O&AgKfp-+=3D5z`pe^(xPIG8=3DhK3hv@5F7QFXV*VwJ<+!7xr))2IEmLu-m>u$u043
z0aLg%@H0@hO9~*Hp38gXbWSd_O?O(^5Ay>hX!a1|MOzHDPa(|-wBMJ0Kp%2FT36VH
zt{qCtVT`w_(=3DccM;gtUwwUceSeD~i7*%8kL@VESt%76KW$=3D`AskAF8zC0n(6A5N3*
zagl8Yvk=3DMX%Imj%ZET@6YcpN4-5h4e`(KcuRapl{(Mc;1cR?L|yU!t6y4hu$hT+d>
ze>&5zMbK|NigANbQgEi6^>}#xDHvguvv13Et7r?_f$F!MLNCIUN1Hh+-RL1xK$}>L
zlH*AUS@ayruh#p3tC;12pT2%JN{25sy&igxhZMph92PN>Qt<)VK42?wBcrI5h%YKS
zQ3)s%3U%FGj4!_P`*Kd?my6XiDPf(PH`$FEclU6IeB{^XZ+%x=3Dp%>QwLI9H9@@O)6
z2-9lsQuzFs(tg6i@UK2ywh!BH`N>hxS@dowtwiJNU#V%tCl3As2Mm7t5wpa+9>rLV
zN*A9)^>o`b*?m~MeS|SR9xaOyefKAc0`>NEA67areMd%`qRdDjk!XuyI?KHL#q6za
z0~#tNl~0*#<qk84FIF>x^E{Am1IQ}v*lGHz!s_l_yNqfdwPFqIYUhoUD;9B+75$CZ
z@(cgLjf#q_2*mJ9NapI_-xY72kFvd%Jz$j6(dzpuLoYUpdSdQ2J1yDgmvvi4&c1x?
z9i`9O@6;K?|G(VOEUaUoK!}}K8O+3&V&Zdg%}XHhq59f9p05z_h)B-97kblu`KgXb
zM&GLzhxY0IalJo2;oEn^@)%^S&j~?Z+iKY?M4KYJ=3D*pjZr(jw28=3D<r#`i%e``~c<W
zBsaTu&VH`k6MHMf!$%V=3D$Z~sFuic-EFQmB;=3Dq_Jc-mkY>d0%`J<Mc9uN(p9*&rk7`
zQ({B7y-PLg^2g=3DCTT&b~&wqUerV|?ScgM9(n-96lq)}gQshVZt&jAb22sz&S`a38#
zOZ>Go{|>A6NRVm-qvVU{=3DS}tgKHg*qKE8plE#A+<h5j&~RMK*lW)$17lX0lk1#dIc
zHn{Zq^J88<U^x|nGW|g~n(XOjr6NGclR5CxIu_oF;tIEho@=3Dc<A)JDpKu-g?M<1(0
zlygASYbx_c;@4c=3D>b0#=3Dd(eGX6Q*K)go<}bwJI~l7L1$r`ukF4;e>QyY4Mmbs`hp*
zdtqLF<+h7<X410w9p8}bS}a>~a+smJ&C(tXZ>s~-=3D=3D^hV$5jv>9lHDj^1s#t7qiF-
z%6u!iLlfJdX2_|!{N0L%C_lSGXacWYJTwajB6l5JClS%IA1eh6Yp4E@!-FPv;*(Ww
zCmBWr9T512|9<ga`sYfcc4YOwY<M4CAK|Q7Zi5+yFVru$-I()7>-G^sf@_mZL_bNA
z9V6-V_rkT;Qp@tyrS|}5|EIqv%-8zJ3KfH8ES#9y#ct(USt87#NW8I89d=3D2j)7=3D&s
z#tB<}F#}KOMeZ7&7-8$&WQiiJcs3M*+crH9f^ZXSmE?0{+sD2IVkMepxkri?fuUQE
zFFL~Bhl~7ghw-9J$J6^rn5S@Tduq6bo%rf=3D28BeRb$7GotJT}?Zrj}8P=3D8cM8RT=3DZ
z%Ih$zJOsQ<j(<U~v$$2-*W;MaxspM*KcFNSul;OQ-!IJVV3J=3DCQ1QZ5-_vK6D5M*5
zknGMac=3Dy{C(@%r7;#ci$H?D2Mu}eN!$Y98+Hlqb(y%g1O&OF>{|1XYQ<H5sU?{ICA
zC+ZjbzfahRT~kV4)G^{G4n%Apw{Ln~`d%Ep!On$4PN_+-OL88txhqA8S8ffizx{sq
z^XId>Y1a$9Dgk9fCQi+Txwo-m(OytoY@^q2eH#yk-7h53LW-?kcwF3el+`ahoSNU#
zL!uPwRS<|$9=3D}44QU!YC(8*or27GiVva1xie4p2IJgVn^NZ?dydHYy*$bOt^TgtOm
z!Z%AHGo-q_Hrn0RR*?X-ysc8|Q=3D1ZnrOy}7viNRp7a;_=3Df}1Kyci>PTfvWRSwN&r<
znvtdV)9a!$HJ@Wx9+YwNqlbKJ&u+SFc5Uueu*m$NcR0c<WE|BFmm^($_X=3D0u;MTH&
ztGJL)c|1^2c5}v!j<ChRWYg1$LY4i&)cU?CZu5k-=3D+*m>nY})jT=3DEW3q5Q15UrOBu
z#GeVHL_AgUb10aQy~@8{fC+lvyZh<Q=3D81M=3DCBRwJ+xDNVc{0DYX{jqHoJ-Bzg}&A*
z4~+dnZ7CFX6HG%H^O;*jYD05<DwV>IivoB{C3k0)Oxb<9Se*W#VToo;4e}H!Ne-`D
zqb-AFC7#>1;pPqLV38T$78-gb!C%kD?DEmU$9MCu)`xq)Q~grvy#rOw=3D|i{dm4Kgz
zYOb}NwqfXOr-K%xRHw?&`1f9_r(K|cMeG65S!l658Jb`-o=3Dut{gQ(4ej#h0A4E%5J
zW^D19Z=3DUoP5^vz4hi&ya?TVdmHO?NF!J-0~Ii8S8LsO7T0NY2l<GR6S)7$RWK>uPM
zyXA^Mri~izAh#ldezC}uKYHgL*$n+I-}htl9U;HtT@>;5wYwOIWhF8U=3Dqq<=3DyN70T
zbolzLODcGIYS?qB%7?=3D)6mI_KeqDU3CuPv8Y`OyZfTA^CcGUS_;d?&w8uP4AYC~`G
z!Ve(f<`#d;<Xh?*?|P-w7)SNn1cWzw1NN08OZ#xk%6L<J?C3?Xs^&he&tlO(d*jqM
zEk<X%%n@k?rUcr~v{UZ{_aS?9=3DD7x0ux!X<X!-LP*c}qlU!R20VKTn`3kECqR5#0y
zq{S-N0bSpmob<p~J;bT!<p&-m&o=3D+`om7x@+{Fi|hLHsl90L%P4WyW{=3DLV8B*Yclh
zP3f&a_<6aq=3D-GEMKa<=3D^p3vFn4u^C2Y?qmwq7Qn0yE2oYON!pH*Gb*vResuo%e!1j
z1s@_?PGK7M+2%;4TH>*DWP%)dptZHcUK8a*ZwnZYGph$lLcrU)z0y-m*3*_aWkGoG
z++`zMb3p?3fqK5Y*+3^=3Dc;oO0#wv9mqaMzcyzm4$W<{=3Df9pw1hroo)G(a?MSqW#8y
z2pGrB!6gPV{wRL~-F1$K2sp&;@5KxV$Ri1tE=3Dj+QjZ1^QWm0cR&%euc(2u>Xc)eS{
zZ+yvmMeSWD#d6Zw>U32ju_naESw2J?aUk!zhHcuZ)~w1%GX$=3DWIUZuN-01YtX<ztG
zCo4^xJ7az~`+>C;znpx1sK2sXYrH_<-p>zgkFAyM)z6;a$OH4Cs`xUa<2}z54ggar
z4k^S`H)eS^5+{34vw}{4W|Ho$%tXC&wtwHMK^`5M>&^>p9yjaGFA*nGS+>}>qP{oB
z`KtlF*!FLgl^00JHQw8~6@7%sI#>B&G2ejcQZ5*tj()9E$d<D*ZT;rh4LzGS=3Dbls-
z;h&q!MY&y{d2p2dOfe{6+f&`j1O%UUsK%re-H&pm82`%^MTA0olcB|NfWyXWR~s+T
z8Eod97fe2GzZlDFeaoju!67)%2Ydf}=3DvcLKDdNTNdNxWf$3w33BOrSjH;o|}4QHd%
zw~`5F_#&3oTz8WDks*9a;n+ph{<u1~!X4PNo9B5WEcHO;D?U54`!Ju9>B;_WT9_3-
z*gkPvm)-!GK64u~d_q7tZ`|j-(KvfC{Mp+Yqwy2t{su;;Kk@EH?HLqgx(n|<+HGtW
zxizov+E-Ump9pL?o|X8#mkga)sgtJpm^IdqDrnA6cG)c^vw0h~a0FG0nTo=3DmXA%&A
zlIh5pl%BY4V8K<l>s}yVLGh#?^GrRwfa31k`UZM?RoTj}kzfwYh4L+1ru$uIN|G>M
zZLSKrt`RZ$pO@R*{NLnfmaqr(Y$gbAAen?i$PdKCRokyp`H)vW^``4p(cCdmw(9N;
z37hT)oGFa5u7?QMJ;_PCf96{?@W79H=3DhgH@6p^XJFXR_C=3DwQ|W`_snj&hGL@#F<dE
zDQ6H0(X=3D?lFFOJ&4j{r>Smc_=3D69oCPqDaV74VJR>{(kR6m-HMCDw*1Sz91F5S@?qh
zD)%Mp;*n{)u~<9w8s=3Dc~x`9gQ1$=3DpKfPz}5NgSKE0c@WdhQv_rft)nyOFP12G6`DP
z%=3D(uZHazPzGQXHrJ^IH~$qEN+PGBGK)c>3=3DHAT7HT7<-aqFKE`jVJzOP$bUtKZs@n
zKlq90*8*-svFH_Pd53T`tr;N7!j>WXaM}ewevoRVUBE&B4YcZ@?V$!T0zLBfS|kIG
zoil4hO#X6q&ShvPuim+WubBAJ7(6_64;uk9n@4>M7Ip4q2!=3DP+EW=3DeWJz{Tq33AhX
zxH_@OrFTC)*eQX8&($3-sz>&MyiEl@WuZ?;tj0HG7rif>zw(_KW#Tetpta}vbe&|C
zM;)@*ffYRLaZN3Bp1@t|Eve09Dge!xny_f9RhG996MR;fx=3DphL041^h<L*@T^7Yq`
zDFG+Ul-z!CY|}`O*Ze{E0E;~8sC^<GOyEnsJ|{?3rK4R^Kb<<~*X}Putf8D^uhyrq
zg3>SYE5$x3Uw2e|ZhrK~d2)>MWNN&wAWhKmeOWHw%1|lc(U;0}V9OJaQfIYGm#607
zTTLeG^}8pGl~HY*htjTjQg^S#rQ8u)>9<^meos!o;lu%cIUD?`rh7Xdpb;I_cC&Ps
zQxt-p&%@(4on6q&6W+?Ts6WLJi!W+k6Ji$^t~GVvC%fw$L6skcC7Er;x!Wb9FYEzd
z`Hu_Hm0-5GzpttQP`Lwr@bxEs9ujdg`9>sOAsEc%4@*cv**$tZ^;v9=3Dpt-ufzZ+0G
z4lX_-hWQnjCU42HJnS%fLe(9MQ*xqK@Jh`*caRk8UuBnrIcP#O`gNa#_mG&Uy|z?%
z{Z&Zl-GMedXNSgI?T*97=3DVjz&NFM|h!4`AR_1p_`*Y6vpSDK$exKF1N8NAuSxA3tD
z|BH{OL3~^FhtnDkJ(c?1X{=3DW03i{FCHpUCmZaK}&xbF)JgB2)PGiCcy_RW7At3Nul
z-bK(_4@$2^7-N_XIJlLfVm-4g6?Mea=3D80X9h*K|NjA-k<g)Keo?vMS-QDzS#w|=3D8H
z$8dgos7-SEs4slqItag;A=3DKwAdKX?kQPdWHhq-r%aCpWLI;qx=3DpH1y>5H|T^3peRK
z?^VN5TWf#`ljGQ5@gUvQVt<4j5VUWOMw8k4Y)7IkG}M;<sgrp>exEXPU-LjF)vSFQ
z<Chbcx)(xFd(O0tL0|bG5$WVkgfPge7N{y1F8zg*o1Ck3rBhE1YlZ29noZ@F1#H)E
zIo~_(7x<T#sT;2$D+utNt<!eciB8yf#CPJ|u(*kH^WPs@x^phGIdys@yp<49qtRmJ
zZ&^4hWwO@Y>eOCH>@K;L$@(LwftQVt(X#gpNFjrlM4cVczVo~_{(jkg&GrVfSwc5Y
z4$%w?oBFd2rpH?_qW;?G@&O(@ZE>5zw=3DWH27aVr}7zw)trriBy=3D5=3Dy-qVIKY01<P~
ztl!jr>g-&3_Xjz<Qrrx03d+38T7mZwG6TW!>G5lxJCUF3$CB&?a2Wkk8%9)eU1Ne-
z`??0zO`S;AaDZ(<3XVhmGy1M;(*`)%a0sGMKT@P=3DQz%6`<O6-Q5|tydl$xIPT96gm
zYbHBSK&t46zok+uA!Qvnv4;92VfbzPX1l|8?}zA0!25D4WNmfXz6ZjbYxaN7)G`NX
zB{`_{*&yphobTsmMzCUazlt`u>Teyzz`}bJMpvX@?2g}{utw**Wq0VGA<o$FY-Tko
z8GC=3D;d6bUJ*=3D=3D+}fIZli+aXc;E-#%heqFxHTIRjWZ5A7veqVjOW{=3Do$3(CmTpGQaY
zj<>TJ*IH~+8Q8s*DSW=3D!6o$2Ps;9Y!-uClO6=3DFVtXeVfOj5OmsUhogliN9|Iw&zeT
z`L%YK&DxH?egpTQKmb2zI;|?prs+-ScOL1AORb&{uGYNYk&}~8QGX>^>-7y-{nkd;
z)mDwgQSO7!s|l;mZq5hGm9RXMCdmy>ejLc514+8vR!tjF=3D%k)wXVn=3Da5o)VaNM_$~
zIdr#`wV3Oc<6%^m^0oWzL(Fq9{Z$^TV7PYAL1S5w5dl%l)-5$FW5DQIQnj^Spr0k_
z&S7%3UFLSmzQtz<jRwe7^q1$4b({=3Dxm!_Qeo)~Rkm}l1TiT%UuoGwy`sn>d1B8Tda
za$Dc?PzEFp-9L@D%njAE`I`>@uG4+<8LX~<6V9eKl`5#zCR9VU#2<*Y#8*v3VtFiT
z+gokmJ^n;=3D+6-Vw{bBy91?0lDknO&twk8svcOwm@smIQn1674l9{1LFQtr8b$hSyu
z|0r}G`>=3DA+CdX520IC}-`wRyww5(%#Q~d6T=3DoQRZc0TW`8-$?*{Hj2j`O0h9Zf{V6
zkZ!d1csJ5JAtrSenX_xP3h7C#`?|kXyi42T<V`{@ux<F0+}|i2mRM;F-D`PM3AYR+
zsJ|{*^WzO?$+q~Z8a)~)S;!Tn2{w>hK5h;D+mMlRaeQvI9MiLrcy3da9mg+zJj~yf
zsUv#B*C3YH;@9eJT|r7Z<Hsh#>wAxb$(7VTu^az3yIjcfsNR{M?|-RSc-E{Ztre(#
z=3DMsNB@L81Ux3{02R>w5#zN&WgUZ(9v4bQRGYFnDfLRZ4qF3n&8OLUx;Ne)Z)9%Y-|
z7ukpYrTBp$SZ9KLW;<ZaOW5yxB7wAh_=3De~0JeBQ5s)EOZ@PuD$q~p1yyC!RY-bYp-
zYk^n1*2R16Suv<?TC+Vo=3D?68SV8xv0cFcR-TKxL-TmWU4z}Zo5x_4JOZ`pgRp@^*b
zwywXQ{Ug9$;A-4Yi-y%Z&)V!3?ptL^1#oT_63)8VJlw*i+j>#)GEpfS@z{j8q(%<w
z_w7b?`)qVRNMuJ8Y(<x!Vsd9tt)wa(!-?Lw!(D-RU+ecFG{c=3D#gf#%1pGOnY%(oCz
zlmHCAH+6oy&geJc62;k$a!W?bl?T7t8CMT#!yj*28{4g`+F-Nc@ho`3Io3@cj-8&w
zps|9c%{3dWf-mcVc1F%U3sZQAlc5*rldZT^l%C6AqXzFxv$~~MS_d3l#pbheE8&>b
zY84z^BYm-I&Ksq(2h1yzkZ`KNcrfSJ7nCrTK|sKi=3D=3Dth;u4h?KPFS#pa<8f4tgF4o
zr<8s>;U%(@iiwNQl5nN}(8oAJqC&F#D<7slwj7p@b8`o|1b~E`iQct^wffnm^Jjy0
z0;WCaC0+3&_%j-pBnekd@?U9?$H{CA?mDrHo9Caby#I)<I@NPeWg|B=3De^85B7dh<<
z#vBLO({YFMmmblynZhHgZ{9ol)E!8gM+m1Ry|Z-;YRmJtxlTKp`vzH7a<M1BeD58F
zV{F%OYm#y9m9tF+A}}#$zDeh!&+D{RW$_6%hgo~wu=3DJKmu&+Vko8L&?0VIngcliX(
zL)`oN!}5xP>C`{&=3DwiO#tNZbyx9h%M%Jxa4Wna(z)r^X=3D@bE&3zbI3VqNN)PT1oJ_
z9lx~F&|98d9BgNw+Wv1k`eE2SiiZ3?_cG_i99mOEG9K>aN`DLRhvVVozwr#;X#Xj?
zYme*x`*Z&L883q?Ru+Sclkvk#x*4cBB@<2+=3Df@Zwqt`ZgR0=3D+FsZ(mDp=3DY6f|6am>
zgW2n7GI8`?7|-40uT*$+JgX#@mviv%zy6LFW{mdgyVvYhmRFACZ}uS5E6d&UbBmN2
z!uj-uzsJ6FaX-h>x{S~L&`1P<cyg`Rm0u;p$D>&<p64+}{nnlHK)xTR6)f&N?_9so
zRT>g#u1EuVq;C7XMR3%+)jg*7+SXptUs;MkK(vYuzin5c1PC!#*%<_Gsh6zZII~^O
z!D$_iH;sB7$68_t>5c_xwo_ix<HoKs{jJCEBDPo=3DddPr-yI7Ui>dX!2uVu}8ZP>$x
z3;*oW4YUP)zqo<GLRRm53+-glFs0&=3D@|Iml0@3!t;r>oyifS?=3D`MJZc?e*!h*yhg!
z%&5qhqZd4DNTbE5%s^i`5O;c1KjCI{sMMcCFKNFeOqqmJa2C;Ex9}&EZl(Uv9V6<R
zO~1TG>Qgsm@4I^S<85c9Uz+iVwkImM!1s?UkbID@{%es`e~0qp{0uJg0On))DZ!^=3D
zX=3Dk8q>em#>X?9pznkbI@HzxFs@$#`XI&YY3SwU~Mnf3~*((S(&huS^6YGog_i@NBz
zp?#Y~2eHptt#evhucq{{QJNJROPm`yP$%1X8<b^U5LX}v$QL4^fn?miH-P`q&pAK9
z|2HX2X4+>-UFg2#w0F$`wOE~%cRqiKvh_|aZ__p+xd{Dtq?XC~c)rtc65t^bU4699
zFq{I);Xaobx7$BQb2q<!c3(*)AKuXCmriDoVPE;XpnJC=3Dtcr}Gp^)3Q*rj?u_em`z
z^TxRzuwKeat(_Xin`73Ga+MkSbvNav&>%MI(?{ECpFQ|p)|ORB)LX;z{5B<wR+al4
z+~6pFjegpChi-ib=3DE%zZF*>-;TbdKwt$Mo*1KIYJyG)DK*8M;VT3?x%#awR!;;Pe)
zTR{ZQyyuV3Ws((F515c}7a$hW72!$N2eeS=3DAZV6VX%1OZ-#>e1{7n)@-l*Tier2-y
zxbRD78O{b;I(d?QbR3O-jQ;oh8`UD{YR^i-lpok|VU`Zo>*RKYeDz?u@FZIpe@^)@
z{u$^isXnd{@YLG1k4HQsCI!cRahD>PQ@qcnQE&Sjw&Q<yjUZp3DoNUt1W3pl_1~J#
z>|(jT?~yt){2N$EP!=3DXF)OTwAH8?||=3D1&1fDM)|w`A~j=3D!ny)5x8X^CoKLy&KADF7
zSy;Jo`_oSTb)&2zD9m6*?`u8$+WoF8jkX&#;^6=3DTUq*q*FXeD$W5o77vs(RRFj6+(
z$+}X4%}62a1d^et?L;RQ*aiY0Tn1MPe@nbYEo<zmV&G<%)|mxxK`LE(bGu#-(_-Z@
z2EUjs!He3PrXPD=3DE&f|8J7&kaiVo-dWe3vb2jDOq%)Eb&)KZC*+ZZ=3DEtV$2M5b)*Q
z@v5PX8<&69ydcj~KC4yd7b;?G7F(y$HjBA>T3IODq}*?DPD#iI|8fHOMmI<NQbO_M
zKoH3WgRFCXyTp%0&|Q@5>U(o~9!9;!5tF3JBD&xg=3D3!N)GFqKKQ3t%^JtT!}`_rpi
z8#!&hdP>M9=3D!_>2XIQRruDH1n<}t0p89w*TDhhpeFC24*=3DdHS(S-ot*_aY|SQT-xZ
zCl7$~Q0>?C`MMj^K~s;pAv1ana$^YpX{%Cie2V4F2|CBll+hm?JZ><kKRz4?0Rpe@
zIk&%oxhQ(3b1obc{UUzKMK+LL2BUx81nd^B7Z9ew64PrW1QP2lZfG6i>AM{~xS!%=3D
zqu!pY{1mKkzuc~cbtf@3%5DY75AT(CkYF|cmrI2#<gftZ)LIZu9{sUr%sQh@<9BI}
zzH;yfz1Ubl_QU61Ip21}g0nGqKY&b8^QzeyTyKR9F=3DY}0=3Dv-O+LF;!iC0o=3D5k_#Pm
zk1alnVHxiV?}~HVf1^`Y;K6Eiv@m1KsKxSHpQsbe*F>mb^X{8(vl9ZQ73I95WS&l^
zoU;f@pNu@2{IQln%;TYDZk8&U-%scO-1)ucp|e|q?&4!?$YQYwg!w3Lb&+O|Im}By
z|H%I+<R<@J!!bTJ*H9^?^~;e`+yYQiFCT-$q&(a(!Z?Ta%K{w(hrUkDzJfpvO528H
zro?P2{`G2tUG6#~sK3m(pdQIbH{V-#^Ur-5;n>63jOO<ZzCuUGT>qm+pn@*ecSK#X
zCYO9ZsSi-Eu-Dwmy8DqTF}XPkPM?E8#jAR1I;b{lIImmPE}q|e<TXFPD{+ZDrHtB8
z(Sz|fu)BWEKyg`r+-m0<minAbP0Xn=3Dg?>McC5S7zbT)-Qg|9LFYe0mTmAYC-YqcmK
z*`fK|I=3DsKb#3O=3Dvx$j^O<qjL`zwSNV*9f8crG|w~EP;qJOFx578T*U^>JV_qU$wNV
z<c24BUpD5ulLv4uwTZfioFOGJNWF(v;#wuLtJ2>xqY;cIlt`O^nakd)74XaKw(1VX
z@2oJ+Vq6<m$KTm4g6UJP-?$E2)xN*e-zwiZ6D!>-IbWz@sz2ckQLQf<bgvsGcUgZA
zn_ErikA~78mNSDTgZ<v7|4#Ig|HJShjAU6t8k4=3D5gICt?J=3Dej~=3DHS{O({s)*AG`)6
z5yM^y-*xl%Q47)xC;y1k6rL~V3P<yIhIXb<+!PxvgZ2Ny+G28BjWiG-u%FEQaGgAv
z<?b+lUrI-hL>vUhckey)6{vQ_nzed(P5WxQ+dLio8t~s=3DjZ0^u&#HEt5x|>JpXPbs
z87Pkqn0~6uS9N8l|D-7C`d3+p*WHh&E5`miJT5!O$8stpw>f|%OP+ME?FL^=3D%A(fQ
zo!IaG$lS{2#+!7e(er@h%c{j#9lqT-Yp{Qrp>z3hn=3DGci)j|BtKw&;S?xWG^;)ZP#
zOD|d0-?2T=3DOdxp8f6sxt#E7%(tZsg<ai#gQhbz9h%<0Z}PcGQb^xdmKV{=3D@^!{BoU
zcQVUjU*Pr}&t+N78hx4_9Iw*F=3DyygB5csv`-T5P^a;+;;ieK(CcXY7#{f$<N8C<w;
zse60{;tQ7T{S|ZU=3D#@sYQd59U!`Vp%j9)9guJ2sqXG&|n{e>Oh2unN7_J|H(4K-zn
zv+1kN>8_$`!KWI2^ke<dJohT6_4J``a*^AJXN8kqq10DxylG1o<WH;Bduz|lwC<;F
z0z&DB!2S9?o<xXR7|xS34(Ax0GvcVbAb<7?AIz0AWDC>acj%bA8ZwE{WxhGQah^2j
z0uAPDBpU<Ax}utY98*i&oSfB|*gKvKsl#J(hYfEeQsZ_tp-+~Qfw$T3><-|WfOp}t
z@p?WfA6s>xn4$kp@}dEuj}?{jDcJLTb@2fKFCCxkIM-J52S1zs%nuoL%SWM&9=3D=3DC_
z&`jb~SmSkl&rMll3gY<!j+I7{uR6ouN(H3~QZe86Eq@^f3v{)7gAk!GvL9W!2p0wE
zdc{NW*|_{#6qFb(u{0pIXZKIR!HRnzmpn_YwPnSL#^W-vZEdRUq(~Q3@3@6rI(95o
zVCoB4B$)LT!rsw6l!r>=3D+HYTzE6fT6e89dyW8t6FQVDi-W>T&dt3-1w7#I3ftD%Oy
zw$F!q`W!bJN5A!cteD2Fs-U}XO{2VPb!p~*E70iO>s?hL916D8bBdWQe(me;M$NM3
zTM<%7Fr#62{5Vh-zCG>d6VxBC?GX)er&}ld#>{hpOv6AP`aE%+23B=3D9?({yOWb~8I
zuh1wYb7Q0SQuL#3`e5la;M<?h`-Pq->vmL|Z3|0N%fpW;qy{<Rr(-EcDv&^^_|oB^
z*wt}vmb}mVtQ@}aF8RoP)`jK|ZuCRFeEuxnFvF}2bzPX%Z*StVuM8&9N?+<*s4d4z
zc90Te%l+}Ib}b4bI=3D?P4NA(o?KaU=3DEMtQJesWeK}eyUd|VfVWJEp`@bpyki5e}0fT
znGaQM+?nmei@9zba=3D$x(r185dj-Ke^#+~0VxzftB<_xk0m(>ERw&*9=3DulXhKs>8N1
z{(+#s{!qgX1BO*<R(cMQXsT*>YgbQ56sxtH#Xi$4F6XE^JPowPPT}hdy2j7zyvFX%
z?K0Ku77rDej^1c{L8ME?*;p;-Z$@>0S~dSHGf2DKX(Vk(=3Dk}`i(R}t%!zLoX))3Fp
z<<*ktcFRIPCMLk1y?kz8y3nA%OxTt^XL0{~pQ4iSWjVx^exUb(?v*K)Ag{<Q{XU!z
zLK<QnZ9lEmxM@l;guak=3D<NG2OdhY$*>xJh}dNe+1FTcs$V$6O%B^ZzqV|MY)2M61f
zA_ZJ|ZB52q09Ab$SQt2jJ%H-s+j<NZHMPlAVjoR+s$*|PuPH=3DIEZ29hAa4G~f9@}K
z?AmeG=3Dq!FUFQ&4v4EX$SF$@f_BQWCiynV&rPJMS(fHUIf=3D*hfvH`?-JH``Wn5H|rE
zt2{_Li(`PXY`|XF*nn7gUkJwo>n`;;;-!Je7#7m)=3DJkX`xNmK*lU)AbOkStJKaC*!
zg1ba|?N$W%PZ8CIo9NZR0i$_7J=3D*u$aHip(A`V&wq-zU7HUPmu;{H@#U`bkqR{xeI
zU79LPGS-#P;rTi3I#B)6eo;ocOvha<HnT@_u`;I_G3>aHXZHiNsMWm*>Rg5YZG!b@
z3dM~4TiRO|+)qr+r>&$sp=3DfxM_rp3jSI_UU)rJ#>RHh&%U*Us&(E3B@xAu1v4^u~%
zu|A2m=3D~}0%Hzt8!6v54`udpx{zcv57Ad3A?fOf{oUuCm7oklZo45@&3I96(m0ye4c
zkzkp9j{|u8pj*4SS`tamvs03WVB-m2Qh8L#p0k6x0oZRbDux_k53OJ$DT}6h^J*gV
zyq|Vruh$;RJ$(rEMRU2m=3DsdUv4yBe3z`)k)yy;a^Fih}=3Dwy-|mzhwK}c?}uFabDeK
zJz4T|@#XpCb0)UFu-JEAg4o2p`w1#KYsc7GA{L}UZwHQ(hk9D(j}kA<mQiixOcvm?
zI6CS>{wHSLn=3D44i){Tk#d=3DS^nR}0nMEz-`Xw@aAu8_PW>L$%`+bFV_N@LYwZ>*0AT
zy_;{dj6U$~`;3jmd$)5Q<#5-zGx;5}zdEOWNr5zzX8-w~*;(0>>}-;2l5<G_BL{2h
z?d&7-*KH-z4A@`X?G}1RmB$3x2Yk}0Uj=3DXcx(}^igIS#hsJz%Yc~F7Y^us8xYt85T
zxU63Dx1w5*^6(@FgZREbtxE1oYU!1%QTY{J>9G~2u)tr92Z-8P3zdQR1W}414UR=3DI
zN_r7L@_X6xp;ctDy;;2Tx5^a!8;k)X)E+VdYwYaMFSK-&TtER|n*Z~OFY-fb-SA4Y
zv}M&g+3rmqQtvRi&DM*-D=3DK1_(va+qZeOfL8tpu}I9}OZa7Q3CF>Vs+)L*r4Tl{xg
z73t!sm3_F?HdkgQZT{Pk&wrJeKAHa%L>F0hh;B2PC*7Zmeqg6iJba(Ok|?yTW_h)8
zt?d@D|Fy|}UO2){H2^dF_QMj_!$|8Dwk<4c(jCkuS|_ZqBowQ>>@@*iiFtRlNt(QM
z0;N5^DpV?jLhwCQ9+yK4HtD_oxI_qvXxCHYbG;y*jEYd9^`q{9fZgZXvn~|{Yolsy
zwL=3D<Me=3D&;Go|l2Rlyf@kZ!aV;Y5qnOuj|#Xv@XMqOwhyB+0pBJK7JH!8W7N7t+kwE
z2gRYC4CjyjvLQA`vr{(*q0jDUkkoR(2QQo%q%_;)?Q6mLlOKT4SmHo&pRbPm2ky7c
zyl=3D@~hiCeyRvsq3^OBY87r)HZq5J#&Iu!&hmyP0JBq2_D-Lx*7NnwF5_eo$DU_Tku
zYf)|88Ki??W4huHFhWsnYQb3MJ3PA<F4UJz&N&pgEBywvIumVs7;HrcN1=3DfoQWR&3
zh&Au6W?a=3Dd(S<$1E&p1VZwVIiRrT_nJ+?QwofVE^HVTL26N*`xJWlHSms&9~MU;@{
zv|Rzs{5_Q~n=3DV~77RBece!q5eJ@^!52XJ9zGs5#UzN~~v$52Pbk}BZzJoOg!^=3D9#@
z{aJm^=3DuNTWwR5;(I}HMx<4<e;yuM4-R_txJ#L%5{5OdM{&QOaJ{a|_F*2G}nM2T<o
zkD?jp09(!TJOilP#7*%E@yEN>P|)W)B-%;(x+5;TXScw!mXRLsbm1#t&mINb%d(uG
zTPui)MD`IYc%@#GV0VmMg%H};@DN|vzwE7IA-e`$UmkO<e7v0H_k-j4s7Nt{*Ns;D
zWPI!SCIfmm?nSBZ>+_$Ji8cI?oP>{CcaA;4T|SQn{bd?OfF~GzVVQPQ4YIqsuVE9(
zre7rKp^(NtCt+t%B}xct6`W5Kb16~!_`7*e%o?duxV|iRo(NxUR;<me;Jq8)8@txP
zt<dz^EEkcRu()03JD*3jcj`Xg)e=3DbbdAaf1<ocpbWsjFyeb(No--FXq=3D=3D`-neP_U+
zxeoaW=3D;5!kC0G02bYc47$m|bK$>C*)5!aj_V?biOg@H8)%f;p?W6+j;W?ha>Jn_em
zYi6DXz0amna~wUdG#cjUJ3sAI(DvM|Vd;J$EF?)(Fip~Ea>Z%UU4Tn6=3D`buV@2peP
z;yL;<2zsAWTQ4dWUJuJ_b{wG&<R{D=3Dbjt0YSuE9?{f2Ay11wK~Wwtn8?QZ4n+_S;`
zB#IQRF1OPi-iZcx1v5Ji|NiqDs~np3_3oZ_nPD`=3DJN?e~gx0(4-M{|ayV%0UNu)_A
zSX6bWO`;^WeUR0QlleEdE!hScIjt9HSx_~%gPPx9E|pWoT~f2459x6-=3D^W!21SAa>
zHo48U+$}1#Ms@&I)i5{dx5UnMIe4jBmkd3Y``fP*-<|2p+E~;#&YG$jQt<Qz9=3DHoN
zcU!#4m{{OprbMihc9i1Qx0HqGDt8!dAak`-HT7$+pCzl4QahVR_BZS6(nxo&?M9C{
zK5ZQ$JcK)kHD4W#26JUWIf{qR^~i7UDt%X!rqx>3qRPH4G`R?-qd}5E3AgP1yrAQ=3D
zPdUG`9##p$G=3DR6K{~~IAE3AI>C1joX_%e{+i^;-J;_%xJ9?F7O+SPvH5ePS`OWkVQ
zS&lD*F2`le)1|sKZ?^}F-8h)QXWk3HPOL|OQCDknY8Eh~g-%uLE9aiUmz-CuYSd*i
zmwRfLo8q0&V(>n^Lcd1AgEfKZ7tsS``cAKlt`_$<_fyw9CPYTwRQnN%Z9GFm=3Dw89X
z>FROLzN%*KXGO#MV@o-4G<a;SzqK=3D5W%uioy1r>xxfoc(tfk?{q9C5RCc^V}Up@T$
zU>29%Y3;J>vyCA+`&i}>=3DGCKpN)UAUekuMvK%Z;`OZ--ySDU@3oZh@$fNnpRPdKgi
z&&Ti8Fl5bqs}+fA0?7%cd8U4Z)DDaWER?rt`!X6zWCP^)*k5Uw^iJJ!<;xz17q2Of
zJMY7og*YI1_b(2K3=3D{fxRD0VO-dNj{!HItv5IM{>x^vt;MjR;V{syeF1d}aupiB-D
zJvT~$14VMhni~NJGBUQE+o!Frz#$30pk*<7rx$Zs*oH!WOvCr$wPS^><<b&zox|z2
zcCTfoVZ%hREAtEf&f+H$UCkj!y@#@a-jQn~NYm^b398Te<(Cd-VQmVtXw}}NQ|ia>
z@oF2|FY0`pd4pz>|L359x03vH#YC9OYE^t}+T-VUNK5htxHZLAo^Mgj9ldirix6-y
zzmBJ0k}X2h_z9xJW2~=3D_ww-1mz+=3D|QT%YxJepKvd!R3{?!t6ZZt=3Dd58^DO)>tIyjn
zd-BOWdLs|;ma7MbwXfJ@Xq1I-(3}+C_I<jU?e@`=3Dt@~T2DpT;BfFbWhu!kTl9yQw;
zUO?Wo)pCGJwhF<z78m1qwJ&EsQi1G@4s?7JP7dQPq*va|F#r5q8@&;x{ocDL_kz6<
zz;sHr6Z>Iu`{wvMO`K%!9?WmjaLzJ7xfZW<aK-4k>(4PgEmzmfWTNB`3VlBf51d2t
zm1Xnvf&EJed$ePfYQ#+Jk;dP>PcsLrWGySl(7|4rf^w~-!k5x}_O7>?n{<}SS!3r-
z$Xc3p#O8fyPBmk0?#H*{$?8*FYc>w;Aakoau_p}=3Dtb=3D8^#i}pI+JfP)?+HLX%hS}#
z?!40pjf{HEZkAhthjkHIPF~VVPgYrLvw4F?q~;UY>;OQ!?JrDq)X5{veIsT3&S9^`
z?dRld?ItsR=3DCxn2ObFOl8WdU?&(KNZ2ffG`ZHCLI6W_aXcWo&UuWM6hJy}66(*=3D<9
zT4@GsXnpE@Np~pbs>1M=3Dy`$D#gOtD1xc?O7pM8Bv9Z1t-1)FYPPIK5Bj}7<~;q<GH
zY-NM?KLsR=3DXD%vV=3DZoj3WHg(9&rf~JLqyphd7MG)-FC>onL-a{l*D{=3Dk5a_JY)t_$
zx)Y^a?rP;zDIUgv`WRsi;o1OYa33aVFt=3D0~?bZtE8-<~_1za8d=3D=3DAf>NZvjj?6@`C
z_8-MPcKSnWD`hfj8OLr}Q@gw24&MvM#s%{+yfum#Y<%ts+BWqj;&{v=3DMEU7oK_M``
zGCcH9kOA=3D(l`XRoFN;sFFq;B^JO7fGD*(J4N)Wnwm=3Dh>&+K++R|C%4rcrS6Ry|u#Q
zr>Fn1&-!DfMXUO3aJ0ike*l{5YuhGDwK|?#T2TsFVpJ?cCoV+kGdH^5q8WrVqn$j=3D
zw$TSb<X&w$Q!(y<Q1@uQhw{&V;LW<qO6B8ykHFp-h)WCfvVA8a_vnm#+E|<@ENsTX
zdONgyLadeBnTDf6+lQ&b_S4a(0yzcbRzA1=3DI1p7+6NUGMV%m?~sLAk}F}=3DsqSuakc
z8|Un*?|xy?{A(BQ$oLGCcI#5giSRHoop|hc5Kp;WlpW2PT(uZ+4+v5jo?r&cyb6Z6
z8JOzoVk6h}YLnZ-zxKg$6%l5;3<Jtdm+a+pGo(T3Vqf{o`2%JDqfP{3JiF8Ft?cE&
zUs*dB1fV)%S4<A29S}^NXLG2jlJdBGpyt=3Df;&o!`Pr!ed{=3Dl*-<jS%?5JQB}s`T6@
zL7dVSqeV0K?suvK$UGm)F7tW;ZYB~O1LbNZBAJMFakAa)0R#-7qmwh1#NnbJGw)`n
zdmogbM`mA#i5(*V0CQUq9JVytYtfc1Qhuh!La%!yz24GPtMcqbOLI^yjIqK60US(a
z<yCf072w9*V7#CkSrb_A)xwVDKGTC!PU?$9kFP8t3mfPxQfX8SqeW*<DFSQBJ8d_4
z$tpNs7YA79Yxb_yCiJ7U_Ik*wS+Nm>f`BhH&uJF*mABQn&`l@64Ojk3{_7LH&=3D(33
zth-%h+-N7njxO=3DV!w)j+<Mph%Ywsan-1<Td+_TC1?wcQ7QwL_9F{0p@(HTfJ{WOU|
zhVbpY$iJ4@565!+Q98THwHb_|rhywUdW*bPucD_WftqWGKL0KX*u{ro7*rRHg2JaY
zV^BQ@Znnm-#j`;3@FlLgY%qA9LePvdkXhB(kjVT~!0FD}`ttj2s>IpqH(TjMz&d{f
zHm_Y@n@YNn{o!Z>5kN;5(cex9`*R%lUcSu+w0_MaUySL6!9nUpSHbUyuCuz6|4#Rh
znF=3DE+V2(2Sid4cOYvjeRs%$W6WCFWtx#12iJ2(IEhTpVz>b1HlAVaJDlFR}rwx1se
z0{KVMyON}YUOH{2UTW{XO><j;^-U}Hz^sOus*MWHJ}!CVD>?kU0U0o_Lq4TDe6MyD
zJ(7|hPW;B7l_Fg(caEciY$3Gv992Ntk8u{;xIed0(!d1X?-DyPsoj3e3L%la;>Vra
zT0d+b%K*=3DGgbTx&kc1<bXubYC$6Z{tS+*5H!&v9|@oroxMRSYLbCX!PRwTRi(6C4U
z{)gEspxO0G%K<g1Lk%;d>qR3i-s2@(6`JD(2AI<5Q{lVconsO8jsGkqJqW1_lCgjI
zE48Y}WO?WkEr-{if%NEJuKWyZ-5O`5)t<SDjJNlH1&wiAPXL=3D|oAO<Rse)UGJC$M9
zIFCQ#4V>0CH+sXA7=3DEwHbkpUQg0WjfrSiSB`quSyRyvQLHzjFo25f1l=3DNFyZ;9|h2
zf=3D@f=3D_><Ot_#_T4(Ls8n%b;c9!9MQ6)Eb-Cj?2+P(1X%tQg}+0@5{6UQDVae$~#k+
zgr)E8PE9lI_Lp1D*U338PZ8tM23^jZ!^6*w>kuA1JI@^m_9{j~KR(shjbG%uMg4TK
z&c;9gOFmpMT6FTyC#Ie6-W{iY9-R^pxNz0@`EB1v75wn%X7c_$J=3D1+%IkmQ>-iykB
z#c#ln=3DZ=3DT5!SL<kA>HdK+Da2^=3DD9HksgzsQLr3F&W0U;5D}B&aP-f~ECV18YA`#zN
zq}6uFWd+u+Q#-BwX)M<dwPMVBnX;Ldk3rwR%#<i#^dXGvC;sS#txV0?a5I(L*Q=3D)>
znjL1^-}W(>HQNy444Nxl-yG@-4cOra;##^g+!h-b{c#^APMu)VsE(gdG`n?bA;KC`
z<(_q18!xstxI}Bkd;M`gzOz%|&jqNf`iRK5)p;9Mxs6oZ(Gp&75e8ZL985?aD7rn<
zN#UdPChxh*wp3Xic5Gp+Yi7Sy(9VGRhJhbK?2O|^oP7_S;#~Y?EvaE4yIg?<J;kJs
zFE6N>cD2eqK$jn{rPY=3D0;qQ<lvue};H#*p`H&^ch`9M#bXUO9mX^y}*rmpC2gElLe
znLTJW`-4CSf0Og%<zz3$ITp~cT9N9~?O_!4$L0(j98em7tG_hTi`G%(#A(2MzI#dD
zQdLmgE$2e;*>$p#Y2Z<x&Ii_n)3pBN_##VRAQp9mYv$0o>VaU3d=3DUZNe5+He$LV_p
z6wW(X+32U%sxJ<XZ~<XSFpsJdXJ^z0lGW!s%p?r00d+E8k*m`|hJp;Em+Lgu(fj#z
z$2gE!YbCV$dGE~TFpidfIVvlox+vc$;YbDFiO~i((BlxC{OQe$`s#f2hv0DXmnvC)
zf0v^=3D&SK@J8{*3@bV+Cd_F|ifdp%TrF`W)>juCp(^W#$h4uTE(XK#gZb!WIQ@l>G{
zg~gtJd4Le8?~+5A_?-6I!YqrHP(7FMJf^>8tlD##+u5G*LSqM197Fs!AJf0WuGS^8
z@8oip?(NB3;<o*(ZbV0SZ;&e@3P0V<@ZZrEgTy9kXS%=3D!eAe61waJ%1gG(hOYr=3D=3D@
zHy|idxUj*qgoeayw3)qh(pb+os0sW1LrI>ZkMax&0K;_;bCMKi;A+ss_Ne0?ou$X6
zliiLYtFP!o$UcG|QT&pbT=3D%N>kliFv)TA@?{n}apJksEVZkc}D&YSw73)sMZW2kq{
z3v}Y2s<%+canzUgw_U01mrDsByTzrnhULH+l4#Vdm+X$}z(3myYxRha3Q&?~@8VSk
z8p41Qi>a`$-)jPxBkaSV2g9|Zd+n!gzgNbsqph~ipy&qgi;_@eVdc3s%#6{|LCTC7
zQ3S1expR2d?|pWRw}++TR{4>O+867hIZ6*Y)m^>)s3Yfyy|DdN3$%2zM>+*QTqFH7
zISDkZo5B0<hQT!m)TZq;8X3Fytihx0K37ZuyV~@uN*stn0PpIb#y4bk{t0(ftCr`c
zh=3DgGiq+hN?>uzP8*ISKU*$K=3DO9qbpmPWe8L-1xwRj#UHr^?tqCrhiK~`5VD-^0+Rf
zYc6IVtNhlYE+WJ0=3D32WQS4Kkws>XgjjB5xQ<RB!t!5^nqsxQv5VmH5=3D!kTga2L57D
z8bkF4N_xa%42J!t3D@-&-IVOK^T36xN}o1=3Dx>m@qu>soVV$jUywal!Sg7QdEpG~ZG
zpo@~&V7o5N`zx!UNJ;6wPd~TAZLI)d4-m+SHU}zX5mYu5Z>{O3Ixn8<(xWwAku!Aw
zjRaImtu$B=3D{olr1`fLnZkefT+9*<@1(yS#!RB_kQ1MbKXf4OaD|5J1(ipHv86uyFU
z5fxF!NXZaFp~2KdX&}jvu(|*9{ui)^sJ?et>sj~ygUBFYM_wnrpZ~qnKJ;p0i&LES
z%i!3+L!)gpq`iN!%)RVe|3*mhg2J^Ze-UdpbItadJg7Id{55;R>-FMPAPp;N@zi+J
zu#^4kN?}&7el~6z7r!qrWr3+s#)rATAuQVEEyiG~_W33L%B*_(CiqE0_Obcv((ltg
z4@wmhQE$Juf{KOY5eJ1ySdrYvX_gxG)-7&%_(nfA{%Z7?`1bSfF0BCL=3Dd$|p^iu>t
zocWb<x75X#2D?)IEkt)5H+E(4y?}G+NS#AKOf&%>0G`CxH3#_{A7{1VUiEFjF5AXm
zV|w7Uz1?9hpARs^=3DleH0y0L+{aF$dnVN=3D!!Z*&_{-TVgMBouE|_R)iC=3D(KKf+q*tu
zHpOs{XBV-q^~5jKV+qY1?r+Zj8(Dh{5M%xCpIdJGUuUaKTzw;MI}@dGN0S5gUf&xN
z=3DDP!%Ctr$A6kk<^=3DcA(BNg_a0IS1mt))JQ`<9a+u&-41zJ&0JlBo*PQY;c6j)h@)d
z-Nv%}JBB0Om)2??*FFYwxcCFEn;a4iS}E@|Zx=3Dq*Mf~j$ZzeZv#3*oBjA7^k#$%m$
zjS$|a7u>oWlPV@m^jGiqsD|29e1lHOr*m<NHY(G{sQ$M>FzY7=3DY`b;hZ^^cNk*)-}
zYp=3Dj}3jI!k(Rw$4^Xqw&XD@#BD3O;=3D1OrN_*l)B(rFj7?M8h$Jhi&3AdmlT)`@Trh
zP>uf)n__zg-2SN~XW%8FUjR-~{qdg5rouQYn*4(9)m^=3D$k`RgHWrPFLYtf-0=3DVwt*
z$<3trxz~(4MZ&z+#O-?T)4JC1K{p3+^pAVv+`K{6cg*?M6OPD6b9@^}t4f*Oz=3Dquc
zq<G=3D?w?}VDUZ5dC;+^p!EJ3YvdYfNPe~@H-7K?ML?Qv83)sH*%O$dvj<WbrVAc2&$
z{|1R<imwMCpZ7P=3DD25*)?A^~F6>&RfssI(+r~=3D3C)P4~_ok~<4Lzn8|*lK*g06+0}
z->J1M#%<sro2s0RdKi*!*5e_^yb6!a{@AEFSk~%qa3u@er0}XIdFWovAy~A!xu<TI
zr0q3&P3w~%27B8faXcCK=3D<4Q*#1Z|=3Dle3&4c)s{Ghjxi$sMX{3IyJiPC{|%%!CvZ*
z*rgy(FMa-%54?R`W%tRQHP@HN5%$P)xmy`ZGb|q{(I))3fBUNVctpY<bNju1_NW-G
zz51mdu-Wc$nV~!uEGM~ps7$^I_i6&AWMXo$Y8N{>*^0N_p<BI9N?x%GJ_2?{*ZHb-
zf%zDBuKm%(^ih{#+^%TkA2P!y3YE*`qW580K-#~gAd7aB**MoI7v87(=3DitR1G{3Hd
z3pP6XX90E^)8(G5Gx(|MF5Fv&wyM*WfxdF93<tLxRInuC`&&G0#<KOdzJ20xO?cni
z+gbfHAc)d3f|uB2P!nqTHdJoI9=3DY|ESy1a7pQ!L&3gS&Mi?>~&an|L>CJ4ppIWEjI
zLOBgx<N+d;1(hYh=3DvM9hcRL@&i-(YFm9NCDbsl7U{CS<rc4JK0_XtkkS#R%LPw~yN
zmiNO)Xi>HLjl-E{ydFG~A4F9b#QYRde|dr{yw$Wc=3D~St|Fwu{kUPks~;Py0$B!++3
zLOt^^m#So6UAxHD`PTbHj?CS2oMDb!ZC>g%#8%mQw6~8G)`eZ#kBQd(MzsslMJ`~2
zZlwgyGG0uJPNU_#(OG#vnDbS)yH<e@<L!xz1zT=3DK&b5fw`&a|3*iu6%oU0@wUO4+V
zURh2$xh3fAX+6p>@axI_)(d6}N!mBYT2$iAnw6H#L)QJ%^K@<#?2&zXS-BmMikAdy
zyns7-*%(#BC2_UyJ2ai=3D{8it16aw1scNi}B3WnM*0KIQ>c=3D8sT4t67}v!oMc#cX5v
zp#4ucP}5f;Zm`-E=3DmvOsjB(%Zv@p;p3h$BO?O^DfgF6|km}SaxA#_CT%Gl!;v(L>-
zf^64fKj;&Wk0pps_HCakEu;Au;3;EP<~{W3LHJyk(Xq*427mKArlN*owpd7(j(Vhz
z8VQTjiXtu@3YFkm?BXQo4Bw6T>34VYwxx8*S^seej@{WK(x5gtd4r78wGt|YrF)Pe
zL#<Ju)pk{QE~=3DN+a3pQz^QnjA)gyiyCkh%tul{(xHhp!@I5D7jhTs-tOxa18^2=3DCb
zwXF`)URo`54|(5zS8vGYCBG*RN6t|vw<eVcB{(9(n?CJ87;wHRsC1r|R}d?9gMhn=3D
zYN#+7!3~JA8UfJP<@9BHA6P~JlPl_JR(Mzcp{<$!2@L#q)_!tAJ@#z>OfN^1^;nz2
zu5MR|6Q#B}Yq@)^e%i!H)2km9xzPwQdf^<?`XwyK5X$STPHZ2po1iqDK6<52zr@@@
z(>t=3DdC2x68A+XOzHs}qk@7DGHs^lN~iG)<*kGsEoKhFzs{xv=3DH#e|SiMPkD&>hk;P
zge(tR6eJnKaymddNlE1i38BtQ*Xk{DQ@6Sg#4`b(7&lx1UVdhKr`~tAomKkJxj@kO
z)A8KN#%6FIDHn_5p2NoBA^%mX8G5w;k`giKcFKoxQ)f<8#Zn2Q&AuSN9swEE-zc9o
zG5{GW_pE=3DzsgQ(8Z@K0>&DuV4((^3&p_+bbr0EW3ZRHP2W)P3FyyO>u6)l?Nm<J75
zH(;7JP^<mdL1RZ1x{Ks-guuR^^O8Ndnnlx5oXcJ|#S%Kn^!DhYM9{rn#lO!Ru%(?M
zd!aB#0@M8h83_$NkC>pa?BTqM)Ea?yZG)7eTfC1vNv=3DwFYn+StDc=3Dg`w=3D3V$Jk@h=3D
zxzTGK4$BzH`<EI;G-VYFQLO1eom{(>vA-yvt~s<GH7Ihd9pr(=3DHyoQ@69%y<l*#f>
z1{7b8mu5jDZ?Bi=3DD1{kfjX86F;2lOIG|hMu^SD++JASdnu~6PuDU*-~orW>71QOo-
z=3Dfm-5Y5Bu%Aii2_3tw#+t;L`H!y~tJ$@XH3xW<6l7Veqz?Hpc;nl@UTX_oAH{C9{r
z`SWU4(OSKq?B#*=3Dsm-C`nCiibJzCuKg;L_-n1fxC`Zu=3D2MRV%>76>)CAeWHqFGYSg
z>9@705xUc2TlRE&?f4}W?@!OWezd~B%&e{#qrvojyxi#*U4|6ycOeyO?l-q4vt_-j
z^|Ae~&|3sejf6Rj=3DPml}SFjY8W8Q)&c=3DA!W5QS#~u(8L+Y03@u)n-et)+4c>+<Dd*
zUtdT1UQT@h+KN+qz(iAQFKYL=3DJnoF1@hOHJr^M<qb}A3Izk~VL4WN5<BNg-V#(IMz
zX`YDq(RXCS>KZlX5z*~E{ZvX?&CLlCP;WxOI-9YaxW?aHfJSx5Lb&^4nS-1IPx_Ij
zcy>ksz@Uf7c=3D`UlKkn{APqupp6x|Y6D`cR{f-o0H><jHZ%AB^z6kdv5t3OjKtM84*
zZ<S_xewadQ$>g7aMYk^u+n+1tkTuaoPv&Y6)zu3|7wczcy=3D+<SmO!z0AFjBps&)$v
z*jTac1ufL-@ZNV@y2tX}k}UYmWIX%@U#iVUgF&>MDsc8Itw{Nu84Y=3Dr+0)dkmijfW
z*kOjd-36>q=3DNb^mw<B(SFE941aohXO*7LfhLD~oGk{XwJpfKb6<kMTuT5)%WnbotZ
zO$!hR!%SX?arreS(gpV?APnjDw*~`(kCin&$f>`4*1;C!5RpF{;~xl&k4wg^f4ML7
z4VL&SO?tjNANB!Muoo@eZ8h(b)m|ITsPE+7U?^@%dDI=3DwPUZS~dtc#qkNDgZFbutc
zcR8#>dTy|y7HDu=3D)lOQUxjDN$Ie8HHtZw;ESAPr>*=3D*RcnY`BHK&wGD-U%<)@^OxY
z9<sKu;p!@N8J4kGNC6|t!MkYp4OKJyP~k#XC7;6|bX&V7=3D=3DfJa8X^h+<}Uya$Z5{I
z&_H)CBLLDDmZ#$%u64%C@n}9|yP$%;lCQTjDXTn$2PbnHq-?okrShTPI$&YXt)S|R
zuC!N=3D<Wl=3D2X5VYR`x*bOJ>6<^Okn6AEAA@btjW49EH>JolyZdab0P0aWN%g}ZtZ%X
z1r5oOKq2cFJYIWIG}GM;7>giGER5yJN=3Dd(I^C??q3xWa8-6w(8MQMA8Oo*eu?ggwg
zZAs<TgC6p@7#fZ7=3DU&ZwA~tP8+Y?K2@0;a+t!{S$J8^IEDiG)4vjYtTb<RozS=3DhjL
zz6|GC<1}L1J}Bh+-1iR>$I05GA{I?UC(2~Ej@)+Kv23$L0q->Tjo)HFc+!yQ$e$jI
zJ1TPq)?A)uVz=3D^dCq9$6v^<6aj?*yX_$#k&_wu=3D#d^6dN3K7pTyT}-Su)ST~$^P*2
zc|ez?xUzP9sr*n}*rtiLDiv{w+$4a(<VxU!3X<qhN(x^89aMEzxkF#s+s5i^=3DL<-n
zd!D2THqN*C<)cm2c9vMO@@X!Xa=3DmW5^^3P8kOJ2ZXB4AiGi{%dPdjs4vkE&rg;C4+
z?TrU7u&xi%XPIdCXNkWnLFOEB1y5oQ=3D}$=3DYj;c4*wz%tD8LgKN3{!!)Sy}3NLuId@
zox7>Rz;RX{+m#|$7Jt}z+-z|BSx5%=3DV<_)mLemi4<UWn<_&N@7w5xB9xRn5p<}ZdF
z9~){l>-w6MuXa_AW<wi9I1w>7MXEE|{85nBu!G!`{w^q`>=3DJUnTl8#HOk?w~W-Ow=3D
z#x~P=3D`QX$qjpwX{QN+2hIu3$*<sx#r@ybJ!f$u=3DwanDO`*uK~F=3DVx@d6mCDeOgi>}
zm=3D+l4XXkAf%@P!Co{$o|o#<()Q?*GbwaMPFr%DS@d!FVOcJG&$D=3DF=3DaD}p4Cey#YB
zV&c3>ta7{DlZTzS%L#kxpm5BORj$}!t77dDzB~fOzOFw=3DriR_~WHhr8Zam2;trT}B
zU5wBSE&WZd^o!;2GP<{?pH=3D4(%!C2GHVAV62i<a>LxzmTst<e*-%F#rooz>}EvkCv
z{Eg+vh%hyoD&xn@&uT>dQduMV)Ho+shbIuQRWM<YzUF5L{8Q_I_STj9w6+`8x0_SF
zR_)ghA1HUHH)X^wJSREMdut4?Wso610Y|yNSCua{Hl1ugmWbK#ygtU~(SvO2zrBYH
z$F6Z3=3Dk{Y(Ib`AW@3^zlA4Q(=3D!|%PI8p>jH?04DvN>m%4&IIPy`F$U|F8NTZT_Y9d
zmWZAG=3D*~5%cnE^l(5mg2z_Hz2iud1?_optulD7e_hEpS)iow~ZlgB!oAKK9(9u1c)
z&sx>3QPAA^Abz}~*3?r@D!KcR&M-LTCOu^`#9{mP+B%Fm`df<(_F0H2E(+naD!X9Y
zoL&!sVPKHcE`)NG?NoHXh$i<}@#+sC3~OSlwec|U@yvrnpTfdh=3Dp+xG;=3D+$Swe1$_
z7IT3lh!8IV=3DRP}P#xzx^Pv-Kus@}LE9`<{nfNE{c<E+!|&Om8a`9$kQ_Fb3mpDLgx
z768f{3`)#;WzHcp>KJIfe7Rw-b*h|KK+LlH0|~OwTz;MiI?LHA%#(4mv3*Qxo0(tp
zrG9uT?W+y%1@Q}cjia{XwaqRW^aV{V+AI<8>9K<K&yr1G<y^mNgnRyP?T_p&r~t?B
z_(Nq(@XplL^0YQ`G}iCU5wEd_n!lsBDr7kn&hNsK`#k7>i8H{RsvstA6#Lz0V+QL?
zp7Om#Yw$AW#N)=3D?$?IZS5A2y#Z=3D;iXUfZDe+ognnZ-+FbOZW(Jlt0Df-Df;h#4~s*
zUu<IqI3jzX-sXu(awtXYqvazV1{Z2rpau_TIB~nf?#-x#JTlg(Xb346+1wS$<#M77
zUgciXJqsWc7%b((%^7WhZ}QwrF94+EgjTKB8^DHleN{?eR$*-#bbt3M<QPl8N(<X+
z;ItV&z3K1KyO#17i&)lPJ!zCQQY{4vTG;_(mm6!%N6`J5?dWydlmK5^&Q(-uBHw9H
zhf~i<3FvF}7&P!(LMyv8^Mna%XWgRWL*7iDzan*Kvw}3xk?Lk}f#qs#YiT6Es%Vdb
zlsB6u`7xHxn7w}U=3DxSezqVkdW4t*0#$f0$NoW-DY>HtP}b!_%I1)i7Cf2{M(TD6li
zw!t4Pq9n4oKW#_X`p2lNW+jO4%-;o=3DLDSs_ApY-F>w(<g?>x(2(Qt+j3e{57D9thl
zl?wRGP5FlTwXC@!6o<=3DG5wwm=3DsK%34arsXRcIvUnwHQKR<+=3DbRTGpP;0^=3DKhSWIoD
zC{%S)6$P#e`v`qH&!hE%b}Y7-P(<lL7#SsimNAd}hO8p$`jZ{isu^EdA|O6AQGluS
z^43;Mji`1%`0Yi%ykg>-RkH{5t6_hQEu~$M;<ds?-+0Ug-`e_m-HLL#3hcZo@zqVl
z07V+Hz=3DVgfz9Z6RpKV_&>o0)8__U(~^)Cln4fyu2Gj;Frv|gHQOKW&^{%XW@WpAEk
zonhmVU~}J@v^VR@h<8rCLDA)oD9Ut{`gK>D<QiAMcZ5j8k(qlXMxpiSw?BYx?<b}K
zc{SH`7uIf51M1}2b?sJ1KYM?su$kM5q`0)Rv%ol-w?u{L=3D=3DG2&FG*!3)eS6b>(|Nf
z{ENEY+Ni~9F@?=3Dlecmefl`K0LDJ-bY@v-RUm&f&)-~IINUwV1#uot@k-788i`59Kb
zo#~;`?QgE^uec<p5>X#j9=3D&E;C{);Yu|rO*t$`*Ej&6p@OB^T@!}m|1fU5Yw*(jgT
zTv4dICU^Vm_RG6mcJ6TXL99RqJ@jI>hJT3qcP3W4!>@(@u$Os@!Uvy+8CsRYr0;!D
z0|#p!rtY`<lNlu4frj|7+g#h&0ixWN>Sr+(rNLn-<f_4CSVDfREDo;Qvga0RV169I
zmPa2fVd0;waycOfVyC*YZDX3&58`AM-~7sSuv|S1buXT)!F8txd3{tFf9+0k|9;E6
z^{;a7W0z-dTyM0->HPIxxm&JWSBd&ygZ{=3DVUMLI^0Xn{-1h~yyw&;=3DW!C5fy!ivmh
zJ${-K_SZ%Sr=3D-u-OlJFuddO{pmamhCYlt8D`5V1Ndqg)_q<NEc`My1m_j2H-?75w1
zymMbp28VBzC+#9s;{l%g97oOInRyKa{>~0^nU=3Dg#D~#kU(}$p>tLK1FcMHl}Uc!ON
zm6fJ@a$ftP0>3?Ezp_WK7;;jRn)Ax`jMy(V*V%O0ZnLA3`g@`M?Oga?dcp44x;~HX
zu|;BL4<4-i;CU@y257N*{84&gRp_+0H=3D+<hU2yJf0V&mun0ZBi-xr4Q+UQE<P$TfG
ztua~hLC?tS&yv~l>>O<HIV$C?{CEv_vfqsnSO@{50RZi&=3D6{mhFw`7iGW_xk{fu{t
zZI%nBT(&x|)AfkuYnRCuj^V+YeQjFJhVpSs*V;{w(rKqhyvz2!%k6qMd;1x^(bRVm
z5q1`_tOW`eHj{TVOTVJ=3DxYf_>*XjPS;Pag(SJQZTKD;a38lR&)+Gn!(B33NzxeZF}
zXx1-QPv?dZ7v8gU>SM+Sli7ODp|QKOD{59;Xleh{gO~7v&`vU!vO{**6UWbPZM;2S
z8P;1SK?+s3uJ&pir}z05*6pvIadmn1C-nYqHtHu(Rk_FQT*uZwMj<;MKJotAC_Q#l
z>MiVd<K<Q#EXpwHJ!-xbi@)prI4ah#_cFu1d9jC}`Ikgg$6bA8e_Fg1^~?9wf_z_H
zHwyCUVHMpTed;jIHrv$Zq-CD}?w&>Cf#;b5-QOd8_wanGE>pKt5TZlX*V#|1IO7M`
zV*_l&&%b<Jyri|i-ne${>9f5s8;ByBko+uuH^qca`W<mUJkM_*$E3Q?Wjz{A`A_Sz
zQ0QjorN)6>eO({^R;k{%R)8VKy7F%)Zp}x3{o<#D<P#xivR}~(U<txwaZ%;Sb>xV$
zi#H~}GA;zYJQ#hat!Jf<vnmj!faUYvy}YtjOOFDZRm)Mdf0J8;et)0os`0&qQgF6Y
z=3D=3De&`mi>;lwk(FT%6rzqUqlS(>+mPr=3DtX+3$LmbW<4G=3D^wv5B#vFKhJcd+6q0NWTU
z^D(ZlN%1R(T6s4ohBbxWvarb?FtHE);@vw(#NY#S{>!#Iw{QI$K+ON1^H%SsHa14z
z_l@H>S9svzT<VkQy1K!q?Vj0a&#wJ#)lck0NYtg`#DkQNv8AAC3Fk&4!|xa!a8>2S
zpTEc3BkEh@v8w`8IMYxU%yQi(mmi=3D71#3AM7FGCFunchyw;}fsu)&+DAtwTPHIRi?
zAL<QZAs`Q)a<xUja<F!zjdPZ?UUM+M56xadu{!KH(!nFM{rjM!z6I)z&qik4A+C+z
zld8}6&vO+YYkgRSwm-szKA8o|uztmNXTZU7aJjmXza@KI8y$R|?Vnt`gQ2J254-Nm
zNL9B6`}omK)U;!ET}b(;7YnbZ{s5PaB7Rir_N+XRBNqP6;9#Nu@~ga4e_Mvx+do)M
zOD6U-g#N`c_SA7eN9yZQxxF1C_hKi)3K`|{i)Nh}j+~MHVs8^QMHbtL_Ly!j#CApY
z!2mrwObh<|%3Y6ge;c+TF9k-U(@_8^p`+`i<l~d<iB30ltvK%Fs@R6cSC4>D$~`xf
zm(r^X*w<>aH^~nacu809PN%rJDvvq)p;@h?7(4hEVQ$$&IHiDT5H;w$a+d+ZF9~3A
zkP}@#bt%-dhec2;-{{lX+ZXX#Xof(7rJe#Z7@pq?Vu)CkORiM8e}?7b$oIeGtF4bT
z$R#gyay=3DbiuF>(oX%FmBx|?;k*1ogL>Sb}WPJhuu7;^W4x1t8GmAbqY%b|0PbAFfU
zR$*CMJjGKx!n%3gZkFc$9rAPB+;Rv&lT>xifq-0gRq4|CQ(C{qx>-|J&{-%YnucY}
zVSW&!wD_6V5l#Y)n0i^;>oGS*p_st1YI#YRaqFafVq%LDT7RnTK}n3Gce+6@riSBB
zL=3DH|)v)u=3DokTzu*@bI=3Dq8NSlc```tdt2mebVa@(Hdr@F5fmjsLe7!a&e-?$3*uXP$
zAdz4+?~X;y8Ap#OlfL1;RXpt*pgSpIkd7(U5W|sntHUWCNtn_m|3DS%5*jv=3D%(c9F
z!!GHaw3z2*Fizos+;6=3DM^p3LwS!?v^ykNdpF*Ls3_=3Dyk^v8=3DG2LJ#+?(&24sX0FwG
z!4iiFuC><nHM>?AO;&fea;hPr%|lN7InyK4=3DrxUhS_S4ji{~jQ;%mPwTJgtwI9+ts
z>;8HB!Op<wSM(}2??_v6HF_+sR0?auM8W2pV{Jbu+>KKN;1itKCTDzY<3l~zj6!Sy
z+lEsuwMV-;k58c&OMEikM;*WZt6l))cw3x5_X0s>+T>OV|0=3DpW&CN&S)ICn$`ybY{
zCr8%!jH|VyM~<H|zDh9`TRdBoibV<=3DmD<epButr*f6@T)d4Ct3hWPJ9*17k2kzs2@
z{2R$<_9jwuR?=3D2^1Iexb21>EY1FKf<9ffBpY<g6^Zf&(_U2}5ZVd3artMAsi=3DUQMS
zo*a^Wp^?fX|JC~PCQzeOhwY$?7PtnYaIW<3Pa9NQvqRH*NX!cUL{_5YnO!L-+T%O8
ze7cIJPfLpih7&go8p2=3D(NgLr@XJZII<l;@s*79WTI)-euAzLSrZT)q}VZlP!uL96}
zVgC}JTU-Zd(4EGwwfC(34OVOxxXe%EYs(Ks$0s|Xp1nJMF@!V(2rNMC<z!5Pg^Gx^
zH&yV2@qREVcR74boj(t=3Dgb3CAk5wb)NG}0#+5W=3DwLM*<&RNNyaFdHnH0MxSYZDXyi
zo8}opu^?jSPi<!ILP;q9dTHOe3uRlgd`>KEw3Wn7jvBF9>}vPb{4cw`HzWl%IBnzX
zCq~#LHcWBaY~L5)7SsUeImsX?n_-@VV&N`C*CwTYtc~**gCprWbjrruqDJ9!_GuzO
zaar5qB1*#MCr@o^l~tM5o%qmqdc7SA4#)b7b7(G)bN44pkWsuBa<EH6;`OK`F1|pj
z1)`&_AdrzW5X1y2B;vZgE})ad4E5y?vXmB+e4)^$=3Dk<~REUU_d-@e2=3DEQn}<)W7BZ
z&I&fWm0mtql5wy7_@m4u8P@n!AKqi?`IyICkKDZq`#xWDwrH6m5Ac2G+Xtm5%cstW
zUH{JJt+;Y$N&RTt^%wDS&F=3Dxk>*}I19o5I%(TAAtZGXf)`AO?W-!1Lp+`D)DK<$oG
z7p9{pZToEw=3DjFb6oRC4EcPed^QqO}&b3B<BClrmXYQC9DX?yJrD`at7ga{!<tJL>*
z()dK|^F`&Ou~P018G<Sc?f1H}x?}t6y|Plc3QxYy8B|K$sU(%4ha%2Xsy0B#>y9>u
z7pFCB#aotq+Rtt)#@OInkEF|R-66z37!9Pca58Td2ev|y+?x2kC(sC{4{_9;9k0oq
z>J*mihjD%`B(_br3UDWn=3Dkry*O5NS{5(qJy(oBAFxy@wVkZNe*(u=3Dzj<ug`BX40Q9
zjyF+s3QX9jEFeiQJ?aO}SkK#djy=3D1v)epw!+G3Rec6%928khWdc*a)}I8sMyX8M&G
zKR$Qt_f3a<3fm}}(q=3DSM?+xLCVlGqmyHRa@(yB(c(L}wp2wMNreiAE7%HP1WXlZuZ
zs5xJhW=3Dwt>{;JHM-l|^@TVQ{b23_<5)y2pzlA|EFvg6T!=3D(@8NAGT2)-CJZO5AU<i
z+4PI@>Q3)_>FB;>UzaGBR?)L~{jLu^B_6JD;j-B;bYi-b&p>j#lsfOfEi6DM0(COp
zt3OMJH@`~tVL*?~nE_G_sl4-DeJ=3DS-$tfp!)<g%+E{YT4M{@L%2Sz=3D572X1(S^?md
z-=3DGarHxmu8ntGqcG7DTiTi<2ALs|k-w5-lHQopqXpc**2fF3_N%n`qnBnY>NcikQ>
zG|h{MczXBzIx5KHWYkjjMD)ljR!J^rAP?LQESv=3DB86r+PNQ0I)p|-QaBZQTe<+S=3D6
z7UD^|_b=3D;TuQQeRdFYX=3DT?1LII|~e*mkxD0<syJB@ip`EcXO?%81x*SSw%VfO;O#|
z{^>#*!MVJAtB=3DI(5N#8mzl6&^aD9C~y_qkf`dJSpqO^EqmIY>}R8sa(kJ;SvN$m8(
z$XEw&ktiG&D}2^vO7gkLZLg)~=3DJ`vOQ%uWib`8o6$~mnhs()>ptl7DXqrtuj-FC)m
zJ^EagJijVur8i-m(cU0*?kY-Gr7pZJ0T7Pg4$NF-7d4YqaQ&+2nCJ@7*t|Wt&?Tou
zjq%<fsuHtBA;gQ?3CFYGe18f}9%Ef7*&w+MnGXK6!{Pc1ws!BeNoMeE7eDP~v5bwD
zFj1_TD3y&aABhiF+1Ca}d`sxf=3D=3D0P@5BORr?g}qtoGV384awWZWZQ^g|5}0M%uUS+
z`M8;HW+M1(kMb7<KUYyIbSHn)YFqrZ0X>$s%kN1UKCxO_*N)&GEai?ODUN+|O)cul
zf&THrhoHw5tW|6Q%VmC^-Hs5J)|~*3_#it4nl<RoSX{Jw3E<G<{H{=3D5%!ia(_47)R
zr>+6Fw&`f+CSDc3{Us(8tKraIHR1--=3D7+EG>g<12hA?moV?M>sVw<yiSexz#%MGcS
zFTZ6^rjTtw_17jAyeARgY_&~bO2<kg(A$H>z({tqSNdzNgZ?sa#Kr_PSIe!8oP(?j
zkm^w}hn_&u-+SScO0E<A1^Y8Oji?#*=3D|pO~VRb4M_`Q}2OpiwJu!zx$ZSKCcdU&D-
zC;l<3yNCLAI1<?NJ@jv{J7P++ULTZ@BW7`vhUNSC@c07LRE+C`{<&*)rrm+ht+;aY
z0^mZ*%hCKbpP<>Oz8dlsx%l~}*NkY*$#VB6T_*SWrNi*eou-9e=3DT2>T`2u;R7UbNP
z_A=3DCC^m*9rcZYscF=3Dv|S#nWf$JsOR#wa~cC+c6ccz4ZR_72f=3D4HkIF?N1)CG@6I1}
z7<7ew|8XDKJ9??_bA7s_6(VpKjsXU!|1q1UhF0idDnchd=3DCy{MYZXh3-TzY|^PC@2
zO4ONi^<}lnpq5O0%<rIChJ57LkA}SY$DO)qUbaq@-^c4TvL=3DOh@DX;lL1%fJJ`p3r
za=3D8WFMflrr+^7Vrf8OfNOU8O-)L719ub=3Dw_zJC?A+aeMq;RWosyY=3D1Uy&1B>xT91X
z_J2ENKVDdW*$?z(wLpRlBZel9-mBr4t_Tt(A~~zaTn`PsWy$56y>F0*odtfo?*?R%
z%NwwlZ6dKW`c_xR=3D`%%9@#gN^5F*+=3DE!tkI6jsZ~%vzWD#wq3ZMD0MK!_VuIYoWhW
zxv~d3tX)MOxIX)R8scwIGqq8=3Ds=3DGi>folosj4;}i0^;FK%NH;aY+c~+OJ8g2yd`rR
zg=3DD+)YAS=3DsZ{~I@n?Y)M`lsFz;AIHs`AVsMbFi=3D*8n?xhnJ9%Pyns46fW>}GeZKvB
zZX*33q5Ys<{X>2#jsRyQ9i@|?Su1a|-sf7oE4BXAi_fQME&0MG1^>euJ$<J0nKC8Q
zmc?j0{DgM11$07qazOUwD`4y4P#UoLu&^C5a|SXe5+2TdewzG%JG&|{uDSW_HV!TC
z(T6q=3D@6hh2Nw#9{!s9T!h2<8w<)6w<<jdld&0*EbqS;~ERc+lGbU|pmw64zUbZ%l%
z`SfNxrPaIk4$XqnsX#quliZ0Z{h_PN=3DXNd*H}Whwrk(v;EdvIt4N&?oP#4uA4*+^1
zEiYvo9*=3Da=3D9PjgB9-ZSpkUMh&c6?H9f2A59Uh(2?Fg=3D#Es!}1s6<ZM54|J~+wKGr$
zyT?ve3w(ZNnw6Qo=3DZdU!INEGC6h^JYv>hU!g6Hg&mY;vmWj<pD%){{_{YgxetkO#s
z9dz~lbP2sL`m7K(ac;`Ir(%pw-_<y-fI2+^c=3D7X^?jaD>=3D@N(#MojP4Y|m}^e3>1C
zBhGRjiskfKSaCbX{MyN1pC_ah4iFAL;{pi~+`(!;8Dl+}b{b<eU%K@86MIC%IkkO0
zMgWY0YbhSYF0<+$R%_SA8kzhpnCZ05<w-W~G_i9=3DaSbRc1i8}kCyLwuRlx!#`6|$?
zQt-b0vZS9YTkXh&*g!RBA?%bXfGo@1$`$U)T+PIcpc)qy>s>A{fBn1~bB^6F?#nQ=3D
zy?NIL>14E2Yql?tyCzp>bFVXK%?k7)*6HTB`Wlmy0WfrG#~X6YFLv0uf4)2|XIB0L
zRaRnMtJD2Q-&cgL@4?hsejvf#mmh|S1Bc=3Db+k+_|?CYC%UXv#JKq_f|_QPZNkjg>p
z7xc>b+O0IA-OWsNP5Voh#h$0n+VUl58MF6-Z48HNt-ju!<!~kq$Zfs_%Hdb8Je!i>
z=3Dy1}`YKEh=3DMgp0E=3DM6&1gBjQ&Kxj7hdSK>j&1LG|cBCWruJHqXmi?5aI@#IvU%mV(
z$1pBC6Mw9~SRKC2i8xI%z}H^NRXqQLQ!ID!X}Y>-45HQOY?+1c@gX{+=3DU;P(Y4)E-
z0;dy{$ji_zwi)n?OOq=3D4o7R>>)APi2y(?O=3DLC33&bSY_v^1X})gHBCoN^+99+YvS0
z*8YYt=3Da;*!F?h#OL|W}e-`67ddum4MYDg{Y2D_!(DiSoB%9;I7G2a?Y)O*v_%?Gn1
zB|h2vlTF$@jcUV{bb87+BpYqmaxlm*#(8rug!AWNO#Q48DDIXbR@&n6TbVfFgh-1%
z6-kl+3bhh+UeO=3DB$|*W93BuX2gOv9dmx(*s_9SfvLVm&vntJ(bvfl6nfnArhEG}2R
z-&wSCQg$mn)YU*;M_3!~<hysY`ZXnYF`VaSSMlJ@Sl09pg;@J=3D@d6%in>Y+JZEN!t
zM0gC}hqJ|#c+GrY&Wg`}uVuoTM8F&G7x1aUWfSb6qKlWHr@`~7oz&uO15ai20Uod$
zu%aV6hf?IbwWMtco6Gpp;oCN*>~pS=3D9v0@qx&3<YY`%Q??BkJd>-oxNyUP2(I{wym
zxAhuf6z9uj@RLj-CaL<fS)8dDJ4p-A@a#XHfM}Z)s}&f8#e;4=3D&8nmEd;F>5#IgIp
z;Rw*xLVZ}|#Q7Jhxly?OtcxZ5NRY^Ce~pLKi@m(5&%Jxj)dtP=3DF*(}H>iBf(*W^=3De
zTU*1O57VCEOu2{$hqttbP@)%iNMbn}yh(;s&`W$o=3D%mlZ=3D1(ua4C1|Zw$<tARx*{5
zAG6s?*-HBm8pO}L`2w7>G)S|=3DGVMA908u1)EP>+ia7AFpcQ1&yT!+G}E@$jZe~o|?
z6YLV)VZCHiUjj1A{U$;ZWnE;>afM%twq0s%`n`fSV>AfaZ33pJ3rg~mGM|4c6!Lkf
z`lJiaOhT=3Dl{R|g>EvS=3DcH}+27StE#UCBqY1{i78*O!^`>9l<fkF1-_S@KnB^X>Kn)
zP2)6>`?WzYw7TP&+wScYrT2K!foRrpsvQaIB^H#{;<meVw0vp$dgZwuoRz))vovb_
z+`e%t_i9fkJv5be>(!<@bC?>7*v8sz4n5&OPcM}`?l$prz29W|>Yo77a9a!S<>BZ`
zi~(o3ukr1$rSv&ilr9xs%P)p7NT&-=3D0<;Rt+PBJSc(b}`8mD}l&|O#5ARMtEmdogX
ze$4jqE<7YGKOIxPe4jK9_(2^j6&NG3Q?zl^^KH7cr2YWkQ0NQXhHQh|JyjksR%(9B
z`r<HzZ9>34siN?4+L)NBf8h+79Xe8DcLKy7p!65@&dV%?Io6+<XXP>A)m}&DyX*M9
zxIm~MTEoFAzDfq`Nw-BD&tb_<!#h$9(q_`fdm=3DGux!fEDx1f2tElxt+e`mc7^AhOl
z6HfskUt(aDP<lu6Th}`wxkJk(JJt7x1)Oso_x5)Gm>*90^J=3D|=3D)GyEbbdaLBa(4S{
zP<>{(NLQMRl8gq8d*uGp^d4VZwG}qcWsh)#YE5ks7uckAfc*9uFuiOx_^g7e80CK7
z6W>b>^zwLm3Zy2O<3{Uc160VE^KCblyup4hkixi<bw?&AKwZ6hoL8oi{7V3FE+d5_
zSi0fx1w8KAdh0$%C(~y&Wv$0d`7LMdYCCsrJ&T`sLtcmSj}9K;=3DIsnYT&vl$&V@fG
z;Za}c+vZVD(nfyw=3D*mnmzy+1E;B;Z%pu1QShf9^o45qN{NRL{j3!<Uj);m^44ajcW
z^gq?$)}^a`?<b+FbjG<g&<TGUMJB4ZvWnILYMMK28Cza|<`!0eJVVbDGWjt5_%NDB
zLTg){XV8g{?Zd#Vob!xfYWDB|`i;eoX0z-215zbQEhcOHH>@w@Z2n<NQ+ZhhyY8Dy
zg9_VIf9~OPYjsDxpr(F}w=3DW&Y#ceiC_pjijI7=3DgFFG2AGS_SH;Qodn^&$*?Z#>5=3D|
zu(gAXx#dB>f!;2nJ#7f}KmL}I6t4ycO?D0{M=3D2zw;|pm9J^0FO=3D5Mq7bTxv+w`a$U
z#i=3DEAiv|2vd~cKCLF~Y!S8sS_0F^k4ZPNxyMs7&`Ia~L<<cKJs08qD|U2S8o{qaiG
zfsJ;IS2)zy%e2xPtgmQ3poR20Z(XM0r#bqLTQ{ZJ&~NKmvkmZOOfN`#n}_G+(cC?`
zF{E_wCbf6)6lD5Ip@YU|vUQ-sv%=3Dl36Kfreyrt!u#0Bv!_db4az3cw>TcwusE9SgY
z;Y_C?w!-(Nefqek=3D=3DS(Ld|H{lILRd;JQZOM^Nu!9Oo(YOTad(LP8^qfv2iL$cAp~F
z(cS>modbsro?C+|x1TvW3sEodKV-v~Vp;3mXJ%hx(KmX_+UG6y5GGXl;+^F!y4NU9
zO{aB*J2`*|#vy=3DY|19b7RGea%x6UM>aHE8H`b8=3D?7vghayF%SgY&g5OoM01X&{pNZ
z40kq`?l(4L;9=3D?7*|hiVv=3D^Q9!|AYTuG(W2Mks;xDqwK#pGM!ptg)zXYXJ)|*Y-+@
z2d&ljaVbXI;vyYZ3np;_hDHxBZ`KZ6zAM+Ar}Ef&Q*GEje(6PFNXBt~qR99oWm1-^
ze=3Ds(!c>C*PG+0;jjXRu`H3MP-;!&|p?}rUcerf*oT85vQTjV_M;)jEDdRMLaP>P>N
zn1^#EK*W_Fxw#~89J>L<oOg@yX=3DkR~3y|743Df1|M0cJeLcdqq`AZqJO;9QIFt%TR
zmO<JhecNaN>P_ydfa&DAS$~x6P3OPJ^4Spuoy*1ss|7lT{;JIgm)gr&!c@q$G=3DIi7
z^N{LuF5GM?>o!w=3DohK(zKAhtzR^1;2sFU|Yd;k*9aeMfA%40*$|K@IqC+@AuSpHNl
zwd%EPH_Mk}FpaqGb#q(PQGc?h&g&W*P0wfm<{9Sr4N@qXp~7812%mtWAuV_JqdVPk
z*u3e%JXs#S{%%ElM{hO~J;AH&ZyXsGvg75DHj0(Eqr4pN;L@c(bKQ!9MW10?dFQvi
z<hUw{g@cj@p(BuMPEn^Pz-CsXCQ^DHb>2k5Y1+M8899VE%xjtmblnX4a7n$=3DkOz1^
zha6UDkLcoKo$Gcpt#gVt2mBbt$M;=3DIf6`Xl&7(`lDOAa}cvub4-OyZ)*FSq<Y`d#c
zS5vic>;NTue}m+4^RxM<ffwz3jw2Dsju|U0a#pU-nHyn)Vif`C?BqvI5Y|9dw!mqK
z=3DA)!YQ3alYNEw*@UUY@Prj?_a>pC{1VPFC9@!yEqJWFdY8HSxzHsAezu(KenGfRlS
zLdl)=3D;tjny?hhgi-Vm-Aw~J3iEmNgyZ@4^8Dz9Y!Kv&@s^Sr7W^=3Dec4q8z^Gbq4)T
zxL$E_r7dS}#&NBx^1W*&njgpwS6Mp1hq341J|C#ZCUx+Rr1JbLNe!o$+IZ;KlgoPi
zH6Ohet1W3gKfg=3DjQuQ3c3&9w6w-T?6Lekpvs~$eeqo94p*h>N1`hGy19Y1+=3D70X`R
z|M+8h?ey*uML((nFj=3DF?T3I8mZc65L&DHOQW<F;)=3DsZKc&AAe9da*VNxCCqH6vp^}
zu<^J+=3D4cO>aLK9+T1#LbUiI}Yfdw}f^|!cHxz=3DHFwN;OpOET>~bHW+DPYBHuIb`VB
zg?cQivz7Wb6q~Cb`&)aFRlA|w{wi7BQyW*LUpbYkXx^R=3DW!viw<_>#VV2|g*l3=3D|>
zHjH+{mZUv!te|^smvrWjpa;Vq_Knol?avz(S*nuOjUYVc?yqB7TF$Jr4Ov*dR7rZl
zZBtVN@nq+`gRFhq<=3DfwP@F)>RaZv^1BIFad!nal;<D!fHnQh~&^q_(r<k|dh^kmTq
z&f~vEjkXLldgyIfTGChX9t#F{`Kf55(;~)sxZVEdy4kqRF(?cQx0)Q{g=3DVL(R<m+P
zBnKd)@{IGTgO69vyvrM%)m#lFn87}qKbriPpst5`gBy9RDw<8m@dRk3Bcy1NGYRMG
z?kXPrtP8%##iI-b(yVqnlt*`FS=3Ds6Pthx8jy`5+V&BF{4*ap^{y!5Iun(_K!URpI^
zc2R8FVb_z(Vj#(4>u<HVb@FPL+Sxv5m#gV``!H7H=3Db59Lp}XFLc0jIfpC$hI#~2WI
z(|*oY5dRQ49Hdsw+YOjlj7pE!qy$`?JGG>H2;Tfs@KjFUkJ&A^;JU#zf0~8gf-rEF
zMdD#KE8i7;l|0L0zdD3uN^FPKemP}{fe+^p<(?P373-(1x66T@5rNODst>%X9Tg;b
z)BJYM3woL_Uc2oc^vH*5d$HZTLTO`&xxXspvb^{kJRyMQWGZgGNwIaRa*4Sd5QgjO
zW9vUgq4g%yHh9So8Tr?TTvWs@Wx-DH;5Ixn!=3DsdC&Qf)i8=3DE68qsRNdeE+whf$)ex
z(%{|bovljNFZ7-HrhS!*myB%a=3Dd4rdZ8QCdkd6Cw&W?7^l?F*zpD71Sre@AlevJs3
z78{6Qg0sJ#MrX|46oT`v;WIqr^wAGwK;Y$rRTNWiiF7>LsqL_jfJOT(xqS!wGJSBV
z&#cA~mCo7#kK%Hk+Cy$?x=3D2);QcfrB{<Y`mYdooK$*ueBy$Q>atqK;7pS*T@u6qq3
zYr*-VF?U<8C(tH%tx<Q{YeSOSu|L6DYO=3Dl@YE7h9uxo6B)cUWIc010=3Dk&Ae>nNxQ5
z9>7B9x#NoQ^xfghz$DePORN3Ct2?KwM%;xBnbh0k7$zikIANvSvEX^*Z$Nb4xs|XR
zah3fMcx>HhH58Gd^*G$7Yvt~(hV_F)AnQ*Lu~ymclDL1|uoWJ%YlWyZIQUm+qf)1i
zZQrNP<nVgF_tH+I2&Y&WU1qbEGvIeya2+no!{H0zeeggxH_C{*o<7{}XnENP*5grH
zHd>8!{16ZGH!44NQ#m@<v6de_`QGS@U`JkWy@KC-((6sdQ+fM`<zc{pff@=3D~+^#jG
zTtR?Z<Qt>uyPxQ_VA1JtYASboI5*y%t2L#An@NSqgD(14EGUKjOg+fQC!Lj>`-)sg
z8VGP5Thq30UHXv8<x}2~KCY>CKKaQ{sFWV3UUS%G;5g`0lGAwQw>y`nr_3z5w!%%=3D
zYol}Y0KS+Fa~fm7xVJ{=3D*;&`z3;bZ374GUXU3P~@Z!W;*@HZ8^aVpiv?7fi#L2D5s
z)(L)xq>17J0;e}WUpT|7M0-Oy(-nAr5Ym0E#P8(dovAv=3DY*5SD19KKm<Ez^tF<r#V
z)5omVo@jZn{Qd=3DKoS*x@G&oQhznE^!kr#>0vV?o+gog?iOLP{6U5?LYN_A1p9H5c4
zNSavoPv1{lnGI{Z-XDC|s~0^Vg6oFgHdT#x<TLnlZtaY$VoCQqE7n(8yH*)7D^s}b
zJ^wo{q1m-6qeTwrjPOn_EFcWGfr!uCZ3$UVUVgLc0XUp!*UO{mvRi2PlZAkQy;%Ia
zo|fkV1NKj0=3DsC43>o3ho4e7ia{r$a7<9X|D&FI_yCm@Jac~<R>b~!$796b9?M&WAP
z%`=3Dz}g!LJLHGt3O8->@o1?sB@*Lo(FDy({?t`rsTV$mzn)}mZad1U^M)`)w7A$0GE
zj<|Q<2p-R&U+ulOb#eW%u=3D;P1D^HIDstOLf-_%2tgGb$>adc|jen;VkSX(@gj+;hq
zTb@?FYn-a;6W;hD&&si;y~yGZwR}!R4!690c+#sPK;Vu1;)a4I33+kyaXPdYC-fS#
zkO^8d!I$KWPk}6To+bTE5ynpJYxlp)d8^gb$FQR_86<UgIih7r@2U5wR0QYo_K#$*
z+rRdOW@mBu#3>18nR2@~EjPu*m{__$#4iz-l)gM{d!yQ?5<L5k7xP6$bK9Lqt~U?d
zrwEw_F(VyQz@a+mRz=3Dv60b&OH_qUzf*^cWAQ6tJp$z=3DS{YWKjE2NyQS<b=3D+#?0O*M
zp0<JYD#Vi_=3D1i)P3n;@WcFS=3D;A-#8Vm*9P*wWN6!<FLeGr#(!6_`y$`<cqm1H)2EU
zt36A(mR}@F1VE9R!`>L-))z4>bnEa_{`cBjm_f{~$6XP0P>U9dzqAMJRiLj#DPCS3
z>N~UT3u=3DyZEH0Yd+~G^tHR+j5U)MOorx4tZ34L4rt7Oa>|5d(&`NeCkmiyhd^)Q=3D*
zeN>$tPFJ^&x2SuDyKd8@YiUQP7USAD50k4VH=3DJz?SDgp_kH00Fe~vhMKp6Aj`HUcV
z%<U69<*Y0=3D*kqyP3U_vU-VUIS+Nkcf*7Sfj+d{mThj6P?5ksO1M`u^9-*w||XHo8e
zt8ZcrMCdGD`rB?mg28nQ35>12_G>&t@P~IF&*xVcH_@P0U_lKppus_%?RPt+hgIv-
z!Y_~1_(m}Q6PNEpZ*D)2>r2UVrCXMtzuVT~0vh*UjnYi43biE(yZB<M5HFUt?K<tN
zNgjL^Pp+wR3TCzLaV?0Cx-`E|R_ihVW#Zwu&9qN-uUGH?^@#)on)~M68733Gd2Jxh
zO867v?c(k%gr;?h4z<Dth3WzXa22jL{GHuv_jEUc4d1NgJC`#^5OOY*g63d<U&1!9
z;gJI@_diGH+Gr>nM&aM0s3bX*LQ#|ya_B(L5+ah?{Qvi!_rrXh*?X$zxeseyD@wX6
zs!7V)Yj<3CO54rdTm4S5e?TDEvzeQP-d}Z>^+qlAnkiT#>LY93g(=3D*ju#%)=3D>31o&
zs~mT8h*QciKeX#kqtC1h`Z?j&!uQ|&+`rx)#^FGW798*yUYo+!M2t{uH5b<O<CNX0
zPI(}FMJ(+;l1b;r-<(|=3DH|l8~b{64AtgbbU6(%6~UlZ4w6U&ZR4@&*Tx1Q_lT4M1N
zo<70eR+qnu(`3YP+@|Mky4q6C?rL(v28VC%Xn)>M`<LT$um$J3n0cq{tayc>osDya
zYMgDwha%KfJw3Na>u-0vAHq-b7Ok2{$8%m|H@4{SsO3=3DY-pG?f%r@O~H=3DakJ&?T;q
zUVpkz`qu&GjPnznw|;+l^E^Y9HL_*h92DMXNPd7Crr#X4LH<Len|nrI#&NF*)a9Ig
zIfC@FQ|{TLsFC*Sx%f5f<h$6aSVrII!v#&n{aAjggJntWRQ733ElIX{D2*}lFEOwC
ziX|OHc|injODzK>z~+fsHSb<S*6$1Bct{q`7gqcV^-ugY>xzte`nIa9m!NW4QF8@}
z<jBfF1J+yDMni1;Dbv7oJP3u_CBR?jY2LpT$#3lo!OC>Gq|E1Dxdh%feENRBx9N57
zPsqht83UQ<O5D~a0&!AY(P(7sB0APy_*2{_mCfMD=3DkJ$q!G7O}XW`5n5b=3DG+Xmkw?
z%o{*~?LBqEv(cuFsGViwbeiQ&5bMFyck2hEwCeovji51s*Lh2;Na@>aoGemA{TY*x
z{Uu1wi&ArAHM=3DeJ<LtQK$~6vl54(B8{oydy$Y!~N?t69*Ez*_Tcv^Y%TgGDcs}$)*
z5Q6GPI)TdUJs`leBx`MASnmM-D=3DIcL=3DBG@;<J;K#*_R}TQ_Z~>#*8`G-F#LQEr!C2
z?FYE#01cD#iyG`8SEppUT*S|$&;XO!eJdQuvYu@b*u2m3qi22ewVb<zbQk#{8Es3W
zD0@yG%4l*-B<Fa^!X}&3YhG7bc0;eX4InALLFwXOwX2oZm-7=3Dlw>QP=3DH2yo6<S15@
z<el1`ODZ0ItH;_Z!7X-%)K=3D!hG*mTdst`{rPtHzI3rkA!{T@fzgiYwTX9$nvg^H`-
z48TBXdmTYv7|>PYR(Odcs#4|-`$BkmMC@Zn!m{!=3De@!l>Kk|0nbRPLTsM9~Q)??}e
z%fPN3_s2h1S>lcMbJqk9k;Ixb#rc$VNop^!ww(`R!sPV#G8JHq_EW{SnjtN{i~;g(
zt;FMKBHhSNBAexkd-`g%XAyG?XX*^U%SC>^j@MUxTOH-ao?7{V`8qV@Nk7Cl=3DWr=3D*
z+c$CeI(_{ctZhrH{%e*`o#w~IwoSj)$Gnxi;p`v4B6;a7-I9ln#)iTnu<t#M3r)H{
z0~a8u2&RPLg^<BX#R=3DN}wZ{z(PoU1H%`75b{UZod`}-hl$oUVxdqqbW8}XNgE=3D!X=3D
z@W1|spAFIIG!Kj3eLZiewH|V~LLECOH~D70YV*UJzk$;dbtHr}e^L1k61(VVY#!aV
zfZ(saszYwVWey2{GS+$%5>>k->)sNa*tAT_z2hqpxNenRPnNJzgVa?sDh1yo?MjVi
zr9|0seRcRd$g>=3DpLOoUi1WJDD<d(mw4L@h|ydLlS+ydMV^A43$%xckCFZ+f@Tt4-s
z1F2GT$22Fu(ez@LXLwh~R#O=3DS54R)=3D@jY=3DXo(@{nd&>Oyy&a$_1NNp6)PsLa>E%25
z2h#mx*c}&#MCY<xS&vge95=3DEY;6?s6`+sAjQKQQu9Dfuk_Y*TG#dUU?+{QNQWL+eW
z^Yf84Zb0mR>|xtkIW|V04-AmnX-@Bgrk8j;yT1@}7aQ@;^z%IrmWuQa-BdfY6FsNH
z*$X<v;@A{gP@AFa6sMiZ6|B1{jpa}*eDhhfuG#geW5$IREx?0F%9!@;;r(Ed4CbGi
z$%F2qF=3DS4NRXfSD?%iMQbF8dOCHLIF0JkW>AOv@lpvx$2k6N!n%rSr}`H17HP-BVN
zaax-NtDy8H5HIoH$f&<5C<o#5iBj))$U`_Dq~E{@1D;FkTQ<y7m-}P%BEc2<BY#Dv
zGDR$kxAyBi+#BdlevG5FJxKx-6dICd+!3}<X!W;XyjarlE3@cuwv*jkaf?Wf+agtj
zjs_ikL8_B-aQgm037K>0(;>h6)fH)ZN3_jf-dzhL|8}K;M4&(X51M?M-(l%dg6?Gw
z3D3%Nr2W0tVwdE@#qb(?<KiF67rgAU|2QQDvP^Zxd1kp_R;gy~KRBD9d!>3mwN{V2
z{iim9`t6kg81igYfG!_Nbe%gSPe8s@e^&p57ris%-MjVpNV@F%E7g@hgRgx+%Cbv(
zm1Fb$oIBmSa(-QFk30MJo7sx!Le&9!ewr(>a%(lGaugBT-d;gFQUwONzf~P;|IQGt
zazRq7lP)?gi&vg$J{wc}8r5vKQ{mA?R~C+RrYU^6gfB0+f>QmQz4qpj+)T2N#=3D+%p
zo`V}X-&s%S>%DwAWReZ8<s2}^-wM_v+qSA4I_kC2HU7%cW_hT3BN2USi$cd2Y4`ZX
zFKte=3DgShflrc+2}=3DMSyt-)`P;k0PLp8p?oPNx|;7SHQ`&G(X|%ewa<XyDX&dC%G7}
zrRFqO(c_NsE$)zZU!NfAR;|2-QD;~CtCZ_a$QWB(iX-bf9zQhe#1s&|)!*hO&Fa*u
zjkIHht)g+K`&<rrvTDGbpR9us7hPm@f!%G;cm7>`A;e8<TjR2-kDSvMMau5zHC7hG
zkbf8Rel~69?A-9CN-Ytbalg07@$J2-u@s5)y8GpRa|J&YccA$2TI*c_ObVM3_E-xQ
zCn)tc)mqcDm%(Y?I<nR3A`ygou&rFXjDD`nm8!l$WZhkFwvuIc(Za6(*FcA&ZE9X%
zRa?CXzZ(P<nuio!K5qzV#=3D&HF*HdR3K_`B}O|C%|r^l7=3DuA4l6?rpW;*`DldS*%3G
zzX>f6wAX4^C1wL_!sT5Fo$-gn@P~zu9f+2d{qBbe$u_*(jq?H8^&X^U0VtOYGvg00
z`J(Vor54+~5~T@UB~>wcNWbcP+*m>0fac6F+8?(*m(yPdN6Z0gV0ZV!%@><?khFFX
zUb`p$#?fGNyY0|V6_WZ=3DvvC*BMA>dF(vjV0OuuQlkT1d<W{TSM>Snnz-W^Et-07p`
z;f1j<$s8XbiN|ep2nym^QlVD$s+zN!JA=3DR6VNuU?cek^5X@Me}MSN4Y*a>>rA79e=3D
z_BAF~fI>RM=3DivuhRvIQG^n_jwU*n2}+oPdZZl8ZoCwR*G_BP+1tW^e7tYz+|qVSgt
z*yw(Z?ziY_^2e9^2Yfr~iQYa?MNQ8A7dXIJWB$<xKln_H@85_xQ|L>rWAMHBmp1C3
zcCB9PUaQ{O-2<YUhYY=3DZB7L{n4Zgqj#TAX_Jk;g+hr4pM{X$ZUM(5z1f<7Rn6q&wn
z{#<+8DfXzO3(6JH(mw_`Z<N(uu7m$91-e&2Kf#ot(3*kJ^^*STQ+C2xr0jmw*PRyZ
z=3D^Nxa<D@u`aO>b*-otVjv4+t)<JW&VTexee6!oIWB3fP?ETlx<bD`Z~yB`x+9YQB$
zHu*o;S)e4eiR}HyI`~+`oj2yA$Ge{^Bd_r2!Nym%D*R~QtnUgHr=3DRp7sO5rAM-RWZ
zeCCTuUK|`Xtn_y&cKIr@T)uY0XBH3h3ws2*mq7m;F;@0~9{C+<y{K}WjaR!m?fb(J
za@^OjI(gj{9-j=3D6Q&PdSjP1c?L77joXAk)DD|`>L+Sg44H)RVWQMD>YePQP>u{~IW
z*JZz}!=3DIJZUshK0H|Q=3Dj+XE#s3{vu7u-Mk5U#@g~8lLh+4N#$DH%ZG)%B7H<t<hRR
z{T-re5iO9(&H-PW$~ULD+S^w4%Iv!ALa4*w?{?Y|JF#-M{l5LXlrH%EX@HOKEcD`S
zZ?V^lhLz8Q`}N9#DWk$y#{^Yk&Dk<yw)>F?N}e>kRE~4r?<Li$!4#HVYML>T^uE-t
zh$%jcrBc5$IV=3DA_Fx|@iXi%TWb7w$T4gShT({EGd<=3Dra3V!AFvJ|cQ#j85>JD(@RP
z^6>7|Yxg%UIC+cBCJ;o=3DXYNW%AOl#63`>j8b@h2aPEbBHuPFRR(_nQF^~SClqD`<P
z>`Hr>DLKDzN-eA$-+t!*8sqj7t*nxEc>g>6xiP`^?sT3n$}5zw4qg~pil>cMTGcHr
zkfT9lMozUXK(bw3iIUC%i8kjhsgg+Lp1uFDL;5G4mNyGDSA2pB<$uD#lW=3D~R*0{G;
zH~wE|aLiTp#RS1-Qm;HaUbSa7iVouZBNnoPyyv2*+lUY>2LT$LaVSx^a1iu$)~`9w
zzw3QF=3DaD67W?tzUVVm&u!KXU%iSC=3DRMIpLXg;EodpB?tHpB9B)$Z*IbMY3%8P6~yS
zmB+~1jp%rX@y>(Wv$0x1t3%BPxJdaGpl3sXpj_&{OM}tjJsu}ESWtJj9dvwQ4?Mcp
zZoN%l8$JX17WVqAaWlL$ab?)q1LQX7h6>=3D|<3oP`o<XFo5Dv?}q`sb$DRNvtr7hDs
zLm-^e+d*DiFz61ho5@dpO}eisM#uZ<s}9fQK>PFh{kDtXJ{W&)-X_d%rR+2RlwmTq
zLwvpw4>o;>CWr}<SiNq}L`+V{$;{svqZtHrM^>v83ti6qDqNRWLEBLxD($uHGsB~Y
zaet3v4m$CI4r~AZuOl93)oa7enV<U-Z-w6mUk`)6_1Qf!m6o{oqQ!dAdmk=3D0!<FeC
z?|oOs&htmlwDXfgcBtv1-T_;I6D1A)b@Phm40@<2dF)L%`RU0@r^zbL)tjwRP8$|+
z00_5PSnt<zSF``?yBK$fSNY{|qo?Sx#(A1cW(OFjBK^!gR@8Y(+Lwe}ZEZDb8B=3DJ=3D
zL~-+J9Hwqa-jLO6GT@;XLu0Tge;~^2#Z0)tm!Z_eT$tlc3Dj5^ECy-;h(mkOo8+&o
zD20o^)$F~oaqd9W50l#pn~t4*>6T~e%fBc&f>LYO!`s#`giZEekSB4#<$?EY?h*9y
z&E7_r-n6$1SHaIOjA?Guhx8Y7m7S_7oBv^z!}PT{DqZ4do@lCGtv$Z{9L8^@Q;%#Q
zVsG+Yox7+gzsBqYEJ*;D4d2vX#A^^%`-R%l6>ZF`R8|XNMM$5f_MjK}UY_$0Pc|FA
zZkww9uEKuu**uk6!seK{J#d4J>iTP+mCTogbtx)Y?j&$_VG=3DV5io{Sw(Q_UoY|}J@
zXkhp6Tmd&a0=3Djfr@+U%WNbj+hN~KrU9IwY(Ay@OQYL}^50|fO_;H2Cn#^Xs53{2C<
zNID{nw_ecTJyXl*RcJ`zBmF$*$M1Wz)biD9xTBxPaS>v7L8(#?Mt{gBs!6K}giPe?
zi2%eekij<*?I^o{*qHd_zEX=3DpzGyd-1^_=3D%vrj25i!1cV)%v(!>DzxqA$ECvlpx<M
zcRuVVkZ555m7Z8yuf-1f%2$9mC%}W0{R2ZDRRiO8;ljD7Ov~e#XXn@S3hVDkc$Qqc
zF;yE=3D&K{`y1nt#I^IRvX@nyhw)|T*JVnSf_a=3DwNA<1oTnIOp9~UuLtvbTW98XSqIG
zA1MyKTIR|6#|Aw9W!&$E)5lyE@0HUT$U&ww)YCMz&C<@fD9Q1DFp2p#rqI=3D?*^Xyh
zdbp9@mRIMA=3D!zGCEOm8^ALM>(>#};e%5(Tv20ADx&!f!(Gq%b(YXeAj3361ltDIiq
z6hc;NuBw?%t<ji;+w6Nl906^s&ZN~cAPU73r848bE2}nCo05Bs+STu5IpgywR{iDC
z(`EtuYnWTM0I&e5X#q@_PiUuwsMo>6cJS4dd;BgN<?9r1<ku^{$RcxN?7f3n;EO11
z{d@2E5Vftmy^~)whcJ)0(y7~`S9vQ14{~bU%~!a5u@QzqZFyPl+^HojS1X-t-lkMd
zI_<4)-dE+zB*QlZm{(hxyhv-@P--;RDMXz#tGliW)1u_n+!<}8%6G5n^(sBA1U?)U
z69S}XXt1}rN>$A#$UNN0op}E;-rGFSZl4)%GTnEra73q_N5nyD^j51jW(ox>ZQAql
zo2b*df5h)=3DPcP&d-2-6HR_MNUMhg1-v>aS(*oLM~>@OP=3DjWY0%=3Ddacy9>TwZAF*na
zR%){<JFg_n+0iY&DqEi^yNXOLFQaP-{6~-at-xo$#s0$&X>2f>UB^@FdQP^*&g@Ik
z@G_ybL=3D-;#Ka=3DYm(5U_Xwwg>Y-AORd^r3tG%*K;T!9QE(n?JfQ^bHCog5tL@@)dv%
zPDG~Qfox*)`fZxN;^YgYg@d%}zTF+1DeR9b-~s3TM$#IR;<b^yxbIj(`WwjI%^iQY
zC;Og(m#2L>-WE4U`)l&cV<Q*&N)N}XQ%L_k(I8DJ4jIuPSJYh?HTiV|q^J05sR$t6
zIS!QWo~n#?=3DKW7|;KLs7Pr6nO|ArY;|8v{gWOikir8wup?BX@ezk4XXyFBAqXiVz`
zkezN{@=3Dz#oD-3_u$9+>>&hCYqQFrdn$JpZe<~KNITyPeYTNf);MZv38QB0FiW_~p*
zCyx5Ve||PAG5qdiZ^4lRDm6xGR3`3yC)iz!CHw9E6GFj;Bvut*5~b!^?xecy+;W=3Db
z9V?yF)T8xEW9%Mqvi#mMzw1yXzQ<v#CJ-SxRtHb)_*s{m5!o3k8YVdO0gd6_*W*m0
zj^5dn7bbc&Rkzsip5eLWMK>Dn&Hw5Q%uzq~Og_$aK?_D>s_Z#n#LyoX2kDEi?#P$^
z)*Z3?{WTiuvqlg_bC`*0pcgM+Pm06hqzW@wkc^_a`v@zuzdE06(wdW%3g_xDc#W$a
z3w?=3DFL02ENskBXIO4(vCE3d+&ux7}I9v!#8Qp*{$^ZwgikFev9+=3D%T8g5iXOjmS=3D?
z9?u$%0*t#&*qI4!Gh;_<`_)$Ip+%#?Rj(-DPLb+7&&F*y{Zh+=3DUz-uRbY#LfWDk<o
zgL|AdDS0}BoRaroGL5bfJ2t+%=3Df+ER>Adt;zs*mzBA1i?rI@h`ZU|6KrZvy$)Ztbq
zGV84qxPP$9n-wcRokd~c+y?vdPi_Mt#F=3DvsS%=3D$I?$qA<bw^sv*4UET;)hB3<-8V<
z`Tcr@W$@4+%Sb%9@;gWbfgN9Rct~(36~lrr=3D0=3D5&3rc=3DI|9tk{V1#Jv%H~Vr<RQ}l
zHkAV8v9(9>?UQilM|ITdiP!NvY75xKkH(rhzj1|9xen5x>Lpid|EV(0mnIs#$^NlY
z?tCsSr@dBA67D`q`-jr6#-I;sua`F%@GFoY^Sf+^?wF&Gi93IpiiWgJr<<!iQNfr!
zbW-awomZP`x#>zB{csi7(o6r2uI0qNh#5GAvB%eEo%@<j0>_meogr_jECJw%=3D@ViX
zO1U*`FBJwX(+On1Iz&kQjm;#aToJ<8>ZjgApU!uFrTwV$X+^zP-p^Jxj7cd!>r6I&
zd3#&`pZt|GzSd_hHU8GtL6(Jlo0yw5V^R<zKd!!14P$Y`14u5kv%ns{RyMmlRW?*B
zcULzFnC!20NV8dBC-s4r{&?rRTW8m9Lj{&VUnV6V8CTE|oMXU!uGTJb8E15%cb=3DL!
z*+YcK?Nk0UnkVKvlqIjWc%Z|#4rWPwcJ4`^?n`cEfreei%6-#v{)}AOCHUJ6JH^3a
z0f9L!Bpz)d!#zvlz5kC2h`ia^zy*}VORJ6^i!#%hUX8o5PS?}#ihKG^K3lZ$(`1>*
z)H~1=3DjFSc>3-NXvVfy?>$DYh(VoA4tO(u7xXBnUO`$c2ob=3D`fO+NUeVWZ>dlV9IM!
z%B33Il1FOq@VnM$D?Nj?^kEOr*JH3~l!;&Mj5CJuXU2c(>a3vCvI!G=3Dst}65WLvjx
zL!l}x((Nx+cW<@A)$^sv5k;#{Tz`9r0Pon<s6QqZZrl4E#1sYmMCn&i&NcPgB9Eg^
zt}b^@#!^_Yf-#lt`1U#B#;koATPu`tv8%hAr-X3W?472t9ON(6vtR!?#?^NfUTN>Y
zIe%C>z%3?_zrx=3DccW~7!l$Qu2{b`EYKSrGc)+*IHwrGNWoF&S#cNm~L!IfkALaH&I
zLM9K`F2~mJDtzg7xLM9A+`V6ua9C_zx}f`1%7d>^BPs>hS8@-!hhY8T7FT|EF5oRh
z{&e-e(_4wHErlN|jXP}UAkwOITN3ypa@3{W)cfEctISqYZA^fz9xa6JPOH4NHd{4b
z*T86am0>?%n-yk1dG(<hzwi>O)x0H_&dTM=3DmY<Bcfi$7tI6{^SFi<LVR<!Z)dk=3DCr
zI)8YJ%u`Z6w~o5s=3D+9@9P%Xc;{jFW;TJPK>5Erddp_T`m^?U&m-<c8QmjBr4<fpRC
z7g60Vj({i}-RmQSe4DSG|89JX``Ms<uha&@0Y3q1@rt)^Ul_F?McM&I!rzq3i{ISq
zxj3r{H}UgZBvf~GT~4omzx-`P|B>&sNO%qCULlH}6?^x+eVtF~)|p*8<>rFo+oQMs
z7xSGC4Rr|OzWIaSm^CGm!|X{nqGzSr(DOk+9Ide^d0r^zwn{}jHB8sd!f;eK^4O{V
z&IXG7kDnah3H_4is>!C4trI^Vm8#hQEA^{)Ax-bAwF*%yMDZ!;k6q(D1zMP6Talh~
zi6GWZdQ(+}%lfN_D?=3DP)uWt4u#P4Nl+k-1$;UD8(J}_B$E<L!y=3DDn>^u@K95_qXU=3D
zN{7yUPbI>{zLLL4496%r9hUU=3Dei!=3Do+|V8^Y%on;)@wZ+=3DJM(|!B>l?D)isN^M0H9
z%lp`^WRW^LOMq&*w!curgjfFgx9I1^)-mjJcgok$)A&*`(pUAoCy(9gU){S%<)zH?
z%b}gM#*JzY@#Y}!u&iqAme0jQXa77%PW#w4p7r>WJ<SS&_Hd~n-f?|=3Dg3&2>tj2+z
zBO&BwiXY2F9h7YeUitp&+G@wO9>r^^DHh!DD`FRdfEWBUH9sGOpgWpOPWtoW{uj*u
zyaCvpJ4Z-9+-YNbo53QlXp>oChd&UcEWtYlwGR7zG>crdzZ1rFvxh%Z{cyrhFAxy-
zo&b}O+dI6lr8Sex{gqGqVv8(@Nnu8EbkTT?_`Ul#w!^=3D<?9>+gI9fuY>gCniHP>xd
zT%#tAO~5lk{(z&5tCvV$vL!fOjNk(?DAzbPH$-nzR^^5Fu@9}#%Kz;eSM(3roRL*{
zuPUXDQgWeJcDq;U)?jy8#TPRKkO`o{oMkc0yr%o=3D$r+>ny4RTeJQjaMRf=3DlCf|lr&
z<@Ia7w$kQV?Hzh8XC>Qzh1GYqTJ-q^Ngf86+Tk_c=3D^JWGQ?irQ+=3DuA)Pnub2f5;Q=3D
zS?md8;`AXo61$$upJ^4kq%K5{|J4gRtkMeWDj#Z@+X73Ly8LvLU4<(C{Z>5K_QgxJ
zPxtPzTGZO3XD8Jg_?HvN+II}v#uT1{9y8+WGVebKlMk3fE}Ly#nCy-5UmZ5@(Jd$i
zi`A`ke$+F~c?FZ6NtB8+tv=3Dr`<HLD8erh>-R8a9tShR$fRLIfO;%VdiO+a`Q%;r^L
zCt)MM*9LGyz65|t3^^jF0ZWW{aZe5QT`(W(0$$5s*0HIFd*+~Z8mSd}MUu#6zfbvt
z8a2xD0e5~+2;roRRWd=3D{hBF(83t_W@aq1(_aJNH$pPiD$W3xI@c%QG7?$>(d*I+wF
z*cHa(1H8#yL))Iq(J@u!-d#bh;?FFe^MxXCuNJfM)~_0+sf~Zzeka~W3-W!}yoeI!
z^Z8q=3D92S3P(v^t$^%O3GdS$Tb;g9^cbp1r=3DwZ19X!*6hy+~KZ_ji~%Yy<ff&Y@l4R
zS@mk3ujS1p2C>ODZK18ls!|#KC9S@KX|;E@QV!OPM-+G?wehpv?-_uy2KUt(#mBXr
zfIY?&nh&t)2A$L37;moMz#mK6@?lh-v?uM-#;Tsv(`y=3DVP2t-D(cM>nOSg+9LkO`#
z@oRUgdO^d^jta9m|F->QtPxkyQ67<SL+M83-+p>`f2oZ7!O7pDp3+#3IjmoTr$5pE
zDVF!$ru2NE8bnkoq)eCffy}zx9b=3Da_uFQN!ce@t%mgP(!+d1S?A9C&c4dNfEW<!w~
zR-U)nZ%x;d9n`LyFGkTEGeX04Z9N#y0a^rFg>drhOsn-|uvpimXEI{OCHHY{-PM_E
zoGnd;LC@iKsc#D&<X5IIfG7<TZ@c;aKC|BOFJCEHypqSkjH2qD4Lx7v>89HSmf$0%
z=3DjMr;Hx@8Yo^5(%bk+WmA@xf*ZurCXQ+98!`%H8Jn*Ib0MBrF`5ph0!7o~lpj@biL
zYgUP4J(7rO_c8u`pl9;c(f}Ia;8W?}WHqg}hE<PXH9v?p|40;Q{~0TB(_XEL!$)BE
zX>wpO-~fWDm*|h-Kj#iMz6V6sj5w`q_s-|B%-799L?v1`w(v^svnw(S{*U?NsdaY*
z47P1MsB`M0qKFw9C)$2YKy4XL^*hYT7lTr&(Q7&Gyv8MLQL2L!9GTSR>*&$f78G&$
zA!57OJ2LBmFux~_;<)$*riWH@mTFcke?Y1pql1EGE|09YG*)$~lih2DCsC+@Yv7Jd
zw)cY<n*KEQ!h|7bHiSTS&fC!>o7B2@oS$?W=3DJki!{@()Ei}afYaNh)-0c&2j!D!t^
zYff&bXJ)gf?Hawy;L#XV=3D~fa>Ca$G2_Bw*+vY+<M64=3DU+@xJt33sNoplOc5eQtr>B
zYpt>LAZcv2?GyLDcLD$IczkhG%br0n+IH)9rk&~_J75r}E<;F56G9yY;T@JnTcEwh
zHFP=3DI1<f7Y`*`fs$)W|h5FYy%;{LQ{zpL6|IIK}*h+PXu5Dpm}!e#rVC3a*{s#NXu
zXqyb5pM<$E9eo#E`lri=3DsxJe|K)yHR*MVi4x~vt`bWpD+r82nD=3DkwQNX{sRF-hM5%
zl)lURYBzt8$FDw8#-}jg+}0pN{yEV9v}ttt-7urj%hwM_`*273l2FCESw1tO;s#{_
z;31!nO)0fyorx=3D)RsPgo)DGsBp)l*HT|?X+T@X)}3w05K@96Gq>hAwa(DI0O-&f>m
z<x}J;%23>=3DgI0Ea3O)8oD81*T^qoO6K-_1;H5pJzzxYO8q-ls<f7KWpon(c}YuJmu
z^1+B0f5`_m?UnoCNUvA$>w$oE9C4X9rE0NxytMsI{!@PRjzCen+z(bqe=3DjmM9?kJr
z|BUbEUrsA#c6oY!nl%k~$^tIXyDf=3Dx%gcNl(D3aarH?4IS0%Nfe|R~^#Qu3dzANpw
zvFjuPtrV5_=3D`#b{&c`u7`?GR>vir3+J)*;Y;b`~ucygT?x4UJyke<Z%k1KE67srbS
zW*0U7@HL;+k`3QWTiHI2IK`{!yj55s;KTrFWPyFl_9-~#{Co4;?T+43y<Ygp;oHPm
z>Y{JTb0%*Wh|OX6*J~wPwLa%A)8XX=3D4BTX$c54erYKu}ZmffpS2$NnOD03~-4Vs1K
zV(>j20|%Cl*T;K*TI@FPh092XP0=3Do@PST)L4D*ItEcxv%N;<ICSl69r?fGIl!H{)w
z>2C*CuWmozV&W5xc{fNYow)6Yfs>!@4?uNaadj?fV=3DLFcY_G+*w)8qBpz94I*d1f#
z!*Vq4-?iR9r^per>>4y^%A+$bf-`4+Xg}}}Au^~6Z_l@RYrep3JgRS_tW;a_26=3D*N
zeEFq*PWd2DfYSfNr~T{-=3D>$nvMBPOVQJ(=3DPG=3DpIF)i=3DdRD6%t)+v1H=3Du=3Db}X+x=
A}w
zEPB+M1%az2Y-qQ#pH_S5Kq%SV&YZojaYty*&m?Slmfhn=3Daq2Jc(B`Q;JL#W&p=3Dq>%
z#pM5vxYe%?YaBt$!TMrGck)aO8n7Xr+;&n>IEdhg$p+KlbRSNaHzhu8kAv*@W|c%`
z_Senc^OS%IVA_+nyTM=3D2`z&{rIGUT%%)!@}PB$_DZjjz&NQj!m%{E=3Dw&Ivo3FDLIS
za9wuK+h6K;Vc?@3qYZyj)e5;$MI}EAY=3Di2-1haUS_^uDL8Thu~g!!XiF!rvD(BxEO
z#uHN=3Dlt}@}tq&d<ZTb_$9eXGwr+<hamJ}F3k);(09V6B4{pXQqW#r_{9mIH#f5oL(
zP8O}&P~_P|xz_Msyf>V204|2U(oI}uTC6*beTl8pZ%Wp-l(;`08sbxWT)Y*`3H)U*
zAl8lbEroy=3D@|H_h(=3DR%lbvt4M)%-Cd+FYS}){SxH*3316;=3D9IUJ+r%V)6F!fQPw}&
zN&md?>Kvx*CxTdS1y_71Hs2MlzY$bD4fukS#V7WJ=3DduTZdZ)qliuK7RFGkReq%1ak
zZECkitLDxxMF@#dP77&Y?>k@hHVa^S-0cx78B_$=3DU%oMlKbIdc^0>5dCI{zl?;bEy
zmH@u&a(r5qinV*$Z!s->X_hXJSa*LbX00P-?3v%@$`XFWnaxs*{@9CixXxF`qHKIl
z^~L<ulZBP&)#0l=3DuT&nNA6Aeivb|PzX*eg^o5S`xLrOZ2BaMX~iZaIepYc*42!Fp5
z-cV>}t^5*E$VSjR!qR7*%#`A!J*|Pcf4+l|RIfa{CC{poPh`P!p?{goFU$tnBE$vb
zBL#-JEZwdDK27$l?pSnZB;SO61m8*Tyqd4}4QcV|uFj7^9kQ<6R>h&*lifYw!+FMS
z^?uVdtim>vvFGUVl0RREj3#{&eiz4o&!f<f24!D}zeME!L3JxPmwA^x1>M4-Cy4Ep
z6%cQTR6@WaC#=3D(OqR3LnZcY8<Kz!mYQ(K?T>hXiU{`i^QC2yL1zEUkel-e<9GQ$sa
zd{5)e`MXN}jh^^W8nr5WMn?Gjr+F41e_M`xpJD*B@B+Ed*Is84Hc_wo0)|PF+IjT0
zR+gVGvIf_s?$>5>QTTA_bhQuqr4n_U<q&hP&*t#EDB#oDm|Jrz0SP3A!0^gpn^2qc
zVRhd#_r_BDfniclbF1jAuuhZ2%LSu+f1yrs=3D8>ATY(2eDfK9|^{A(}F=3DAu8pT+_o6
zDLyLM%-sX0T7wEUFlS%8r6%@hGb&0Wga<9cHf}LgG{l&zu-KW|9E#(K%`RU~Hm-uw
zzoZJWoSpi#P{E4JK&~*$`Fo1ElqwFr;qHAemx-0Mnybo*yC{teHt&kG1B+uGEI;MW
zZT#*sb)~VVoZ2bAlns2;3wuc2PjT0OOF!*2g(Mo_-yaLp@$mzom?jY3u-m9U8_O1e
zWvln=3D;Eum4&Y*e0i|;*LwF;nhVPhp1r8(7F79Z$(WTTk0vAv$P!w6(jMI`U9qcZ^C
ze|Y8HMH>_>+EU1C|8~xKr&sHJ=3D}yNS#Vy!c%U>9DwSs?P2XCwPOV_j2x?L&ubI2FY
z<g8+<JyT5jwOUet<}2O67mvK6&@Dm#>XGR6-)dR(C{@5$Z4e%u)@vpmNY1zrHY@K*
zX%gGYui;ZsRWZ3U<o?8IJU+zS2$08;Ki7e+53>u4co~fTqvMU*_dbJX&=3DB4waVP~X
zy+Y#5T!o*o-_1wh$EVWL@WKtzexq^9X2j=3Dy&!Z5f+0EZO&BxEn4cNOf&R>PY`SLnA
zohr-5MrS#);k3kkyDCu(L}-rdBGNM7z$l+g5FVMW_+ZZbCf_$$en;Kc<KPO_X5$|1
z0pX-)%3
This message has been truncated.


Re: [PATCH v2 1/6] OvmfPkg/Amdsev: Base commit to build encrypted boot specific OVMF

Laszlo Ersek
 

On 11/20/20 19:45, James Bottomley wrote:
This commit represents the file copied from OvmfPkgX64 with minor
changes to change the build name.

This package will form the basis for adding Sev specific features.
Since everything must go into a single rom file for attestation, the
separated build of code and variables is eliminated.

Ref: https://bugzilla.tianocore.org/show_bug.cgi?id=3077
Signed-off-by: James Bottomley <jejb@linux.ibm.com>

---

v2: remove secure boot, smm and networking
---
OvmfPkg/AmdSev/AmdSevX64.dsc | 867 +++++++++++++++++++++++++++++++++++
OvmfPkg/AmdSev/AmdSevX64.fdf | 461 +++++++++++++++++++
2 files changed, 1328 insertions(+)
create mode 100644 OvmfPkg/AmdSev/AmdSevX64.dsc
create mode 100644 OvmfPkg/AmdSev/AmdSevX64.fdf

diff --git a/OvmfPkg/AmdSev/AmdSevX64.dsc b/OvmfPkg/AmdSev/AmdSevX64.dsc
new file mode 100644
index 000000000000..852be757bfbe
--- /dev/null
+++ b/OvmfPkg/AmdSev/AmdSevX64.dsc
@@ -0,0 +1,867 @@
[...]

+[LibraryClasses]
[...]

+ VarCheckLib|MdeModulePkg/Library/VarCheckLib/VarCheckLib.inf
(1) The following two lib class resolutions are missing here:

VariablePolicyLib|MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLib.inf
VariablePolicyHelperLib|MdeModulePkg/Library/VariablePolicyHelperLib/VariablePolicyHelperLib.inf

They were added to the other OVMF DSC files in commit 435a05aff54d
("OvmfPkg: Add VariablePolicy engine to OvmfPkg platform", 2020-11-17).
This dependency didn't exist at the time of your v1 posting (Nov 12th,
in my time zone).

But now the new platform doesn't seem to build without them:

OvmfPkg/AmdSev/AmdSevX64.dsc(...): error 4000: Instance of library class [VariablePolicyLib] is not found
in [MdeModulePkg/Universal/Variable/RuntimeDxe/VariableRuntimeDxe.inf] [X64]
consumed by module [MdeModulePkg/Universal/Variable/RuntimeDxe/VariableRuntimeDxe.inf]
They are required by
"MdeModulePkg/Universal/Variable/RuntimeDxe/VariableRuntimeDxe.inf" too,
not just by "MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmm.inf"
(which is correctly removed by this patch).

... actually, for VariableRuntimeDxe:

On 11/20/20 19:45, James Bottomley wrote:

[...]

+[LibraryClasses.common.DXE_RUNTIME_DRIVER]
[...]

+ QemuFwCfgS3Lib|OvmfPkg/Library/QemuFwCfgS3Lib/DxeQemuFwCfgS3LibFwCfg.inf
(2) the following (DXE_RUNTIME_DRIVER-specific) lib class resolution is
missing here:

VariablePolicyLib|MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLibRuntimeDxe.inf


... So I think that, for (1)+(2) together, simply the "OvmfXen.dsc"
hunks from 435a05aff54d should be incorporated into this patch.

[...]

+[PcdsFixedAtBuild]
+ gEfiMdeModulePkgTokenSpaceGuid.PcdStatusCodeMemorySize|1
+ gEfiMdeModulePkgTokenSpaceGuid.PcdResetOnMemoryTypeInformationChange|FALSE
+ gEfiMdePkgTokenSpaceGuid.PcdMaximumGuidedExtractHandler|0x10
+!if ($(FD_SIZE_IN_KB) == 1024) || ($(FD_SIZE_IN_KB) == 2048)
+ gEfiMdeModulePkgTokenSpaceGuid.PcdMaxVariableSize|0x2000
+ gEfiMdeModulePkgTokenSpaceGuid.PcdMaxAuthVariableSize|0x2800
+ # match PcdFlashNvStorageVariableSize purely for convenience
+ gEfiMdeModulePkgTokenSpaceGuid.PcdVariableStoreSize|0xe000
+!endif
+!if $(FD_SIZE_IN_KB) == 4096
+ gEfiMdeModulePkgTokenSpaceGuid.PcdMaxVariableSize|0x8400
+ gEfiMdeModulePkgTokenSpaceGuid.PcdMaxAuthVariableSize|0x8400
+ # match PcdFlashNvStorageVariableSize purely for convenience
+ gEfiMdeModulePkgTokenSpaceGuid.PcdVariableStoreSize|0x40000
+!endif
+ gEfiMdeModulePkgTokenSpaceGuid.PcdVariableStoreSize|0x80000
+ gEfiMdeModulePkgTokenSpaceGuid.PcdMaxVolatileVariableSize|0x40000
(3) The above two PCD settings are conditional on NETWORK_TLS_ENABLE
being TRUE, so please remove them together with the condition.

Right now, they override the settings in the just preceding blocks
(which depend on FD_SIZE_IN_KB being 1M / 2M / 4M).

[...]

+[PcdsDynamicDefault]
+ # only set when
+ # ($(SMM_REQUIRE) == FALSE)
(4) please remove the comment (only the comment)

+ gEfiMdeModulePkgTokenSpaceGuid.PcdEmuVariableNvStoreReserved|0
[...]

+[Components]
[...]

+ OvmfPkg/VirtioNetDxe/VirtioNet.inf
(5) Please remove this driver from the DSC file too (you correctly
removed it from the FDF file). Right now, the driver is built, just not
included. We shouldn't build it.

The rest looks good to me.

Thanks!
Laszlo


[PATCH v2 0/1] CryptoPkg: BaseCryptLib: Fix buffer double free in CryptPkcs7VerifyEku

Kun Qin <kun.q@...>
 

The issue is in VerifyEKUsInPkcs7Signature routine of
CryptoPkg/Library/BaseCryptLib/Pk/CryptPkcs7VerifyEku.c:

At the "Exit" portion of this routine, this function uses X509_free to free
SignerCert instance and PKCS7_free function to free Pkcs7. But SignerCert
is part of Pkcs7 instance, thus PKCS7_free will release the memory of
SignerCert for a second time with existed routine, which will cause page
fault if use-after-free guard is enabled.

The patch fix is to free Pkcs7 instance only using PKCS7_free.

The v2 patch includes changes from updated git configuration and reworded
patch to include review tag.

Patch v1 branch: https://github.com/kuqin12/edk2/tree/buffer_double_free_v1
Patch v2 branch: https://github.com/kuqin12/edk2/tree/buffer_double_free_v2

Cc: Jian J Wang <jian.j.wang@intel.com>
Cc: Xiaoyu Lu <xiaoyux.lu@intel.com>
Cc: Jiewen Yao <jiewen.yao@intel.com>
Cc: Guomin Jiang <guomin.jiang@intel.com>

Signed-off-by: Kun Qin <kun.q@outlook.com>
Reviewed-by: Jiewen Yao <Jiewen.yao@intel.com>

Kun Qin (1):
CryptoPkg: BaseCryptLib: Fix buffer double free in CryptPkcs7VerifyEku

CryptoPkg/Library/BaseCryptLib/Pk/CryptPkcs7VerifyEku.c | 4 ----
1 file changed, 4 deletions(-)

--
2.29.1.windows.1


[PATCH v2 1/1] CryptoPkg: BaseCryptLib: Fix buffer double free in CryptPkcs7VerifyEku

Kun Qin <kun.q@...>
 

REF: https://bugzilla.tianocore.org/show_bug.cgi?id=2459

SignerCert is part of Pkcs7 instance when both have valid content. OpenSLL
PKCS7_free function will release the memory of SignerCert when applicable.
Freeing SignerCert with X509_free again might cause page fault if use-
after-free guard is enabled.

Cc: Jian J Wang <jian.j.wang@intel.com>
Cc: Xiaoyu Lu <xiaoyux.lu@intel.com>
Cc: Jiewen Yao <jiewen.yao@intel.com>
Cc: Guomin Jiang <guomin.jiang@intel.com>

Signed-off-by: Kun Qin <kun.q@outlook.com>
Reviewed-by: Jiewen Yao <Jiewen.yao@intel.com>
---

Notes:
v2:
- Git configuration update [Laszlo]
- Adding review tag [Jiewen]

CryptoPkg/Library/BaseCryptLib/Pk/CryptPkcs7VerifyEku.c | 4 ----
1 file changed, 4 deletions(-)

diff --git a/CryptoPkg/Library/BaseCryptLib/Pk/CryptPkcs7VerifyEku.c b/CryptoPkg/Library/BaseCryptLib/Pk/CryptPkcs7VerifyEku.c
index c9fdb65b99d1..40cc39afe7dd 100644
--- a/CryptoPkg/Library/BaseCryptLib/Pk/CryptPkcs7VerifyEku.c
+++ b/CryptoPkg/Library/BaseCryptLib/Pk/CryptPkcs7VerifyEku.c
@@ -508,10 +508,6 @@ VerifyEKUsInPkcs7Signature (
free (SignedData);
}

- if (SignerCert != NULL) {
- X509_free (SignerCert);
- }
-
if (Pkcs7 != NULL) {
PKCS7_free (Pkcs7);
}
--
2.29.1.windows.1


Re: [PATCH v1 1/1] CryptoPkg: BaseCryptLib: Fix buffer double free in CryptPkcs7VerifyEku

Kun Qin <kun.q@...>
 

Hi Jiewen,

 

It will be great if you could help me merging in this fix. Please let me know if you need anything else from me to have it merged.

 

Thanks,

Kun

 

From: Yao, Jiewen
Sent: Sunday, November 22, 2020 04:25
To: Kun Qin; gaoliming; devel@edk2.groups.io
Cc: Wang, Jian J; Lu, XiaoyuX; Jiang, Guomin
Subject: RE: [edk2-devel] [PATCH v1 1/1] CryptoPkg: BaseCryptLib: Fix buffer double free in CryptPkcs7VerifyEku

 

I can help to merge if it is approved.

 

I will add reviewed-by tag when I merge it.

 

Thank you

Yao Jiewen

 

From: Kun Qin <kun.q@...>
Sent: Sunday, November 22, 2020 3:10 PM
To: gaoliming <gaoliming@...>; devel@edk2.groups.io; Yao, Jiewen <jiewen.yao@...>
Cc: Wang, Jian J <jian.j.wang@...>; Lu, XiaoyuX <xiaoyux.lu@...>; Jiang, Guomin <guomin.jiang@...>
Subject: RE: [edk2-devel] [PATCH v1 1/1] CryptoPkg: BaseCryptLib: Fix buffer double free in CryptPkcs7VerifyEku

 

Hi Liming,

 

It will be great if we can get this in. But I have been having trouble sending a v2 patch that incorporates Jiewen’s “Reviewed-by” tag through git command line for the past week (no other changes). It kept giving me an error of "No host provider available to service this request". Please let me know if you have any suggestions.

 

Thanks,

Kun

 

 

From: gaoliming
Sent: Thursday, November 19, 2020 9:39 PM
To: devel@edk2.groups.io; jiewen.yao@...; 'Kun Qin'
Cc: 'Wang, Jian J'; 'Lu, XiaoyuX'; 'Jiang, Guomin'
Subject: 回复: [edk2-devel] [PATCH v1 1/1] CryptoPkg: BaseCryptLib: Fix buffer double free in CryptPkcs7VerifyEku

 

Kun:
 This is a bug fix. It passed code review. Do you request to merge it for
this stable tag 202011?

Thanks
Liming
> -----邮件原件-----
> 发件人: bounce+27952+67567+4905953+8761045@groups.io
> <bounce+27952+67567+4905953+8761045@groups.io> 代表 Yao, Jiewen
> 发送时间: 20201114 8:32
> 收件人: Kun Qin <kun.q@...>; devel@edk2.groups.io
> 抄送: Wang, Jian J <jian.j.wang@...>; Lu, XiaoyuX
> <xiaoyux.lu@...>; Jiang, Guomin <guomin.jiang@...>; Yao,
> Jiewen <jiewen.yao@...>
> 主题: Re: [edk2-devel] [PATCH v1 1/1] CryptoPkg: BaseCryptLib: Fix buffer
> double free in CryptPkcs7VerifyEku
>
> Sorry, I missed this email.
>
> Reviewed-by: Jiewen Yao <Jiewen.yao@...>
>
>
> > -----Original Message-----
> > From: Kun Qin <kun.q@...>
> > Sent: Wednesday, October 21, 2020 10:32 AM
> > To: devel@edk2.groups.io
> > Cc: Wang, Jian J <jian.j.wang@...>; Lu, XiaoyuX
> > <xiaoyux.lu@...>; Yao, Jiewen <jiewen.yao@...>; Jiang,
> > Guomin <guomin.jiang@...>
> > Subject: [PATCH v1 1/1] CryptoPkg: BaseCryptLib: Fix buffer double free
in
> > CryptPkcs7VerifyEku
> >
> > REF: https://bugzilla.tianocore.org/show_bug.cgi?id=2459
> >
> > SignerCert is part of Pkcs7 instance when both have valid content.
OpenSLL
> > PKCS7_free function will release the memory of SignerCert when
applicable.
> > Freeing SignerCert with X509_free again might cause page fault if use-
> > after-free guard is enabled.
> >
> > Cc: Jian J Wang <jian.j.wang@...>
> > Cc: Xiaoyu Lu <xiaoyux.lu@...>
> > Cc: Jiewen Yao <jiewen.yao@...>
> > Cc: Guomin Jiang <guomin.jiang@...>
> >
> > Signed-off-by: Kun Qin <kun.q@...>
> > ---
> >  CryptoPkg/Library/BaseCryptLib/Pk/CryptPkcs7VerifyEku.c | 4 ----
> >  1 file changed, 4 deletions(-)
> >
> > diff --git a/CryptoPkg/Library/BaseCryptLib/Pk/CryptPkcs7VerifyEku.c
> > b/CryptoPkg/Library/BaseCryptLib/Pk/CryptPkcs7VerifyEku.c
> > index c9fdb65b99d1..40cc39afe7dd 100644
> > --- a/CryptoPkg/Library/BaseCryptLib/Pk/CryptPkcs7VerifyEku.c
> > +++ b/CryptoPkg/Library/BaseCryptLib/Pk/CryptPkcs7VerifyEku.c
> > @@ -508,10 +508,6 @@ Exit:
> >      free (SignedData);
> >
> >    }
> >
> >
> >
> > -  if (SignerCert != NULL) {
> >
> > -    X509_free (SignerCert);
> >
> > -  }
> >
> > -
> >
> >    if (Pkcs7 != NULL) {
> >
> >      PKCS7_free (Pkcs7);
> >
> >    }
> >
> > --
> > 2.28.0.windows.1
>
>
>
>
>

 

 


Re: [PATCH v1 1/1] CryptoPkg: BaseCryptLib: Fix buffer double free in CryptPkcs7VerifyEku

Kun Qin <kun.q@...>
 

Hi Liming,

 

It will be great if we can get this in. But I have been having trouble sending a v2 patch that incorporates Jiewen’s “Reviewed-by” tag through git command line for the past week (no other changes). It kept giving me an error of "No host provider available to service this request". Please let me know if you have any suggestions.

 

Thanks,

Kun

 

 

From: gaoliming
Sent: Thursday, November 19, 2020 9:39 PM
To: devel@edk2.groups.io; jiewen.yao@...; 'Kun Qin'
Cc: 'Wang, Jian J'; 'Lu, XiaoyuX'; 'Jiang, Guomin'
Subject: 回复: [edk2-devel] [PATCH v1 1/1] CryptoPkg: BaseCryptLib: Fix buffer double free in CryptPkcs7VerifyEku

 

Kun:
 This is a bug fix. It passed code review. Do you request to merge it for
this stable tag 202011?

Thanks
Liming
> -----邮件原件-----
> 发件人: bounce+27952+67567+4905953+8761045@groups.io
> <bounce+27952+67567+4905953+8761045@groups.io> 代表 Yao, Jiewen
> 发送时间: 20201114 8:32
> 收件人: Kun Qin <kun.q@...>; devel@edk2.groups.io
> 抄送: Wang, Jian J <jian.j.wang@...>; Lu, XiaoyuX
> <xiaoyux.lu@...>; Jiang, Guomin <guomin.jiang@...>; Yao,
> Jiewen <jiewen.yao@...>
> 主题: Re: [edk2-devel] [PATCH v1 1/1] CryptoPkg: BaseCryptLib: Fix buffer
> double free in CryptPkcs7VerifyEku
>
> Sorry, I missed this email.
>
> Reviewed-by: Jiewen Yao <Jiewen.yao@...>
>
>
> > -----Original Message-----
> > From: Kun Qin <kun.q@...>
> > Sent: Wednesday, October 21, 2020 10:32 AM
> > To: devel@edk2.groups.io
> > Cc: Wang, Jian J <jian.j.wang@...>; Lu, XiaoyuX
> > <xiaoyux.lu@...>; Yao, Jiewen <jiewen.yao@...>; Jiang,
> > Guomin <guomin.jiang@...>
> > Subject: [PATCH v1 1/1] CryptoPkg: BaseCryptLib: Fix buffer double free
in
> > CryptPkcs7VerifyEku
> >
> > REF: https://bugzilla.tianocore.org/show_bug.cgi?id=2459
> >
> > SignerCert is part of Pkcs7 instance when both have valid content.
OpenSLL
> > PKCS7_free function will release the memory of SignerCert when
applicable.
> > Freeing SignerCert with X509_free again might cause page fault if use-
> > after-free guard is enabled.
> >
> > Cc: Jian J Wang <jian.j.wang@...>
> > Cc: Xiaoyu Lu <xiaoyux.lu@...>
> > Cc: Jiewen Yao <jiewen.yao@...>
> > Cc: Guomin Jiang <guomin.jiang@...>
> >
> > Signed-off-by: Kun Qin <kun.q@...>
> > ---
> >  CryptoPkg/Library/BaseCryptLib/Pk/CryptPkcs7VerifyEku.c | 4 ----
> >  1 file changed, 4 deletions(-)
> >
> > diff --git a/CryptoPkg/Library/BaseCryptLib/Pk/CryptPkcs7VerifyEku.c
> > b/CryptoPkg/Library/BaseCryptLib/Pk/CryptPkcs7VerifyEku.c
> > index c9fdb65b99d1..40cc39afe7dd 100644
> > --- a/CryptoPkg/Library/BaseCryptLib/Pk/CryptPkcs7VerifyEku.c
> > +++ b/CryptoPkg/Library/BaseCryptLib/Pk/CryptPkcs7VerifyEku.c
> > @@ -508,10 +508,6 @@ Exit:
> >      free (SignedData);
> >
> >    }
> >
> >
> >
> > -  if (SignerCert != NULL) {
> >
> > -    X509_free (SignerCert);
> >
> > -  }
> >
> > -
> >
> >    if (Pkcs7 != NULL) {
> >
> >      PKCS7_free (Pkcs7);
> >
> >    }
> >
> > --
> > 2.28.0.windows.1
>
>
>
>
>


 


[PATCH edk2-platforms v1 1/1] Platform/ARM: Add VariablePolicy and SafeInt

Joey Gouly
 

Fixes the build breakage introduced by b6490426e320:
MdeModulePkg: Connect VariablePolicy business logic to VariableServices

Signed-off-by: Joey Gouly <joey.gouly@arm.com>
---

The changes can be seen at:
https://github.com/jgouly/edk2-platforms/tree/1561_fix_variable_policy_v1

Platform/ARM/VExpressPkg/ArmVExpress.dsc.inc | 4 ++++
1 file changed, 4 insertions(+)

diff --git a/Platform/ARM/VExpressPkg/ArmVExpress.dsc.inc b/Platform/ARM/VExpressPkg/ArmVExpress.dsc.inc
index 6f4621393a9713705e360a1c9ad019a6ad93a0a4..b0a48d6c041c35f2c7de6b02e54ddf104774c7c9 100644
--- a/Platform/ARM/VExpressPkg/ArmVExpress.dsc.inc
+++ b/Platform/ARM/VExpressPkg/ArmVExpress.dsc.inc
@@ -36,6 +36,7 @@ [LibraryClasses.common]
DebugPrintErrorLevelLib|MdePkg/Library/BaseDebugPrintErrorLevelLib/BaseDebugPrintErrorLevelLib.inf

BaseLib|MdePkg/Library/BaseLib/BaseLib.inf
+ SafeIntLib|MdePkg/Library/BaseSafeIntLib/BaseSafeIntLib.inf
SynchronizationLib|MdePkg/Library/BaseSynchronizationLib/BaseSynchronizationLib.inf
PerformanceLib|MdePkg/Library/BasePerformanceLibNull/BasePerformanceLibNull.inf
PrintLib|MdePkg/Library/BasePrintLib/BasePrintLib.inf
@@ -140,6 +141,8 @@ [LibraryClasses.common]
OpensslLib|CryptoPkg/Library/OpensslLib/OpensslLib.inf
RngLib|MdePkg/Library/BaseRngLibTimerLib/BaseRngLibTimerLib.inf
VarCheckLib|MdeModulePkg/Library/VarCheckLib/VarCheckLib.inf
+ VariablePolicyLib|MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLib.inf
+ VariablePolicyHelperLib|MdeModulePkg/Library/VariablePolicyHelperLib/VariablePolicyHelperLib.inf

CapsuleLib|MdeModulePkg/Library/DxeCapsuleLibNull/DxeCapsuleLibNull.inf
CustomizedDisplayLib|MdeModulePkg/Library/CustomizedDisplayLib/CustomizedDisplayLib.inf
@@ -227,6 +230,7 @@ [LibraryClasses.common.DXE_RUNTIME_DRIVER]
MemoryAllocationLib|MdePkg/Library/UefiMemoryAllocationLib/UefiMemoryAllocationLib.inf
CapsuleLib|MdeModulePkg/Library/DxeCapsuleLibNull/DxeCapsuleLibNull.inf
ReportStatusCodeLib|MdeModulePkg/Library/RuntimeDxeReportStatusCodeLib/RuntimeDxeReportStatusCodeLib.inf
+ VariablePolicyLib|MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLibRuntimeDxe.inf
!if $(SECURE_BOOT_ENABLE) == TRUE
BaseCryptLib|CryptoPkg/Library/BaseCryptLib/RuntimeCryptLib.inf
!endif
--
Guid("CE165669-3EF3-493F-B85D-6190EE5B9759")


[PATCH v2 6/6] OvmfPkg/AmdSev: Expose the Sev Secret area using a configuration table

James Bottomley
 

Now that the secret area is protected by a boot time HOB, extract its
location details into a configuration table referenced by
gSevLaunchSecretGuid so the boot loader or OS can locate it before a
call to ExitBootServices().

Ref: https://bugzilla.tianocore.org/show_bug.cgi?id=3077
Signed-off-by: James Bottomley <jejb@linux.ibm.com>
---
OvmfPkg/OvmfPkg.dec | 1 +
OvmfPkg/AmdSev/AmdSevX64.dsc | 1 +
OvmfPkg/AmdSev/AmdSevX64.fdf | 1 +
OvmfPkg/AmdSev/SecretDxe/SecretDxe.inf | 37 ++++++++++++++++++++++++++
OvmfPkg/Include/Guid/SevLaunchSecret.h | 28 +++++++++++++++++++
OvmfPkg/AmdSev/SecretDxe/SecretDxe.c | 25 +++++++++++++++++
6 files changed, 93 insertions(+)
create mode 100644 OvmfPkg/AmdSev/SecretDxe/SecretDxe.inf
create mode 100644 OvmfPkg/Include/Guid/SevLaunchSecret.h
create mode 100644 OvmfPkg/AmdSev/SecretDxe/SecretDxe.c

diff --git a/OvmfPkg/OvmfPkg.dec b/OvmfPkg/OvmfPkg.dec
index 7d27f8e16040..8a294116efaa 100644
--- a/OvmfPkg/OvmfPkg.dec
+++ b/OvmfPkg/OvmfPkg.dec
@@ -117,6 +117,7 @@ [Guids]
gLinuxEfiInitrdMediaGuid = {0x5568e427, 0x68fc, 0x4f3d, {0xac, 0x74, 0xca, 0x55, 0x52, 0x31, 0xcc, 0x68}}
gQemuKernelLoaderFsMediaGuid = {0x1428f772, 0xb64a, 0x441e, {0xb8, 0xc3, 0x9e, 0xbd, 0xd7, 0xf8, 0x93, 0xc7}}
gGrubFileGuid = {0xb5ae312c, 0xbc8a, 0x43b1, {0x9c, 0x62, 0xeb, 0xb8, 0x26, 0xdd, 0x5d, 0x07}}
+ gSevLaunchSecretGuid = {0xadf956ad, 0xe98c, 0x484c, {0xae, 0x11, 0xb5, 0x1c, 0x7d, 0x33, 0x64, 0x47}}

[Ppis]
# PPI whose presence in the PPI database signals that the TPM base address
diff --git a/OvmfPkg/AmdSev/AmdSevX64.dsc b/OvmfPkg/AmdSev/AmdSevX64.dsc
index a3f75a626e5e..fa2d1d20d551 100644
--- a/OvmfPkg/AmdSev/AmdSevX64.dsc
+++ b/OvmfPkg/AmdSev/AmdSevX64.dsc
@@ -812,6 +812,7 @@ [Components]
gEfiShellPkgTokenSpaceGuid.PcdShellLibAutoInitialize|FALSE
}
!endif
+ OvmfPkg/AmdSev/SecretDxe/SecretDxe.inf
OvmfPkg/AmdSev/Grub/Grub.inf
!if $(BUILD_SHELL) == TRUE
ShellPkg/Application/Shell/Shell.inf {
diff --git a/OvmfPkg/AmdSev/AmdSevX64.fdf b/OvmfPkg/AmdSev/AmdSevX64.fdf
index c628e6d8f6e7..b60ff6227a4f 100644
--- a/OvmfPkg/AmdSev/AmdSevX64.fdf
+++ b/OvmfPkg/AmdSev/AmdSevX64.fdf
@@ -269,6 +269,7 @@ [FV.DXEFV]
!if $(TOOL_CHAIN_TAG) != "XCODE5" && $(BUILD_SHELL) == TRUE
INF OvmfPkg/LinuxInitrdDynamicShellCommand/LinuxInitrdDynamicShellCommand.inf
!endif
+INF OvmfPkg/AmdSev/SecretDxe/SecretDxe.inf
INF OvmfPkg/AmdSev/Grub/Grub.inf
!if $(BUILD_SHELL) == TRUE
INF ShellPkg/Application/Shell/Shell.inf
diff --git a/OvmfPkg/AmdSev/SecretDxe/SecretDxe.inf b/OvmfPkg/AmdSev/SecretDxe/SecretDxe.inf
new file mode 100644
index 000000000000..62ab00a3d382
--- /dev/null
+++ b/OvmfPkg/AmdSev/SecretDxe/SecretDxe.inf
@@ -0,0 +1,37 @@
+## @file
+# Sev Secret configuration Table installer
+#
+# Copyright (C) 2020 James Bottomley, IBM Corporation.
+#
+# SPDX-License-Identifier: BSD-2-Clause-Patent
+#
+##
+
+[Defines]
+ INF_VERSION = 0x00010005
+ BASE_NAME = SecretDxe
+ FILE_GUID = 6e2b9619-8810-4e9d-a177-d432bb9abeda
+ MODULE_TYPE = DXE_DRIVER
+ VERSION_STRING = 1.0
+ ENTRY_POINT = InitializeSecretDxe
+
+[Sources]
+ SecretDxe.c
+
+[Packages]
+ OvmfPkg/OvmfPkg.dec
+ MdePkg/MdePkg.dec
+
+[LibraryClasses]
+ UefiBootServicesTableLib
+ UefiDriverEntryPoint
+
+[Guids]
+ gSevLaunchSecretGuid
+
+[FixedPcd]
+ gUefiOvmfPkgTokenSpaceGuid.PcdSevLaunchSecretBase
+ gUefiOvmfPkgTokenSpaceGuid.PcdSevLaunchSecretSize
+
+[Depex]
+ TRUE
diff --git a/OvmfPkg/Include/Guid/SevLaunchSecret.h b/OvmfPkg/Include/Guid/SevLaunchSecret.h
new file mode 100644
index 000000000000..fa5f3830bc2b
--- /dev/null
+++ b/OvmfPkg/Include/Guid/SevLaunchSecret.h
@@ -0,0 +1,28 @@
+ /** @file
+ UEFI Configuration Table for exposing the SEV Launch Secret location to UEFI
+ applications (boot loaders).
+
+ Copyright (C) 2020 James Bottomley, IBM Corporation.
+ SPDX-License-Identifier: BSD-2-Clause-Patent
+ **/
+
+#ifndef SEV_LAUNCH_SECRET_H_
+#define SEV_LAUNCH_SECRET_H_
+
+#include <Uefi/UefiBaseType.h>
+
+#define SEV_LAUNCH_SECRET_GUID \
+ { 0xadf956ad, \
+ 0xe98c, \
+ 0x484c, \
+ { 0xae, 0x11, 0xb5, 0x1c, 0x7d, 0x33, 0x64, 0x47 }, \
+ }
+
+typedef struct {
+ UINT32 Base;
+ UINT32 Size;
+} SEV_LAUNCH_SECRET_LOCATION;
+
+extern EFI_GUID gSevLaunchSecretGuid;
+
+#endif // SEV_LAUNCH_SECRET_H_
diff --git a/OvmfPkg/AmdSev/SecretDxe/SecretDxe.c b/OvmfPkg/AmdSev/SecretDxe/SecretDxe.c
new file mode 100644
index 000000000000..e5a1624e3cd7
--- /dev/null
+++ b/OvmfPkg/AmdSev/SecretDxe/SecretDxe.c
@@ -0,0 +1,25 @@
+/** @file
+ SEV Secret configuration table constructor
+
+ Copyright (C) 2020 James Bottomley, IBM Corporation.
+ SPDX-License-Identifier: BSD-2-Clause-Patent
+**/
+#include <PiDxe.h>
+#include <Library/UefiBootServicesTableLib.h>
+#include <Guid/SevLaunchSecret.h>
+
+STATIC SEV_LAUNCH_SECRET_LOCATION mSecretDxeTable = {
+ FixedPcdGet32 (PcdSevLaunchSecretBase),
+ FixedPcdGet32 (PcdSevLaunchSecretSize),
+};
+
+EFI_STATUS
+EFIAPI
+InitializeSecretDxe(
+ IN EFI_HANDLE ImageHandle,
+ IN EFI_SYSTEM_TABLE *SystemTable
+ )
+{
+ return gBS->InstallConfigurationTable (&gSevLaunchSecretGuid,
+ &mSecretDxeTable);
+}
--
2.26.2


[PATCH v2 5/6] OvmfPkg/AmdSev: assign and protect the Sev Secret area

James Bottomley
 

Create a one page secret area in the MEMFD and protect the area with a
boot time HOB.

Ref: https://bugzilla.tianocore.org/show_bug.cgi?id=3077
Signed-off-by: James Bottomley <jejb@linux.ibm.com>
---
OvmfPkg/AmdSev/AmdSevX64.dsc | 1 +
OvmfPkg/AmdSev/AmdSevX64.fdf | 4 +++
OvmfPkg/AmdSev/SecretPei/SecretPei.inf | 39 ++++++++++++++++++++++++++
OvmfPkg/AmdSev/SecretPei/SecretPei.c | 25 +++++++++++++++++
4 files changed, 69 insertions(+)
create mode 100644 OvmfPkg/AmdSev/SecretPei/SecretPei.inf
create mode 100644 OvmfPkg/AmdSev/SecretPei/SecretPei.c

diff --git a/OvmfPkg/AmdSev/AmdSevX64.dsc b/OvmfPkg/AmdSev/AmdSevX64.dsc
index c0b4e1b274fc..a3f75a626e5e 100644
--- a/OvmfPkg/AmdSev/AmdSevX64.dsc
+++ b/OvmfPkg/AmdSev/AmdSevX64.dsc
@@ -624,6 +624,7 @@ [Components]
<LibraryClasses>
}
UefiCpuPkg/CpuMpPei/CpuMpPei.inf
+ OvmfPkg/AmdSev/SecretPei/SecretPei.inf

!if $(TPM_ENABLE) == TRUE
OvmfPkg/Tcg/Tcg2Config/Tcg2ConfigPei.inf
diff --git a/OvmfPkg/AmdSev/AmdSevX64.fdf b/OvmfPkg/AmdSev/AmdSevX64.fdf
index 97f031950abd..c628e6d8f6e7 100644
--- a/OvmfPkg/AmdSev/AmdSevX64.fdf
+++ b/OvmfPkg/AmdSev/AmdSevX64.fdf
@@ -59,6 +59,9 @@ [FD.MEMFD]
0x00B000|0x001000
gUefiCpuPkgTokenSpaceGuid.PcdSevEsWorkAreaBase|gUefiCpuPkgTokenSpaceGuid.PcdSevEsWorkAreaSize

+0x00C000|0x001000
+gUefiOvmfPkgTokenSpaceGuid.PcdSevLaunchSecretBase|gUefiOvmfPkgTokenSpaceGuid.PcdSevLaunchSecretSize
+
0x010000|0x010000
gUefiOvmfPkgTokenSpaceGuid.PcdOvmfSecPeiTempRamBase|gUefiOvmfPkgTokenSpaceGuid.PcdOvmfSecPeiTempRamSize

@@ -138,6 +141,7 @@ [FV.PEIFV]
INF MdeModulePkg/Core/DxeIplPeim/DxeIpl.inf
INF UefiCpuPkg/Universal/Acpi/S3Resume2Pei/S3Resume2Pei.inf
INF UefiCpuPkg/CpuMpPei/CpuMpPei.inf
+INF OvmfPkg/AmdSev/SecretPei/SecretPei.inf

!if $(TPM_ENABLE) == TRUE
INF OvmfPkg/Tcg/Tcg2Config/Tcg2ConfigPei.inf
diff --git a/OvmfPkg/AmdSev/SecretPei/SecretPei.inf b/OvmfPkg/AmdSev/SecretPei/SecretPei.inf
new file mode 100644
index 000000000000..1b40ac036aba
--- /dev/null
+++ b/OvmfPkg/AmdSev/SecretPei/SecretPei.inf
@@ -0,0 +1,39 @@
+## @file
+# PEI support for SEV Secrets
+#
+# Copyright (C) 2020 James Bottomley, IBM Corporation.
+#
+# SPDX-License-Identifier: BSD-2-Clause-Patent
+#
+##
+
+[Defines]
+ INF_VERSION = 0x00010005
+ BASE_NAME = SecretPei
+ FILE_GUID = 45260dde-0c3c-4b41-a226-ef3803fac7d4
+ MODULE_TYPE = PEIM
+ VERSION_STRING = 1.0
+ ENTRY_POINT = InitializeSecretPei
+
+#
+# The following information is for reference only and not required by the build tools.
+#
+
+[Sources]
+ SecretPei.c
+
+[Packages]
+ OvmfPkg/OvmfPkg.dec
+ MdePkg/MdePkg.dec
+
+[LibraryClasses]
+ HobLib
+ PeimEntryPoint
+ PcdLib
+
+[FixedPcd]
+ gUefiOvmfPkgTokenSpaceGuid.PcdSevLaunchSecretBase
+ gUefiOvmfPkgTokenSpaceGuid.PcdSevLaunchSecretSize
+
+[Depex]
+ TRUE
diff --git a/OvmfPkg/AmdSev/SecretPei/SecretPei.c b/OvmfPkg/AmdSev/SecretPei/SecretPei.c
new file mode 100644
index 000000000000..ad491515dd5d
--- /dev/null
+++ b/OvmfPkg/AmdSev/SecretPei/SecretPei.c
@@ -0,0 +1,25 @@
+/** @file
+ SEV Secret boot time HOB placement
+
+ Copyright (C) 2020 James Bottomley, IBM Corporation.
+ SPDX-License-Identifier: BSD-2-Clause-Patent
+**/
+#include <PiPei.h>
+#include <Library/HobLib.h>
+#include <Library/PcdLib.h>
+
+EFI_STATUS
+EFIAPI
+InitializeSecretPei (
+ IN EFI_PEI_FILE_HANDLE FileHandle,
+ IN CONST EFI_PEI_SERVICES **PeiServices
+ )
+{
+ BuildMemoryAllocationHob (
+ PcdGet32 (PcdSevLaunchSecretBase),
+ PcdGet32 (PcdSevLaunchSecretSize),
+ EfiBootServicesData
+ );
+
+ return EFI_SUCCESS;
+}
--
2.26.2


[PATCH v2 4/6] OvmfPkg: create a SEV secret area in the AmdSev memfd

James Bottomley
 

SEV needs an area to place an injected secret where OVMF can find it
and pass it up as a ConfigurationTable. This patch implements the
area itself as an addition to the SEV enhanced reset vector table using
an additional guid (4c2eb361-7d9b-4cc3-8081-127c90d3d294).

Ref: https://bugzilla.tianocore.org/show_bug.cgi?id=3077
Signed-off-by: James Bottomley <jejb@linux.ibm.com>

---

v2: move guid to OVMF token space, separate patches
---
OvmfPkg/OvmfPkg.dec | 6 ++++++
OvmfPkg/ResetVector/ResetVector.inf | 4 ++++
OvmfPkg/ResetVector/Ia16/ResetVectorVtf0.asm | 14 ++++++++++++++
OvmfPkg/ResetVector/ResetVector.nasmb | 2 ++
4 files changed, 26 insertions(+)

diff --git a/OvmfPkg/OvmfPkg.dec b/OvmfPkg/OvmfPkg.dec
index 3fbf7a0ee1a4..7d27f8e16040 100644
--- a/OvmfPkg/OvmfPkg.dec
+++ b/OvmfPkg/OvmfPkg.dec
@@ -304,6 +304,12 @@ [PcdsFixedAtBuild]
gUefiOvmfPkgTokenSpaceGuid.PcdOvmfSecGhcbBase|0|UINT32|0x40
gUefiOvmfPkgTokenSpaceGuid.PcdOvmfSecGhcbSize|0|UINT32|0x41

+ ## The base address and size of the SEV Launch Secret Area provisioned
+ # after remote attestation. If this is set in the .fdf, the platform
+ # is responsible for protecting the area from DXE phase overwrites.
+ gUefiOvmfPkgTokenSpaceGuid.PcdSevLaunchSecretBase|0x0|UINT32|0x42
+ gUefiOvmfPkgTokenSpaceGuid.PcdSevLaunchSecretSize|0x0|UINT32|0x43
+
[PcdsDynamic, PcdsDynamicEx]
gUefiOvmfPkgTokenSpaceGuid.PcdEmuVariableEvent|0|UINT64|2
gUefiOvmfPkgTokenSpaceGuid.PcdOvmfFlashVariablesEnable|FALSE|BOOLEAN|0x10
diff --git a/OvmfPkg/ResetVector/ResetVector.inf b/OvmfPkg/ResetVector/ResetVector.inf
index a53ae6c194ae..dc38f68919cd 100644
--- a/OvmfPkg/ResetVector/ResetVector.inf
+++ b/OvmfPkg/ResetVector/ResetVector.inf
@@ -43,3 +43,7 @@ [Pcd]
gUefiOvmfPkgTokenSpaceGuid.PcdOvmfSecPageTablesSize
gUefiOvmfPkgTokenSpaceGuid.PcdOvmfSecPeiTempRamBase
gUefiOvmfPkgTokenSpaceGuid.PcdOvmfSecPeiTempRamSize
+
+[FixedPcd]
+ gUefiOvmfPkgTokenSpaceGuid.PcdSevLaunchSecretBase
+ gUefiOvmfPkgTokenSpaceGuid.PcdSevLaunchSecretSize
diff --git a/OvmfPkg/ResetVector/Ia16/ResetVectorVtf0.asm b/OvmfPkg/ResetVector/Ia16/ResetVectorVtf0.asm
index baf9d09f3625..8d6600f17310 100644
--- a/OvmfPkg/ResetVector/Ia16/ResetVectorVtf0.asm
+++ b/OvmfPkg/ResetVector/Ia16/ResetVectorVtf0.asm
@@ -47,6 +47,20 @@ TIMES (32 - ((guidedStructureEnd - guidedStructureStart) % 32)) DB 0
;
guidedStructureStart:

+;
+; SEV Secret block Guid: 4c2eb361-7d9b-4cc3-8081-127c90d3d294
+;
+; This describes the guest ram area where the hypervisor may have
+; injected the secret
+;
+sevSecretBlockStart:
+ DD SEV_LAUNCH_SECRET_BASE
+ DD SEV_LAUNCH_SECRET_SIZE
+ DW sevSecretBlockEnd - sevSecretBlockStart
+ DB 0x61, 0xB3, 0x2E, 0x4C, 0x9B, 0x7D, 0xC3, 0x4C
+ DB 0x80, 0x81, 0x12, 0x7C, 0x90, 0xD3, 0xD2, 0x94
+sevSecretBlockEnd:
+
;
; SEV-ES Processor Reset support
;
diff --git a/OvmfPkg/ResetVector/ResetVector.nasmb b/OvmfPkg/ResetVector/ResetVector.nasmb
index 4913b379a993..c5e0fe93abf4 100644
--- a/OvmfPkg/ResetVector/ResetVector.nasmb
+++ b/OvmfPkg/ResetVector/ResetVector.nasmb
@@ -83,5 +83,7 @@
%include "Main.asm"

%define SEV_ES_AP_RESET_IP FixedPcdGet32 (PcdSevEsWorkAreaBase)
+ %define SEV_LAUNCH_SECRET_BASE FixedPcdGet32 (PcdSevLaunchSecretBase)
+ %define SEV_LAUNCH_SECRET_SIZE FixedPcdGet32 (PcdSevLaunchSecretSize)
%include "Ia16/ResetVectorVtf0.asm"

--
2.26.2


[PATCH v2 3/6] OvmfPkg: convert ES Reset Block structure to be guided

James Bottomley
 

Convert the current ES reset block structure to an extensible guid
based structure by appending a header and length, which allow for
multiple guid based data packets to be inserted.

Ref: https://bugzilla.tianocore.org/show_bug.cgi?id=3077
Signed-off-by: James Bottomley <jejb@linux.ibm.com>

---

v2: added
---
OvmfPkg/ResetVector/Ia16/ResetVectorVtf0.asm | 49 +++++++++++++++-----
1 file changed, 38 insertions(+), 11 deletions(-)

diff --git a/OvmfPkg/ResetVector/Ia16/ResetVectorVtf0.asm b/OvmfPkg/ResetVector/Ia16/ResetVectorVtf0.asm
index 980e0138e7fe..baf9d09f3625 100644
--- a/OvmfPkg/ResetVector/Ia16/ResetVectorVtf0.asm
+++ b/OvmfPkg/ResetVector/Ia16/ResetVectorVtf0.asm
@@ -25,21 +25,40 @@ ALIGN 16
TIMES (0x1000 - ($ - EndOfPageTables) - 0x20) DB 0
%endif

+;
+; Padding to ensure first guid starts at 0xffffffd0
+;
+TIMES (32 - ((guidedStructureEnd - guidedStructureStart) % 32)) DB 0
+
+; Guided structure. To traverse this you should first verify the
+; presence of the table header guid
+; (96b582de-1fb2-45f7-baea-a366c55a082d) at 0xffffffd0. If that
+; is found, the two bytes at 0xffffffce are the entire table length.
+;
+; The table is composed of structures with the form:
+;
+; Data (arbitrary bytes identified by guid)
+; length from start of guid to end of data (2 bytes)
+; guid (16 bytes)
+;
+; so work back from the header using the length to traverse until you
+; either find the guid you're looking for or run off the end of the
+; table.
+;
+guidedStructureStart:
+
;
; SEV-ES Processor Reset support
;
; sevEsResetBlock:
; For the initial boot of an AP under SEV-ES, the "reset" RIP must be
-; programmed to the RAM area defined by SEV_ES_AP_RESET_IP. A known offset
-; and GUID will be used to locate this block in the firmware and extract
-; the build time RIP value. The GUID must always be 48 bytes from the
-; end of the firmware.
+; programmed to the RAM area defined by SEV_ES_AP_RESET_IP. The data
+; format is
;
-; 0xffffffca (-0x36) - IP value
-; 0xffffffcc (-0x34) - CS segment base [31:16]
-; 0xffffffce (-0x32) - Size of the SEV-ES reset block
-; 0xffffffd0 (-0x30) - SEV-ES reset block GUID
-; (00f771de-1a7e-4fcb-890e-68c77e2fb44e)
+; IP value [0:15]
+; CS segment base [31:16]
+;
+; SEV-ES reset block GUID: 00f771de-1a7e-4fcb-890e-68c77e2fb44e
;
; A hypervisor reads the CS segement base and IP value. The CS segment base
; value represents the high order 16-bits of the CS segment base, so the
@@ -48,8 +67,6 @@ ALIGN 16
; program the EIP register with the IP value as read.
;

-TIMES (32 - (sevEsResetBlockEnd - sevEsResetBlockStart)) DB 0
-
sevEsResetBlockStart:
DD SEV_ES_AP_RESET_IP
DW sevEsResetBlockEnd - sevEsResetBlockStart
@@ -57,6 +74,16 @@ sevEsResetBlockStart:
DB 0x89, 0x0E, 0x68, 0xC7, 0x7E, 0x2F, 0xB4, 0x4E
sevEsResetBlockEnd:

+;
+; Table header: length of whole table followed by table header
+; guid: 96b582de-1fb2-45f7-baea-a366c55a082d
+;
+ DW guidedStructureEnd - guidedStructureStart
+ DB 0xDE, 0x82, 0xB5, 0x96, 0xB2, 0x1F, 0xF7, 0x45
+ DB 0xBA, 0xEA, 0xA3, 0x66, 0xC5, 0x5A, 0x08, 0x2D
+
+guidedStructureEnd:
+
ALIGN 16

applicationProcessorEntryPoint:
--
2.26.2


[PATCH v2 2/6] OvmfPkg/AmdSev: add Grub Firmware Volume Package

James Bottomley
 

This is used to package up the grub bootloader into a firmware volume
where it can be executed as a shell like the UEFI Shell. Grub itself
is built as a minimal entity into a Fv and then added as a boot
option. By default the UEFI shell isn't built but for debugging
purposes it can be enabled and will then be presented as a boot option
(This should never be allowed for secure boot in an external data
centre but may be useful for local debugging). Finally all other boot
options except grub and possibly the shell are stripped and the boot
timeout forced to 0 so the system will not enter a setup menu and will
only boot to grub. This is done by copying the
Library/PlatformBootManagerLib into Library/PlatformBootManagerLibGrub
and then customizing it.

Boot failure is fatal to try to prevent secret theft.

Ref: https://bugzilla.tianocore.org/show_bug.cgi?id=3077
Signed-off-by: James Bottomley <jejb@linux.ibm.com>

---

v2: strip out s3 and qemu boot contacts make grub script robust and
don't build grub.efi each time
---
OvmfPkg/OvmfPkg.dec | 1 +
OvmfPkg/AmdSev/AmdSevX64.dsc | 21 +-
OvmfPkg/AmdSev/AmdSevX64.fdf | 7 +-
OvmfPkg/AmdSev/Grub/Grub.inf | 37 +
.../PlatformBootManagerLibGrub.inf | 79 +
.../PlatformBootManagerLibGrub/BdsPlatform.h | 175 ++
.../PlatformBootManagerLibGrub/BdsPlatform.c | 1483 +++++++++++++++++
.../PlatformBootManagerLibGrub/PlatformData.c | 213 +++
OvmfPkg/AmdSev/Grub/.gitignore | 1 +
OvmfPkg/AmdSev/Grub/grub.cfg | 46 +
OvmfPkg/AmdSev/Grub/grub.sh | 92 +
11 files changed, 2146 insertions(+), 9 deletions(-)
create mode 100644 OvmfPkg/AmdSev/Grub/Grub.inf
create mode 100644 OvmfPkg/Library/PlatformBootManagerLibGrub/PlatformBootManagerLibGrub.inf
create mode 100644 OvmfPkg/Library/PlatformBootManagerLibGrub/BdsPlatform.h
create mode 100644 OvmfPkg/Library/PlatformBootManagerLibGrub/BdsPlatform.c
create mode 100644 OvmfPkg/Library/PlatformBootManagerLibGrub/PlatformData.c
create mode 100644 OvmfPkg/AmdSev/Grub/.gitignore
create mode 100644 OvmfPkg/AmdSev/Grub/grub.cfg
create mode 100644 OvmfPkg/AmdSev/Grub/grub.sh

diff --git a/OvmfPkg/OvmfPkg.dec b/OvmfPkg/OvmfPkg.dec
index 6abde4fd9351..3fbf7a0ee1a4 100644
--- a/OvmfPkg/OvmfPkg.dec
+++ b/OvmfPkg/OvmfPkg.dec
@@ -116,6 +116,7 @@ [Guids]
gEfiLegacyDevOrderVariableGuid = {0xa56074db, 0x65fe, 0x45f7, {0xbd, 0x21, 0x2d, 0x2b, 0xdd, 0x8e, 0x96, 0x52}}
gLinuxEfiInitrdMediaGuid = {0x5568e427, 0x68fc, 0x4f3d, {0xac, 0x74, 0xca, 0x55, 0x52, 0x31, 0xcc, 0x68}}
gQemuKernelLoaderFsMediaGuid = {0x1428f772, 0xb64a, 0x441e, {0xb8, 0xc3, 0x9e, 0xbd, 0xd7, 0xf8, 0x93, 0xc7}}
+ gGrubFileGuid = {0xb5ae312c, 0xbc8a, 0x43b1, {0x9c, 0x62, 0xeb, 0xb8, 0x26, 0xdd, 0x5d, 0x07}}

[Ppis]
# PPI whose presence in the PPI database signals that the TPM base address
diff --git a/OvmfPkg/AmdSev/AmdSevX64.dsc b/OvmfPkg/AmdSev/AmdSevX64.dsc
index 852be757bfbe..c0b4e1b274fc 100644
--- a/OvmfPkg/AmdSev/AmdSevX64.dsc
+++ b/OvmfPkg/AmdSev/AmdSevX64.dsc
@@ -25,6 +25,7 @@ [Defines]
BUILD_TARGETS = NOOPT|DEBUG|RELEASE
SKUID_IDENTIFIER = DEFAULT
FLASH_DEFINITION = OvmfPkg/AmdSev/AmdSevX64.fdf
+ PREBUILD = sh OvmfPkg/AmdSev/Grub/grub.sh

#
# Defines for default states. These can be changed on the command line.
@@ -34,6 +35,11 @@ [Defines]
DEFINE TPM_ENABLE = FALSE
DEFINE TPM_CONFIG_ENABLE = FALSE

+ #
+ # Shell can be useful for debugging but should not be enabled for production
+ #
+ DEFINE BUILD_SHELL = FALSE
+
#
# Device drivers
#
@@ -149,7 +155,6 @@ [LibraryClasses]
UefiDriverEntryPoint|MdePkg/Library/UefiDriverEntryPoint/UefiDriverEntryPoint.inf
UefiApplicationEntryPoint|MdePkg/Library/UefiApplicationEntryPoint/UefiApplicationEntryPoint.inf
DevicePathLib|MdePkg/Library/UefiDevicePathLibDevicePathProtocol/UefiDevicePathLibDevicePathProtocol.inf
- NvVarsFileLib|OvmfPkg/Library/NvVarsFileLib/NvVarsFileLib.inf
FileHandleLib|MdePkg/Library/UefiFileHandleLib/UefiFileHandleLib.inf
UefiCpuLib|UefiCpuPkg/Library/BaseUefiCpuLib/BaseUefiCpuLib.inf
SecurityManagementLib|MdeModulePkg/Library/DxeSecurityManagementLib/DxeSecurityManagementLib.inf
@@ -183,9 +188,11 @@ [LibraryClasses]
VarCheckLib|MdeModulePkg/Library/VarCheckLib/VarCheckLib.inf


+!if $(BUILD_SHELL) == TRUE
ShellLib|ShellPkg/Library/UefiShellLib/UefiShellLib.inf
ShellCEntryLib|ShellPkg/Library/UefiShellCEntryLib/UefiShellCEntryLib.inf
- S3BootScriptLib|MdeModulePkg/Library/PiDxeS3BootScriptLib/DxeS3BootScriptLib.inf
+!endif
+
SmbusLib|MdePkg/Library/BaseSmbusLibNull/BaseSmbusLibNull.inf
OrderedCollectionLib|MdePkg/Library/BaseOrderedCollectionRedBlackTreeLib/BaseOrderedCollectionRedBlackTreeLib.inf
XenHypercallLib|OvmfPkg/Library/XenHypercallLib/XenHypercallLib.inf
@@ -341,7 +348,7 @@ [LibraryClasses.common.DXE_DRIVER]
!else
DebugLib|OvmfPkg/Library/PlatformDebugLibIoPort/PlatformDebugLibIoPort.inf
!endif
- PlatformBootManagerLib|OvmfPkg/Library/PlatformBootManagerLib/PlatformBootManagerLib.inf
+ PlatformBootManagerLib|OvmfPkg/Library/PlatformBootManagerLibGrub/PlatformBootManagerLibGrub.inf
PlatformBmPrintScLib|OvmfPkg/Library/PlatformBmPrintScLib/PlatformBmPrintScLib.inf
QemuBootOrderLib|OvmfPkg/Library/QemuBootOrderLib/QemuBootOrderLib.inf
CpuExceptionHandlerLib|UefiCpuPkg/Library/CpuExceptionHandlerLib/DxeCpuExceptionHandlerLib.inf
@@ -510,6 +517,7 @@ [PcdsFixedAtBuild]
# Point to the MdeModulePkg/Application/UiApp/UiApp.inf
gEfiMdeModulePkgTokenSpaceGuid.PcdBootManagerMenuFile|{ 0x21, 0xaa, 0x2c, 0x46, 0x14, 0x76, 0x03, 0x45, 0x83, 0x6e, 0x8a, 0xb6, 0xf4, 0x66, 0x23, 0x31 }

+ gEfiMdeModulePkgTokenSpaceGuid.PcdConInConnectOnDemand|TRUE
################################################################################
#
# Pcd Dynamic Section - list of all EDK II PCD Entries defined by this Platform
@@ -774,8 +782,6 @@ [Components]
MdeModulePkg/Universal/Acpi/AcpiTableDxe/AcpiTableDxe.inf
OvmfPkg/AcpiPlatformDxe/AcpiPlatformDxe.inf
OvmfPkg/AcpiTables/AcpiTables.inf
- MdeModulePkg/Universal/Acpi/S3SaveStateDxe/S3SaveStateDxe.inf
- MdeModulePkg/Universal/Acpi/BootScriptExecutorDxe/BootScriptExecutorDxe.inf
MdeModulePkg/Universal/Acpi/BootGraphicsResourceTableDxe/BootGraphicsResourceTableDxe.inf

OvmfPkg/VirtioNetDxe/VirtioNet.inf
@@ -799,12 +805,14 @@ [Components]
OvmfPkg/Csm/Csm16/Csm16.inf
!endif

-!if $(TOOL_CHAIN_TAG) != "XCODE5"
+!if $(TOOL_CHAIN_TAG) != "XCODE5" && $(BUILD_SHELL) == TRUE
OvmfPkg/LinuxInitrdDynamicShellCommand/LinuxInitrdDynamicShellCommand.inf {
<PcdsFixedAtBuild>
gEfiShellPkgTokenSpaceGuid.PcdShellLibAutoInitialize|FALSE
}
!endif
+ OvmfPkg/AmdSev/Grub/Grub.inf
+!if $(BUILD_SHELL) == TRUE
ShellPkg/Application/Shell/Shell.inf {
<LibraryClasses>
ShellCommandLib|ShellPkg/Library/UefiShellCommandLib/UefiShellCommandLib.inf
@@ -823,6 +831,7 @@ [Components]
gEfiShellPkgTokenSpaceGuid.PcdShellLibAutoInitialize|FALSE
gEfiMdePkgTokenSpaceGuid.PcdUefiLibMaxPrintBufferSize|8000
}
+!endif

OvmfPkg/PlatformDxe/Platform.inf
OvmfPkg/AmdSevDxe/AmdSevDxe.inf
diff --git a/OvmfPkg/AmdSev/AmdSevX64.fdf b/OvmfPkg/AmdSev/AmdSevX64.fdf
index 4592a4ec067d..97f031950abd 100644
--- a/OvmfPkg/AmdSev/AmdSevX64.fdf
+++ b/OvmfPkg/AmdSev/AmdSevX64.fdf
@@ -257,17 +257,18 @@ [FV.DXEFV]
INF MdeModulePkg/Universal/Acpi/AcpiTableDxe/AcpiTableDxe.inf
INF OvmfPkg/AcpiPlatformDxe/AcpiPlatformDxe.inf
INF RuleOverride=ACPITABLE OvmfPkg/AcpiTables/AcpiTables.inf
-INF MdeModulePkg/Universal/Acpi/S3SaveStateDxe/S3SaveStateDxe.inf
-INF MdeModulePkg/Universal/Acpi/BootScriptExecutorDxe/BootScriptExecutorDxe.inf
INF MdeModulePkg/Universal/Acpi/BootGraphicsResourceTableDxe/BootGraphicsResourceTableDxe.inf

INF FatPkg/EnhancedFatDxe/Fat.inf
INF MdeModulePkg/Universal/Disk/UdfDxe/UdfDxe.inf

-!if $(TOOL_CHAIN_TAG) != "XCODE5"
+!if $(TOOL_CHAIN_TAG) != "XCODE5" && $(BUILD_SHELL) == TRUE
INF OvmfPkg/LinuxInitrdDynamicShellCommand/LinuxInitrdDynamicShellCommand.inf
!endif
+INF OvmfPkg/AmdSev/Grub/Grub.inf
+!if $(BUILD_SHELL) == TRUE
INF ShellPkg/Application/Shell/Shell.inf
+!endif

INF MdeModulePkg/Logo/LogoDxe.inf

diff --git a/OvmfPkg/AmdSev/Grub/Grub.inf b/OvmfPkg/AmdSev/Grub/Grub.inf
new file mode 100644
index 000000000000..211e7b8b2be6
--- /dev/null
+++ b/OvmfPkg/AmdSev/Grub/Grub.inf
@@ -0,0 +1,37 @@
+## @file
+# Create a Firmware Volume based Grub Bootloaded
+#
+# Copyright (C) 2020 James Bottomley, IBM Corporation.
+#
+# SPDX-License-Identifier: BSD-2-Clause-Patent
+#
+##
+
+[Defines]
+ INF_VERSION = 0x00010006
+ BASE_NAME = Grub
+ # This is gGrubFileGuid
+ FILE_GUID = b5ae312c-bc8a-43b1-9c62-ebb826dd5d07
+ MODULE_TYPE = UEFI_APPLICATION
+ VERSION_STRING = 1.0
+ ENTRY_POINT = UefiMain
+
+[Packages]
+ OvmfPkg/OvmfPkg.dec
+
+#
+# The following information is for reference only and not required by
+# the build tools.
+#
+# VALID_ARCHITECTURES = X64
+#
+
+##
+# Note: The version of grub.efi this picks up can be generated by
+# grub.sh which must be specified as a PREBUILD in the .dsc file or
+# you can simply move a precompiled grub into here and not do the
+# PREBUILD)
+##
+[Binaries]
+ PE32|grub.efi|*
+
diff --git a/OvmfPkg/Library/PlatformBootManagerLibGrub/PlatformBootManagerLibGrub.inf b/OvmfPkg/Library/PlatformBootManagerLibGrub/PlatformBootManagerLibGrub.inf
new file mode 100644
index 000000000000..a997d7586e6a
--- /dev/null
+++ b/OvmfPkg/Library/PlatformBootManagerLibGrub/PlatformBootManagerLibGrub.inf
@@ -0,0 +1,79 @@
+## @file
+# Platform BDS customizations library.
+#
+# Copyright (c) 2007 - 2019, Intel Corporation. All rights reserved.<BR>
+# SPDX-License-Identifier: BSD-2-Clause-Patent
+#
+##
+
+[Defines]
+ INF_VERSION = 0x00010005
+ BASE_NAME = PlatformBootManagerLibGrub
+ FILE_GUID = 3a8f8431-f0c9-4c95-8a1d-04445c582d4e
+ MODULE_TYPE = DXE_DRIVER
+ VERSION_STRING = 1.0
+ LIBRARY_CLASS = PlatformBootManagerLib|DXE_DRIVER
+
+#
+# The following information is for reference only and not required by the build tools.
+#
+# VALID_ARCHITECTURES = X64
+#
+
+[Sources]
+ BdsPlatform.c
+ PlatformData.c
+ BdsPlatform.h
+
+[Packages]
+ MdePkg/MdePkg.dec
+ MdeModulePkg/MdeModulePkg.dec
+ SourceLevelDebugPkg/SourceLevelDebugPkg.dec
+ OvmfPkg/OvmfPkg.dec
+ SecurityPkg/SecurityPkg.dec
+ ShellPkg/ShellPkg.dec
+
+[LibraryClasses]
+ BaseLib
+ MemoryAllocationLib
+ UefiBootServicesTableLib
+ UefiRuntimeServicesTableLib
+ BaseMemoryLib
+ DebugLib
+ PcdLib
+ UefiBootManagerLib
+ BootLogoLib
+ DevicePathLib
+ PciLib
+ ReportStatusCodeLib
+ UefiLib
+ PlatformBmPrintScLib
+ Tcg2PhysicalPresenceLib
+ XenPlatformLib
+
+[Pcd]
+ gUefiOvmfPkgTokenSpaceGuid.PcdOvmfFlashVariablesEnable
+ gUefiOvmfPkgTokenSpaceGuid.PcdOvmfHostBridgePciDevId
+ gEfiMdePkgTokenSpaceGuid.PcdPlatformBootTimeOut
+ gEfiMdePkgTokenSpaceGuid.PcdUartDefaultBaudRate ## CONSUMES
+ gEfiMdePkgTokenSpaceGuid.PcdUartDefaultDataBits ## CONSUMES
+ gEfiMdePkgTokenSpaceGuid.PcdUartDefaultParity ## CONSUMES
+ gEfiMdePkgTokenSpaceGuid.PcdUartDefaultStopBits ## CONSUMES
+
+[Pcd.IA32, Pcd.X64]
+ gEfiMdePkgTokenSpaceGuid.PcdFSBClock
+
+[Protocols]
+ gEfiDecompressProtocolGuid
+ gEfiPciRootBridgeIoProtocolGuid
+ gEfiS3SaveStateProtocolGuid # PROTOCOL SOMETIMES_CONSUMED
+ gEfiDxeSmmReadyToLockProtocolGuid # PROTOCOL SOMETIMES_PRODUCED
+ gEfiLoadedImageProtocolGuid # PROTOCOL SOMETIMES_PRODUCED
+ gEfiFirmwareVolume2ProtocolGuid # PROTOCOL SOMETIMES_CONSUMED
+
+[Guids]
+ gEfiEndOfDxeEventGroupGuid
+ gEfiGlobalVariableGuid
+ gRootBridgesConnectedEventGroupGuid
+ gUefiShellFileGuid
+ gGrubFileGuid
diff --git a/OvmfPkg/Library/PlatformBootManagerLibGrub/BdsPlatform.h b/OvmfPkg/Library/PlatformBootManagerLibGrub/BdsPlatform.h
new file mode 100644
index 000000000000..a7fc4dbc3c1f
--- /dev/null
+++ b/OvmfPkg/Library/PlatformBootManagerLibGrub/BdsPlatform.h
@@ -0,0 +1,175 @@
+/** @file
+ Platform BDS customizations include file.
+
+ Copyright (c) 2006 - 2017, Intel Corporation. All rights reserved.<BR>
+ SPDX-License-Identifier: BSD-2-Clause-Patent
+
+Module Name:
+
+ BdsPlatform.h
+
+Abstract:
+
+ Head file for BDS Platform specific code
+
+**/
+
+#ifndef _PLATFORM_SPECIFIC_BDS_PLATFORM_H_
+#define _PLATFORM_SPECIFIC_BDS_PLATFORM_H_
+
+
+#include <PiDxe.h>
+
+#include <IndustryStandard/Pci.h>
+#include <IndustryStandard/Acpi.h>
+#include <IndustryStandard/SmBios.h>
+#include <IndustryStandard/PeImage.h>
+#include <IndustryStandard/Virtio095.h>
+
+#include <Library/DebugLib.h>
+#include <Library/BaseMemoryLib.h>
+#include <Library/UefiBootServicesTableLib.h>
+#include <Library/UefiRuntimeServicesTableLib.h>
+#include <Library/MemoryAllocationLib.h>
+#include <Library/BaseLib.h>
+#include <Library/PcdLib.h>
+#include <Library/PciLib.h>
+#include <Library/UefiBootManagerLib.h>
+#include <Library/BootLogoLib.h>
+#include <Library/HobLib.h>
+#include <Library/UefiLib.h>
+#include <Library/DxeServicesTableLib.h>
+#include <Library/DevicePathLib.h>
+#include <Library/IoLib.h>
+
+#include <Protocol/Decompress.h>
+#include <Protocol/PciIo.h>
+#include <Protocol/FirmwareVolume2.h>
+#include <Protocol/SimpleFileSystem.h>
+#include <Protocol/PciRootBridgeIo.h>
+#include <Protocol/S3SaveState.h>
+#include <Protocol/DxeSmmReadyToLock.h>
+#include <Protocol/LoadedImage.h>
+
+#include <Guid/Acpi.h>
+#include <Guid/SmBios.h>
+#include <Guid/HobList.h>
+#include <Guid/GlobalVariable.h>
+#include <Guid/EventGroup.h>
+#include <Guid/DebugAgentGuid.h>
+
+#include <OvmfPlatforms.h>
+
+extern EFI_DEVICE_PATH_PROTOCOL *gPlatformConnectSequence[];
+extern ACPI_HID_DEVICE_PATH gPnpPs2KeyboardDeviceNode;
+extern ACPI_HID_DEVICE_PATH gPnp16550ComPortDeviceNode;
+extern UART_DEVICE_PATH gUartDeviceNode;
+extern VENDOR_DEVICE_PATH gTerminalTypeDeviceNode;
+
+#define PCI_DEVICE_PATH_NODE(Func, Dev) \
+ { \
+ { \
+ HARDWARE_DEVICE_PATH, \
+ HW_PCI_DP, \
+ { \
+ (UINT8) (sizeof (PCI_DEVICE_PATH)), \
+ (UINT8) ((sizeof (PCI_DEVICE_PATH)) >> 8) \
+ } \
+ }, \
+ (Func), \
+ (Dev) \
+ }
+
+#define PNPID_DEVICE_PATH_NODE(PnpId) \
+ { \
+ { \
+ ACPI_DEVICE_PATH, \
+ ACPI_DP, \
+ { \
+ (UINT8) (sizeof (ACPI_HID_DEVICE_PATH)), \
+ (UINT8) ((sizeof (ACPI_HID_DEVICE_PATH)) >> 8) \
+ }, \
+ }, \
+ EISA_PNP_ID((PnpId)), \
+ 0 \
+ }
+
+#define gPciIsaBridge \
+ PCI_DEVICE_PATH_NODE(0, 0x1f)
+
+#define gP2PBridge \
+ PCI_DEVICE_PATH_NODE(0, 0x1e)
+
+#define gPnpPs2Keyboard \
+ PNPID_DEVICE_PATH_NODE(0x0303)
+
+#define gPnp16550ComPort \
+ PNPID_DEVICE_PATH_NODE(0x0501)
+
+#define gUart \
+ { \
+ { \
+ MESSAGING_DEVICE_PATH, \
+ MSG_UART_DP, \
+ { \
+ (UINT8) (sizeof (UART_DEVICE_PATH)), \
+ (UINT8) ((sizeof (UART_DEVICE_PATH)) >> 8) \
+ } \
+ }, \
+ 0, \
+ 115200, \
+ 8, \
+ 1, \
+ 1 \
+ }
+
+#define gPcAnsiTerminal \
+ { \
+ { \
+ MESSAGING_DEVICE_PATH, \
+ MSG_VENDOR_DP, \
+ { \
+ (UINT8) (sizeof (VENDOR_DEVICE_PATH)), \
+ (UINT8) ((sizeof (VENDOR_DEVICE_PATH)) >> 8) \
+ } \
+ }, \
+ DEVICE_PATH_MESSAGING_PC_ANSI \
+ }
+
+#define gEndEntire \
+ { \
+ END_DEVICE_PATH_TYPE, \
+ END_ENTIRE_DEVICE_PATH_SUBTYPE, \
+ { \
+ END_DEVICE_PATH_LENGTH, \
+ 0 \
+ } \
+ }
+
+#define PCI_CLASS_SCC 0x07
+#define PCI_SUBCLASS_SERIAL 0x00
+#define PCI_IF_16550 0x02
+#define IS_PCI_16550SERIAL(_p) IS_CLASS3 (_p, PCI_CLASS_SCC, PCI_SUBCLASS_SERIAL, PCI_IF_16550)
+#define IS_PCI_ISA_PDECODE(_p) IS_CLASS3 (_p, PCI_CLASS_BRIDGE, PCI_CLASS_BRIDGE_ISA_PDECODE, 0)
+
+typedef struct {
+ EFI_DEVICE_PATH_PROTOCOL *DevicePath;
+ UINTN ConnectType;
+} PLATFORM_CONSOLE_CONNECT_ENTRY;
+
+#define CONSOLE_OUT BIT0
+#define CONSOLE_IN BIT1
+#define STD_ERROR BIT2
+extern PLATFORM_CONSOLE_CONNECT_ENTRY gPlatformConsole[];
+extern PLATFORM_CONSOLE_CONNECT_ENTRY gXenPlatformConsole[];
+
+//
+// Platform BDS Functions
+//
+
+VOID
+PlatformInitializeConsole (
+ IN PLATFORM_CONSOLE_CONNECT_ENTRY *PlatformConsole
+ );
+
+#endif // _PLATFORM_SPECIFIC_BDS_PLATFORM_H_
diff --git a/OvmfPkg/Library/PlatformBootManagerLibGrub/BdsPlatform.c b/OvmfPkg/Library/PlatformBootManagerLibGrub/BdsPlatform.c
new file mode 100644
index 000000000000..4fb2f904a10e
--- /dev/null
+++ b/OvmfPkg/Library/PlatformBootManagerLibGrub/BdsPlatform.c
@@ -0,0 +1,1483 @@
+/** @file
+ Platform BDS customizations.
+
+ Copyright (c) 2004 - 2019, Intel Corporation. All rights reserved.<BR>
+ SPDX-License-Identifier: BSD-2-Clause-Patent
+
+**/
+
+#include "BdsPlatform.h"
+#include <Guid/RootBridgesConnectedEventGroup.h>
+#include <Protocol/FirmwareVolume2.h>
+#include <Library/PlatformBmPrintScLib.h>
+#include <Library/Tcg2PhysicalPresenceLib.h>
+#include <Library/XenPlatformLib.h>
+
+
+//
+// Global data
+//
+
+VOID *mEfiDevPathNotifyReg;
+EFI_EVENT mEfiDevPathEvent;
+UINT16 mHostBridgeDevId;
+
+//
+// Table of host IRQs matching PCI IRQs A-D
+// (for configuring PCI Interrupt Line register)
+//
+CONST UINT8 PciHostIrqs[] = {
+ 0x0a, 0x0a, 0x0b, 0x0b
+};
+
+//
+// Type definitions
+//
+
+typedef
+EFI_STATUS
+(EFIAPI *PROTOCOL_INSTANCE_CALLBACK)(
+ IN EFI_HANDLE Handle,
+ IN VOID *Instance,
+ IN VOID *Context
+ );
+
+/**
+ @param[in] Handle - Handle of PCI device instance
+ @param[in] PciIo - PCI IO protocol instance
+ @param[in] Pci - PCI Header register block
+**/
+typedef
+EFI_STATUS
+(EFIAPI *VISIT_PCI_INSTANCE_CALLBACK)(
+ IN EFI_HANDLE Handle,
+ IN EFI_PCI_IO_PROTOCOL *PciIo,
+ IN PCI_TYPE00 *Pci
+ );
+
+
+//
+// Function prototypes
+//
+
+EFI_STATUS
+VisitAllInstancesOfProtocol (
+ IN EFI_GUID *Id,
+ IN PROTOCOL_INSTANCE_CALLBACK CallBackFunction,
+ IN VOID *Context
+ );
+
+EFI_STATUS
+VisitAllPciInstancesOfProtocol (
+ IN VISIT_PCI_INSTANCE_CALLBACK CallBackFunction
+ );
+
+VOID
+InstallDevicePathCallback (
+ VOID
+ );
+
+VOID
+PlatformRegisterFvBootOption (
+ EFI_GUID *FileGuid,
+ CHAR16 *Description,
+ UINT32 Attributes
+ )
+{
+ EFI_STATUS Status;
+ INTN OptionIndex;
+ EFI_BOOT_MANAGER_LOAD_OPTION NewOption;
+ EFI_BOOT_MANAGER_LOAD_OPTION *BootOptions;
+ UINTN BootOptionCount;
+ MEDIA_FW_VOL_FILEPATH_DEVICE_PATH FileNode;
+ EFI_LOADED_IMAGE_PROTOCOL *LoadedImage;
+ EFI_DEVICE_PATH_PROTOCOL *DevicePath;
+
+ Status = gBS->HandleProtocol (
+ gImageHandle,
+ &gEfiLoadedImageProtocolGuid,
+ (VOID **) &LoadedImage
+ );
+ ASSERT_EFI_ERROR (Status);
+
+ EfiInitializeFwVolDevicepathNode (&FileNode, FileGuid);
+ DevicePath = DevicePathFromHandle (LoadedImage->DeviceHandle);
+ ASSERT (DevicePath != NULL);
+ DevicePath = AppendDevicePathNode (
+ DevicePath,
+ (EFI_DEVICE_PATH_PROTOCOL *) &FileNode
+ );
+ ASSERT (DevicePath != NULL);
+
+ Status = EfiBootManagerInitializeLoadOption (
+ &NewOption,
+ LoadOptionNumberUnassigned,
+ LoadOptionTypeBoot,
+ Attributes,
+ Description,
+ DevicePath,
+ NULL,
+ 0
+ );
+ ASSERT_EFI_ERROR (Status);
+ FreePool (DevicePath);
+
+ BootOptions = EfiBootManagerGetLoadOptions (
+ &BootOptionCount, LoadOptionTypeBoot
+ );
+
+ OptionIndex = EfiBootManagerFindLoadOption (
+ &NewOption, BootOptions, BootOptionCount
+ );
+
+ if (OptionIndex == -1) {
+ Status = EfiBootManagerAddLoadOptionVariable (&NewOption, MAX_UINTN);
+ ASSERT_EFI_ERROR (Status);
+ }
+ EfiBootManagerFreeLoadOption (&NewOption);
+ EfiBootManagerFreeLoadOptions (BootOptions, BootOptionCount);
+}
+
+/**
+ Remove all MemoryMapped(...)/FvFile(...) and Fv(...)/FvFile(...) boot options
+ whose device paths do not resolve exactly to an FvFile in the system.
+
+ Also strip out every boot option that is not an FvFile, meaning the system
+ can only boot either the Grub or (if built) the shell.
+
+ This removes any boot options that point to binaries built into the firmware
+ and have become stale due to any of the following:
+ - DXEFV's base address or size changed (historical),
+ - DXEFV's FvNameGuid changed,
+ - the FILE_GUID of the pointed-to binary changed,
+ - the referenced binary is no longer built into the firmware.
+
+ EfiBootManagerFindLoadOption() used in PlatformRegisterFvBootOption() only
+ avoids exact duplicates.
+**/
+VOID
+RemoveStaleFvFileOptions (
+ VOID
+ )
+{
+ EFI_BOOT_MANAGER_LOAD_OPTION *BootOptions;
+ UINTN BootOptionCount;
+ UINTN Index;
+
+ BootOptions = EfiBootManagerGetLoadOptions (&BootOptionCount,
+ LoadOptionTypeBoot);
+
+ for (Index = 0; Index < BootOptionCount; ++Index) {
+ EFI_DEVICE_PATH_PROTOCOL *Node1, *Node2, *SearchNode;
+ EFI_STATUS Status;
+ EFI_HANDLE FvHandle;
+
+ //
+ // If the device path starts with neither MemoryMapped(...) nor Fv(...),
+ // then delete the boot option.
+ //
+ Node1 = BootOptions[Index].FilePath;
+ if (!(DevicePathType (Node1) == HARDWARE_DEVICE_PATH &&
+ DevicePathSubType (Node1) == HW_MEMMAP_DP) &&
+ !(DevicePathType (Node1) == MEDIA_DEVICE_PATH &&
+ DevicePathSubType (Node1) == MEDIA_PIWG_FW_VOL_DP)) {
+ EfiBootManagerDeleteLoadOptionVariable (
+ BootOptions[Index].OptionNumber, LoadOptionTypeBoot);
+ continue;
+ }
+
+ //
+ // If the second device path node is not FvFile(...), then delete the boot
+ // option.
+ //
+ Node2 = NextDevicePathNode (Node1);
+ if (DevicePathType (Node2) != MEDIA_DEVICE_PATH ||
+ DevicePathSubType (Node2) != MEDIA_PIWG_FW_FILE_DP) {
+ EfiBootManagerDeleteLoadOptionVariable (
+ BootOptions[Index].OptionNumber, LoadOptionTypeBoot);
+ continue;
+ }
+
+ //
+ // Locate the Firmware Volume2 protocol instance that is denoted by the
+ // boot option. If this lookup fails (i.e., the boot option references a
+ // firmware volume that doesn't exist), then we'll proceed to delete the
+ // boot option.
+ //
+ SearchNode = Node1;
+ Status = gBS->LocateDevicePath (&gEfiFirmwareVolume2ProtocolGuid,
+ &SearchNode, &FvHandle);
+
+ if (!EFI_ERROR (Status)) {
+ //
+ // The firmware volume was found; now let's see if it contains the FvFile
+ // identified by GUID.
+ //
+ EFI_FIRMWARE_VOLUME2_PROTOCOL *FvProtocol;
+ MEDIA_FW_VOL_FILEPATH_DEVICE_PATH *FvFileNode;
+ UINTN BufferSize;
+ EFI_FV_FILETYPE FoundType;
+ EFI_FV_FILE_ATTRIBUTES FileAttributes;
+ UINT32 AuthenticationStatus;
+
+ Status = gBS->HandleProtocol (FvHandle, &gEfiFirmwareVolume2ProtocolGuid,
+ (VOID **)&FvProtocol);
+ ASSERT_EFI_ERROR (Status);
+
+ FvFileNode = (MEDIA_FW_VOL_FILEPATH_DEVICE_PATH *)Node2;
+ //
+ // Buffer==NULL means we request metadata only: BufferSize, FoundType,
+ // FileAttributes.
+ //
+ Status = FvProtocol->ReadFile (
+ FvProtocol,
+ &FvFileNode->FvFileName, // NameGuid
+ NULL, // Buffer
+ &BufferSize,
+ &FoundType,
+ &FileAttributes,
+ &AuthenticationStatus
+ );
+ if (!EFI_ERROR (Status)) {
+ //
+ // The FvFile was found. Keep the boot option.
+ //
+ continue;
+ }
+ }
+
+ //
+ // Delete the boot option.
+ //
+ Status = EfiBootManagerDeleteLoadOptionVariable (
+ BootOptions[Index].OptionNumber, LoadOptionTypeBoot);
+ DEBUG_CODE (
+ CHAR16 *DevicePathString;
+
+ DevicePathString = ConvertDevicePathToText(BootOptions[Index].FilePath,
+ FALSE, FALSE);
+ DEBUG ((
+ EFI_ERROR (Status) ? DEBUG_WARN : DEBUG_VERBOSE,
+ "%a: removing stale Boot#%04x %s: %r\n",
+ __FUNCTION__,
+ (UINT32)BootOptions[Index].OptionNumber,
+ DevicePathString == NULL ? L"<unavailable>" : DevicePathString,
+ Status
+ ));
+ if (DevicePathString != NULL) {
+ FreePool (DevicePathString);
+ }
+ );
+ }
+
+ EfiBootManagerFreeLoadOptions (BootOptions, BootOptionCount);
+}
+
+EFI_STATUS
+EFIAPI
+ConnectRootBridge (
+ IN EFI_HANDLE RootBridgeHandle,
+ IN VOID *Instance,
+ IN VOID *Context
+ );
+
+STATIC
+EFI_STATUS
+EFIAPI
+ConnectVirtioPciRng (
+ IN EFI_HANDLE Handle,
+ IN VOID *Instance,
+ IN VOID *Context
+ );
+
+//
+// BDS Platform Functions
+//
+/**
+ Do the platform init, can be customized by OEM/IBV
+
+ Possible things that can be done in PlatformBootManagerBeforeConsole:
+
+ > Update console variable: 1. include hot-plug devices;
+ > 2. Clear ConIn and add SOL for AMT
+ > Register new Driver#### or Boot####
+ > Register new Key####: e.g.: F12
+ > Signal ReadyToLock event
+ > Authentication action: 1. connect Auth devices;
+ > 2. Identify auto logon user.
+**/
+VOID
+EFIAPI
+PlatformBootManagerBeforeConsole (
+ VOID
+ )
+{
+ EFI_HANDLE Handle;
+ EFI_STATUS Status;
+
+ DEBUG ((DEBUG_INFO, "PlatformBootManagerBeforeConsole\n"));
+ InstallDevicePathCallback ();
+
+ VisitAllInstancesOfProtocol (&gEfiPciRootBridgeIoProtocolGuid,
+ ConnectRootBridge, NULL);
+
+ //
+ // Signal the ACPI platform driver that it can download QEMU ACPI tables.
+ //
+ EfiEventGroupSignal (&gRootBridgesConnectedEventGroupGuid);
+
+ //
+ // We can't signal End-of-Dxe earlier than this. Namely, End-of-Dxe triggers
+ // the preparation of S3 system information. That logic has a hard dependency
+ // on the presence of the FACS ACPI table. Since our ACPI tables are only
+ // installed after PCI enumeration completes, we must not trigger the S3 save
+ // earlier, hence we can't signal End-of-Dxe earlier.
+ //
+ EfiEventGroupSignal (&gEfiEndOfDxeEventGroupGuid);
+
+ //
+ // Prevent further changes to LockBoxes or SMRAM.
+ //
+ Handle = NULL;
+ Status = gBS->InstallProtocolInterface (&Handle,
+ &gEfiDxeSmmReadyToLockProtocolGuid, EFI_NATIVE_INTERFACE,
+ NULL);
+ ASSERT_EFI_ERROR (Status);
+
+ //
+ // Dispatch deferred images after EndOfDxe event and ReadyToLock
+ // installation.
+ //
+ EfiBootManagerDispatchDeferredImages ();
+
+ PlatformInitializeConsole (
+ XenDetected() ? gXenPlatformConsole : gPlatformConsole);
+
+ //
+ // Install both VIRTIO_DEVICE_PROTOCOL and (dependent) EFI_RNG_PROTOCOL
+ // instances on Virtio PCI RNG devices.
+ //
+ VisitAllInstancesOfProtocol (&gEfiPciIoProtocolGuid, ConnectVirtioPciRng,
+ NULL);
+}
+
+
+EFI_STATUS
+EFIAPI
+ConnectRootBridge (
+ IN EFI_HANDLE RootBridgeHandle,
+ IN VOID *Instance,
+ IN VOID *Context
+ )
+{
+ EFI_STATUS Status;
+
+ //
+ // Make the PCI bus driver connect the root bridge, non-recursively. This
+ // will produce a number of child handles with PciIo on them.
+ //
+ Status = gBS->ConnectController (
+ RootBridgeHandle, // ControllerHandle
+ NULL, // DriverImageHandle
+ NULL, // RemainingDevicePath -- produce all
+ // children
+ FALSE // Recursive
+ );
+ return Status;
+}
+
+
+STATIC
+EFI_STATUS
+EFIAPI
+ConnectVirtioPciRng (
+ IN EFI_HANDLE Handle,
+ IN VOID *Instance,
+ IN VOID *Context
+ )
+{
+ EFI_PCI_IO_PROTOCOL *PciIo;
+ EFI_STATUS Status;
+ UINT16 VendorId;
+ UINT16 DeviceId;
+ UINT8 RevisionId;
+ BOOLEAN Virtio10;
+ UINT16 SubsystemId;
+
+ PciIo = Instance;
+
+ //
+ // Read and check VendorId.
+ //
+ Status = PciIo->Pci.Read (PciIo, EfiPciIoWidthUint16, PCI_VENDOR_ID_OFFSET,
+ 1, &VendorId);
+ if (EFI_ERROR (Status)) {
+ goto Error;
+ }
+ if (VendorId != VIRTIO_VENDOR_ID) {
+ return EFI_SUCCESS;
+ }
+
+ //
+ // Read DeviceId and RevisionId.
+ //
+ Status = PciIo->Pci.Read (PciIo, EfiPciIoWidthUint16, PCI_DEVICE_ID_OFFSET,
+ 1, &DeviceId);
+ if (EFI_ERROR (Status)) {
+ goto Error;
+ }
+ Status = PciIo->Pci.Read (PciIo, EfiPciIoWidthUint8, PCI_REVISION_ID_OFFSET,
+ 1, &RevisionId);
+ if (EFI_ERROR (Status)) {
+ goto Error;
+ }
+
+ //
+ // From DeviceId and RevisionId, determine whether the device is a
+ // modern-only Virtio 1.0 device. In case of Virtio 1.0, DeviceId can
+ // immediately be restricted to VIRTIO_SUBSYSTEM_ENTROPY_SOURCE, and
+ // SubsystemId will only play a sanity-check role. Otherwise, DeviceId can
+ // only be sanity-checked, and SubsystemId will decide.
+ //
+ if (DeviceId == 0x1040 + VIRTIO_SUBSYSTEM_ENTROPY_SOURCE &&
+ RevisionId >= 0x01) {
+ Virtio10 = TRUE;
+ } else if (DeviceId >= 0x1000 && DeviceId <= 0x103F && RevisionId == 0x00) {
+ Virtio10 = FALSE;
+ } else {
+ return EFI_SUCCESS;
+ }
+
+ //
+ // Read and check SubsystemId as dictated by Virtio10.
+ //
+ Status = PciIo->Pci.Read (PciIo, EfiPciIoWidthUint16,
+ PCI_SUBSYSTEM_ID_OFFSET, 1, &SubsystemId);
+ if (EFI_ERROR (Status)) {
+ goto Error;
+ }
+ if ((Virtio10 && SubsystemId >= 0x40) ||
+ (!Virtio10 && SubsystemId == VIRTIO_SUBSYSTEM_ENTROPY_SOURCE)) {
+ Status = gBS->ConnectController (
+ Handle, // ControllerHandle
+ NULL, // DriverImageHandle -- connect all drivers
+ NULL, // RemainingDevicePath -- produce all child handles
+ FALSE // Recursive -- don't follow child handles
+ );
+ if (EFI_ERROR (Status)) {
+ goto Error;
+ }
+ }
+ return EFI_SUCCESS;
+
+Error:
+ DEBUG ((DEBUG_ERROR, "%a: %r\n", __FUNCTION__, Status));
+ return Status;
+}
+
+
+/**
+ Add IsaKeyboard to ConIn; add IsaSerial to ConOut, ConIn, ErrOut.
+
+ @param[in] DeviceHandle Handle of the LPC Bridge device.
+
+ @retval EFI_SUCCESS Console devices on the LPC bridge have been added to
+ ConOut, ConIn, and ErrOut.
+
+ @return Error codes, due to EFI_DEVICE_PATH_PROTOCOL missing
+ from DeviceHandle.
+**/
+EFI_STATUS
+PrepareLpcBridgeDevicePath (
+ IN EFI_HANDLE DeviceHandle
+ )
+{
+ EFI_STATUS Status;
+ EFI_DEVICE_PATH_PROTOCOL *DevicePath;
+ EFI_DEVICE_PATH_PROTOCOL *TempDevicePath;
+ CHAR16 *DevPathStr;
+
+ DevicePath = NULL;
+ Status = gBS->HandleProtocol (
+ DeviceHandle,
+ &gEfiDevicePathProtocolGuid,
+ (VOID*)&DevicePath
+ );
+ if (EFI_ERROR (Status)) {
+ return Status;
+ }
+ TempDevicePath = DevicePath;
+
+ //
+ // Register Keyboard
+ //
+ DevicePath = AppendDevicePathNode (DevicePath,
+ (EFI_DEVICE_PATH_PROTOCOL *)&gPnpPs2KeyboardDeviceNode);
+
+ EfiBootManagerUpdateConsoleVariable (ConIn, DevicePath, NULL);
+
+ //
+ // Register COM1
+ //
+ DevicePath = TempDevicePath;
+ gPnp16550ComPortDeviceNode.UID = 0;
+
+ DevicePath = AppendDevicePathNode (DevicePath,
+ (EFI_DEVICE_PATH_PROTOCOL *)&gPnp16550ComPortDeviceNode);
+ DevicePath = AppendDevicePathNode (DevicePath,
+ (EFI_DEVICE_PATH_PROTOCOL *)&gUartDeviceNode);
+ DevicePath = AppendDevicePathNode (DevicePath,
+ (EFI_DEVICE_PATH_PROTOCOL *)&gTerminalTypeDeviceNode);
+
+ //
+ // Print Device Path
+ //
+ DevPathStr = ConvertDevicePathToText (DevicePath, FALSE, FALSE);
+ if (DevPathStr != NULL) {
+ DEBUG((
+ DEBUG_INFO,
+ "BdsPlatform.c+%d: COM%d DevPath: %s\n",
+ __LINE__,
+ gPnp16550ComPortDeviceNode.UID + 1,
+ DevPathStr
+ ));
+ FreePool(DevPathStr);
+ }
+
+ EfiBootManagerUpdateConsoleVariable (ConOut, DevicePath, NULL);
+ EfiBootManagerUpdateConsoleVariable (ConIn, DevicePath, NULL);
+ EfiBootManagerUpdateConsoleVariable (ErrOut, DevicePath, NULL);
+
+ //
+ // Register COM2
+ //
+ DevicePath = TempDevicePath;
+ gPnp16550ComPortDeviceNode.UID = 1;
+
+ DevicePath = AppendDevicePathNode (DevicePath,
+ (EFI_DEVICE_PATH_PROTOCOL *)&gPnp16550ComPortDeviceNode);
+ DevicePath = AppendDevicePathNode (DevicePath,
+ (EFI_DEVICE_PATH_PROTOCOL *)&gUartDeviceNode);
+ DevicePath = AppendDevicePathNode (DevicePath,
+ (EFI_DEVICE_PATH_PROTOCOL *)&gTerminalTypeDeviceNode);
+
+ //
+ // Print Device Path
+ //
+ DevPathStr = ConvertDevicePathToText (DevicePath, FALSE, FALSE);
+ if (DevPathStr != NULL) {
+ DEBUG((
+ DEBUG_INFO,
+ "BdsPlatform.c+%d: COM%d DevPath: %s\n",
+ __LINE__,
+ gPnp16550ComPortDeviceNode.UID + 1,
+ DevPathStr
+ ));
+ FreePool(DevPathStr);
+ }
+
+ EfiBootManagerUpdateConsoleVariable (ConOut, DevicePath, NULL);
+ EfiBootManagerUpdateConsoleVariable (ConIn, DevicePath, NULL);
+ EfiBootManagerUpdateConsoleVariable (ErrOut, DevicePath, NULL);
+
+ return EFI_SUCCESS;
+}
+
+EFI_STATUS
+GetGopDevicePath (
+ IN EFI_DEVICE_PATH_PROTOCOL *PciDevicePath,
+ OUT EFI_DEVICE_PATH_PROTOCOL **GopDevicePath
+ )
+{
+ UINTN Index;
+ EFI_STATUS Status;
+ EFI_HANDLE PciDeviceHandle;
+ EFI_DEVICE_PATH_PROTOCOL *TempDevicePath;
+ EFI_DEVICE_PATH_PROTOCOL *TempPciDevicePath;
+ UINTN GopHandleCount;
+ EFI_HANDLE *GopHandleBuffer;
+
+ if (PciDevicePath == NULL || GopDevicePath == NULL) {
+ return EFI_INVALID_PARAMETER;
+ }
+
+ //
+ // Initialize the GopDevicePath to be PciDevicePath
+ //
+ *GopDevicePath = PciDevicePath;
+ TempPciDevicePath = PciDevicePath;
+
+ Status = gBS->LocateDevicePath (
+ &gEfiDevicePathProtocolGuid,
+ &TempPciDevicePath,
+ &PciDeviceHandle
+ );
+ if (EFI_ERROR (Status)) {
+ return Status;
+ }
+
+ //
+ // Try to connect this handle, so that GOP driver could start on this
+ // device and create child handles with GraphicsOutput Protocol installed
+ // on them, then we get device paths of these child handles and select
+ // them as possible console device.
+ //
+ gBS->ConnectController (PciDeviceHandle, NULL, NULL, FALSE);
+
+ Status = gBS->LocateHandleBuffer (
+ ByProtocol,
+ &gEfiGraphicsOutputProtocolGuid,
+ NULL,
+ &GopHandleCount,
+ &GopHandleBuffer
+ );
+ if (!EFI_ERROR (Status)) {
+ //
+ // Add all the child handles as possible Console Device
+ //
+ for (Index = 0; Index < GopHandleCount; Index++) {
+ Status = gBS->HandleProtocol (GopHandleBuffer[Index],
+ &gEfiDevicePathProtocolGuid, (VOID*)&TempDevicePath);
+ if (EFI_ERROR (Status)) {
+ continue;
+ }
+ if (CompareMem (
+ PciDevicePath,
+ TempDevicePath,
+ GetDevicePathSize (PciDevicePath) - END_DEVICE_PATH_LENGTH
+ ) == 0) {
+ //
+ // In current implementation, we only enable one of the child handles
+ // as console device, i.e. sotre one of the child handle's device
+ // path to variable "ConOut"
+ // In future, we could select all child handles to be console device
+ //
+
+ *GopDevicePath = TempDevicePath;
+
+ //
+ // Delete the PCI device's path that added by
+ // GetPlugInPciVgaDevicePath(). Add the integrity GOP device path.
+ //
+ EfiBootManagerUpdateConsoleVariable (ConOutDev, NULL, PciDevicePath);
+ EfiBootManagerUpdateConsoleVariable (ConOutDev, TempDevicePath, NULL);
+ }
+ }
+ gBS->FreePool (GopHandleBuffer);
+ }
+
+ return EFI_SUCCESS;
+}
+
+/**
+ Add PCI display to ConOut.
+
+ @param[in] DeviceHandle Handle of the PCI display device.
+
+ @retval EFI_SUCCESS The PCI display device has been added to ConOut.
+
+ @return Error codes, due to EFI_DEVICE_PATH_PROTOCOL missing
+ from DeviceHandle.
+**/
+EFI_STATUS
+PreparePciDisplayDevicePath (
+ IN EFI_HANDLE DeviceHandle
+ )
+{
+ EFI_STATUS Status;
+ EFI_DEVICE_PATH_PROTOCOL *DevicePath;
+ EFI_DEVICE_PATH_PROTOCOL *GopDevicePath;
+
+ DevicePath = NULL;
+ GopDevicePath = NULL;
+ Status = gBS->HandleProtocol (
+ DeviceHandle,
+ &gEfiDevicePathProtocolGuid,
+ (VOID*)&DevicePath
+ );
+ if (EFI_ERROR (Status)) {
+ return Status;
+ }
+
+ GetGopDevicePath (DevicePath, &GopDevicePath);
+ DevicePath = GopDevicePath;
+
+ EfiBootManagerUpdateConsoleVariable (ConOut, DevicePath, NULL);
+
+ return EFI_SUCCESS;
+}
+
+/**
+ Add PCI Serial to ConOut, ConIn, ErrOut.
+
+ @param[in] DeviceHandle Handle of the PCI serial device.
+
+ @retval EFI_SUCCESS The PCI serial device has been added to ConOut, ConIn,
+ ErrOut.
+
+ @return Error codes, due to EFI_DEVICE_PATH_PROTOCOL missing
+ from DeviceHandle.
+**/
+EFI_STATUS
+PreparePciSerialDevicePath (
+ IN EFI_HANDLE DeviceHandle
+ )
+{
+ EFI_STATUS Status;
+ EFI_DEVICE_PATH_PROTOCOL *DevicePath;
+
+ DevicePath = NULL;
+ Status = gBS->HandleProtocol (
+ DeviceHandle,
+ &gEfiDevicePathProtocolGuid,
+ (VOID*)&DevicePath
+ );
+ if (EFI_ERROR (Status)) {
+ return Status;
+ }
+
+ DevicePath = AppendDevicePathNode (DevicePath,
+ (EFI_DEVICE_PATH_PROTOCOL *)&gUartDeviceNode);
+ DevicePath = AppendDevicePathNode (DevicePath,
+ (EFI_DEVICE_PATH_PROTOCOL *)&gTerminalTypeDeviceNode);
+
+ EfiBootManagerUpdateConsoleVariable (ConOut, DevicePath, NULL);
+ EfiBootManagerUpdateConsoleVariable (ConIn, DevicePath, NULL);
+ EfiBootManagerUpdateConsoleVariable (ErrOut, DevicePath, NULL);
+
+ return EFI_SUCCESS;
+}
+
+EFI_STATUS
+VisitAllInstancesOfProtocol (
+ IN EFI_GUID *Id,
+ IN PROTOCOL_INSTANCE_CALLBACK CallBackFunction,
+ IN VOID *Context
+ )
+{
+ EFI_STATUS Status;
+ UINTN HandleCount;
+ EFI_HANDLE *HandleBuffer;
+ UINTN Index;
+ VOID *Instance;
+
+ //
+ // Start to check all the PciIo to find all possible device
+ //
+ HandleCount = 0;
+ HandleBuffer = NULL;
+ Status = gBS->LocateHandleBuffer (
+ ByProtocol,
+ Id,
+ NULL,
+ &HandleCount,
+ &HandleBuffer
+ );
+ if (EFI_ERROR (Status)) {
+ return Status;
+ }
+
+ for (Index = 0; Index < HandleCount; Index++) {
+ Status = gBS->HandleProtocol (HandleBuffer[Index], Id, &Instance);
+ if (EFI_ERROR (Status)) {
+ continue;
+ }
+
+ Status = (*CallBackFunction) (
+ HandleBuffer[Index],
+ Instance,
+ Context
+ );
+ }
+
+ gBS->FreePool (HandleBuffer);
+
+ return EFI_SUCCESS;
+}
+
+
+EFI_STATUS
+EFIAPI
+VisitingAPciInstance (
+ IN EFI_HANDLE Handle,
+ IN VOID *Instance,
+ IN VOID *Context
+ )
+{
+ EFI_STATUS Status;
+ EFI_PCI_IO_PROTOCOL *PciIo;
+ PCI_TYPE00 Pci;
+
+ PciIo = (EFI_PCI_IO_PROTOCOL*) Instance;
+
+ //
+ // Check for all PCI device
+ //
+ Status = PciIo->Pci.Read (
+ PciIo,
+ EfiPciIoWidthUint32,
+ 0,
+ sizeof (Pci) / sizeof (UINT32),
+ &Pci
+ );
+ if (EFI_ERROR (Status)) {
+ return Status;
+ }
+
+ return (*(VISIT_PCI_INSTANCE_CALLBACK)(UINTN) Context) (
+ Handle,
+ PciIo,
+ &Pci
+ );
+
+}
+
+
+
+EFI_STATUS
+VisitAllPciInstances (
+ IN VISIT_PCI_INSTANCE_CALLBACK CallBackFunction
+ )
+{
+ return VisitAllInstancesOfProtocol (
+ &gEfiPciIoProtocolGuid,
+ VisitingAPciInstance,
+ (VOID*)(UINTN) CallBackFunction
+ );
+}
+
+
+/**
+ Do platform specific PCI Device check and add them to
+ ConOut, ConIn, ErrOut.
+
+ @param[in] Handle - Handle of PCI device instance
+ @param[in] PciIo - PCI IO protocol instance
+ @param[in] Pci - PCI Header register block
+
+ @retval EFI_SUCCESS - PCI Device check and Console variable update
+ successfully.
+ @retval EFI_STATUS - PCI Device check or Console variable update fail.
+
+**/
+EFI_STATUS
+EFIAPI
+DetectAndPreparePlatformPciDevicePath (
+ IN EFI_HANDLE Handle,
+ IN EFI_PCI_IO_PROTOCOL *PciIo,
+ IN PCI_TYPE00 *Pci
+ )
+{
+ EFI_STATUS Status;
+
+ Status = PciIo->Attributes (
+ PciIo,
+ EfiPciIoAttributeOperationEnable,
+ EFI_PCI_DEVICE_ENABLE,
+ NULL
+ );
+ ASSERT_EFI_ERROR (Status);
+
+ //
+ // Here we decide whether it is LPC Bridge
+ //
+ if ((IS_PCI_LPC (Pci)) ||
+ ((IS_PCI_ISA_PDECODE (Pci)) &&
+ (Pci->Hdr.VendorId == 0x8086) &&
+ (Pci->Hdr.DeviceId == 0x7000)
+ )
+ ) {
+ //
+ // Add IsaKeyboard to ConIn,
+ // add IsaSerial to ConOut, ConIn, ErrOut
+ //
+ DEBUG ((DEBUG_INFO, "Found LPC Bridge device\n"));
+ PrepareLpcBridgeDevicePath (Handle);
+ return EFI_SUCCESS;
+ }
+ //
+ // Here we decide which Serial device to enable in PCI bus
+ //
+ if (IS_PCI_16550SERIAL (Pci)) {
+ //
+ // Add them to ConOut, ConIn, ErrOut.
+ //
+ DEBUG ((DEBUG_INFO, "Found PCI 16550 SERIAL device\n"));
+ PreparePciSerialDevicePath (Handle);
+ return EFI_SUCCESS;
+ }
+
+ //
+ // Here we decide which display device to enable in PCI bus
+ //
+ if (IS_PCI_DISPLAY (Pci)) {
+ //
+ // Add them to ConOut.
+ //
+ DEBUG ((DEBUG_INFO, "Found PCI display device\n"));
+ PreparePciDisplayDevicePath (Handle);
+ return EFI_SUCCESS;
+ }
+
+ return Status;
+}
+
+
+/**
+ Connect the predefined platform default console device.
+
+ Always try to find and enable PCI display devices.
+
+ @param[in] PlatformConsole Predefined platform default console device array.
+**/
+VOID
+PlatformInitializeConsole (
+ IN PLATFORM_CONSOLE_CONNECT_ENTRY *PlatformConsole
+ )
+{
+ UINTN Index;
+
+ //
+ // Do platform specific PCI Device check and add them to ConOut, ConIn,
+ // ErrOut
+ //
+ VisitAllPciInstances (DetectAndPreparePlatformPciDevicePath);
+
+ //
+ // Have chance to connect the platform default console,
+ // the platform default console is the minimum device group
+ // the platform should support
+ //
+ for (Index = 0; PlatformConsole[Index].DevicePath != NULL; ++Index) {
+ //
+ // Update the console variable with the connect type
+ //
+ if ((PlatformConsole[Index].ConnectType & CONSOLE_IN) == CONSOLE_IN) {
+ EfiBootManagerUpdateConsoleVariable (ConIn,
+ PlatformConsole[Index].DevicePath, NULL);
+ }
+ if ((PlatformConsole[Index].ConnectType & CONSOLE_OUT) == CONSOLE_OUT) {
+ EfiBootManagerUpdateConsoleVariable (ConOut,
+ PlatformConsole[Index].DevicePath, NULL);
+ }
+ if ((PlatformConsole[Index].ConnectType & STD_ERROR) == STD_ERROR) {
+ EfiBootManagerUpdateConsoleVariable (ErrOut,
+ PlatformConsole[Index].DevicePath, NULL);
+ }
+ }
+}
+
+
+/**
+ Configure PCI Interrupt Line register for applicable devices
+ Ported from SeaBIOS, src/fw/pciinit.c, *_pci_slot_get_irq()
+
+ @param[in] Handle - Handle of PCI device instance
+ @param[in] PciIo - PCI IO protocol instance
+ @param[in] PciHdr - PCI Header register block
+
+ @retval EFI_SUCCESS - PCI Interrupt Line register configured successfully.
+
+**/
+EFI_STATUS
+EFIAPI
+SetPciIntLine (
+ IN EFI_HANDLE Handle,
+ IN EFI_PCI_IO_PROTOCOL *PciIo,
+ IN PCI_TYPE00 *PciHdr
+ )
+{
+ EFI_DEVICE_PATH_PROTOCOL *DevPathNode;
+ EFI_DEVICE_PATH_PROTOCOL *DevPath;
+ UINTN RootSlot;
+ UINTN Idx;
+ UINT8 IrqLine;
+ EFI_STATUS Status;
+ UINT32 RootBusNumber;
+
+ Status = EFI_SUCCESS;
+
+ if (PciHdr->Device.InterruptPin != 0) {
+
+ DevPathNode = DevicePathFromHandle (Handle);
+ ASSERT (DevPathNode != NULL);
+ DevPath = DevPathNode;
+
+ RootBusNumber = 0;
+ if (DevicePathType (DevPathNode) == ACPI_DEVICE_PATH &&
+ DevicePathSubType (DevPathNode) == ACPI_DP &&
+ ((ACPI_HID_DEVICE_PATH *)DevPathNode)->HID == EISA_PNP_ID(0x0A03)) {
+ RootBusNumber = ((ACPI_HID_DEVICE_PATH *)DevPathNode)->UID;
+ }
+
+ //
+ // Compute index into PciHostIrqs[] table by walking
+ // the device path and adding up all device numbers
+ //
+ Status = EFI_NOT_FOUND;
+ RootSlot = 0;
+ Idx = PciHdr->Device.InterruptPin - 1;
+ while (!IsDevicePathEnd (DevPathNode)) {
+ if (DevicePathType (DevPathNode) == HARDWARE_DEVICE_PATH &&
+ DevicePathSubType (DevPathNode) == HW_PCI_DP) {
+
+ Idx += ((PCI_DEVICE_PATH *)DevPathNode)->Device;
+
+ //
+ // Unlike SeaBIOS, which starts climbing from the leaf device
+ // up toward the root, we traverse the device path starting at
+ // the root moving toward the leaf node.
+ // The slot number of the top-level parent bridge is needed for
+ // Q35 cases with more than 24 slots on the root bus.
+ //
+ if (Status != EFI_SUCCESS) {
+ Status = EFI_SUCCESS;
+ RootSlot = ((PCI_DEVICE_PATH *)DevPathNode)->Device;
+ }
+ }
+
+ DevPathNode = NextDevicePathNode (DevPathNode);
+ }
+ if (EFI_ERROR (Status)) {
+ return Status;
+ }
+ if (RootBusNumber == 0 && RootSlot == 0) {
+ DEBUG((
+ DEBUG_ERROR,
+ "%a: PCI host bridge (00:00.0) should have no interrupts!\n",
+ __FUNCTION__
+ ));
+ ASSERT (FALSE);
+ }
+
+ //
+ // Final PciHostIrqs[] index calculation depends on the platform
+ // and should match SeaBIOS src/fw/pciinit.c *_pci_slot_get_irq()
+ //
+ switch (mHostBridgeDevId) {
+ case INTEL_82441_DEVICE_ID:
+ Idx -= 1;
+ break;
+ case INTEL_Q35_MCH_DEVICE_ID:
+ //
+ // SeaBIOS contains the following comment:
+ // "Slots 0-24 rotate slot:pin mapping similar to piix above, but
+ // with a different starting index - see q35-acpi-dsdt.dsl.
+ //
+ // Slots 25-31 all use LNKA mapping (or LNKE, but A:D = E:H)"
+ //
+ if (RootSlot > 24) {
+ //
+ // in this case, subtract back out RootSlot from Idx
+ // (SeaBIOS never adds it to begin with, but that would make our
+ // device path traversal loop above too awkward)
+ //
+ Idx -= RootSlot;
+ }
+ break;
+ default:
+ ASSERT (FALSE); // should never get here
+ }
+ Idx %= ARRAY_SIZE (PciHostIrqs);
+ IrqLine = PciHostIrqs[Idx];
+
+ DEBUG_CODE_BEGIN ();
+ {
+ CHAR16 *DevPathString;
+ STATIC CHAR16 Fallback[] = L"<failed to convert>";
+ UINTN Segment, Bus, Device, Function;
+
+ DevPathString = ConvertDevicePathToText (DevPath, FALSE, FALSE);
+ if (DevPathString == NULL) {
+ DevPathString = Fallback;
+ }
+ Status = PciIo->GetLocation (PciIo, &Segment, &Bus, &Device, &Function);
+ ASSERT_EFI_ERROR (Status);
+
+ DEBUG ((DEBUG_VERBOSE, "%a: [%02x:%02x.%x] %s -> 0x%02x\n", __FUNCTION__,
+ (UINT32)Bus, (UINT32)Device, (UINT32)Function, DevPathString,
+ IrqLine));
+
+ if (DevPathString != Fallback) {
+ FreePool (DevPathString);
+ }
+ }
+ DEBUG_CODE_END ();
+
+ //
+ // Set PCI Interrupt Line register for this device to PciHostIrqs[Idx]
+ //
+ Status = PciIo->Pci.Write (
+ PciIo,
+ EfiPciIoWidthUint8,
+ PCI_INT_LINE_OFFSET,
+ 1,
+ &IrqLine
+ );
+ }
+
+ return Status;
+}
+
+
+VOID
+PciAcpiInitialization (
+ )
+{
+ UINTN Pmba;
+
+ //
+ // Query Host Bridge DID to determine platform type
+ //
+ mHostBridgeDevId = PcdGet16 (PcdOvmfHostBridgePciDevId);
+ switch (mHostBridgeDevId) {
+ case INTEL_82441_DEVICE_ID:
+ Pmba = POWER_MGMT_REGISTER_PIIX4 (PIIX4_PMBA);
+ //
+ // 00:01.0 ISA Bridge (PIIX4) LNK routing targets
+ //
+ PciWrite8 (PCI_LIB_ADDRESS (0, 1, 0, 0x60), 0x0b); // A
+ PciWrite8 (PCI_LIB_ADDRESS (0, 1, 0, 0x61), 0x0b); // B
+ PciWrite8 (PCI_LIB_ADDRESS (0, 1, 0, 0x62), 0x0a); // C
+ PciWrite8 (PCI_LIB_ADDRESS (0, 1, 0, 0x63), 0x0a); // D
+ break;
+ case INTEL_Q35_MCH_DEVICE_ID:
+ Pmba = POWER_MGMT_REGISTER_Q35 (ICH9_PMBASE);
+ //
+ // 00:1f.0 LPC Bridge (Q35) LNK routing targets
+ //
+ PciWrite8 (PCI_LIB_ADDRESS (0, 0x1f, 0, 0x60), 0x0a); // A
+ PciWrite8 (PCI_LIB_ADDRESS (0, 0x1f, 0, 0x61), 0x0a); // B
+ PciWrite8 (PCI_LIB_ADDRESS (0, 0x1f, 0, 0x62), 0x0b); // C
+ PciWrite8 (PCI_LIB_ADDRESS (0, 0x1f, 0, 0x63), 0x0b); // D
+ PciWrite8 (PCI_LIB_ADDRESS (0, 0x1f, 0, 0x68), 0x0a); // E
+ PciWrite8 (PCI_LIB_ADDRESS (0, 0x1f, 0, 0x69), 0x0a); // F
+ PciWrite8 (PCI_LIB_ADDRESS (0, 0x1f, 0, 0x6a), 0x0b); // G
+ PciWrite8 (PCI_LIB_ADDRESS (0, 0x1f, 0, 0x6b), 0x0b); // H
+ break;
+ default:
+ if (XenDetected ()) {
+ //
+ // There is no PCI bus in this case.
+ //
+ return;
+ }
+ DEBUG ((DEBUG_ERROR, "%a: Unknown Host Bridge Device ID: 0x%04x\n",
+ __FUNCTION__, mHostBridgeDevId));
+ ASSERT (FALSE);
+ return;
+ }
+
+ //
+ // Initialize PCI_INTERRUPT_LINE for applicable present PCI devices
+ //
+ VisitAllPciInstances (SetPciIntLine);
+
+ //
+ // Set ACPI SCI_EN bit in PMCNTRL
+ //
+ IoOr16 ((PciRead32 (Pmba) & ~BIT0) + 4, BIT0);
+}
+
+EFI_STATUS
+EFIAPI
+ConnectRecursivelyIfPciMassStorage (
+ IN EFI_HANDLE Handle,
+ IN EFI_PCI_IO_PROTOCOL *Instance,
+ IN PCI_TYPE00 *PciHeader
+ )
+{
+ EFI_STATUS Status;
+ EFI_DEVICE_PATH_PROTOCOL *DevicePath;
+ CHAR16 *DevPathStr;
+
+ //
+ // Recognize PCI Mass Storage, and Xen PCI devices
+ //
+ if (IS_CLASS1 (PciHeader, PCI_CLASS_MASS_STORAGE) ||
+ (XenDetected() && IS_CLASS2 (PciHeader, 0xFF, 0x80))) {
+ DevicePath = NULL;
+ Status = gBS->HandleProtocol (
+ Handle,
+ &gEfiDevicePathProtocolGuid,
+ (VOID*)&DevicePath
+ );
+ if (EFI_ERROR (Status)) {
+ return Status;
+ }
+
+ //
+ // Print Device Path
+ //
+ DevPathStr = ConvertDevicePathToText (DevicePath, FALSE, FALSE);
+ if (DevPathStr != NULL) {
+ DEBUG((
+ DEBUG_INFO,
+ "Found %s device: %s\n",
+ (IS_CLASS1 (PciHeader, PCI_CLASS_MASS_STORAGE) ?
+ L"Mass Storage" :
+ L"Xen"
+ ),
+ DevPathStr
+ ));
+ FreePool(DevPathStr);
+ }
+
+ Status = gBS->ConnectController (Handle, NULL, NULL, TRUE);
+ if (EFI_ERROR (Status)) {
+ return Status;
+ }
+
+ }
+
+ return EFI_SUCCESS;
+}
+
+
+/**
+ Connect with predefined platform connect sequence.
+
+ The OEM/IBV can customize with their own connect sequence.
+**/
+VOID
+PlatformBdsConnectSequence (
+ VOID
+ )
+{
+ UINTN Index;
+
+ DEBUG ((DEBUG_INFO, "PlatformBdsConnectSequence\n"));
+
+ Index = 0;
+
+ //
+ // Here we can get the customized platform connect sequence
+ // Notes: we can connect with new variable which record the
+ // last time boots connect device path sequence
+ //
+ while (gPlatformConnectSequence[Index] != NULL) {
+ //
+ // Build the platform boot option
+ //
+ EfiBootManagerConnectDevicePath (gPlatformConnectSequence[Index], NULL);
+ Index++;
+ }
+ EfiBootManagerConnectAll ();
+}
+
+/**
+ Do the platform specific action after the console is ready
+
+ Possible things that can be done in PlatformBootManagerAfterConsole:
+
+ > Console post action:
+ > Dynamically switch output mode from 100x31 to 80x25 for certain senarino
+ > Signal console ready platform customized event
+ > Run diagnostics like memory testing
+ > Connect certain devices
+ > Dispatch aditional option roms
+ > Special boot: e.g.: USB boot, enter UI
+**/
+VOID
+EFIAPI
+PlatformBootManagerAfterConsole (
+ VOID
+ )
+{
+ EFI_BOOT_MODE BootMode;
+
+ DEBUG ((DEBUG_INFO, "PlatformBootManagerAfterConsole\n"));
+
+ //
+ // Get current Boot Mode
+ //
+ BootMode = GetBootModeHob ();
+ DEBUG ((DEBUG_INFO, "Boot Mode:%x\n", BootMode));
+
+ //
+ // Go the different platform policy with different boot mode
+ // Notes: this part code can be change with the table policy
+ //
+ ASSERT (BootMode == BOOT_WITH_FULL_CONFIGURATION);
+
+ //
+ // Logo show
+ //
+ BootLogoEnableLogo ();
+
+ //
+ // Set PCI Interrupt Line registers and ACPI SCI_EN
+ //
+ PciAcpiInitialization ();
+
+ //
+ // Process TPM PPI request
+ //
+ Tcg2PhysicalPresenceLibProcessRequest (NULL);
+
+ //
+ // Perform some platform specific connect sequence
+ //
+ PlatformBdsConnectSequence ();
+
+ EfiBootManagerRefreshAllBootOption ();
+
+ //
+ // Register UEFI Shell (Will be removed if the Shell isn't built
+ // which is the default)
+ //
+ PlatformRegisterFvBootOption (
+ &gUefiShellFileGuid, L"EFI Internal Shell", LOAD_OPTION_ACTIVE
+ );
+
+ //
+ // Register Grub
+ //
+ PlatformRegisterFvBootOption (
+ &gGrubFileGuid, L"Grub Bootloader", LOAD_OPTION_ACTIVE
+ );
+
+ RemoveStaleFvFileOptions ();
+
+ PlatformBmPrintScRegisterHandler ();
+}
+
+/**
+ This notification function is invoked when an instance of the
+ EFI_DEVICE_PATH_PROTOCOL is produced.
+
+ @param Event The event that occurred
+ @param Context For EFI compatibility. Not used.
+
+**/
+VOID
+EFIAPI
+NotifyDevPath (
+ IN EFI_EVENT Event,
+ IN VOID *Context
+ )
+{
+ EFI_HANDLE Handle;
+ EFI_STATUS Status;
+ UINTN BufferSize;
+ EFI_DEVICE_PATH_PROTOCOL *DevPathNode;
+ ATAPI_DEVICE_PATH *Atapi;
+
+ //
+ // Examine all new handles
+ //
+ for (;;) {
+ //
+ // Get the next handle
+ //
+ BufferSize = sizeof (Handle);
+ Status = gBS->LocateHandle (
+ ByRegisterNotify,
+ NULL,
+ mEfiDevPathNotifyReg,
+ &BufferSize,
+ &Handle
+ );
+
+ //
+ // If not found, we're done
+ //
+ if (EFI_NOT_FOUND == Status) {
+ break;
+ }
+
+ if (EFI_ERROR (Status)) {
+ continue;
+ }
+
+ //
+ // Get the DevicePath protocol on that handle
+ //
+ Status = gBS->HandleProtocol (Handle, &gEfiDevicePathProtocolGuid,
+ (VOID **)&DevPathNode);
+ ASSERT_EFI_ERROR (Status);
+
+ while (!IsDevicePathEnd (DevPathNode)) {
+ //
+ // Find the handler to dump this device path node
+ //
+ if (
+ (DevicePathType(DevPathNode) == MESSAGING_DEVICE_PATH) &&
+ (DevicePathSubType(DevPathNode) == MSG_ATAPI_DP)
+ ) {
+ Atapi = (ATAPI_DEVICE_PATH*) DevPathNode;
+ PciOr16 (
+ PCI_LIB_ADDRESS (
+ 0,
+ 1,
+ 1,
+ (Atapi->PrimarySecondary == 1) ? 0x42: 0x40
+ ),
+ BIT15
+ );
+ }
+
+ //
+ // Next device path node
+ //
+ DevPathNode = NextDevicePathNode (DevPathNode);
+ }
+ }
+
+ return;
+}
+
+
+VOID
+InstallDevicePathCallback (
+ VOID
+ )
+{
+ DEBUG ((DEBUG_INFO, "Registered NotifyDevPath Event\n"));
+ mEfiDevPathEvent = EfiCreateProtocolNotifyEvent (
+ &gEfiDevicePathProtocolGuid,
+ TPL_CALLBACK,
+ NotifyDevPath,
+ NULL,
+ &mEfiDevPathNotifyReg
+ );
+}
+
+/**
+ This function is called each second during the boot manager waits the
+ timeout.
+
+ @param TimeoutRemain The remaining timeout.
+**/
+VOID
+EFIAPI
+PlatformBootManagerWaitCallback (
+ UINT16 TimeoutRemain
+ )
+{
+ //
+ // Since the timeout should be forced to zero we should never
+ // Get here
+ //
+ ASSERT (FALSE);
+}
+
+/**
+ The function is called when no boot option could be launched,
+ including platform recovery options and options pointing to applications
+ built into firmware volumes.
+
+ If this function returns, BDS attempts to enter an infinite loop.
+**/
+VOID
+EFIAPI
+PlatformBootManagerUnableToBoot (
+ VOID
+ )
+{
+ //
+ // If we get here something failed about the grub boot but since
+ // We're privy to the secret we must panic and not retry or loop
+ //
+ CpuDeadLoop ();
+}
diff --git a/OvmfPkg/Library/PlatformBootManagerLibGrub/PlatformData.c b/OvmfPkg/Library/PlatformBootManagerLibGrub/PlatformData.c
new file mode 100644
index 000000000000..2858c3dfd5ca
--- /dev/null
+++ b/OvmfPkg/Library/PlatformBootManagerLibGrub/PlatformData.c
@@ -0,0 +1,213 @@
+/** @file
+ Defined the platform specific device path which will be used by
+ platform Bbd to perform the platform policy connect.
+
+ Copyright (c) 2004 - 2017, Intel Corporation. All rights reserved.<BR>
+ SPDX-License-Identifier: BSD-2-Clause-Patent
+
+**/
+
+#include "BdsPlatform.h"
+#include <Guid/QemuRamfb.h>
+#include <Guid/SerialPortLibVendor.h>
+
+//
+// Vendor UART Device Path structure
+//
+#pragma pack (1)
+typedef struct {
+ VENDOR_DEVICE_PATH VendorHardware;
+ UART_DEVICE_PATH Uart;
+ VENDOR_DEVICE_PATH TerminalType;
+ EFI_DEVICE_PATH_PROTOCOL End;
+} VENDOR_UART_DEVICE_PATH;
+#pragma pack ()
+
+//
+// USB Keyboard Device Path structure
+//
+#pragma pack (1)
+typedef struct {
+ USB_CLASS_DEVICE_PATH Keyboard;
+ EFI_DEVICE_PATH_PROTOCOL End;
+} USB_KEYBOARD_DEVICE_PATH;
+#pragma pack ()
+
+//
+// QemuRamfb Device Path structure
+//
+#pragma pack (1)
+typedef struct {
+ VENDOR_DEVICE_PATH Vendor;
+ ACPI_ADR_DEVICE_PATH AcpiAdr;
+ EFI_DEVICE_PATH_PROTOCOL End;
+} VENDOR_RAMFB_DEVICE_PATH;
+#pragma pack ()
+
+ACPI_HID_DEVICE_PATH gPnpPs2KeyboardDeviceNode = gPnpPs2Keyboard;
+ACPI_HID_DEVICE_PATH gPnp16550ComPortDeviceNode = gPnp16550ComPort;
+UART_DEVICE_PATH gUartDeviceNode = gUart;
+VENDOR_DEVICE_PATH gTerminalTypeDeviceNode = gPcAnsiTerminal;
+
+//
+// Platform specific keyboard device path
+//
+
+
+//
+// Debug Agent UART Device Path
+//
+VENDOR_UART_DEVICE_PATH gDebugAgentUartDevicePath = {
+ {
+ {
+ HARDWARE_DEVICE_PATH,
+ HW_VENDOR_DP,
+ {
+ (UINT8) (sizeof (VENDOR_DEVICE_PATH)),
+ (UINT8) ((sizeof (VENDOR_DEVICE_PATH)) >> 8)
+ }
+ },
+ EFI_DEBUG_AGENT_GUID,
+ },
+ {
+ {
+ MESSAGING_DEVICE_PATH,
+ MSG_UART_DP,
+ {
+ (UINT8) (sizeof (UART_DEVICE_PATH)),
+ (UINT8) ((sizeof (UART_DEVICE_PATH)) >> 8)
+ }
+ },
+ 0, // Reserved
+ 0, // BaudRate - Default
+ 0, // DataBits - Default
+ 0, // Parity - Default
+ 0, // StopBits - Default
+ },
+ gPcAnsiTerminal,
+ gEndEntire
+};
+
+STATIC USB_KEYBOARD_DEVICE_PATH gUsbKeyboardDevicePath = {
+ {
+ {
+ MESSAGING_DEVICE_PATH,
+ MSG_USB_CLASS_DP,
+ {
+ (UINT8)sizeof (USB_CLASS_DEVICE_PATH),
+ (UINT8)(sizeof (USB_CLASS_DEVICE_PATH) >> 8)
+ }
+ },
+ 0xFFFF, // VendorId: any
+ 0xFFFF, // ProductId: any
+ 3, // DeviceClass: HID
+ 1, // DeviceSubClass: boot
+ 1 // DeviceProtocol: keyboard
+ },
+ gEndEntire
+};
+
+STATIC VENDOR_RAMFB_DEVICE_PATH gQemuRamfbDevicePath = {
+ {
+ {
+ HARDWARE_DEVICE_PATH,
+ HW_VENDOR_DP,
+ {
+ (UINT8) (sizeof (VENDOR_DEVICE_PATH)),
+ (UINT8) ((sizeof (VENDOR_DEVICE_PATH)) >> 8)
+ }
+ },
+ QEMU_RAMFB_GUID,
+ },
+ {
+ {
+ ACPI_DEVICE_PATH,
+ ACPI_ADR_DP,
+ {
+ (UINT8) (sizeof (ACPI_ADR_DEVICE_PATH)),
+ (UINT8) ((sizeof (ACPI_ADR_DEVICE_PATH)) >> 8)
+ }
+ },
+ ACPI_DISPLAY_ADR (
+ 1, // DeviceIdScheme
+ 0, // HeadId
+ 0, // NonVgaOutput
+ 1, // BiosCanDetect
+ 0, // VendorInfo
+ ACPI_ADR_DISPLAY_TYPE_EXTERNAL_DIGITAL, // Type
+ 0, // Port
+ 0 // Index
+ ),
+ },
+ gEndEntire
+};
+
+STATIC VENDOR_UART_DEVICE_PATH gXenConsoleDevicePath = {
+ {
+ {
+ HARDWARE_DEVICE_PATH,
+ HW_VENDOR_DP,
+ {
+ (UINT8) (sizeof (VENDOR_DEVICE_PATH)),
+ (UINT8) ((sizeof (VENDOR_DEVICE_PATH)) >> 8)
+ }
+ },
+ EDKII_SERIAL_PORT_LIB_VENDOR_GUID
+ },
+ {
+ {
+ MESSAGING_DEVICE_PATH,
+ MSG_UART_DP,
+ {
+ (UINT8) (sizeof (UART_DEVICE_PATH)),
+ (UINT8) ((sizeof (UART_DEVICE_PATH)) >> 8)
+ }
+ },
+ 0,
+ FixedPcdGet64 (PcdUartDefaultBaudRate),
+ FixedPcdGet8 (PcdUartDefaultDataBits),
+ FixedPcdGet8 (PcdUartDefaultParity),
+ FixedPcdGet8 (PcdUartDefaultStopBits),
+ },
+ gPcAnsiTerminal,
+ gEndEntire
+};
+
+//
+// Predefined platform default console device path
+//
+PLATFORM_CONSOLE_CONNECT_ENTRY gPlatformConsole[] = {
+ {
+ (EFI_DEVICE_PATH_PROTOCOL *) &gDebugAgentUartDevicePath,
+ (CONSOLE_OUT | CONSOLE_IN | STD_ERROR)
+ },
+ {
+ (EFI_DEVICE_PATH_PROTOCOL *)&gUsbKeyboardDevicePath,
+ CONSOLE_IN
+ },
+ {
+ (EFI_DEVICE_PATH_PROTOCOL *)&gQemuRamfbDevicePath,
+ CONSOLE_OUT
+ },
+ {
+ NULL,
+ 0
+ }
+};
+
+PLATFORM_CONSOLE_CONNECT_ENTRY gXenPlatformConsole[] = {
+ {
+ (EFI_DEVICE_PATH_PROTOCOL *)&gXenConsoleDevicePath,
+ (CONSOLE_OUT | CONSOLE_IN | STD_ERROR)
+ },
+ {
+ NULL,
+ 0
+ }
+};
+
+//
+// Predefined platform connect sequence
+//
+EFI_DEVICE_PATH_PROTOCOL *gPlatformConnectSequence[] = { NULL };
+
diff --git a/OvmfPkg/AmdSev/Grub/.gitignore b/OvmfPkg/AmdSev/Grub/.gitignore
new file mode 100644
index 000000000000..7e3b30951f22
--- /dev/null
+++ b/OvmfPkg/AmdSev/Grub/.gitignore
@@ -0,0 +1 @@
+grub.efi
diff --git a/OvmfPkg/AmdSev/Grub/grub.cfg b/OvmfPkg/AmdSev/Grub/grub.cfg
new file mode 100644
index 000000000000..b2951bb13e41
--- /dev/null
+++ b/OvmfPkg/AmdSev/Grub/grub.cfg
@@ -0,0 +1,46 @@
+## @file
+# Execute a script to recover the SEV supplied secret and use it to
+# decrypt a luks volume. For security, the kernel must be on an encrypted
+# volume so reboot if none are found.
+#
+# Copyright (C) 2020 James Bottomley, IBM Corporation.
+#
+# SPDX-License-Identifier: BSD-2-Clause-Patent
+#
+##
+
+echo "Entering grub config"
+sevsecret
+if [ $? -ne 0 ]; then
+ echo "Failed to locate anything in the SEV secret area, prompting for password"
+ cryptomount -a
+else
+ cryptomount -s
+ if [ $? -ne 0 ]; then
+ echo "Failed to mount root securely, retrying with password prompt"
+ cryptomount -a
+ fi
+fi
+set root=
+for f in (crypto*); do
+ if [ -e $f/boot/grub/grub.cfg ]; then
+ set root=$f
+ set prefix=($root)/boot/grub
+ break;
+ fi
+done
+if [ x$root = x ]; then
+ echo "Failed to find any grub configuration on the encrypted volume"
+ sleep 5
+ reboot
+fi
+# rest of modules to get boot to work
+set modules="
+ boot
+ loadenv
+ "
+for f in $modules; do
+ insmod $f
+done
+echo "Transferring to ${prefix}/grub.cfg"
+source $prefix/grub.cfg
diff --git a/OvmfPkg/AmdSev/Grub/grub.sh b/OvmfPkg/AmdSev/Grub/grub.sh
new file mode 100644
index 000000000000..fd28dc6ab274
--- /dev/null
+++ b/OvmfPkg/AmdSev/Grub/grub.sh
@@ -0,0 +1,92 @@
+## @file
+# Build a version of grub capable of decrypting a luks volume with a SEV
+# Supplied secret
+#
+# Copyright (C) 2020 James Bottomley, IBM Corporation.
+#
+# SPDX-License-Identifier: BSD-2-Clause-Patent
+#
+##
+
+set -e
+remove_efi=1
+
+cleanup() {
+ # remove the intermediates
+ for f in disk.fat grub-bootstrap.cfg; do
+ rm -f "${basedir}/$f"
+ done
+ if [ $remove_efi -eq 1 ]; then
+ rm -f "${basedir}/grub.efi"
+ fi
+}
+
+trap cleanup EXIT
+
+GRUB_MODULES="
+ part_msdos
+ part_gpt
+ cryptodisk
+ luks
+ gcry_rijndael
+ gcry_sha256
+ ext2
+ btrfs
+ xfs
+ fat
+ configfile
+ memdisk
+ sleep
+ normal
+ echo
+ test
+ regexp
+ linux
+ linuxefi
+ reboot
+ sevsecret
+ "
+basedir=$(dirname -- "$0")
+
+# don't run a build if grub.efi exists and is newer than the config files
+if [ -e "${basedir}/grub.efi" -a \
+ "${basedir}/grub.efi" -nt "${basedir}/grub.cfg" -a \
+ "${basedir}/grub.efi" -nt "${basedir}/grub.sh" ]; then
+ remove_efi=0
+ echo "preserving existing grub.efi"
+ exit 0
+fi
+
+##
+# different distributions have different names for grub-mkimage, so
+# search all the known ones
+##
+for b in grub2-mkimage grub-mkimage; do
+ if which "$b" > /dev/null 2>&1; then
+ mkimage="$b"
+ break;
+ fi
+done
+if [ -z "$mkimage" ]; then
+ echo "Can't find grub mkimage" >&2
+ exit 1
+fi
+
+# GRUB's rescue parser doesn't understand 'if'.
+echo 'normal (memdisk)/grub.cfg' > "${basedir}/grub-bootstrap.cfg"
+
+# Now build a memdisk with the correct grub.cfg
+rm -f -- "${basedir}/disk.fat"
+mkfs.msdos -C -- "${basedir}/disk.fat" 64
+mcopy -i "${basedir}/disk.fat" -- "${basedir}/grub.cfg" ::grub.cfg
+
+
+${mkimage} -O x86_64-efi \
+ -p '(crypto0)' \
+ -c "${basedir}/grub-bootstrap.cfg" \
+ -m "${basedir}/disk.fat" \
+ -o "${basedir}/grub.efi" \
+ ${GRUB_MODULES}
+
+remove_efi=0
+echo "grub.efi generated in ${basedir}"
--
2.26.2


[PATCH v2 1/6] OvmfPkg/Amdsev: Base commit to build encrypted boot specific OVMF

James Bottomley
 

This commit represents the file copied from OvmfPkgX64 with minor
changes to change the build name.

This package will form the basis for adding Sev specific features.
Since everything must go into a single rom file for attestation, the
separated build of code and variables is eliminated.

Ref: https://bugzilla.tianocore.org/show_bug.cgi?id=3077
Signed-off-by: James Bottomley <jejb@linux.ibm.com>

---

v2: remove secure boot, smm and networking
---
OvmfPkg/AmdSev/AmdSevX64.dsc | 867 +++++++++++++++++++++++++++++++++++
OvmfPkg/AmdSev/AmdSevX64.fdf | 461 +++++++++++++++++++
2 files changed, 1328 insertions(+)
create mode 100644 OvmfPkg/AmdSev/AmdSevX64.dsc
create mode 100644 OvmfPkg/AmdSev/AmdSevX64.fdf

diff --git a/OvmfPkg/AmdSev/AmdSevX64.dsc b/OvmfPkg/AmdSev/AmdSevX64.dsc
new file mode 100644
index 000000000000..852be757bfbe
--- /dev/null
+++ b/OvmfPkg/AmdSev/AmdSevX64.dsc
@@ -0,0 +1,867 @@
+## @file
+# EFI/Framework Open Virtual Machine Firmware (OVMF) platform for SEV secure
+# virtual machine remote attestation and secret injection
+#
+# Copyright (c) 2020 James Bottomley, IBM Corporation.
+# Copyright (c) 2006 - 2020, Intel Corporation. All rights reserved.<BR>
+# (C) Copyright 2016 Hewlett Packard Enterprise Development LP<BR>
+#
+# SPDX-License-Identifier: BSD-2-Clause-Patent
+#
+##
+
+################################################################################
+#
+# Defines Section - statements that will be processed to create a Makefile.
+#
+################################################################################
+[Defines]
+ PLATFORM_NAME = Ovmf
+ PLATFORM_GUID = 07ff380c-4760-4823-8f59-ec2cb06fbc16
+ PLATFORM_VERSION = 0.1
+ DSC_SPECIFICATION = 0x00010005
+ OUTPUT_DIRECTORY = Build/AmdSev
+ SUPPORTED_ARCHITECTURES = X64
+ BUILD_TARGETS = NOOPT|DEBUG|RELEASE
+ SKUID_IDENTIFIER = DEFAULT
+ FLASH_DEFINITION = OvmfPkg/AmdSev/AmdSevX64.fdf
+
+ #
+ # Defines for default states. These can be changed on the command line.
+ # -D FLAG=VALUE
+ #
+ DEFINE SOURCE_DEBUG_ENABLE = FALSE
+ DEFINE TPM_ENABLE = FALSE
+ DEFINE TPM_CONFIG_ENABLE = FALSE
+
+ #
+ # Device drivers
+ #
+ DEFINE PVSCSI_ENABLE = TRUE
+ DEFINE MPT_SCSI_ENABLE = TRUE
+ DEFINE LSI_SCSI_ENABLE = FALSE
+
+ #
+ # Flash size selection. Setting FD_SIZE_IN_KB on the command line directly to
+ # one of the supported values, in place of any of the convenience macros, is
+ # permitted.
+ #
+!ifdef $(FD_SIZE_1MB)
+ DEFINE FD_SIZE_IN_KB = 1024
+!else
+!ifdef $(FD_SIZE_2MB)
+ DEFINE FD_SIZE_IN_KB = 2048
+!else
+!ifdef $(FD_SIZE_4MB)
+ DEFINE FD_SIZE_IN_KB = 4096
+!else
+ DEFINE FD_SIZE_IN_KB = 4096
+!endif
+!endif
+!endif
+
+[BuildOptions]
+ GCC:RELEASE_*_*_CC_FLAGS = -DMDEPKG_NDEBUG
+ INTEL:RELEASE_*_*_CC_FLAGS = /D MDEPKG_NDEBUG
+ MSFT:RELEASE_*_*_CC_FLAGS = /D MDEPKG_NDEBUG
+!if $(TOOL_CHAIN_TAG) != "XCODE5" && $(TOOL_CHAIN_TAG) != "CLANGPDB"
+ GCC:*_*_*_CC_FLAGS = -mno-mmx -mno-sse
+!endif
+!if $(SOURCE_DEBUG_ENABLE) == TRUE
+ MSFT:*_*_X64_GENFW_FLAGS = --keepexceptiontable
+ GCC:*_*_X64_GENFW_FLAGS = --keepexceptiontable
+ INTEL:*_*_X64_GENFW_FLAGS = --keepexceptiontable
+!endif
+
+ #
+ # Disable deprecated APIs.
+ #
+ MSFT:*_*_*_CC_FLAGS = /D DISABLE_NEW_DEPRECATED_INTERFACES
+ INTEL:*_*_*_CC_FLAGS = /D DISABLE_NEW_DEPRECATED_INTERFACES
+ GCC:*_*_*_CC_FLAGS = -D DISABLE_NEW_DEPRECATED_INTERFACES
+
+[BuildOptions.common.EDKII.DXE_RUNTIME_DRIVER]
+ GCC:*_*_*_DLINK_FLAGS = -z common-page-size=0x1000
+ XCODE:*_*_*_DLINK_FLAGS = -seg1addr 0x1000 -segalign 0x1000
+ XCODE:*_*_*_MTOC_FLAGS = -align 0x1000
+ CLANGPDB:*_*_*_DLINK_FLAGS = /ALIGN:4096
+
+# Force PE/COFF sections to be aligned at 4KB boundaries to support page level
+# protection of DXE_SMM_DRIVER/SMM_CORE modules
+[BuildOptions.common.EDKII.DXE_SMM_DRIVER, BuildOptions.common.EDKII.SMM_CORE]
+ GCC:*_*_*_DLINK_FLAGS = -z common-page-size=0x1000
+ XCODE:*_*_*_DLINK_FLAGS = -seg1addr 0x1000 -segalign 0x1000
+ XCODE:*_*_*_MTOC_FLAGS = -align 0x1000
+ CLANGPDB:*_*_*_DLINK_FLAGS = /ALIGN:4096
+
+################################################################################
+#
+# SKU Identification section - list of all SKU IDs supported by this Platform.
+#
+################################################################################
+[SkuIds]
+ 0|DEFAULT
+
+################################################################################
+#
+# Library Class section - list of all Library Classes needed by this Platform.
+#
+################################################################################
+[LibraryClasses]
+ PcdLib|MdePkg/Library/BasePcdLibNull/BasePcdLibNull.inf
+ TimerLib|OvmfPkg/Library/AcpiTimerLib/BaseAcpiTimerLib.inf
+ ResetSystemLib|OvmfPkg/Library/ResetSystemLib/BaseResetSystemLib.inf
+ PrintLib|MdePkg/Library/BasePrintLib/BasePrintLib.inf
+ BaseMemoryLib|MdePkg/Library/BaseMemoryLibRepStr/BaseMemoryLibRepStr.inf
+ BaseLib|MdePkg/Library/BaseLib/BaseLib.inf
+ SafeIntLib|MdePkg/Library/BaseSafeIntLib/BaseSafeIntLib.inf
+ BmpSupportLib|MdeModulePkg/Library/BaseBmpSupportLib/BaseBmpSupportLib.inf
+ SynchronizationLib|MdePkg/Library/BaseSynchronizationLib/BaseSynchronizationLib.inf
+ CpuLib|MdePkg/Library/BaseCpuLib/BaseCpuLib.inf
+ PerformanceLib|MdePkg/Library/BasePerformanceLibNull/BasePerformanceLibNull.inf
+ PeCoffLib|MdePkg/Library/BasePeCoffLib/BasePeCoffLib.inf
+ CacheMaintenanceLib|MdePkg/Library/BaseCacheMaintenanceLib/BaseCacheMaintenanceLib.inf
+ UefiDecompressLib|MdePkg/Library/BaseUefiDecompressLib/BaseUefiDecompressLib.inf
+ UefiHiiServicesLib|MdeModulePkg/Library/UefiHiiServicesLib/UefiHiiServicesLib.inf
+ HiiLib|MdeModulePkg/Library/UefiHiiLib/UefiHiiLib.inf
+ SortLib|MdeModulePkg/Library/UefiSortLib/UefiSortLib.inf
+ UefiBootManagerLib|MdeModulePkg/Library/UefiBootManagerLib/UefiBootManagerLib.inf
+ BootLogoLib|MdeModulePkg/Library/BootLogoLib/BootLogoLib.inf
+ FileExplorerLib|MdeModulePkg/Library/FileExplorerLib/FileExplorerLib.inf
+ CapsuleLib|MdeModulePkg/Library/DxeCapsuleLibNull/DxeCapsuleLibNull.inf
+ DxeServicesLib|MdePkg/Library/DxeServicesLib/DxeServicesLib.inf
+ DxeServicesTableLib|MdePkg/Library/DxeServicesTableLib/DxeServicesTableLib.inf
+ PeCoffGetEntryPointLib|MdePkg/Library/BasePeCoffGetEntryPointLib/BasePeCoffGetEntryPointLib.inf
+ PciCf8Lib|MdePkg/Library/BasePciCf8Lib/BasePciCf8Lib.inf
+ PciExpressLib|MdePkg/Library/BasePciExpressLib/BasePciExpressLib.inf
+ PciLib|MdePkg/Library/BasePciLibCf8/BasePciLibCf8.inf
+ PciSegmentLib|MdePkg/Library/BasePciSegmentLibPci/BasePciSegmentLibPci.inf
+ PciCapLib|OvmfPkg/Library/BasePciCapLib/BasePciCapLib.inf
+ PciCapPciSegmentLib|OvmfPkg/Library/BasePciCapPciSegmentLib/BasePciCapPciSegmentLib.inf
+ PciCapPciIoLib|OvmfPkg/Library/UefiPciCapPciIoLib/UefiPciCapPciIoLib.inf
+ IoLib|MdePkg/Library/BaseIoLibIntrinsic/BaseIoLibIntrinsicSev.inf
+ OemHookStatusCodeLib|MdeModulePkg/Library/OemHookStatusCodeLibNull/OemHookStatusCodeLibNull.inf
+ SerialPortLib|PcAtChipsetPkg/Library/SerialIoLib/SerialIoLib.inf
+ MtrrLib|UefiCpuPkg/Library/MtrrLib/MtrrLib.inf
+ UefiLib|MdePkg/Library/UefiLib/UefiLib.inf
+ UefiBootServicesTableLib|MdePkg/Library/UefiBootServicesTableLib/UefiBootServicesTableLib.inf
+ UefiRuntimeServicesTableLib|MdePkg/Library/UefiRuntimeServicesTableLib/UefiRuntimeServicesTableLib.inf
+ UefiDriverEntryPoint|MdePkg/Library/UefiDriverEntryPoint/UefiDriverEntryPoint.inf
+ UefiApplicationEntryPoint|MdePkg/Library/UefiApplicationEntryPoint/UefiApplicationEntryPoint.inf
+ DevicePathLib|MdePkg/Library/UefiDevicePathLibDevicePathProtocol/UefiDevicePathLibDevicePathProtocol.inf
+ NvVarsFileLib|OvmfPkg/Library/NvVarsFileLib/NvVarsFileLib.inf
+ FileHandleLib|MdePkg/Library/UefiFileHandleLib/UefiFileHandleLib.inf
+ UefiCpuLib|UefiCpuPkg/Library/BaseUefiCpuLib/BaseUefiCpuLib.inf
+ SecurityManagementLib|MdeModulePkg/Library/DxeSecurityManagementLib/DxeSecurityManagementLib.inf
+ UefiUsbLib|MdePkg/Library/UefiUsbLib/UefiUsbLib.inf
+ SerializeVariablesLib|OvmfPkg/Library/SerializeVariablesLib/SerializeVariablesLib.inf
+ QemuFwCfgLib|OvmfPkg/Library/QemuFwCfgLib/QemuFwCfgDxeLib.inf
+ QemuFwCfgSimpleParserLib|OvmfPkg/Library/QemuFwCfgSimpleParserLib/QemuFwCfgSimpleParserLib.inf
+ VirtioLib|OvmfPkg/Library/VirtioLib/VirtioLib.inf
+ LoadLinuxLib|OvmfPkg/Library/LoadLinuxLib/LoadLinuxLib.inf
+ MemEncryptSevLib|OvmfPkg/Library/BaseMemEncryptSevLib/BaseMemEncryptSevLib.inf
+ LockBoxLib|OvmfPkg/Library/LockBoxLib/LockBoxBaseLib.inf
+ CustomizedDisplayLib|MdeModulePkg/Library/CustomizedDisplayLib/CustomizedDisplayLib.inf
+ FrameBufferBltLib|MdeModulePkg/Library/FrameBufferBltLib/FrameBufferBltLib.inf
+
+!if $(SOURCE_DEBUG_ENABLE) == TRUE
+ PeCoffExtraActionLib|SourceLevelDebugPkg/Library/PeCoffExtraActionLibDebug/PeCoffExtraActionLibDebug.inf
+ DebugCommunicationLib|SourceLevelDebugPkg/Library/DebugCommunicationLibSerialPort/DebugCommunicationLibSerialPort.inf
+!else
+ PeCoffExtraActionLib|MdePkg/Library/BasePeCoffExtraActionLibNull/BasePeCoffExtraActionLibNull.inf
+ DebugAgentLib|MdeModulePkg/Library/DebugAgentLibNull/DebugAgentLibNull.inf
+!endif
+
+ LocalApicLib|UefiCpuPkg/Library/BaseXApicX2ApicLib/BaseXApicX2ApicLib.inf
+ DebugPrintErrorLevelLib|MdePkg/Library/BaseDebugPrintErrorLevelLib/BaseDebugPrintErrorLevelLib.inf
+
+ IntrinsicLib|CryptoPkg/Library/IntrinsicLib/IntrinsicLib.inf
+ OpensslLib|CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf
+ RngLib|MdePkg/Library/BaseRngLibTimerLib/BaseRngLibTimerLib.inf
+
+ AuthVariableLib|MdeModulePkg/Library/AuthVariableLibNull/AuthVariableLibNull.inf
+ VarCheckLib|MdeModulePkg/Library/VarCheckLib/VarCheckLib.inf
+
+
+ ShellLib|ShellPkg/Library/UefiShellLib/UefiShellLib.inf
+ ShellCEntryLib|ShellPkg/Library/UefiShellCEntryLib/UefiShellCEntryLib.inf
+ S3BootScriptLib|MdeModulePkg/Library/PiDxeS3BootScriptLib/DxeS3BootScriptLib.inf
+ SmbusLib|MdePkg/Library/BaseSmbusLibNull/BaseSmbusLibNull.inf
+ OrderedCollectionLib|MdePkg/Library/BaseOrderedCollectionRedBlackTreeLib/BaseOrderedCollectionRedBlackTreeLib.inf
+ XenHypercallLib|OvmfPkg/Library/XenHypercallLib/XenHypercallLib.inf
+ XenPlatformLib|OvmfPkg/Library/XenPlatformLib/XenPlatformLib.inf
+
+!if $(TPM_ENABLE) == TRUE
+ Tpm12CommandLib|SecurityPkg/Library/Tpm12CommandLib/Tpm12CommandLib.inf
+ Tpm2CommandLib|SecurityPkg/Library/Tpm2CommandLib/Tpm2CommandLib.inf
+ Tcg2PhysicalPresenceLib|OvmfPkg/Library/Tcg2PhysicalPresenceLibQemu/DxeTcg2PhysicalPresenceLib.inf
+ Tcg2PpVendorLib|SecurityPkg/Library/Tcg2PpVendorLibNull/Tcg2PpVendorLibNull.inf
+ TpmMeasurementLib|SecurityPkg/Library/DxeTpmMeasurementLib/DxeTpmMeasurementLib.inf
+!else
+ Tcg2PhysicalPresenceLib|OvmfPkg/Library/Tcg2PhysicalPresenceLibNull/DxeTcg2PhysicalPresenceLib.inf
+ TpmMeasurementLib|MdeModulePkg/Library/TpmMeasurementLibNull/TpmMeasurementLibNull.inf
+!endif
+
+[LibraryClasses.common]
+ BaseCryptLib|CryptoPkg/Library/BaseCryptLib/BaseCryptLib.inf
+ VmgExitLib|OvmfPkg/Library/VmgExitLib/VmgExitLib.inf
+
+[LibraryClasses.common.SEC]
+ TimerLib|OvmfPkg/Library/AcpiTimerLib/BaseRomAcpiTimerLib.inf
+ QemuFwCfgLib|OvmfPkg/Library/QemuFwCfgLib/QemuFwCfgSecLib.inf
+!ifdef $(DEBUG_ON_SERIAL_PORT)
+ DebugLib|MdePkg/Library/BaseDebugLibSerialPort/BaseDebugLibSerialPort.inf
+!else
+ DebugLib|OvmfPkg/Library/PlatformDebugLibIoPort/PlatformRomDebugLibIoPort.inf
+!endif
+ ReportStatusCodeLib|MdeModulePkg/Library/PeiReportStatusCodeLib/PeiReportStatusCodeLib.inf
+ ExtractGuidedSectionLib|MdePkg/Library/BaseExtractGuidedSectionLib/BaseExtractGuidedSectionLib.inf
+!if $(SOURCE_DEBUG_ENABLE) == TRUE
+ DebugAgentLib|SourceLevelDebugPkg/Library/DebugAgent/SecPeiDebugAgentLib.inf
+!endif
+ HobLib|MdePkg/Library/PeiHobLib/PeiHobLib.inf
+ PeiServicesLib|MdePkg/Library/PeiServicesLib/PeiServicesLib.inf
+ PeiServicesTablePointerLib|MdePkg/Library/PeiServicesTablePointerLibIdt/PeiServicesTablePointerLibIdt.inf
+ MemoryAllocationLib|MdePkg/Library/PeiMemoryAllocationLib/PeiMemoryAllocationLib.inf
+!if $(TOOL_CHAIN_TAG) == "XCODE5"
+ CpuExceptionHandlerLib|UefiCpuPkg/Library/CpuExceptionHandlerLib/Xcode5SecPeiCpuExceptionHandlerLib.inf
+!else
+ CpuExceptionHandlerLib|UefiCpuPkg/Library/CpuExceptionHandlerLib/SecPeiCpuExceptionHandlerLib.inf
+!endif
+
+[LibraryClasses.common.PEI_CORE]
+ HobLib|MdePkg/Library/PeiHobLib/PeiHobLib.inf
+ PeiServicesTablePointerLib|MdePkg/Library/PeiServicesTablePointerLibIdt/PeiServicesTablePointerLibIdt.inf
+ PeiServicesLib|MdePkg/Library/PeiServicesLib/PeiServicesLib.inf
+ MemoryAllocationLib|MdePkg/Library/PeiMemoryAllocationLib/PeiMemoryAllocationLib.inf
+ PeiCoreEntryPoint|MdePkg/Library/PeiCoreEntryPoint/PeiCoreEntryPoint.inf
+ ReportStatusCodeLib|MdeModulePkg/Library/PeiReportStatusCodeLib/PeiReportStatusCodeLib.inf
+ OemHookStatusCodeLib|MdeModulePkg/Library/OemHookStatusCodeLibNull/OemHookStatusCodeLibNull.inf
+ PeCoffGetEntryPointLib|MdePkg/Library/BasePeCoffGetEntryPointLib/BasePeCoffGetEntryPointLib.inf
+!ifdef $(DEBUG_ON_SERIAL_PORT)
+ DebugLib|MdePkg/Library/BaseDebugLibSerialPort/BaseDebugLibSerialPort.inf
+!else
+ DebugLib|OvmfPkg/Library/PlatformDebugLibIoPort/PlatformDebugLibIoPort.inf
+!endif
+ PeCoffLib|MdePkg/Library/BasePeCoffLib/BasePeCoffLib.inf
+
+[LibraryClasses.common.PEIM]
+ HobLib|MdePkg/Library/PeiHobLib/PeiHobLib.inf
+ PeiServicesTablePointerLib|MdePkg/Library/PeiServicesTablePointerLibIdt/PeiServicesTablePointerLibIdt.inf
+ PeiServicesLib|MdePkg/Library/PeiServicesLib/PeiServicesLib.inf
+ MemoryAllocationLib|MdePkg/Library/PeiMemoryAllocationLib/PeiMemoryAllocationLib.inf
+ PeimEntryPoint|MdePkg/Library/PeimEntryPoint/PeimEntryPoint.inf
+ ReportStatusCodeLib|MdeModulePkg/Library/PeiReportStatusCodeLib/PeiReportStatusCodeLib.inf
+ OemHookStatusCodeLib|MdeModulePkg/Library/OemHookStatusCodeLibNull/OemHookStatusCodeLibNull.inf
+ PeCoffGetEntryPointLib|MdePkg/Library/BasePeCoffGetEntryPointLib/BasePeCoffGetEntryPointLib.inf
+!ifdef $(DEBUG_ON_SERIAL_PORT)
+ DebugLib|MdePkg/Library/BaseDebugLibSerialPort/BaseDebugLibSerialPort.inf
+!else
+ DebugLib|OvmfPkg/Library/PlatformDebugLibIoPort/PlatformDebugLibIoPort.inf
+!endif
+ PeCoffLib|MdePkg/Library/BasePeCoffLib/BasePeCoffLib.inf
+ ResourcePublicationLib|MdePkg/Library/PeiResourcePublicationLib/PeiResourcePublicationLib.inf
+ ExtractGuidedSectionLib|MdePkg/Library/PeiExtractGuidedSectionLib/PeiExtractGuidedSectionLib.inf
+!if $(SOURCE_DEBUG_ENABLE) == TRUE
+ DebugAgentLib|SourceLevelDebugPkg/Library/DebugAgent/SecPeiDebugAgentLib.inf
+!endif
+ CpuExceptionHandlerLib|UefiCpuPkg/Library/CpuExceptionHandlerLib/PeiCpuExceptionHandlerLib.inf
+ MpInitLib|UefiCpuPkg/Library/MpInitLib/PeiMpInitLib.inf
+ QemuFwCfgS3Lib|OvmfPkg/Library/QemuFwCfgS3Lib/PeiQemuFwCfgS3LibFwCfg.inf
+ PcdLib|MdePkg/Library/PeiPcdLib/PeiPcdLib.inf
+ QemuFwCfgLib|OvmfPkg/Library/QemuFwCfgLib/QemuFwCfgPeiLib.inf
+
+!if $(TPM_ENABLE) == TRUE
+ BaseCryptLib|CryptoPkg/Library/BaseCryptLib/PeiCryptLib.inf
+ Tpm12DeviceLib|SecurityPkg/Library/Tpm12DeviceLibDTpm/Tpm12DeviceLibDTpm.inf
+ Tpm2DeviceLib|SecurityPkg/Library/Tpm2DeviceLibDTpm/Tpm2DeviceLibDTpm.inf
+!endif
+
+[LibraryClasses.common.DXE_CORE]
+ HobLib|MdePkg/Library/DxeCoreHobLib/DxeCoreHobLib.inf
+ DxeCoreEntryPoint|MdePkg/Library/DxeCoreEntryPoint/DxeCoreEntryPoint.inf
+ MemoryAllocationLib|MdeModulePkg/Library/DxeCoreMemoryAllocationLib/DxeCoreMemoryAllocationLib.inf
+ ReportStatusCodeLib|MdeModulePkg/Library/DxeReportStatusCodeLib/DxeReportStatusCodeLib.inf
+!ifdef $(DEBUG_ON_SERIAL_PORT)
+ DebugLib|MdePkg/Library/BaseDebugLibSerialPort/BaseDebugLibSerialPort.inf
+!else
+ DebugLib|OvmfPkg/Library/PlatformDebugLibIoPort/PlatformDebugLibIoPort.inf
+!endif
+ ExtractGuidedSectionLib|MdePkg/Library/DxeExtractGuidedSectionLib/DxeExtractGuidedSectionLib.inf
+!if $(SOURCE_DEBUG_ENABLE) == TRUE
+ DebugAgentLib|SourceLevelDebugPkg/Library/DebugAgent/DxeDebugAgentLib.inf
+!endif
+ CpuExceptionHandlerLib|UefiCpuPkg/Library/CpuExceptionHandlerLib/DxeCpuExceptionHandlerLib.inf
+ PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf
+
+[LibraryClasses.common.DXE_RUNTIME_DRIVER]
+ PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf
+ TimerLib|OvmfPkg/Library/AcpiTimerLib/DxeAcpiTimerLib.inf
+ ResetSystemLib|OvmfPkg/Library/ResetSystemLib/DxeResetSystemLib.inf
+ HobLib|MdePkg/Library/DxeHobLib/DxeHobLib.inf
+ DxeCoreEntryPoint|MdePkg/Library/DxeCoreEntryPoint/DxeCoreEntryPoint.inf
+ MemoryAllocationLib|MdePkg/Library/UefiMemoryAllocationLib/UefiMemoryAllocationLib.inf
+ ReportStatusCodeLib|MdeModulePkg/Library/RuntimeDxeReportStatusCodeLib/RuntimeDxeReportStatusCodeLib.inf
+!ifdef $(DEBUG_ON_SERIAL_PORT)
+ DebugLib|MdePkg/Library/BaseDebugLibSerialPort/BaseDebugLibSerialPort.inf
+!else
+ DebugLib|OvmfPkg/Library/PlatformDebugLibIoPort/PlatformDebugLibIoPort.inf
+!endif
+ UefiRuntimeLib|MdePkg/Library/UefiRuntimeLib/UefiRuntimeLib.inf
+ BaseCryptLib|CryptoPkg/Library/BaseCryptLib/RuntimeCryptLib.inf
+ PciLib|OvmfPkg/Library/DxePciLibI440FxQ35/DxePciLibI440FxQ35.inf
+ QemuFwCfgS3Lib|OvmfPkg/Library/QemuFwCfgS3Lib/DxeQemuFwCfgS3LibFwCfg.inf
+
+[LibraryClasses.common.UEFI_DRIVER]
+ PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf
+ TimerLib|OvmfPkg/Library/AcpiTimerLib/DxeAcpiTimerLib.inf
+ ResetSystemLib|OvmfPkg/Library/ResetSystemLib/DxeResetSystemLib.inf
+ HobLib|MdePkg/Library/DxeHobLib/DxeHobLib.inf
+ DxeCoreEntryPoint|MdePkg/Library/DxeCoreEntryPoint/DxeCoreEntryPoint.inf
+ MemoryAllocationLib|MdePkg/Library/UefiMemoryAllocationLib/UefiMemoryAllocationLib.inf
+ ReportStatusCodeLib|MdeModulePkg/Library/DxeReportStatusCodeLib/DxeReportStatusCodeLib.inf
+!ifdef $(DEBUG_ON_SERIAL_PORT)
+ DebugLib|MdePkg/Library/BaseDebugLibSerialPort/BaseDebugLibSerialPort.inf
+!else
+ DebugLib|OvmfPkg/Library/PlatformDebugLibIoPort/PlatformDebugLibIoPort.inf
+!endif
+ UefiScsiLib|MdePkg/Library/UefiScsiLib/UefiScsiLib.inf
+ PciLib|OvmfPkg/Library/DxePciLibI440FxQ35/DxePciLibI440FxQ35.inf
+
+[LibraryClasses.common.DXE_DRIVER]
+ PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf
+ TimerLib|OvmfPkg/Library/AcpiTimerLib/DxeAcpiTimerLib.inf
+ ResetSystemLib|OvmfPkg/Library/ResetSystemLib/DxeResetSystemLib.inf
+ HobLib|MdePkg/Library/DxeHobLib/DxeHobLib.inf
+ MemoryAllocationLib|MdePkg/Library/UefiMemoryAllocationLib/UefiMemoryAllocationLib.inf
+ ReportStatusCodeLib|MdeModulePkg/Library/DxeReportStatusCodeLib/DxeReportStatusCodeLib.inf
+ UefiScsiLib|MdePkg/Library/UefiScsiLib/UefiScsiLib.inf
+!ifdef $(DEBUG_ON_SERIAL_PORT)
+ DebugLib|MdePkg/Library/BaseDebugLibSerialPort/BaseDebugLibSerialPort.inf
+!else
+ DebugLib|OvmfPkg/Library/PlatformDebugLibIoPort/PlatformDebugLibIoPort.inf
+!endif
+ PlatformBootManagerLib|OvmfPkg/Library/PlatformBootManagerLib/PlatformBootManagerLib.inf
+ PlatformBmPrintScLib|OvmfPkg/Library/PlatformBmPrintScLib/PlatformBmPrintScLib.inf
+ QemuBootOrderLib|OvmfPkg/Library/QemuBootOrderLib/QemuBootOrderLib.inf
+ CpuExceptionHandlerLib|UefiCpuPkg/Library/CpuExceptionHandlerLib/DxeCpuExceptionHandlerLib.inf
+ LockBoxLib|OvmfPkg/Library/LockBoxLib/LockBoxDxeLib.inf
+!if $(SOURCE_DEBUG_ENABLE) == TRUE
+ DebugAgentLib|SourceLevelDebugPkg/Library/DebugAgent/DxeDebugAgentLib.inf
+!endif
+ PciLib|OvmfPkg/Library/DxePciLibI440FxQ35/DxePciLibI440FxQ35.inf
+ MpInitLib|UefiCpuPkg/Library/MpInitLib/DxeMpInitLib.inf
+ QemuFwCfgS3Lib|OvmfPkg/Library/QemuFwCfgS3Lib/DxeQemuFwCfgS3LibFwCfg.inf
+ QemuLoadImageLib|OvmfPkg/Library/X86QemuLoadImageLib/X86QemuLoadImageLib.inf
+!if $(TPM_ENABLE) == TRUE
+ Tpm12DeviceLib|SecurityPkg/Library/Tpm12DeviceLibTcg/Tpm12DeviceLibTcg.inf
+ Tpm2DeviceLib|SecurityPkg/Library/Tpm2DeviceLibTcg2/Tpm2DeviceLibTcg2.inf
+!endif
+
+[LibraryClasses.common.UEFI_APPLICATION]
+ PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf
+ TimerLib|OvmfPkg/Library/AcpiTimerLib/DxeAcpiTimerLib.inf
+ ResetSystemLib|OvmfPkg/Library/ResetSystemLib/DxeResetSystemLib.inf
+ HobLib|MdePkg/Library/DxeHobLib/DxeHobLib.inf
+ MemoryAllocationLib|MdePkg/Library/UefiMemoryAllocationLib/UefiMemoryAllocationLib.inf
+ ReportStatusCodeLib|MdeModulePkg/Library/DxeReportStatusCodeLib/DxeReportStatusCodeLib.inf
+!ifdef $(DEBUG_ON_SERIAL_PORT)
+ DebugLib|MdePkg/Library/BaseDebugLibSerialPort/BaseDebugLibSerialPort.inf
+!else
+ DebugLib|OvmfPkg/Library/PlatformDebugLibIoPort/PlatformDebugLibIoPort.inf
+!endif
+ PciLib|OvmfPkg/Library/DxePciLibI440FxQ35/DxePciLibI440FxQ35.inf
+
+[LibraryClasses.common.DXE_SMM_DRIVER]
+ PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf
+ TimerLib|OvmfPkg/Library/AcpiTimerLib/DxeAcpiTimerLib.inf
+ ResetSystemLib|OvmfPkg/Library/ResetSystemLib/DxeResetSystemLib.inf
+ MemoryAllocationLib|MdePkg/Library/SmmMemoryAllocationLib/SmmMemoryAllocationLib.inf
+ ReportStatusCodeLib|MdeModulePkg/Library/DxeReportStatusCodeLib/DxeReportStatusCodeLib.inf
+ HobLib|MdePkg/Library/DxeHobLib/DxeHobLib.inf
+ SmmMemLib|MdePkg/Library/SmmMemLib/SmmMemLib.inf
+ MmServicesTableLib|MdePkg/Library/MmServicesTableLib/MmServicesTableLib.inf
+ SmmServicesTableLib|MdePkg/Library/SmmServicesTableLib/SmmServicesTableLib.inf
+!ifdef $(DEBUG_ON_SERIAL_PORT)
+ DebugLib|MdePkg/Library/BaseDebugLibSerialPort/BaseDebugLibSerialPort.inf
+!else
+ DebugLib|OvmfPkg/Library/PlatformDebugLibIoPort/PlatformDebugLibIoPort.inf
+!endif
+ CpuExceptionHandlerLib|UefiCpuPkg/Library/CpuExceptionHandlerLib/SmmCpuExceptionHandlerLib.inf
+!if $(SOURCE_DEBUG_ENABLE) == TRUE
+ DebugAgentLib|SourceLevelDebugPkg/Library/DebugAgent/SmmDebugAgentLib.inf
+!endif
+ BaseCryptLib|CryptoPkg/Library/BaseCryptLib/SmmCryptLib.inf
+ PciLib|OvmfPkg/Library/DxePciLibI440FxQ35/DxePciLibI440FxQ35.inf
+
+[LibraryClasses.common.SMM_CORE]
+ PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf
+ TimerLib|OvmfPkg/Library/AcpiTimerLib/DxeAcpiTimerLib.inf
+ ResetSystemLib|OvmfPkg/Library/ResetSystemLib/DxeResetSystemLib.inf
+ SmmCorePlatformHookLib|MdeModulePkg/Library/SmmCorePlatformHookLibNull/SmmCorePlatformHookLibNull.inf
+ MemoryAllocationLib|MdeModulePkg/Library/PiSmmCoreMemoryAllocationLib/PiSmmCoreMemoryAllocationLib.inf
+ ReportStatusCodeLib|MdeModulePkg/Library/DxeReportStatusCodeLib/DxeReportStatusCodeLib.inf
+ HobLib|MdePkg/Library/DxeHobLib/DxeHobLib.inf
+ SmmMemLib|MdePkg/Library/SmmMemLib/SmmMemLib.inf
+ SmmServicesTableLib|MdeModulePkg/Library/PiSmmCoreSmmServicesTableLib/PiSmmCoreSmmServicesTableLib.inf
+!ifdef $(DEBUG_ON_SERIAL_PORT)
+ DebugLib|MdePkg/Library/BaseDebugLibSerialPort/BaseDebugLibSerialPort.inf
+!else
+ DebugLib|OvmfPkg/Library/PlatformDebugLibIoPort/PlatformDebugLibIoPort.inf
+!endif
+ PciLib|OvmfPkg/Library/DxePciLibI440FxQ35/DxePciLibI440FxQ35.inf
+
+################################################################################
+#
+# Pcd Section - list of all EDK II PCD Entries defined by this Platform.
+#
+################################################################################
+[PcdsFeatureFlag]
+ gEfiMdeModulePkgTokenSpaceGuid.PcdHiiOsRuntimeSupport|FALSE
+ gEfiMdeModulePkgTokenSpaceGuid.PcdDxeIplSupportUefiDecompress|FALSE
+ gEfiMdeModulePkgTokenSpaceGuid.PcdDxeIplSwitchToLongMode|FALSE
+ gEfiMdeModulePkgTokenSpaceGuid.PcdConOutGopSupport|TRUE
+ gEfiMdeModulePkgTokenSpaceGuid.PcdConOutUgaSupport|FALSE
+ gEfiMdeModulePkgTokenSpaceGuid.PcdInstallAcpiSdtProtocol|TRUE
+!ifdef $(CSM_ENABLE)
+ gUefiOvmfPkgTokenSpaceGuid.PcdCsmEnable|TRUE
+!endif
+
+[PcdsFixedAtBuild]
+ gEfiMdeModulePkgTokenSpaceGuid.PcdStatusCodeMemorySize|1
+ gEfiMdeModulePkgTokenSpaceGuid.PcdResetOnMemoryTypeInformationChange|FALSE
+ gEfiMdePkgTokenSpaceGuid.PcdMaximumGuidedExtractHandler|0x10
+!if ($(FD_SIZE_IN_KB) == 1024) || ($(FD_SIZE_IN_KB) == 2048)
+ gEfiMdeModulePkgTokenSpaceGuid.PcdMaxVariableSize|0x2000
+ gEfiMdeModulePkgTokenSpaceGuid.PcdMaxAuthVariableSize|0x2800
+ # match PcdFlashNvStorageVariableSize purely for convenience
+ gEfiMdeModulePkgTokenSpaceGuid.PcdVariableStoreSize|0xe000
+!endif
+!if $(FD_SIZE_IN_KB) == 4096
+ gEfiMdeModulePkgTokenSpaceGuid.PcdMaxVariableSize|0x8400
+ gEfiMdeModulePkgTokenSpaceGuid.PcdMaxAuthVariableSize|0x8400
+ # match PcdFlashNvStorageVariableSize purely for convenience
+ gEfiMdeModulePkgTokenSpaceGuid.PcdVariableStoreSize|0x40000
+!endif
+ gEfiMdeModulePkgTokenSpaceGuid.PcdVariableStoreSize|0x80000
+ gEfiMdeModulePkgTokenSpaceGuid.PcdMaxVolatileVariableSize|0x40000
+
+ gEfiMdeModulePkgTokenSpaceGuid.PcdVpdBaseAddress|0x0
+ gEfiMdeModulePkgTokenSpaceGuid.PcdStatusCodeUseSerial|FALSE
+ gEfiMdeModulePkgTokenSpaceGuid.PcdStatusCodeUseMemory|TRUE
+
+ gEfiMdePkgTokenSpaceGuid.PcdReportStatusCodePropertyMask|0x07
+
+ # DEBUG_INIT 0x00000001 // Initialization
+ # DEBUG_WARN 0x00000002 // Warnings
+ # DEBUG_LOAD 0x00000004 // Load events
+ # DEBUG_FS 0x00000008 // EFI File system
+ # DEBUG_POOL 0x00000010 // Alloc & Free (pool)
+ # DEBUG_PAGE 0x00000020 // Alloc & Free (page)
+ # DEBUG_INFO 0x00000040 // Informational debug messages
+ # DEBUG_DISPATCH 0x00000080 // PEI/DXE/SMM Dispatchers
+ # DEBUG_VARIABLE 0x00000100 // Variable
+ # DEBUG_BM 0x00000400 // Boot Manager
+ # DEBUG_BLKIO 0x00001000 // BlkIo Driver
+ # DEBUG_NET 0x00004000 // SNP Driver
+ # DEBUG_UNDI 0x00010000 // UNDI Driver
+ # DEBUG_LOADFILE 0x00020000 // LoadFile
+ # DEBUG_EVENT 0x00080000 // Event messages
+ # DEBUG_GCD 0x00100000 // Global Coherency Database changes
+ # DEBUG_CACHE 0x00200000 // Memory range cachability changes
+ # DEBUG_VERBOSE 0x00400000 // Detailed debug messages that may
+ # // significantly impact boot performance
+ # DEBUG_ERROR 0x80000000 // Error
+ gEfiMdePkgTokenSpaceGuid.PcdDebugPrintErrorLevel|0x8000004F
+
+!if $(SOURCE_DEBUG_ENABLE) == TRUE
+ gEfiMdePkgTokenSpaceGuid.PcdDebugPropertyMask|0x17
+!else
+ gEfiMdePkgTokenSpaceGuid.PcdDebugPropertyMask|0x2F
+!endif
+
+ # This PCD is used to set the base address of the PCI express hierarchy. It
+ # is only consulted when OVMF runs on Q35. In that case it is programmed into
+ # the PCIEXBAR register.
+ #
+ # On Q35 machine types that QEMU intends to support in the long term, QEMU
+ # never lets the RAM below 4 GB exceed 2816 MB.
+ gEfiMdePkgTokenSpaceGuid.PcdPciExpressBaseAddress|0xB0000000
+
+!if $(SOURCE_DEBUG_ENABLE) == TRUE
+ gEfiSourceLevelDebugPkgTokenSpaceGuid.PcdDebugLoadImageMethod|0x2
+!endif
+
+ #
+ # The NumberOfPages values below are ad-hoc. They are updated sporadically at
+ # best (please refer to git-blame for past updates). The values capture a set
+ # of BIN hints that made sense at a particular time, for some (now likely
+ # unknown) workloads / boot paths.
+ #
+ gEmbeddedTokenSpaceGuid.PcdMemoryTypeEfiACPIMemoryNVS|0x80
+ gEmbeddedTokenSpaceGuid.PcdMemoryTypeEfiACPIReclaimMemory|0x10
+ gEmbeddedTokenSpaceGuid.PcdMemoryTypeEfiReservedMemoryType|0x80
+ gEmbeddedTokenSpaceGuid.PcdMemoryTypeEfiRuntimeServicesCode|0x100
+ gEmbeddedTokenSpaceGuid.PcdMemoryTypeEfiRuntimeServicesData|0x100
+
+ # IRQs 5, 9, 10, 11 are level-triggered
+ gUefiOvmfPkgTokenSpaceGuid.Pcd8259LegacyModeEdgeLevel|0x0E20
+
+ # Point to the MdeModulePkg/Application/UiApp/UiApp.inf
+ gEfiMdeModulePkgTokenSpaceGuid.PcdBootManagerMenuFile|{ 0x21, 0xaa, 0x2c, 0x46, 0x14, 0x76, 0x03, 0x45, 0x83, 0x6e, 0x8a, 0xb6, 0xf4, 0x66, 0x23, 0x31 }
+
+################################################################################
+#
+# Pcd Dynamic Section - list of all EDK II PCD Entries defined by this Platform
+#
+################################################################################
+
+[PcdsDynamicDefault]
+ # only set when
+ # ($(SMM_REQUIRE) == FALSE)
+ gEfiMdeModulePkgTokenSpaceGuid.PcdEmuVariableNvStoreReserved|0
+
+ gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableBase64|0
+ gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingBase|0
+ gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareBase|0
+ gEfiMdeModulePkgTokenSpaceGuid.PcdPciDisableBusEnumeration|FALSE
+ gEfiMdeModulePkgTokenSpaceGuid.PcdVideoHorizontalResolution|800
+ gEfiMdeModulePkgTokenSpaceGuid.PcdVideoVerticalResolution|600
+ gEfiMdeModulePkgTokenSpaceGuid.PcdAcpiS3Enable|FALSE
+ gUefiOvmfPkgTokenSpaceGuid.PcdOvmfHostBridgePciDevId|0
+ gUefiOvmfPkgTokenSpaceGuid.PcdPciIoBase|0x0
+ gUefiOvmfPkgTokenSpaceGuid.PcdPciIoSize|0x0
+ gUefiOvmfPkgTokenSpaceGuid.PcdPciMmio32Base|0x0
+ gUefiOvmfPkgTokenSpaceGuid.PcdPciMmio32Size|0x0
+ gUefiOvmfPkgTokenSpaceGuid.PcdPciMmio64Base|0x0
+!ifdef $(CSM_ENABLE)
+ gUefiOvmfPkgTokenSpaceGuid.PcdPciMmio64Size|0x0
+!else
+ gUefiOvmfPkgTokenSpaceGuid.PcdPciMmio64Size|0x800000000
+!endif
+
+ gEfiMdePkgTokenSpaceGuid.PcdPlatformBootTimeOut|0
+
+ # Set video resolution for text setup.
+ gEfiMdeModulePkgTokenSpaceGuid.PcdSetupVideoHorizontalResolution|640
+ gEfiMdeModulePkgTokenSpaceGuid.PcdSetupVideoVerticalResolution|480
+
+ gEfiMdeModulePkgTokenSpaceGuid.PcdSmbiosVersion|0x0208
+ gEfiMdeModulePkgTokenSpaceGuid.PcdSmbiosDocRev|0x0
+ gUefiOvmfPkgTokenSpaceGuid.PcdQemuSmbiosValidated|FALSE
+
+ # Noexec settings for DXE.
+ gEfiMdeModulePkgTokenSpaceGuid.PcdSetNxForStack|FALSE
+
+ # UefiCpuPkg PCDs related to initial AP bringup and general AP management.
+ gUefiCpuPkgTokenSpaceGuid.PcdCpuMaxLogicalProcessorNumber|64
+ gUefiCpuPkgTokenSpaceGuid.PcdCpuBootLogicalProcessorNumber|0
+
+ # Set memory encryption mask
+ gEfiMdeModulePkgTokenSpaceGuid.PcdPteMemoryEncryptionAddressOrMask|0x0
+
+ # Set SEV-ES defaults
+ gEfiMdeModulePkgTokenSpaceGuid.PcdGhcbBase|0
+ gEfiMdeModulePkgTokenSpaceGuid.PcdGhcbSize|0
+ gUefiCpuPkgTokenSpaceGuid.PcdSevEsIsEnabled|0
+
+ gEfiSecurityPkgTokenSpaceGuid.PcdOptionRomImageVerificationPolicy|0x00
+
+!if $(TPM_ENABLE) == TRUE
+ gEfiSecurityPkgTokenSpaceGuid.PcdTpmInstanceGuid|{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
+!endif
+
+[PcdsDynamicHii]
+!if $(TPM_ENABLE) == TRUE && $(TPM_CONFIG_ENABLE) == TRUE
+ gEfiSecurityPkgTokenSpaceGuid.PcdTcgPhysicalPresenceInterfaceVer|L"TCG2_VERSION"|gTcg2ConfigFormSetGuid|0x0|"1.3"|NV,BS
+ gEfiSecurityPkgTokenSpaceGuid.PcdTpm2AcpiTableRev|L"TCG2_VERSION"|gTcg2ConfigFormSetGuid|0x8|3|NV,BS
+!endif
+
+################################################################################
+#
+# Components Section - list of all EDK II Modules needed by this Platform.
+#
+################################################################################
+[Components]
+ OvmfPkg/ResetVector/ResetVector.inf
+
+ #
+ # SEC Phase modules
+ #
+ OvmfPkg/Sec/SecMain.inf {
+ <LibraryClasses>
+ NULL|MdeModulePkg/Library/LzmaCustomDecompressLib/LzmaCustomDecompressLib.inf
+ }
+
+ #
+ # PEI Phase modules
+ #
+ MdeModulePkg/Core/Pei/PeiMain.inf
+ MdeModulePkg/Universal/PCD/Pei/Pcd.inf {
+ <LibraryClasses>
+ PcdLib|MdePkg/Library/BasePcdLibNull/BasePcdLibNull.inf
+ }
+ MdeModulePkg/Universal/ReportStatusCodeRouter/Pei/ReportStatusCodeRouterPei.inf {
+ <LibraryClasses>
+ PcdLib|MdePkg/Library/BasePcdLibNull/BasePcdLibNull.inf
+ }
+ MdeModulePkg/Universal/StatusCodeHandler/Pei/StatusCodeHandlerPei.inf {
+ <LibraryClasses>
+ PcdLib|MdePkg/Library/BasePcdLibNull/BasePcdLibNull.inf
+ }
+ MdeModulePkg/Core/DxeIplPeim/DxeIpl.inf
+
+ OvmfPkg/PlatformPei/PlatformPei.inf
+ UefiCpuPkg/Universal/Acpi/S3Resume2Pei/S3Resume2Pei.inf {
+ <LibraryClasses>
+ }
+ UefiCpuPkg/CpuMpPei/CpuMpPei.inf
+
+!if $(TPM_ENABLE) == TRUE
+ OvmfPkg/Tcg/Tcg2Config/Tcg2ConfigPei.inf
+ SecurityPkg/Tcg/TcgPei/TcgPei.inf
+ SecurityPkg/Tcg/Tcg2Pei/Tcg2Pei.inf {
+ <LibraryClasses>
+ HashLib|SecurityPkg/Library/HashLibBaseCryptoRouter/HashLibBaseCryptoRouterPei.inf
+ NULL|SecurityPkg/Library/HashInstanceLibSha1/HashInstanceLibSha1.inf
+ NULL|SecurityPkg/Library/HashInstanceLibSha256/HashInstanceLibSha256.inf
+ NULL|SecurityPkg/Library/HashInstanceLibSha384/HashInstanceLibSha384.inf
+ NULL|SecurityPkg/Library/HashInstanceLibSha512/HashInstanceLibSha512.inf
+ NULL|SecurityPkg/Library/HashInstanceLibSm3/HashInstanceLibSm3.inf
+ }
+!endif
+
+ #
+ # DXE Phase modules
+ #
+ MdeModulePkg/Core/Dxe/DxeMain.inf {
+ <LibraryClasses>
+ NULL|MdeModulePkg/Library/LzmaCustomDecompressLib/LzmaCustomDecompressLib.inf
+ DevicePathLib|MdePkg/Library/UefiDevicePathLib/UefiDevicePathLib.inf
+ }
+
+ MdeModulePkg/Universal/ReportStatusCodeRouter/RuntimeDxe/ReportStatusCodeRouterRuntimeDxe.inf
+ MdeModulePkg/Universal/StatusCodeHandler/RuntimeDxe/StatusCodeHandlerRuntimeDxe.inf
+ MdeModulePkg/Universal/PCD/Dxe/Pcd.inf {
+ <LibraryClasses>
+ PcdLib|MdePkg/Library/BasePcdLibNull/BasePcdLibNull.inf
+ }
+
+ MdeModulePkg/Core/RuntimeDxe/RuntimeDxe.inf
+
+ MdeModulePkg/Universal/SecurityStubDxe/SecurityStubDxe.inf {
+ <LibraryClasses>
+!if $(TPM_ENABLE) == TRUE
+ NULL|SecurityPkg/Library/DxeTpmMeasureBootLib/DxeTpmMeasureBootLib.inf
+ NULL|SecurityPkg/Library/DxeTpm2MeasureBootLib/DxeTpm2MeasureBootLib.inf
+!endif
+ }
+
+ MdeModulePkg/Universal/EbcDxe/EbcDxe.inf
+ OvmfPkg/8259InterruptControllerDxe/8259.inf
+ UefiCpuPkg/CpuIo2Dxe/CpuIo2Dxe.inf
+ UefiCpuPkg/CpuDxe/CpuDxe.inf
+ OvmfPkg/8254TimerDxe/8254Timer.inf
+ OvmfPkg/IncompatiblePciDeviceSupportDxe/IncompatiblePciDeviceSupport.inf
+ OvmfPkg/PciHotPlugInitDxe/PciHotPlugInit.inf
+ MdeModulePkg/Bus/Pci/PciHostBridgeDxe/PciHostBridgeDxe.inf {
+ <LibraryClasses>
+ PciHostBridgeLib|OvmfPkg/Library/PciHostBridgeLib/PciHostBridgeLib.inf
+ NULL|OvmfPkg/Library/PlatformHasIoMmuLib/PlatformHasIoMmuLib.inf
+ }
+ MdeModulePkg/Bus/Pci/PciBusDxe/PciBusDxe.inf {
+ <LibraryClasses>
+ PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf
+ }
+ MdeModulePkg/Universal/ResetSystemRuntimeDxe/ResetSystemRuntimeDxe.inf
+ MdeModulePkg/Universal/Metronome/Metronome.inf
+ PcAtChipsetPkg/PcatRealTimeClockRuntimeDxe/PcatRealTimeClockRuntimeDxe.inf
+ MdeModulePkg/Universal/DriverHealthManagerDxe/DriverHealthManagerDxe.inf
+ MdeModulePkg/Universal/BdsDxe/BdsDxe.inf {
+ <LibraryClasses>
+!ifdef $(CSM_ENABLE)
+ NULL|OvmfPkg/Csm/CsmSupportLib/CsmSupportLib.inf
+ NULL|OvmfPkg/Csm/LegacyBootManagerLib/LegacyBootManagerLib.inf
+!endif
+ }
+ MdeModulePkg/Logo/LogoDxe.inf
+ MdeModulePkg/Application/UiApp/UiApp.inf {
+ <LibraryClasses>
+ NULL|MdeModulePkg/Library/DeviceManagerUiLib/DeviceManagerUiLib.inf
+ NULL|MdeModulePkg/Library/BootManagerUiLib/BootManagerUiLib.inf
+ NULL|MdeModulePkg/Library/BootMaintenanceManagerUiLib/BootMaintenanceManagerUiLib.inf
+!ifdef $(CSM_ENABLE)
+ NULL|OvmfPkg/Csm/LegacyBootManagerLib/LegacyBootManagerLib.inf
+ NULL|OvmfPkg/Csm/LegacyBootMaintUiLib/LegacyBootMaintUiLib.inf
+!endif
+ }
+ OvmfPkg/QemuKernelLoaderFsDxe/QemuKernelLoaderFsDxe.inf
+ OvmfPkg/VirtioPciDeviceDxe/VirtioPciDeviceDxe.inf
+ OvmfPkg/Virtio10Dxe/Virtio10.inf
+ OvmfPkg/VirtioBlkDxe/VirtioBlk.inf
+ OvmfPkg/VirtioScsiDxe/VirtioScsi.inf
+ OvmfPkg/VirtioRngDxe/VirtioRng.inf
+ OvmfPkg/XenIoPciDxe/XenIoPciDxe.inf
+ OvmfPkg/XenBusDxe/XenBusDxe.inf
+ OvmfPkg/XenPvBlkDxe/XenPvBlkDxe.inf
+!if $(PVSCSI_ENABLE) == TRUE
+ OvmfPkg/PvScsiDxe/PvScsiDxe.inf
+!endif
+!if $(MPT_SCSI_ENABLE) == TRUE
+ OvmfPkg/MptScsiDxe/MptScsiDxe.inf
+!endif
+!if $(LSI_SCSI_ENABLE) == TRUE
+ OvmfPkg/LsiScsiDxe/LsiScsiDxe.inf
+!endif
+ MdeModulePkg/Universal/WatchdogTimerDxe/WatchdogTimer.inf
+ MdeModulePkg/Universal/MonotonicCounterRuntimeDxe/MonotonicCounterRuntimeDxe.inf
+ MdeModulePkg/Universal/CapsuleRuntimeDxe/CapsuleRuntimeDxe.inf
+ MdeModulePkg/Universal/Console/ConPlatformDxe/ConPlatformDxe.inf
+ MdeModulePkg/Universal/Console/ConSplitterDxe/ConSplitterDxe.inf
+ MdeModulePkg/Universal/Console/GraphicsConsoleDxe/GraphicsConsoleDxe.inf {
+ <LibraryClasses>
+ PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf
+ }
+ MdeModulePkg/Universal/Console/TerminalDxe/TerminalDxe.inf
+ MdeModulePkg/Universal/DevicePathDxe/DevicePathDxe.inf {
+ <LibraryClasses>
+ DevicePathLib|MdePkg/Library/UefiDevicePathLib/UefiDevicePathLib.inf
+ PcdLib|MdePkg/Library/BasePcdLibNull/BasePcdLibNull.inf
+ }
+ MdeModulePkg/Universal/PrintDxe/PrintDxe.inf
+ MdeModulePkg/Universal/Disk/DiskIoDxe/DiskIoDxe.inf
+ MdeModulePkg/Universal/Disk/PartitionDxe/PartitionDxe.inf
+ MdeModulePkg/Universal/Disk/RamDiskDxe/RamDiskDxe.inf
+ MdeModulePkg/Universal/Disk/UnicodeCollation/EnglishDxe/EnglishDxe.inf
+ FatPkg/EnhancedFatDxe/Fat.inf
+ MdeModulePkg/Universal/Disk/UdfDxe/UdfDxe.inf
+ MdeModulePkg/Bus/Scsi/ScsiBusDxe/ScsiBusDxe.inf
+ MdeModulePkg/Bus/Scsi/ScsiDiskDxe/ScsiDiskDxe.inf
+ OvmfPkg/SataControllerDxe/SataControllerDxe.inf
+ MdeModulePkg/Bus/Ata/AtaAtapiPassThru/AtaAtapiPassThru.inf
+ MdeModulePkg/Bus/Ata/AtaBusDxe/AtaBusDxe.inf
+ MdeModulePkg/Bus/Pci/NvmExpressDxe/NvmExpressDxe.inf
+ MdeModulePkg/Universal/HiiDatabaseDxe/HiiDatabaseDxe.inf
+ MdeModulePkg/Universal/SetupBrowserDxe/SetupBrowserDxe.inf
+ MdeModulePkg/Universal/DisplayEngineDxe/DisplayEngineDxe.inf
+ MdeModulePkg/Universal/MemoryTest/NullMemoryTestDxe/NullMemoryTestDxe.inf
+
+!ifndef $(CSM_ENABLE)
+ OvmfPkg/QemuVideoDxe/QemuVideoDxe.inf
+!endif
+ OvmfPkg/QemuRamfbDxe/QemuRamfbDxe.inf
+ OvmfPkg/VirtioGpuDxe/VirtioGpu.inf
+
+ #
+ # ISA Support
+ #
+ OvmfPkg/SioBusDxe/SioBusDxe.inf
+ MdeModulePkg/Bus/Pci/PciSioSerialDxe/PciSioSerialDxe.inf
+ MdeModulePkg/Bus/Isa/Ps2KeyboardDxe/Ps2KeyboardDxe.inf
+
+ #
+ # SMBIOS Support
+ #
+ MdeModulePkg/Universal/SmbiosDxe/SmbiosDxe.inf {
+ <LibraryClasses>
+ NULL|OvmfPkg/Library/SmbiosVersionLib/DetectSmbiosVersionLib.inf
+ }
+ OvmfPkg/SmbiosPlatformDxe/SmbiosPlatformDxe.inf
+
+ #
+ # ACPI Support
+ #
+ MdeModulePkg/Universal/Acpi/AcpiTableDxe/AcpiTableDxe.inf
+ OvmfPkg/AcpiPlatformDxe/AcpiPlatformDxe.inf
+ OvmfPkg/AcpiTables/AcpiTables.inf
+ MdeModulePkg/Universal/Acpi/S3SaveStateDxe/S3SaveStateDxe.inf
+ MdeModulePkg/Universal/Acpi/BootScriptExecutorDxe/BootScriptExecutorDxe.inf
+ MdeModulePkg/Universal/Acpi/BootGraphicsResourceTableDxe/BootGraphicsResourceTableDxe.inf
+
+ OvmfPkg/VirtioNetDxe/VirtioNet.inf
+
+ #
+ # Usb Support
+ #
+ MdeModulePkg/Bus/Pci/UhciDxe/UhciDxe.inf
+ MdeModulePkg/Bus/Pci/EhciDxe/EhciDxe.inf
+ MdeModulePkg/Bus/Pci/XhciDxe/XhciDxe.inf
+ MdeModulePkg/Bus/Usb/UsbBusDxe/UsbBusDxe.inf
+ MdeModulePkg/Bus/Usb/UsbKbDxe/UsbKbDxe.inf
+ MdeModulePkg/Bus/Usb/UsbMassStorageDxe/UsbMassStorageDxe.inf
+
+!ifdef $(CSM_ENABLE)
+ OvmfPkg/Csm/BiosThunk/VideoDxe/VideoDxe.inf {
+ <LibraryClasses>
+ PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf
+ }
+ OvmfPkg/Csm/LegacyBiosDxe/LegacyBiosDxe.inf
+ OvmfPkg/Csm/Csm16/Csm16.inf
+!endif
+
+!if $(TOOL_CHAIN_TAG) != "XCODE5"
+ OvmfPkg/LinuxInitrdDynamicShellCommand/LinuxInitrdDynamicShellCommand.inf {
+ <PcdsFixedAtBuild>
+ gEfiShellPkgTokenSpaceGuid.PcdShellLibAutoInitialize|FALSE
+ }
+!endif
+ ShellPkg/Application/Shell/Shell.inf {
+ <LibraryClasses>
+ ShellCommandLib|ShellPkg/Library/UefiShellCommandLib/UefiShellCommandLib.inf
+ NULL|ShellPkg/Library/UefiShellLevel2CommandsLib/UefiShellLevel2CommandsLib.inf
+ NULL|ShellPkg/Library/UefiShellLevel1CommandsLib/UefiShellLevel1CommandsLib.inf
+ NULL|ShellPkg/Library/UefiShellLevel3CommandsLib/UefiShellLevel3CommandsLib.inf
+ NULL|ShellPkg/Library/UefiShellDriver1CommandsLib/UefiShellDriver1CommandsLib.inf
+ NULL|ShellPkg/Library/UefiShellDebug1CommandsLib/UefiShellDebug1CommandsLib.inf
+ NULL|ShellPkg/Library/UefiShellInstall1CommandsLib/UefiShellInstall1CommandsLib.inf
+ HandleParsingLib|ShellPkg/Library/UefiHandleParsingLib/UefiHandleParsingLib.inf
+ PrintLib|MdePkg/Library/BasePrintLib/BasePrintLib.inf
+ BcfgCommandLib|ShellPkg/Library/UefiShellBcfgCommandLib/UefiShellBcfgCommandLib.inf
+
+ <PcdsFixedAtBuild>
+ gEfiMdePkgTokenSpaceGuid.PcdDebugPropertyMask|0xFF
+ gEfiShellPkgTokenSpaceGuid.PcdShellLibAutoInitialize|FALSE
+ gEfiMdePkgTokenSpaceGuid.PcdUefiLibMaxPrintBufferSize|8000
+ }
+
+ OvmfPkg/PlatformDxe/Platform.inf
+ OvmfPkg/AmdSevDxe/AmdSevDxe.inf
+ OvmfPkg/IoMmuDxe/IoMmuDxe.inf
+
+ #
+ # Variable driver stack (non-SMM)
+ #
+ OvmfPkg/QemuFlashFvbServicesRuntimeDxe/FvbServicesRuntimeDxe.inf
+ OvmfPkg/EmuVariableFvbRuntimeDxe/Fvb.inf {
+ <LibraryClasses>
+ PlatformFvbLib|OvmfPkg/Library/EmuVariableFvbLib/EmuVariableFvbLib.inf
+ }
+ MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteDxe.inf
+ MdeModulePkg/Universal/Variable/RuntimeDxe/VariableRuntimeDxe.inf {
+ <LibraryClasses>
+ NULL|MdeModulePkg/Library/VarCheckUefiLib/VarCheckUefiLib.inf
+ }
+
+ #
+ # TPM support
+ #
+!if $(TPM_ENABLE) == TRUE
+ SecurityPkg/Tcg/Tcg2Dxe/Tcg2Dxe.inf {
+ <LibraryClasses>
+ Tpm2DeviceLib|SecurityPkg/Library/Tpm2DeviceLibRouter/Tpm2DeviceLibRouterDxe.inf
+ NULL|SecurityPkg/Library/Tpm2DeviceLibDTpm/Tpm2InstanceLibDTpm.inf
+ HashLib|SecurityPkg/Library/HashLibBaseCryptoRouter/HashLibBaseCryptoRouterDxe.inf
+ NULL|SecurityPkg/Library/HashInstanceLibSha1/HashInstanceLibSha1.inf
+ NULL|SecurityPkg/Library/HashInstanceLibSha256/HashInstanceLibSha256.inf
+ NULL|SecurityPkg/Library/HashInstanceLibSha384/HashInstanceLibSha384.inf
+ NULL|SecurityPkg/Library/HashInstanceLibSha512/HashInstanceLibSha512.inf
+ NULL|SecurityPkg/Library/HashInstanceLibSm3/HashInstanceLibSm3.inf
+ }
+!if $(TPM_CONFIG_ENABLE) == TRUE
+ SecurityPkg/Tcg/Tcg2Config/Tcg2ConfigDxe.inf
+!endif
+ SecurityPkg/Tcg/TcgDxe/TcgDxe.inf {
+ <LibraryClasses>
+ Tpm12DeviceLib|SecurityPkg/Library/Tpm12DeviceLibDTpm/Tpm12DeviceLibDTpm.inf
+ }
+!endif
diff --git a/OvmfPkg/AmdSev/AmdSevX64.fdf b/OvmfPkg/AmdSev/AmdSevX64.fdf
new file mode 100644
index 000000000000..4592a4ec067d
--- /dev/null
+++ b/OvmfPkg/AmdSev/AmdSevX64.fdf
@@ -0,0 +1,461 @@
+## @file
+# Open Virtual Machine Firmware: FDF
+#
+# Copyright (c) 2006 - 2019, Intel Corporation. All rights reserved.<BR>
+# (C) Copyright 2016 Hewlett Packard Enterprise Development LP<BR>
+#
+# SPDX-License-Identifier: BSD-2-Clause-Patent
+#
+##
+
+################################################################################
+
+[Defines]
+!include OvmfPkg/OvmfPkgDefines.fdf.inc
+
+#
+# Build the variable store and the firmware code as one unified flash device
+# image.
+#
+[FD.OVMF]
+BaseAddress = $(FW_BASE_ADDRESS)
+Size = $(FW_SIZE)
+ErasePolarity = 1
+BlockSize = $(BLOCK_SIZE)
+NumBlocks = $(FW_BLOCKS)
+
+!include OvmfPkg/VarStore.fdf.inc
+
+$(VARS_SIZE)|$(FVMAIN_SIZE)
+FV = FVMAIN_COMPACT
+
+$(SECFV_OFFSET)|$(SECFV_SIZE)
+FV = SECFV
+
+################################################################################
+
+[FD.MEMFD]
+BaseAddress = $(MEMFD_BASE_ADDRESS)
+Size = 0xD00000
+ErasePolarity = 1
+BlockSize = 0x10000
+NumBlocks = 0xD0
+
+0x000000|0x006000
+gUefiOvmfPkgTokenSpaceGuid.PcdOvmfSecPageTablesBase|gUefiOvmfPkgTokenSpaceGuid.PcdOvmfSecPageTablesSize
+
+0x006000|0x001000
+gUefiOvmfPkgTokenSpaceGuid.PcdOvmfLockBoxStorageBase|gUefiOvmfPkgTokenSpaceGuid.PcdOvmfLockBoxStorageSize
+
+0x007000|0x001000
+gEfiMdePkgTokenSpaceGuid.PcdGuidedExtractHandlerTableAddress|gUefiOvmfPkgTokenSpaceGuid.PcdGuidedExtractHandlerTableSize
+
+0x008000|0x001000
+gUefiOvmfPkgTokenSpaceGuid.PcdOvmfSecGhcbPageTableBase|gUefiOvmfPkgTokenSpaceGuid.PcdOvmfSecGhcbPageTableSize
+
+0x009000|0x002000
+gUefiOvmfPkgTokenSpaceGuid.PcdOvmfSecGhcbBase|gUefiOvmfPkgTokenSpaceGuid.PcdOvmfSecGhcbSize
+
+0x00B000|0x001000
+gUefiCpuPkgTokenSpaceGuid.PcdSevEsWorkAreaBase|gUefiCpuPkgTokenSpaceGuid.PcdSevEsWorkAreaSize
+
+0x010000|0x010000
+gUefiOvmfPkgTokenSpaceGuid.PcdOvmfSecPeiTempRamBase|gUefiOvmfPkgTokenSpaceGuid.PcdOvmfSecPeiTempRamSize
+
+0x020000|0x0E0000
+gUefiOvmfPkgTokenSpaceGuid.PcdOvmfPeiMemFvBase|gUefiOvmfPkgTokenSpaceGuid.PcdOvmfPeiMemFvSize
+FV = PEIFV
+
+0x100000|0xC00000
+gUefiOvmfPkgTokenSpaceGuid.PcdOvmfDxeMemFvBase|gUefiOvmfPkgTokenSpaceGuid.PcdOvmfDxeMemFvSize
+FV = DXEFV
+
+################################################################################
+
+[FV.SECFV]
+FvNameGuid = 763BED0D-DE9F-48F5-81F1-3E90E1B1A015
+BlockSize = 0x1000
+FvAlignment = 16
+ERASE_POLARITY = 1
+MEMORY_MAPPED = TRUE
+STICKY_WRITE = TRUE
+LOCK_CAP = TRUE
+LOCK_STATUS = TRUE
+WRITE_DISABLED_CAP = TRUE
+WRITE_ENABLED_CAP = TRUE
+WRITE_STATUS = TRUE
+WRITE_LOCK_CAP = TRUE
+WRITE_LOCK_STATUS = TRUE
+READ_DISABLED_CAP = TRUE
+READ_ENABLED_CAP = TRUE
+READ_STATUS = TRUE
+READ_LOCK_CAP = TRUE
+READ_LOCK_STATUS = TRUE
+
+#
+# SEC Phase modules
+#
+# The code in this FV handles the initial firmware startup, and
+# decompresses the PEI and DXE FVs which handles the rest of the boot sequence.
+#
+INF OvmfPkg/Sec/SecMain.inf
+
+INF RuleOverride=RESET_VECTOR OvmfPkg/ResetVector/ResetVector.inf
+
+################################################################################
+[FV.PEIFV]
+FvNameGuid = 6938079B-B503-4E3D-9D24-B28337A25806
+BlockSize = 0x10000
+FvAlignment = 16
+ERASE_POLARITY = 1
+MEMORY_MAPPED = TRUE
+STICKY_WRITE = TRUE
+LOCK_CAP = TRUE
+LOCK_STATUS = TRUE
+WRITE_DISABLED_CAP = TRUE
+WRITE_ENABLED_CAP = TRUE
+WRITE_STATUS = TRUE
+WRITE_LOCK_CAP = TRUE
+WRITE_LOCK_STATUS = TRUE
+READ_DISABLED_CAP = TRUE
+READ_ENABLED_CAP = TRUE
+READ_STATUS = TRUE
+READ_LOCK_CAP = TRUE
+READ_LOCK_STATUS = TRUE
+
+APRIORI PEI {
+ INF MdeModulePkg/Universal/PCD/Pei/Pcd.inf
+}
+
+#
+# PEI Phase modules
+#
+INF MdeModulePkg/Core/Pei/PeiMain.inf
+INF MdeModulePkg/Universal/PCD/Pei/Pcd.inf
+INF MdeModulePkg/Universal/ReportStatusCodeRouter/Pei/ReportStatusCodeRouterPei.inf
+INF MdeModulePkg/Universal/StatusCodeHandler/Pei/StatusCodeHandlerPei.inf
+INF OvmfPkg/PlatformPei/PlatformPei.inf
+INF MdeModulePkg/Core/DxeIplPeim/DxeIpl.inf
+INF UefiCpuPkg/Universal/Acpi/S3Resume2Pei/S3Resume2Pei.inf
+INF UefiCpuPkg/CpuMpPei/CpuMpPei.inf
+
+!if $(TPM_ENABLE) == TRUE
+INF OvmfPkg/Tcg/Tcg2Config/Tcg2ConfigPei.inf
+INF SecurityPkg/Tcg/TcgPei/TcgPei.inf
+INF SecurityPkg/Tcg/Tcg2Pei/Tcg2Pei.inf
+!endif
+
+################################################################################
+
+[FV.DXEFV]
+FvForceRebase = FALSE
+FvNameGuid = 7CB8BDC9-F8EB-4F34-AAEA-3EE4AF6516A1
+BlockSize = 0x10000
+FvAlignment = 16
+ERASE_POLARITY = 1
+MEMORY_MAPPED = TRUE
+STICKY_WRITE = TRUE
+LOCK_CAP = TRUE
+LOCK_STATUS = TRUE
+WRITE_DISABLED_CAP = TRUE
+WRITE_ENABLED_CAP = TRUE
+WRITE_STATUS = TRUE
+WRITE_LOCK_CAP = TRUE
+WRITE_LOCK_STATUS = TRUE
+READ_DISABLED_CAP = TRUE
+READ_ENABLED_CAP = TRUE
+READ_STATUS = TRUE
+READ_LOCK_CAP = TRUE
+READ_LOCK_STATUS = TRUE
+
+APRIORI DXE {
+ INF MdeModulePkg/Universal/DevicePathDxe/DevicePathDxe.inf
+ INF MdeModulePkg/Universal/PCD/Dxe/Pcd.inf
+ INF OvmfPkg/AmdSevDxe/AmdSevDxe.inf
+ INF OvmfPkg/QemuFlashFvbServicesRuntimeDxe/FvbServicesRuntimeDxe.inf
+}
+
+#
+# DXE Phase modules
+#
+INF MdeModulePkg/Core/Dxe/DxeMain.inf
+
+INF MdeModulePkg/Universal/ReportStatusCodeRouter/RuntimeDxe/ReportStatusCodeRouterRuntimeDxe.inf
+INF MdeModulePkg/Universal/StatusCodeHandler/RuntimeDxe/StatusCodeHandlerRuntimeDxe.inf
+INF MdeModulePkg/Universal/PCD/Dxe/Pcd.inf
+
+INF MdeModulePkg/Core/RuntimeDxe/RuntimeDxe.inf
+INF MdeModulePkg/Universal/SecurityStubDxe/SecurityStubDxe.inf
+INF MdeModulePkg/Universal/EbcDxe/EbcDxe.inf
+INF OvmfPkg/8259InterruptControllerDxe/8259.inf
+INF UefiCpuPkg/CpuIo2Dxe/CpuIo2Dxe.inf
+INF UefiCpuPkg/CpuDxe/CpuDxe.inf
+INF OvmfPkg/8254TimerDxe/8254Timer.inf
+INF OvmfPkg/IncompatiblePciDeviceSupportDxe/IncompatiblePciDeviceSupport.inf
+INF OvmfPkg/PciHotPlugInitDxe/PciHotPlugInit.inf
+INF MdeModulePkg/Bus/Pci/PciHostBridgeDxe/PciHostBridgeDxe.inf
+INF MdeModulePkg/Bus/Pci/PciBusDxe/PciBusDxe.inf
+INF MdeModulePkg/Universal/ResetSystemRuntimeDxe/ResetSystemRuntimeDxe.inf
+INF MdeModulePkg/Universal/Metronome/Metronome.inf
+INF PcAtChipsetPkg/PcatRealTimeClockRuntimeDxe/PcatRealTimeClockRuntimeDxe.inf
+
+INF OvmfPkg/VirtioPciDeviceDxe/VirtioPciDeviceDxe.inf
+INF OvmfPkg/Virtio10Dxe/Virtio10.inf
+INF OvmfPkg/VirtioBlkDxe/VirtioBlk.inf
+INF OvmfPkg/VirtioScsiDxe/VirtioScsi.inf
+INF OvmfPkg/VirtioRngDxe/VirtioRng.inf
+INF OvmfPkg/XenIoPciDxe/XenIoPciDxe.inf
+INF OvmfPkg/XenBusDxe/XenBusDxe.inf
+INF OvmfPkg/XenPvBlkDxe/XenPvBlkDxe.inf
+!if $(PVSCSI_ENABLE) == TRUE
+INF OvmfPkg/PvScsiDxe/PvScsiDxe.inf
+!endif
+!if $(MPT_SCSI_ENABLE) == TRUE
+INF OvmfPkg/MptScsiDxe/MptScsiDxe.inf
+!endif
+!if $(LSI_SCSI_ENABLE) == TRUE
+INF OvmfPkg/LsiScsiDxe/LsiScsiDxe.inf
+!endif
+
+INF MdeModulePkg/Universal/WatchdogTimerDxe/WatchdogTimer.inf
+INF MdeModulePkg/Universal/MonotonicCounterRuntimeDxe/MonotonicCounterRuntimeDxe.inf
+INF MdeModulePkg/Universal/CapsuleRuntimeDxe/CapsuleRuntimeDxe.inf
+INF MdeModulePkg/Universal/Console/ConPlatformDxe/ConPlatformDxe.inf
+INF MdeModulePkg/Universal/Console/ConSplitterDxe/ConSplitterDxe.inf
+INF MdeModulePkg/Universal/Console/GraphicsConsoleDxe/GraphicsConsoleDxe.inf
+INF MdeModulePkg/Universal/Console/TerminalDxe/TerminalDxe.inf
+INF MdeModulePkg/Universal/DriverHealthManagerDxe/DriverHealthManagerDxe.inf
+INF MdeModulePkg/Universal/BdsDxe/BdsDxe.inf
+INF MdeModulePkg/Application/UiApp/UiApp.inf
+INF OvmfPkg/QemuKernelLoaderFsDxe/QemuKernelLoaderFsDxe.inf
+INF MdeModulePkg/Universal/DevicePathDxe/DevicePathDxe.inf
+INF MdeModulePkg/Universal/PrintDxe/PrintDxe.inf
+INF MdeModulePkg/Universal/Disk/DiskIoDxe/DiskIoDxe.inf
+INF MdeModulePkg/Universal/Disk/PartitionDxe/PartitionDxe.inf
+INF MdeModulePkg/Universal/Disk/RamDiskDxe/RamDiskDxe.inf
+INF MdeModulePkg/Universal/Disk/UnicodeCollation/EnglishDxe/EnglishDxe.inf
+INF MdeModulePkg/Bus/Scsi/ScsiBusDxe/ScsiBusDxe.inf
+INF MdeModulePkg/Bus/Scsi/ScsiDiskDxe/ScsiDiskDxe.inf
+INF OvmfPkg/SataControllerDxe/SataControllerDxe.inf
+INF MdeModulePkg/Bus/Ata/AtaAtapiPassThru/AtaAtapiPassThru.inf
+INF MdeModulePkg/Bus/Ata/AtaBusDxe/AtaBusDxe.inf
+INF MdeModulePkg/Bus/Pci/NvmExpressDxe/NvmExpressDxe.inf
+INF MdeModulePkg/Universal/HiiDatabaseDxe/HiiDatabaseDxe.inf
+INF MdeModulePkg/Universal/SetupBrowserDxe/SetupBrowserDxe.inf
+INF MdeModulePkg/Universal/DisplayEngineDxe/DisplayEngineDxe.inf
+INF MdeModulePkg/Universal/MemoryTest/NullMemoryTestDxe/NullMemoryTestDxe.inf
+
+INF OvmfPkg/SioBusDxe/SioBusDxe.inf
+!if $(SOURCE_DEBUG_ENABLE) == FALSE
+INF MdeModulePkg/Bus/Pci/PciSioSerialDxe/PciSioSerialDxe.inf
+!endif
+INF MdeModulePkg/Bus/Isa/Ps2KeyboardDxe/Ps2KeyboardDxe.inf
+
+INF MdeModulePkg/Universal/SmbiosDxe/SmbiosDxe.inf
+INF OvmfPkg/SmbiosPlatformDxe/SmbiosPlatformDxe.inf
+
+INF MdeModulePkg/Universal/Acpi/AcpiTableDxe/AcpiTableDxe.inf
+INF OvmfPkg/AcpiPlatformDxe/AcpiPlatformDxe.inf
+INF RuleOverride=ACPITABLE OvmfPkg/AcpiTables/AcpiTables.inf
+INF MdeModulePkg/Universal/Acpi/S3SaveStateDxe/S3SaveStateDxe.inf
+INF MdeModulePkg/Universal/Acpi/BootScriptExecutorDxe/BootScriptExecutorDxe.inf
+INF MdeModulePkg/Universal/Acpi/BootGraphicsResourceTableDxe/BootGraphicsResourceTableDxe.inf
+
+INF FatPkg/EnhancedFatDxe/Fat.inf
+INF MdeModulePkg/Universal/Disk/UdfDxe/UdfDxe.inf
+
+!if $(TOOL_CHAIN_TAG) != "XCODE5"
+INF OvmfPkg/LinuxInitrdDynamicShellCommand/LinuxInitrdDynamicShellCommand.inf
+!endif
+INF ShellPkg/Application/Shell/Shell.inf
+
+INF MdeModulePkg/Logo/LogoDxe.inf
+
+#
+# Usb Support
+#
+INF MdeModulePkg/Bus/Pci/UhciDxe/UhciDxe.inf
+INF MdeModulePkg/Bus/Pci/EhciDxe/EhciDxe.inf
+INF MdeModulePkg/Bus/Pci/XhciDxe/XhciDxe.inf
+INF MdeModulePkg/Bus/Usb/UsbBusDxe/UsbBusDxe.inf
+INF MdeModulePkg/Bus/Usb/UsbKbDxe/UsbKbDxe.inf
+INF MdeModulePkg/Bus/Usb/UsbMassStorageDxe/UsbMassStorageDxe.inf
+
+!ifdef $(CSM_ENABLE)
+INF OvmfPkg/Csm/BiosThunk/VideoDxe/VideoDxe.inf
+INF OvmfPkg/Csm/LegacyBiosDxe/LegacyBiosDxe.inf
+INF RuleOverride=CSM OvmfPkg/Csm/Csm16/Csm16.inf
+!else
+INF OvmfPkg/QemuVideoDxe/QemuVideoDxe.inf
+!endif
+
+INF OvmfPkg/QemuRamfbDxe/QemuRamfbDxe.inf
+INF OvmfPkg/VirtioGpuDxe/VirtioGpu.inf
+INF OvmfPkg/PlatformDxe/Platform.inf
+INF OvmfPkg/AmdSevDxe/AmdSevDxe.inf
+INF OvmfPkg/IoMmuDxe/IoMmuDxe.inf
+
+
+#
+# Variable driver stack (non-SMM)
+#
+INF OvmfPkg/QemuFlashFvbServicesRuntimeDxe/FvbServicesRuntimeDxe.inf
+INF OvmfPkg/EmuVariableFvbRuntimeDxe/Fvb.inf
+INF MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteDxe.inf
+INF MdeModulePkg/Universal/Variable/RuntimeDxe/VariableRuntimeDxe.inf
+
+#
+# TPM support
+#
+!if $(TPM_ENABLE) == TRUE
+INF SecurityPkg/Tcg/TcgDxe/TcgDxe.inf
+INF SecurityPkg/Tcg/Tcg2Dxe/Tcg2Dxe.inf
+!if $(TPM_CONFIG_ENABLE) == TRUE
+INF SecurityPkg/Tcg/Tcg2Config/Tcg2ConfigDxe.inf
+!endif
+!endif
+
+################################################################################
+
+[FV.FVMAIN_COMPACT]
+FvNameGuid = 48DB5E17-707C-472D-91CD-1613E7EF51B0
+FvAlignment = 16
+ERASE_POLARITY = 1
+MEMORY_MAPPED = TRUE
+STICKY_WRITE = TRUE
+LOCK_CAP = TRUE
+LOCK_STATUS = TRUE
+WRITE_DISABLED_CAP = TRUE
+WRITE_ENABLED_CAP = TRUE
+WRITE_STATUS = TRUE
+WRITE_LOCK_CAP = TRUE
+WRITE_LOCK_STATUS = TRUE
+READ_DISABLED_CAP = TRUE
+READ_ENABLED_CAP = TRUE
+READ_STATUS = TRUE
+READ_LOCK_CAP = TRUE
+READ_LOCK_STATUS = TRUE
+
+FILE FV_IMAGE = 9E21FD93-9C72-4c15-8C4B-E77F1DB2D792 {
+ SECTION GUIDED EE4E5898-3914-4259-9D6E-DC7BD79403CF PROCESSING_REQUIRED = TRUE {
+ #
+ # These firmware volumes will have files placed in them uncompressed,
+ # and then both firmware volumes will be compressed in a single
+ # compression operation in order to achieve better overall compression.
+ #
+ SECTION FV_IMAGE = PEIFV
+ SECTION FV_IMAGE = DXEFV
+ }
+ }
+
+!include OvmfPkg/FvmainCompactScratchEnd.fdf.inc
+
+################################################################################
+
+[Rule.Common.SEC]
+ FILE SEC = $(NAMED_GUID) {
+ PE32 PE32 $(INF_OUTPUT)/$(MODULE_NAME).efi
+ UI STRING ="$(MODULE_NAME)" Optional
+ VERSION STRING ="$(INF_VERSION)" Optional BUILD_NUM=$(BUILD_NUMBER)
+ }
+
+[Rule.Common.PEI_CORE]
+ FILE PEI_CORE = $(NAMED_GUID) {
+ PE32 PE32 Align=Auto $(INF_OUTPUT)/$(MODULE_NAME).efi
+ UI STRING ="$(MODULE_NAME)" Optional
+ VERSION STRING ="$(INF_VERSION)" Optional BUILD_NUM=$(BUILD_NUMBER)
+ }
+
+[Rule.Common.PEIM]
+ FILE PEIM = $(NAMED_GUID) {
+ PEI_DEPEX PEI_DEPEX Optional $(INF_OUTPUT)/$(MODULE_NAME).depex
+ PE32 PE32 Align=Auto $(INF_OUTPUT)/$(MODULE_NAME).efi
+ UI STRING="$(MODULE_NAME)" Optional
+ VERSION STRING="$(INF_VERSION)" Optional BUILD_NUM=$(BUILD_NUMBER)
+ }
+
+[Rule.Common.DXE_CORE]
+ FILE DXE_CORE = $(NAMED_GUID) {
+ PE32 PE32 $(INF_OUTPUT)/$(MODULE_NAME).efi
+ UI STRING="$(MODULE_NAME)" Optional
+ VERSION STRING="$(INF_VERSION)" Optional BUILD_NUM=$(BUILD_NUMBER)
+ }
+
+[Rule.Common.DXE_DRIVER]
+ FILE DRIVER = $(NAMED_GUID) {
+ DXE_DEPEX DXE_DEPEX Optional $(INF_OUTPUT)/$(MODULE_NAME).depex
+ PE32 PE32 $(INF_OUTPUT)/$(MODULE_NAME).efi
+ UI STRING="$(MODULE_NAME)" Optional
+ VERSION STRING="$(INF_VERSION)" Optional BUILD_NUM=$(BUILD_NUMBER)
+ RAW ACPI Optional |.acpi
+ RAW ASL Optional |.aml
+ }
+
+[Rule.Common.DXE_RUNTIME_DRIVER]
+ FILE DRIVER = $(NAMED_GUID) {
+ DXE_DEPEX DXE_DEPEX Optional $(INF_OUTPUT)/$(MODULE_NAME).depex
+ PE32 PE32 $(INF_OUTPUT)/$(MODULE_NAME).efi
+ UI STRING="$(MODULE_NAME)" Optional
+ VERSION STRING="$(INF_VERSION)" Optional BUILD_NUM=$(BUILD_NUMBER)
+ }
+
+[Rule.Common.UEFI_DRIVER]
+ FILE DRIVER = $(NAMED_GUID) {
+ DXE_DEPEX DXE_DEPEX Optional $(INF_OUTPUT)/$(MODULE_NAME).depex
+ PE32 PE32 $(INF_OUTPUT)/$(MODULE_NAME).efi
+ UI STRING="$(MODULE_NAME)" Optional
+ VERSION STRING="$(INF_VERSION)" Optional BUILD_NUM=$(BUILD_NUMBER)
+ }
+
+[Rule.Common.UEFI_DRIVER.BINARY]
+ FILE DRIVER = $(NAMED_GUID) {
+ DXE_DEPEX DXE_DEPEX Optional |.depex
+ PE32 PE32 |.efi
+ UI STRING="$(MODULE_NAME)" Optional
+ VERSION STRING="$(INF_VERSION)" Optional BUILD_NUM=$(BUILD_NUMBER)
+ }
+
+[Rule.Common.UEFI_APPLICATION]
+ FILE APPLICATION = $(NAMED_GUID) {
+ PE32 PE32 $(INF_OUTPUT)/$(MODULE_NAME).efi
+ UI STRING="$(MODULE_NAME)" Optional
+ VERSION STRING="$(INF_VERSION)" Optional BUILD_NUM=$(BUILD_NUMBER)
+ }
+
+[Rule.Common.UEFI_APPLICATION.BINARY]
+ FILE APPLICATION = $(NAMED_GUID) {
+ PE32 PE32 |.efi
+ UI STRING="$(MODULE_NAME)" Optional
+ VERSION STRING="$(INF_VERSION)" Optional BUILD_NUM=$(BUILD_NUMBER)
+ }
+
+[Rule.Common.USER_DEFINED.ACPITABLE]
+ FILE FREEFORM = $(NAMED_GUID) {
+ RAW ACPI |.acpi
+ RAW ASL |.aml
+ }
+
+[Rule.Common.USER_DEFINED.CSM]
+ FILE FREEFORM = $(NAMED_GUID) {
+ RAW BIN |.bin
+ }
+
+[Rule.Common.SEC.RESET_VECTOR]
+ FILE RAW = $(NAMED_GUID) {
+ RAW BIN Align = 16 |.bin
+ }
+
+[Rule.Common.SMM_CORE]
+ FILE SMM_CORE = $(NAMED_GUID) {
+ PE32 PE32 $(INF_OUTPUT)/$(MODULE_NAME).efi
+ UI STRING="$(MODULE_NAME)" Optional
+ VERSION STRING="$(INF_VERSION)" Optional BUILD_NUM=$(BUILD_NUMBER)
+ }
+
+[Rule.Common.DXE_SMM_DRIVER]
+ FILE SMM = $(NAMED_GUID) {
+ SMM_DEPEX SMM_DEPEX Optional $(INF_OUTPUT)/$(MODULE_NAME).depex
+ PE32 PE32 $(INF_OUTPUT)/$(MODULE_NAME).efi
+ UI STRING="$(MODULE_NAME)" Optional
+ VERSION STRING="$(INF_VERSION)" Optional BUILD_NUM=$(BUILD_NUMBER)
+ }
--
2.26.2


[PATCH v2 0/6] SEV Encrypted Boot for Ovmf

James Bottomley
 

v2:

- Strip more out of AmdSev image (networking, secure boot, smm)
- give sev reset block a generic table guid and use it for boot secret area
- separate secret patches and make grub script more robust
- Add copyrights and fix formatting issues

v1:

Ref: https://bugzilla.tianocore.org/show_bug.cgi?id=3077

This patch series is modelled on the structure of the Bhyve patches
for Ovmf, since it does somewhat similar things. This patch series
creates a separate build for an AmdSev OVMF.fd that does nothing
except combine with grub and boot straight through the internal grub
to try to mount an encrypted volume.

Concept: SEV Secure Encrypted Images
====================================

The SEV patches in Linux and OVMF allow for the booting of SEV VMs in
an encrypted state, but don't really show how this could be done with
an encrypted image. Since the key used to decrypt the image must be
maintained within the SEV encryption envelope, encrypted QCOW is not
an option because the key would then have to be known to QEMU which is
outside the encryption envelope. The proposal here is that an
encrypted image should be a QCOW image consisting of two partitions,
the normal unencrypted EFI partition (Identifying it as an OVMF
bootable image) and a luks encrypted root partition. The kernel would
be inside the encrypted root in the /boot directory. The secret
injected securely through QEMU is extracted by OVMF and passed to grub
which uses it to mount the encrypted root and boot the kernel
normally. The creator of the secret bundle must be satisfied with the
SEV attestation before the secret is constructed. Unfortunately, the
SEV attestation can only be on the first QEMU firmware volume and
nothing else, so this patch series builds grub itself into a firmware
volume and places it inside OVMF so that the entire boot system can be
attested. In a normal OVMF KVM system, the variable store is on the
second flash volume (which is read/write). Unfortunately, this
mutable configuration provided by the variables is outside the
attestation envelope and can significantly alter the boot path,
possibly leading to secret leak, so encrypted image boot should only
be done with the OVMF.fd that combines both the code and variables.
the OVMF.fd is constructed so that it becomes impossible to interrupt
the boot sequence after attestation and the system will either boot
the image or fail. The boot sequence runs the grub.efi embedded in the
OVMF firmware volume so the encrypted image owner knows their own
version of grub is the only one that will boot before injecting the
secret. Note this boot path actually ignores the unencrypted EFI
partition. However, as part of this design, the encrypted image may be
booted by a standard OVMF KVM boot and in that case, the user will
have to type the encryption password. This standard boot will be
insecure but it might be used by the constructor of the encrypted
images on their own private laptop, for instance. The standard boot
path will use the unencrypted EFI partition.

Patches Required Outside of OVMF
================================

There is a patch set to grub which allows it to extract the SEV secret
area from the configuration table and use the secret as a password to
do a luks crypto mount of root (this is the sevsecret grub module).

There is also a patch to qemu which allows it to search through the
OVMF.fd and find the SEV secret area which is now described inside the
Reset Vector using the existing SEV_ES reset block. This area is the
place QEMU will inject the encrypted SEV secret bundle.

Security of the System
======================

Since Grub is now part of the attested OVMF.fd bundle, the VM owner
knows absolutely that it will proceed straight to partition decryption
inside the attested code and boot the kernel off the encrypted
partition. Even if a different QCOW image is substituted, the boot
will fail without revealing the secret because the system is designed
to fail hard in that case and because the secret is always contained
within the encrypted envelope it should be impossible for the cloud
operator to obtain it even if they can pause the boot and examine the
machine memory.

Putting it All Together
=======================

This is somewhat hard. You must first understand how to boot a QEMU
system so as to have the VM pause after firmware loading (-S option)
and use the qmp port to request an attestation. Only if the
attestation corresponds to the expected sha256sum of OVMF.fd should
the secret bundle be constructed and injected using qmp. The tools
for constructing the secret bundle are in

https://github.com/AMDESE/sev-tool/

James

---

James Bottomley (6):
OvmfPkg/Amdsev: Base commit to build encrypted boot specific OVMF
OvmfPkg/AmdSev: add Grub Firmware Volume Package
OvmfPkg: convert ES Reset Block structure to be guided
OvmfPkg: create a SEV secret area in the AmdSev memfd
OvmfPkg/AmdSev: assign and protect the Sev Secret area
OvmfPkg/AmdSev: Expose the Sev Secret area using a configuration table

OvmfPkg/OvmfPkg.dec | 8 +
OvmfPkg/AmdSev/AmdSevX64.dsc | 878 ++++++++++
OvmfPkg/AmdSev/AmdSevX64.fdf | 467 ++++++
OvmfPkg/AmdSev/Grub/Grub.inf | 37 +
OvmfPkg/AmdSev/SecretDxe/SecretDxe.inf | 37 +
OvmfPkg/AmdSev/SecretPei/SecretPei.inf | 39 +
.../PlatformBootManagerLibGrub.inf | 79 +
OvmfPkg/ResetVector/ResetVector.inf | 4 +
OvmfPkg/Include/Guid/SevLaunchSecret.h | 28 +
.../PlatformBootManagerLibGrub/BdsPlatform.h | 175 ++
OvmfPkg/AmdSev/SecretDxe/SecretDxe.c | 25 +
OvmfPkg/AmdSev/SecretPei/SecretPei.c | 25 +
.../PlatformBootManagerLibGrub/BdsPlatform.c | 1483 +++++++++++++++++
.../PlatformBootManagerLibGrub/PlatformData.c | 213 +++
OvmfPkg/AmdSev/Grub/.gitignore | 1 +
OvmfPkg/AmdSev/Grub/grub.cfg | 46 +
OvmfPkg/AmdSev/Grub/grub.sh | 92 +
OvmfPkg/ResetVector/Ia16/ResetVectorVtf0.asm | 63 +-
OvmfPkg/ResetVector/ResetVector.nasmb | 2 +
19 files changed, 3691 insertions(+), 11 deletions(-)
create mode 100644 OvmfPkg/AmdSev/AmdSevX64.dsc
create mode 100644 OvmfPkg/AmdSev/AmdSevX64.fdf
create mode 100644 OvmfPkg/AmdSev/Grub/Grub.inf
create mode 100644 OvmfPkg/AmdSev/SecretDxe/SecretDxe.inf
create mode 100644 OvmfPkg/AmdSev/SecretPei/SecretPei.inf
create mode 100644 OvmfPkg/Library/PlatformBootManagerLibGrub/PlatformBootManagerLibGrub.inf
create mode 100644 OvmfPkg/Include/Guid/SevLaunchSecret.h
create mode 100644 OvmfPkg/Library/PlatformBootManagerLibGrub/BdsPlatform.h
create mode 100644 OvmfPkg/AmdSev/SecretDxe/SecretDxe.c
create mode 100644 OvmfPkg/AmdSev/SecretPei/SecretPei.c
create mode 100644 OvmfPkg/Library/PlatformBootManagerLibGrub/BdsPlatform.c
create mode 100644 OvmfPkg/Library/PlatformBootManagerLibGrub/PlatformData.c
create mode 100644 OvmfPkg/AmdSev/Grub/.gitignore
create mode 100644 OvmfPkg/AmdSev/Grub/grub.cfg
create mode 100644 OvmfPkg/AmdSev/Grub/grub.sh

--
2.26.2


Re: [PATCH 3/4] OvmfPkg: create a SEV secret area in the AmdSev memfd

James Bottomley
 

On Thu, 2020-11-19 at 13:41 -0600, Brijesh Singh wrote:
On 11/19/20 1:50 AM, Laszlo Ersek wrote:
On 11/18/20 21:23, James Bottomley wrote:
On Mon, 2020-11-16 at 23:46 +0100, Laszlo Ersek wrote:
On 11/12/20 01:13, James Bottomley wrote:
[... I made all the changes above this]
diff --git a/OvmfPkg/ResetVector/Ia16/ResetVectorVtf0.asm
b/OvmfPkg/ResetVector/Ia16/ResetVectorVtf0.asm
index 980e0138e7..7d3214e55d 100644
--- a/OvmfPkg/ResetVector/Ia16/ResetVectorVtf0.asm
+++ b/OvmfPkg/ResetVector/Ia16/ResetVectorVtf0.asm
@@ -35,6 +35,8 @@ ALIGN 16
; the build time RIP value. The GUID must always be 48
bytes
from the
; end of the firmware.
;
+; 0xffffffc2 (-0x3e) - Base Location of the SEV Launch
Secret
+; 0xffffffc6 (-0x3a) - Size of SEV Launch Secret
; 0xffffffca (-0x36) - IP value
; 0xffffffcc (-0x34) - CS segment base [31:16]
; 0xffffffce (-0x32) - Size of the SEV-ES reset block
@@ -51,6 +53,8 @@ ALIGN 16
TIMES (32 - (sevEsResetBlockEnd - sevEsResetBlockStart)) DB
0

sevEsResetBlockStart:
+ DD SEV_LAUNCH_SECRET_BASE
+ DD SEV_LAUNCH_SECRET_SIZE
DD SEV_ES_AP_RESET_IP
DW sevEsResetBlockEnd - sevEsResetBlockStart
DB 0xDE, 0x71, 0xF7, 0x00, 0x7E, 0x1A, 0xCB, 0x4F
(5) I'd prefer if we could introduce a new GUID-ed structure
for these new fields. The logic in QEMU should be extended to
start scanning at 4GB-48 for GUIDS. If the GUID is not
recognized, then terminate scanning. Otherwise, act upon the
GUID-ed structure found there as necessary, and then determine
the next GUID *candidate* location by subtracting the last
recognized GUID-ed structure's "size" field.
So for this one, we can do it either way. However, the current
design of the sevEsRestBlock is (according to AMD) to allow the
addition of SEV specific information. Each piece of information
is a specific offset from the GUID and the length of the
structure can only grow, so the ordering is fixed once the info
is added and you can tell if the section contains what you're
looking for is present if the length covers it.

We can certainly move this to a fully GUID based system, which
would allow us to have an unordered list rather than the strict
definition the never decreasing length scheme allows, but if we
do that, the length word above becomes redundant.
Well, GUIDed structs in UEFI/PI are sometimes permitted to grow
compatibily, and for that, either a revision field or a size field
is necessary / used. I kind of desire both here -- it makes sense
to extend (for example) the SEV-ES reset block with relevant
information, and to add other blocks of information (identified
with different GUIDs).

Basically I wouldn't want to finalize the SEV-ES AP reset block
just yet, *but* I also think this new information does not beloing
in the SEV-ES *AP reset block*. The new info is related to SEV-ES
alright, but not to the AP reset block, in my opinion. If you read
the larger context (the docs) in the assembly source around
"sevEsResetBlockStart", the launch secret just doesn't seem to fit
that.

I don't have a huge preference for either mechanism ... they seem
to work equally well, but everyone should agree before I replace
the length based scheme. I agree we should all agree about it
first.
And, to reiterate, I'd like to keep both the length fields and the
GUID-ed identification. In other words, a GUID should not imply an
exact struct size, just a minimum struct size.
I agree with the GUID based approach, it aligns well with the future
needs. Looking forwardm we will need to reserve couple of pages
(secret and cpuid) for the SNP. In my WIP patches I extended reset
block to define a new GUID for those new fields.

https://github.com/AMDESE/ovmf/commit/87d47319411763d91219b377da709efdb057e662#diff-0ca7ec2856c316694c87b519c95db3270e0cac798eb09745cce167aad7f2d46dR28

And I am using this qemu patch to iterate through all the GUIDs and
call the corresponding callbacks.

https://github.com/AMDESE/qemu/commit/16a1266353d372cbb7c1998f27081fb8aa4d31e9
OK, if that's not yet upstream, I think we should do this properly:
that means having a guid and length that identifies the entire table
and then all the incorporated guids and lengths. That way we don't
have a double meaning for the reset block guid as both identifying the
start of the table and the reset vector data. Also it means we don't
need a zero guid to signal the end of the table. And also means the
reset block GUID doesn't have to always be present (if it got
deprecated for some reason).

However, the downside is that you'll have to pull out the table by this
new guid at 0xffffffd0 and its length and then iterate over the table
to find the reset block guid ... but that will make it very easy to add
the additional guids.

James


Re: [PATCH v1 00/12] Add support for using FF-A calls

Sami Mujawar
 

Hi Sughosh,

I have completed reviewing this patch series.

Please add some description in the commit message for the following patches. Otherwise patch 3 & 8 look good to me.
[PATCH v1 08/12] StandaloneMmPkg: Use FF-A header file in Standalone MM Arm MMU library
[PATCH v1 03/12] StandaloneMmPkg: Use FF-A header file in Standalone MM Core entry point

Regards,

Sami Mujawar

-----Original Message-----
From: Sughosh Ganu <sughosh.ganu@linaro.org>
Sent: 21 October 2020 12:32 PM
To: devel@edk2.groups.io
Cc: Ard Biesheuvel <Ard.Biesheuvel@arm.com>; Sami Mujawar <Sami.Mujawar@arm.com>; Jiewen Yao <jiewen.yao@intel.com>
Subject: [PATCH v1 00/12] Add support for using FF-A calls

Achin Gupta (8):
ArmPkg/IndustryStandard: Add barebones FF-A header
ArmPkg/ArmSvcLib: Return x4-x7 in output parameters
StandaloneMmPkg: Use FF-A header file in Standalone MM Core entry
point
StandaloneMmPkg: Add option to use FF-A calls for getting SPM version
StandaloneMmPkg: Add option to use FF-A calls for communication with
SPM
StandaloneMmPkg: Use FF-A header file in Standalone MM Arm MMU library
ArmPkg/StandaloneMmMmuLib: Add option to use FF-A calls to get memory
region's permissions
ArmPkg/StandaloneMmMmuLib: Add option to use FF-A calls to set memory
region's permissions

Ilias Apalodimas (2):
MdeModulePkg/VariableStandaloneMm: Set PcdFlashNvStorageVariableBase
to Pcd
StandaloneMmPkg: Allow sending FFA Direct Request message to
StandaloneMm

Sughosh Ganu (1):
ArmPkg: Introduce support for PcdFfaEnable

Sughossh Ganu (1):
StandaloneMmPkg: Add the SPM version for FF-A

ArmPkg/ArmPkg.dec | 3 +
.../ArmMmuStandaloneMmLib.inf | 3 +
.../RuntimeDxe/VariableStandaloneMm.inf | 6 +-
.../StandaloneMmCoreEntryPoint.inf | 3 +
ArmPkg/Include/IndustryStandard/ArmFfaSvc.h | 16 +++
.../AArch64/ArmMmuStandaloneMmLib.c | 53 +++++++--
.../StandaloneMmCpu/AArch64/EventHandle.c | 4 +-
.../AArch64/StandaloneMmCoreEntryPoint.c | 103 ++++++++++++++----
ArmPkg/Library/ArmSvcLib/AArch64/ArmSvc.S | 2 +
9 files changed, 155 insertions(+), 38 deletions(-)
create mode 100644 ArmPkg/Include/IndustryStandard/ArmFfaSvc.h

--
2.17.1


[PATCH 3/3] MdeModulePkg: Add EDK2 port jansson library

Abner Chang
 

Add EDK2 port jansson library (JsonLib) to MdeModulePkg

Signed-off-by: Abner Chang <abner.chang@hpe.com>

Cc: Jian J Wang <jian.j.wang@intel.com>
Cc: Hao A Wu <hao.a.wu@intel.com>
Cc: Nickle Wang <nickle.wang@hpe.com>
Cc: Peter O'Hanley <peter.ohanley@hpe.com>
---
MdeModulePkg/MdeModulePkg.dec | 7 ++++++-
MdeModulePkg/MdeModulePkg.dsc | 4 +++-
2 files changed, 9 insertions(+), 2 deletions(-)

diff --git a/MdeModulePkg/MdeModulePkg.dec b/MdeModulePkg/MdeModulePkg.dec
index 9b52b34494..fb755425a8 100644
--- a/MdeModulePkg/MdeModulePkg.dec
+++ b/MdeModulePkg/MdeModulePkg.dec
@@ -6,7 +6,7 @@
# Copyright (c) 2019, NVIDIA CORPORATION. All rights reserved.
# Copyright (c) 2007 - 2020, Intel Corporation. All rights reserved.<BR>
# Copyright (c) 2016, Linaro Ltd. All rights reserved.<BR>
-# (C) Copyright 2016 - 2019 Hewlett Packard Enterprise Development LP<BR>
+# (C) Copyright 2016 - 2020 Hewlett Packard Enterprise Development LP<BR>
# Copyright (c) 2017, AMD Incorporated. All rights reserved.<BR>
# Copyright (c) Microsoft Corporation.<BR>
# SPDX-License-Identifier: BSD-2-Clause-Patent
@@ -154,6 +154,11 @@
#
VariablePolicyHelperLib|Include/Library/VariablePolicyHelperLib.h

+ ## @libraryclass Provides the library functions based on third party
+ # jansson library to manipulate JSON data structure.
+ #
+ JsonLib|Include/Library/JsonLib.h
+
[Guids]
## MdeModule package token space guid
# Include/Guid/MdeModulePkgTokenSpace.h
diff --git a/MdeModulePkg/MdeModulePkg.dsc b/MdeModulePkg/MdeModulePkg.dsc
index 90165ca443..a1325370a9 100644
--- a/MdeModulePkg/MdeModulePkg.dsc
+++ b/MdeModulePkg/MdeModulePkg.dsc
@@ -1,7 +1,7 @@
## @file
# EFI/PI Reference Module Package for All Architectures
#
-# (C) Copyright 2014 Hewlett-Packard Development Company, L.P.<BR>
+# (C) Copyright 2014 - 2020 Hewlett-Packard Development Company, L.P.<BR>
# Copyright (c) 2007 - 2019, Intel Corporation. All rights reserved.<BR>
# Copyright (c) Microsoft Corporation.
#
@@ -100,6 +100,7 @@
SafeIntLib|MdePkg/Library/BaseSafeIntLib/BaseSafeIntLib.inf
DisplayUpdateProgressLib|MdeModulePkg/Library/DisplayUpdateProgressLibGraphics/DisplayUpdateProgressLibGraphics.inf
VariablePolicyHelperLib|MdeModulePkg/Library/VariablePolicyHelperLib/VariablePolicyHelperLib.inf
+ JsonLib|MdeModulePkg/Library/JsonLib/JsonLib.inf

[LibraryClasses.EBC.PEIM]
IoLib|MdePkg/Library/PeiIoLibCpuIo/PeiIoLibCpuIo.inf
@@ -329,6 +330,7 @@
MdeModulePkg/Library/BaseBmpSupportLib/BaseBmpSupportLib.inf
MdeModulePkg/Library/DisplayUpdateProgressLibGraphics/DisplayUpdateProgressLibGraphics.inf
MdeModulePkg/Library/DisplayUpdateProgressLibText/DisplayUpdateProgressLibText.inf
+ MdeModulePkg/Library/JsonLib/JsonLib.inf

MdeModulePkg/Universal/BdsDxe/BdsDxe.inf
MdeModulePkg/Application/BootManagerMenuApp/BootManagerMenuApp.inf
--
2.17.1


[PATCH 2/3] MdeModulePkg/library: EDK2 port jansson library

Abner Chang
 

This is the edk2 port of open source jansson library.
https://github.com/akheron/jansson

Signed-off-by: Abner Chang <abner.chang@hpe.com>

Cc: Jian J Wang <jian.j.wang@intel.com>
Cc: Hao A Wu <hao.a.wu@intel.com>
Cc: Nickle Wang <nickle.wang@hpe.com>
Cc: Peter O'Hanley <peter.ohanley@hpe.com>
---
MdeModulePkg/Include/Library/JsonLib.h | 596 +++++++++++++
.../Library/JsonLib/JanssonCrtLibSupport.c | 705 +++++++++++++++
.../Library/JsonLib/JanssonCrtLibSupport.h | 198 +++++
MdeModulePkg/Library/JsonLib/JsonLib.c | 805 ++++++++++++++++++
MdeModulePkg/Library/JsonLib/JsonLib.inf | 81 ++
MdeModulePkg/Library/JsonLib/JsonUtilities.c | 417 +++++++++
MdeModulePkg/Library/JsonLib/JsonUtilities.h | 69 ++
MdeModulePkg/Library/JsonLib/assert.h | 11 +
MdeModulePkg/Library/JsonLib/errno.h | 11 +
MdeModulePkg/Library/JsonLib/jansson_config.h | 57 ++
.../Library/JsonLib/jansson_private_config.h | 19 +
MdeModulePkg/Library/JsonLib/limits.h | 11 +
MdeModulePkg/Library/JsonLib/math.h | 11 +
MdeModulePkg/Library/JsonLib/stdarg.h | 11 +
MdeModulePkg/Library/JsonLib/stddef.h | 11 +
MdeModulePkg/Library/JsonLib/stdio.h | 11 +
MdeModulePkg/Library/JsonLib/stdlib.h | 11 +
MdeModulePkg/Library/JsonLib/string.h | 11 +
MdeModulePkg/Library/JsonLib/sys/time.h | 11 +
MdeModulePkg/Library/JsonLib/sys/types.h | 10 +
MdeModulePkg/Library/JsonLib/time.h | 11 +
21 files changed, 3078 insertions(+)
create mode 100644 MdeModulePkg/Include/Library/JsonLib.h
create mode 100644 MdeModulePkg/Library/JsonLib/JanssonCrtLibSupport.c
create mode 100644 MdeModulePkg/Library/JsonLib/JanssonCrtLibSupport.h
create mode 100644 MdeModulePkg/Library/JsonLib/JsonLib.c
create mode 100644 MdeModulePkg/Library/JsonLib/JsonLib.inf
create mode 100644 MdeModulePkg/Library/JsonLib/JsonUtilities.c
create mode 100644 MdeModulePkg/Library/JsonLib/JsonUtilities.h
create mode 100644 MdeModulePkg/Library/JsonLib/assert.h
create mode 100644 MdeModulePkg/Library/JsonLib/errno.h
create mode 100644 MdeModulePkg/Library/JsonLib/jansson_config.h
create mode 100644 MdeModulePkg/Library/JsonLib/jansson_private_config.h
create mode 100644 MdeModulePkg/Library/JsonLib/limits.h
create mode 100644 MdeModulePkg/Library/JsonLib/math.h
create mode 100644 MdeModulePkg/Library/JsonLib/stdarg.h
create mode 100644 MdeModulePkg/Library/JsonLib/stddef.h
create mode 100644 MdeModulePkg/Library/JsonLib/stdio.h
create mode 100644 MdeModulePkg/Library/JsonLib/stdlib.h
create mode 100644 MdeModulePkg/Library/JsonLib/string.h
create mode 100644 MdeModulePkg/Library/JsonLib/sys/time.h
create mode 100644 MdeModulePkg/Library/JsonLib/sys/types.h
create mode 100644 MdeModulePkg/Library/JsonLib/time.h

diff --git a/MdeModulePkg/Include/Library/JsonLib.h b/MdeModulePkg/Include/Library/JsonLib.h
new file mode 100644
index 0000000000..b140a8723c
--- /dev/null
+++ b/MdeModulePkg/Include/Library/JsonLib.h
@@ -0,0 +1,596 @@
+/** @file
+ APIs for JSON operations.
+
+ Copyright (c) 2019, Intel Corporation. All rights reserved.<BR>
+ (C) Copyright 2020 Hewlett Packard Enterprise Development LP<BR>
+
+ SPDX-License-Identifier: BSD-2-Clause-Patent
+
+**/
+#ifndef BASE_JSON_LIB_H_
+#define BASE_JSON_LIB_H_
+
+#include <Uefi.h>
+
+#include <Library/BaseMemoryLib.h>
+#include <Library/MemoryAllocationLib.h>
+
+typedef VOID* EDKII_JSON_VALUE;
+typedef VOID* EDKII_JSON_ARRAY;
+typedef VOID* EDKII_JSON_OBJECT;
+
+#define EDKII_JSON_ARRAY_FOREACH(Array, Index, Value) \
+ for(Index = 0; \
+ Index < JsonArrayCount(Array) && (Value = JsonArrayGetValue(Array, Index)); \
+ Index++)
+
+/**
+ The function is used to convert a NULL terminated UTF8 encoded string to a JSON
+ value. Only object and array represented strings can be converted successfully,
+ since they are the only valid root values of a JSON text for UEFI usage.
+
+ Real number and number with exponent part are not supportted by UEFI.
+
+ Caller needs to cleanup the root value by calling JsonValueFree().
+
+ @param[in] Text The NULL terminated UTF8 encoded string to convert
+
+ @retval Array JSON value or object JSON value, or NULL when any error occurs.
+
+**/
+EDKII_JSON_VALUE
+EFIAPI
+TextToJson (
+ IN CHAR8* Text
+ );
+
+/**
+ The function is used to convert the JSON root value to a UTF8 encoded string which
+ is terminated by NULL, or return NULL on error.
+
+ Only array JSON value or object JSON value is valid for converting, and caller is
+ responsible for free converted string.
+
+ @param[in] Json The JSON value to be converted
+
+ @retval The JSON value converted UTF8 string or NULL.
+
+**/
+CHAR8*
+EFIAPI
+JsonToText (
+ IN EDKII_JSON_VALUE Json
+ );
+
+/**
+ The function is used to initialize a JSON value which contains a new JSON array,
+ or NULL on error. Initially, the array is empty.
+
+ The reference count of this value will be set to 1, and caller needs to cleanup the
+ value by calling JsonValueFree().
+
+ More details for reference count strategy can refer to the API description for JsonValueFree().
+
+ @retval The created JSON value which contains a JSON array or NULL.
+
+**/
+EDKII_JSON_VALUE
+EFIAPI
+JsonValueInitArray (
+ VOID
+ );
+
+/**
+ The function is used to initialize a JSON value which contains a new JSON object,
+ or NULL on error. Initially, the object is empty.
+
+ The reference count of this value will be set to 1, and caller needs to cleanup the
+ value by calling JsonValueFree().
+
+ More details for reference count strategy can refer to the API description for JsonValueFree().
+
+ @retval The created JSON value which contains a JSON object or NULL.
+
+**/
+EDKII_JSON_VALUE
+EFIAPI
+JsonValueInitObject (
+ VOID
+ );
+
+/**
+ The function is used to initialize a JSON value which contains a new JSON string,
+ or NULL on error.
+
+ The input string must be NULL terminated Ascii format, non-Ascii characters will
+ be processed as an error. Unicode characters can also be represented by Ascii string
+ as the format: \u + 4 hexadecimal digits, like \u3E5A, or \u003F.
+
+ The reference count of this value will be set to 1, and caller needs to cleanup the
+ value by calling JsonValueFree().
+
+ More details for reference count strategy can refer to the API description for JsonValueFree().
+
+ @param[in] String The Ascii string to initialize to JSON value
+
+ @retval The created JSON value which contains a JSON string or NULL. Select a
+ Getter API for a specific encoding format.
+
+**/
+EDKII_JSON_VALUE
+EFIAPI
+JsonValueInitAsciiString (
+ IN CHAR8 *String
+ );
+
+/**
+ The function is used to initialize a JSON value which contains a new JSON string,
+ or NULL on error.
+
+ The input must be a NULL terminated UCS2 format Unicode string.
+
+ The reference count of this value will be set to 1, and caller needs to cleanup the
+ value by calling JsonValueFree().
+
+ More details for reference count strategy can refer to the API description for JsonValueFree().
+
+ @param[in] String The Unicode string to initialize to JSON value
+
+ @retval The created JSON value which contains a JSON string or NULL. Select a
+ Getter API for a specific encoding format.
+
+**/
+EDKII_JSON_VALUE
+EFIAPI
+JsonValueInitUnicodeString (
+ IN CHAR16 *String
+ );
+
+/**
+ The function is used to initialize a JSON value which contains a new JSON integer,
+ or NULL on error.
+
+ The reference count of this value will be set to 1, and caller needs to cleanup the
+ value by calling JsonValueFree().
+
+ More details for reference count strategy can refer to the API description for JsonValueFree().
+
+ @param[in] Value The integer to initialize to JSON value
+
+ @retval The created JSON value which contains a JSON number or NULL.
+
+**/
+EDKII_JSON_VALUE
+EFIAPI
+JsonValueInitNumber (
+ IN INT64 Value
+ );
+
+/**
+ The function is used to initialize a JSON value which contains a new JSON boolean,
+ or NULL on error.
+
+ Boolean JSON value is kept as static value, and no need to do any cleanup work.
+
+ @param[in] Value The boolean value to initialize.
+
+ @retval The created JSON value which contains a JSON boolean or NULL.
+
+**/
+EDKII_JSON_VALUE
+EFIAPI
+JsonValueInitBoolean (
+ IN BOOLEAN Value
+ );
+
+/**
+ The function is used to initialize a JSON value which contains a new JSON NULL,
+ or NULL on error.
+
+ NULL JSON value is kept as static value, and no need to do any cleanup work.
+
+ @retval The created NULL JSON value.
+
+**/
+EDKII_JSON_VALUE
+EFIAPI
+JsonValueInitNull (
+ VOID
+ );
+
+/**
+ The function is used to decrease the reference count of a JSON value by one, and once
+ this reference count drops to zero, the value is destroyed and it can no longer be used.
+ If this destroyed value is object type or array type, reference counts for all containing
+ JSON values will be decreased by 1. Boolean JSON value and NULL JSON value won't be destroyed
+ since they are static values kept in memory.
+
+ Reference Count Strategy: BaseJsonLib uses this strategy to track whether a value is still
+ in use or not. When a value is created, it’s reference count is set to 1. If a reference
+ to a value is kept for use, its reference count is incremented, and when the value is no
+ longer needed, the reference count is decremented. When the reference count drops to zero,
+ there are no references left, and the value can be destroyed.
+
+ @param[in] Json The JSON value to be freed.
+
+**/
+VOID
+EFIAPI
+JsonValueFree (
+ IN EDKII_JSON_VALUE Json
+ );
+
+/**
+ The function is used to create a fresh copy of a JSON value, and all child values are deep
+ copied in a recursive fashion. It should be called when this JSON value might be modified
+ in later use, but the original still wants to be used in somewhere else.
+
+ Reference counts of the returned root JSON value and all child values will be set to 1, and
+ caller needs to cleanup the root value by calling JsonValueFree().
+
+ * Note: Since this function performs a copy from bottom to up, too many calls may cause some
+ performance issues, user should avoid unnecessary calls to this function unless it is really
+ needed.
+
+ @param[in] Json The JSON value to be cloned.
+
+ @retval Return the cloned JSON value, or NULL on error.
+
+**/
+EDKII_JSON_VALUE
+EFIAPI
+JsonValueClone (
+ IN EDKII_JSON_VALUE Json
+ );
+
+/**
+ The function is used to return if the provided JSON value contains a JSON array.
+
+ @param[in] Json The provided JSON value.
+
+ @retval TRUE The JSON value contains a JSON array.
+ @retval FALSE The JSON value doesn't contain a JSON array.
+
+**/
+BOOLEAN
+EFIAPI
+JsonValueIsArray (
+ IN EDKII_JSON_VALUE Json
+ );
+
+/**
+ The function is used to return if the provided JSON value contains a JSON object.
+
+ @param[in] Json The provided JSON value.
+
+ @retval TRUE The JSON value contains a JSON object.
+ @retval FALSE The JSON value doesn't contain a JSON object.
+
+**/
+BOOLEAN
+EFIAPI
+JsonValueIsObject (
+ IN EDKII_JSON_VALUE Json
+ );
+
+/**
+ The function is used to return if the provided JSON Value contains a string, Ascii or
+ Unicode format is not differentiated.
+
+ @param[in] Json The provided JSON value.
+
+ @retval TRUE The JSON value contains a JSON string.
+ @retval FALSE The JSON value doesn't contain a JSON string.
+
+**/
+BOOLEAN
+EFIAPI
+JsonValueIsString (
+ IN EDKII_JSON_VALUE Json
+ );
+
+/**
+ The function is used to return if the provided JSON value contains a JSON number.
+
+ @param[in] Json The provided JSON value.
+
+ @retval TRUE The JSON value is contains JSON number.
+ @retval FALSE The JSON value doesn't contain a JSON number.
+
+**/
+BOOLEAN
+EFIAPI
+JsonValueIsNumber (
+ IN EDKII_JSON_VALUE Json
+ );
+
+/**
+ The function is used to return if the provided JSON value contains a JSON boolean.
+
+ @param[in] Json The provided JSON value.
+
+ @retval TRUE The JSON value contains a JSON boolean.
+ @retval FALSE The JSON value doesn't contain a JSON boolean.
+
+**/
+BOOLEAN
+EFIAPI
+JsonValueIsBoolean (
+ IN EDKII_JSON_VALUE Json
+ );
+
+/**
+ The function is used to return if the provided JSON value contains a JSON NULL.
+
+ @param[in] Json The provided JSON value.
+
+ @retval TRUE The JSON value contains a JSON NULL.
+ @retval FALSE The JSON value doesn't contain a JSON NULL.
+
+**/
+BOOLEAN
+EFIAPI
+JsonValueIsNull (
+ IN EDKII_JSON_VALUE Json
+ );
+
+/**
+ The function is used to retrieve the associated array in an array type JSON value.
+
+ Any changes to the returned array will impact the original JSON value.
+
+ @param[in] Json The provided JSON value.
+
+ @retval Return the associated array in JSON value or NULL.
+
+**/
+EDKII_JSON_ARRAY
+EFIAPI
+JsonValueGetArray (
+ IN EDKII_JSON_VALUE Json
+ );
+
+/**
+ The function is used to retrieve the associated object in an object type JSON value.
+
+ Any changes to the returned object will impact the original JSON value.
+
+ @param[in] Json The provided JSON value.
+
+ @retval Return the associated object in JSON value or NULL.
+
+**/
+EDKII_JSON_OBJECT
+EFIAPI
+JsonValueGetObject (
+ IN EDKII_JSON_VALUE Json
+ );
+
+/**
+ The function is used to retrieve the associated Ascii string in a string type JSON value.
+
+ Any changes to the returned string will impact the original JSON value.
+
+ @param[in] Json The provided JSON value.
+
+ @retval Return the associated Ascii string in JSON value or NULL.
+
+**/
+CHAR8*
+EFIAPI
+JsonValueGetAsciiString (
+ IN EDKII_JSON_VALUE Json
+ );
+
+/**
+ The function is used to retrieve the associated Unicode string in a string type JSON value.
+
+ Caller can do any changes to the returned string without any impact to the original JSON
+ value, and caller needs to free the returned string.
+
+ @param[in] Json The provided JSON value.
+
+ @retval Return the associated Unicode string in JSON value or NULL.
+
+**/
+CHAR16*
+EFIAPI
+JsonValueGetUnicodeString (
+ IN EDKII_JSON_VALUE Json
+ );
+
+/**
+ The function is used to retrieve the associated integer in a number type JSON value.
+
+ The input JSON value should not be NULL or contain no JSON number, otherwise it will
+ ASSERT() and return 0.
+
+ @param[in] Json The provided JSON value.
+
+ @retval Return the associated number in JSON value.
+
+**/
+INT64
+EFIAPI
+JsonValueGetNumber (
+ IN EDKII_JSON_VALUE Json
+ );
+
+/**
+ The function is used to retrieve the associated boolean in a boolean type JSON value.
+
+ The input JSON value should not be NULL or contain no JSON boolean, otherwise it will
+ ASSERT() and return FALSE.
+
+ @param[in] Json The provided JSON value.
+
+ @retval Return the associated value of JSON boolean.
+
+**/
+BOOLEAN
+EFIAPI
+JsonValueGetBoolean (
+ IN EDKII_JSON_VALUE Json
+ );
+
+/**
+ The function is used to get the number of elements in a JSON object, or 0 if it is NULL or
+ not a JSON object.
+
+ @param[in] JsonObject The provided JSON object.
+
+ @retval Return the number of elements in this JSON object or 0.
+
+**/
+UINTN
+EFIAPI
+JsonObjectSize (
+ IN EDKII_JSON_OBJECT JsonObject
+ );
+
+/**
+ The function is used to enumerate all keys in a JSON object.
+
+ Caller should be responsible to free the returned key array refference. But contained keys
+ are read only and must not be modified or freed.
+
+ @param[in] JsonObj The provided JSON object for enumeration.
+ @param[out] KeyCount The count of keys in this JSON object.
+
+ @retval Return an array of the enumerated keys in this JSON object or NULL.
+
+**/
+CHAR8**
+JsonObjectGetKeys (
+ IN EDKII_JSON_OBJECT JsonObj,
+ OUT UINTN *KeyCount
+ );
+
+/**
+ The function is used to get a JSON value corresponding to the input key from a JSON object.
+
+ It only returns a reference to this value and any changes on this value will impact the
+ original JSON object. If that is not expected, please call JsonValueClone() to clone it to
+ use.
+
+ Input key must be a valid NULL terminated UTF8 encoded string. NULL will be returned when
+ Key-Value is not found in this JSON object.
+
+ @param[in] JsonObj The provided JSON object.
+ @param[in] Key The key of the JSON value to be retrieved.
+
+ @retval Return the corresponding JSON value to key, or NULL on error.
+
+**/
+EDKII_JSON_VALUE
+EFIAPI
+JsonObjectGetValue (
+ IN EDKII_JSON_OBJECT JsonObj,
+ IN CHAR8 *Key
+ );
+
+/**
+ The function is used to set a JSON value corresponding to the input key from a JSON object,
+ and the reference count of this value will be increased by 1.
+
+ Input key must be a valid NULL terminated UTF8 encoded string. If there already is a value for
+ this key, this key will be assigned to the new JSON value. The old JSON value will be removed
+ from this object and thus its' reference count will be decreased by 1.
+
+ More details for reference count strategy can refer to the API description for JsonValueFree().
+
+ @param[in] JsonObj The provided JSON object.
+ @param[in] Key The key of the JSON value to be set.
+ @param[in] Json The JSON value to set to this JSON object mapped by key.
+
+ @retval EFI_ABORTED Some error occur and operation aborted.
+ @retval EFI_SUCCESS The JSON value has been set to this JSON object.
+
+**/
+EFI_STATUS
+EFIAPI
+JsonObjectSetValue (
+ IN EDKII_JSON_OBJECT JsonObj,
+ IN CHAR8 *Key,
+ IN EDKII_JSON_VALUE Json
+ );
+
+/**
+ The function is used to get the number of elements in a JSON array, or 0 if it is NULL or
+ not a JSON array.
+
+ @param[in] JsonArray The provided JSON array.
+
+ @retval Return the number of elements in this JSON array or 0.
+
+**/
+UINTN
+EFIAPI
+JsonArrayCount (
+ IN EDKII_JSON_ARRAY JsonArray
+ );
+
+/**
+ The function is used to return the JSON value in the array at position index. The valid range
+ for this index is from 0 to the return value of JsonArrayCount() minus 1.
+
+ It only returns a reference to this value and any changes on this value will impact the
+ original JSON object. If that is not expected, please call JsonValueClone() to clone it to
+ use.
+
+ If this array is NULL or not a JSON array, or if index is out of range, NULL will be returned.
+
+ @param[in] JsonArray The provided JSON Array.
+
+ @retval Return the JSON value located in the Index position or NULL.
+
+**/
+EDKII_JSON_VALUE
+EFIAPI
+JsonArrayGetValue (
+ IN EDKII_JSON_ARRAY JsonArray,
+ IN UINTN Index
+ );
+
+/**
+ The function is used to append a JSON value to the end of the JSON array, and grow the size of
+ array by 1. The reference count of this value will be increased by 1.
+
+ More details for reference count strategy can refer to the API description for JsonValueFree().
+
+ @param[in] JsonArray The provided JSON object.
+ @param[in] Json The JSON value to append.
+
+ @retval EFI_ABORTED Some error occur and operation aborted.
+ @retval EFI_SUCCESS JSON value has been appended to the end of the JSON array.
+
+**/
+EFI_STATUS
+EFIAPI
+JsonArrayAppendValue (
+ IN EDKII_JSON_ARRAY JsonArray,
+ IN EDKII_JSON_VALUE Json
+ );
+
+/**
+ The function is used to remove a JSON value at position index, shifting the elements after index
+ one position towards the start of the array. The reference count of this value will be decreased
+ by 1.
+
+ More details for reference count strategy can refer to the API description for JsonValueFree().
+
+ @param[in] JsonArray The provided JSON array.
+ @param[in] Index The Index position before removement.
+
+ @retval EFI_ABORTED Some error occur and operation aborted.
+ @retval EFI_SUCCESS The JSON array has been removed at position index.
+
+**/
+EFI_STATUS
+EFIAPI
+JsonArrayRemoveValue (
+ IN EDKII_JSON_ARRAY JsonArray,
+ IN UINTN Index
+ );
+
+#endif
diff --git a/MdeModulePkg/Library/JsonLib/JanssonCrtLibSupport.c b/MdeModulePkg/Library/JsonLib/JanssonCrtLibSupport.c
new file mode 100644
index 0000000000..907634a05b
--- /dev/null
+++ b/MdeModulePkg/Library/JsonLib/JanssonCrtLibSupport.c
@@ -0,0 +1,705 @@
+/** @file
+ CRT wrapper functions for Jansson system call.
+
+ Copyright (c) 2019, Intel Corporation. All rights reserved.<BR>
+ (C) Copyright 2020 Hewlett Packard Enterprise Development LP<BR>
+
+ SPDX-License-Identifier: BSD-2-Clause-Patent
+
+**/
+
+#include <JanssonCrtLibSupport.h>
+#include <Library/MemoryAllocationLib.h>
+#include <Library/UefiRuntimeServicesTableLib.h>
+
+int errno = 0;
+
+/**
+ Determine if a particular character is an alphanumeric character
+ @return Returns 1 if c is an alphanumeric character, otherwise returns 0.
+**/
+int isalnum (int c)
+{
+ //
+ // <alnum> ::= [0-9] | [a-z] | [A-Z]
+ //
+ return ((('0' <= (c)) && ((c) <= '9')) ||
+ (('a' <= (c)) && ((c) <= 'z')) ||
+ (('A' <= (c)) && ((c) <= 'Z')));
+}
+
+/**
+ Determine if a particular character is a digital character
+
+ @return Returns 1 if c is an digital character, otherwise returns 0.
+**/
+int isdchar (int c)
+{
+ //
+ // [0-9] | [e +-.]
+ //
+ return ((('0' <= (c)) && ((c) <= '9')) ||
+ (c == 'e') || (c == 'E') ||
+ (c == '+') || (c == '-') ||
+ (c == '.'));
+}
+
+/**
+ Determine if a particular character is a space character
+
+ @return Returns 1 if c is a space character
+**/
+int isspace (int c)
+{
+ //
+ // <space> ::= [ ]
+ //
+ return ((c) == ' ') || ((c) == '\t') || ((c) == '\r') || ((c) == '\n') || ((c) == '\v') || ((c) == '\f');
+}
+
+/**
+ Allocates memory blocks
+*/
+void *malloc (size_t size)
+{
+ return AllocatePool ((UINTN) size);
+}
+
+/**
+ De-allocates or frees a memory block
+*/
+void free (void *ptr)
+{
+ //
+ // In Standard C, free() handles a null pointer argument transparently. This
+ // is not true of FreePool() below, so protect it.
+ //
+ if (ptr != NULL) {
+ FreePool (ptr);
+ }
+}
+
+/**
+ NetBSD Compatibility Function strdup creates a duplicate copy of a string.
+
+ @return Returns the pointer to duplicated string.
+**/
+char * strdup(const char *str)
+{
+ size_t len;
+ char *copy;
+
+ len = strlen(str) + 1;
+ if ((copy = malloc(len)) == NULL)
+ return (NULL);
+ memcpy(copy, str, len);
+ return (copy);
+}
+
+/** The toupper function converts a lowercase letter to a corresponding
+ uppercase letter.
+
+ @param[in] c The character to be converted.
+
+ @return If the argument is a character for which islower is true and
+ there are one or more corresponding characters, as specified by
+ the current locale, for which isupper is true, the toupper
+ function returns one of the corresponding characters (always the
+ same one for any given locale); otherwise, the argument is
+ returned unchanged.
+**/
+int
+toupper(
+ IN int c
+ )
+{
+ if ( (c >= 'a') && (c <= 'z') ) {
+ c = c - ('a' - 'A');
+ }
+ return c;
+}
+
+/**
+ Digit to a value.
+
+ @return Returns the value of digit.
+**/
+int
+Digit2Val( int c)
+{
+ if (((c >= 'a') && (c <= 'z')) || ((c >= 'A') && (c <= 'Z'))) { /* If c is one of [A-Za-z]... */
+ c = toupper(c) - 7; // Adjust so 'A' is ('9' + 1)
+ }
+ return c - '0'; // Value returned is between 0 and 35, inclusive.
+}
+
+
+/** The strtoll function converts the initial portion of the string pointed to
+ by nptr to long long int representation.
+
+ See the description for strtol for more information.
+
+ @return The strtoll function returns the converted value, if any. If no
+ conversion could be performed, zero is returned. If the correct
+ value is outside the range of representable values, LLONG_MIN or
+ LLONG_MAX is returned (according to the sign of the value, if any),
+ and the value of the macro ERANGE is stored in errno.
+**/
+long long
+strtoll(const char * nptr, char ** endptr, int base)
+{
+ const char *pEnd;
+ long long Result = 0;
+ long long Previous;
+ int temp;
+ BOOLEAN Negative = FALSE;
+
+ pEnd = nptr;
+
+ if((base < 0) || (base == 1) || (base > 36)) {
+ if(endptr != NULL) {
+ *endptr = NULL;
+ }
+ return 0;
+ }
+ // Skip leading spaces.
+ while(isspace(*nptr)) ++nptr;
+
+ // Process Subject sequence: optional sign followed by digits.
+ if(*nptr == '+') {
+ Negative = FALSE;
+ ++nptr;
+ }
+ else if(*nptr == '-') {
+ Negative = TRUE;
+ ++nptr;
+ }
+
+ if(*nptr == '0') { /* Might be Octal or Hex */
+ if(toupper(nptr[1]) == 'X') { /* Looks like Hex */
+ if((base == 0) || (base == 16)) {
+ nptr += 2; /* Skip the "0X" */
+ base = 16; /* In case base was 0 */
+ }
+ }
+ else { /* Looks like Octal */
+ if((base == 0) || (base == 8)) {
+ ++nptr; /* Skip the leading "0" */
+ base = 8; /* In case base was 0 */
+ }
+ }
+ }
+ if(base == 0) { /* If still zero then must be decimal */
+ base = 10;
+ }
+ if(*nptr == '0') {
+ for( ; *nptr == '0'; ++nptr); /* Skip any remaining leading zeros */
+ pEnd = nptr;
+ }
+
+ while( isalnum(*nptr) && ((temp = Digit2Val(*nptr)) < base)) {
+ Previous = Result;
+ Result = MultS64x64 (Result, base) + (long long int)temp;
+ if( Result <= Previous) { // Detect Overflow
+ if(Negative) {
+ Result = LLONG_MIN;
+ }
+ else {
+ Result = LLONG_MAX;
+ }
+ Negative = FALSE;
+ errno = ERANGE;
+ break;
+ }
+ pEnd = ++nptr;
+ }
+ if(Negative) {
+ Result = -Result;
+ }
+
+ // Save pointer to final sequence
+ if(endptr != NULL) {
+ *endptr = (char *)pEnd;
+ }
+ return Result;
+}
+
+/** The strtol, strtoll, strtoul, and strtoull functions convert the initial
+ portion of the string pointed to by nptr to long int, long long int,
+ unsigned long int, and unsigned long long int representation, respectively.
+ First, they decompose the input string into three parts: an initial,
+ possibly empty, sequence of white-space characters (as specified by the
+ isspace function), a subject sequence resembling an integer represented in
+ some radix determined by the value of base, and a final string of one or
+ more unrecognized characters, including the terminating null character of
+ the input string. Then, they attempt to convert the subject sequence to an
+ integer, and return the result.
+
+ If the value of base is zero, the expected form of the subject sequence is
+ that of an integer constant, optionally preceded
+ by a plus or minus sign, but not including an integer suffix. If the value
+ of base is between 2 and 36 (inclusive), the expected form of the subject
+ sequence is a sequence of letters and digits representing an integer with
+ the radix specified by base, optionally preceded by a plus or minus sign,
+ but not including an integer suffix. The letters from a (or A) through z
+ (or Z) are ascribed the values 10 through 35; only letters and digits whose
+ ascribed values are less than that of base are permitted. If the value of
+ base is 16, the characters 0x or 0X may optionally precede the sequence of
+ letters and digits, following the sign if present.
+
+ The subject sequence is defined as the longest initial subsequence of the
+ input string, starting with the first non-white-space character, that is of
+ the expected form. The subject sequence contains no characters if the input
+ string is empty or consists entirely of white space, or if the first
+ non-white-space character is other than a sign or a permissible letter or digit.
+
+ If the subject sequence has the expected form and the value of base is
+ zero, the sequence of characters starting with the first digit is
+ interpreted as an integer constant. If the subject sequence has the
+ expected form and the value of base is between 2 and 36, it is used as the
+ base for conversion, ascribing to each letter its value as given above. If
+ the subject sequence begins with a minus sign, the value resulting from the
+ conversion is negated (in the return type). A pointer to the final string
+ is stored in the object pointed to by endptr, provided that endptr is
+ not a null pointer.
+
+ In other than the "C" locale, additional locale-specific subject sequence
+ forms may be accepted.
+
+ If the subject sequence is empty or does not have the expected form, no
+ conversion is performed; the value of nptr is stored in the object pointed
+ to by endptr, provided that endptr is not a null pointer.
+
+ @return The strtol, strtoll, strtoul, and strtoull functions return the
+ converted value, if any. If no conversion could be performed, zero
+ is returned. If the correct value is outside the range of
+ representable values, LONG_MIN, LONG_MAX, LLONG_MIN, LLONG_MAX,
+ ULONG_MAX, or ULLONG_MAX is returned (according to the return type
+ and sign of the value, if any), and the value of the macro ERANGE
+ is stored in errno.
+**/
+long
+strtol(const char * nptr, char ** endptr, int base)
+{
+ const char *pEnd;
+ long Result = 0;
+ long Previous;
+ int temp;
+ BOOLEAN Negative = FALSE;
+
+ pEnd = nptr;
+
+ if((base < 0) || (base == 1) || (base > 36)) {
+ if(endptr != NULL) {
+ *endptr = NULL;
+ }
+ return 0;
+ }
+ // Skip leading spaces.
+ while(isspace(*nptr)) ++nptr;
+
+ // Process Subject sequence: optional sign followed by digits.
+ if(*nptr == '+') {
+ Negative = FALSE;
+ ++nptr;
+ }
+ else if(*nptr == '-') {
+ Negative = TRUE;
+ ++nptr;
+ }
+
+ if(*nptr == '0') { /* Might be Octal or Hex */
+ if(toupper(nptr[1]) == 'X') { /* Looks like Hex */
+ if((base == 0) || (base == 16)) {
+ nptr += 2; /* Skip the "0X" */
+ base = 16; /* In case base was 0 */
+ }
+ }
+ else { /* Looks like Octal */
+ if((base == 0) || (base == 8)) {
+ ++nptr; /* Skip the leading "0" */
+ base = 8; /* In case base was 0 */
+ }
+ }
+ }
+ if(base == 0) { /* If still zero then must be decimal */
+ base = 10;
+ }
+ if(*nptr == '0') {
+ for( ; *nptr == '0'; ++nptr); /* Skip any remaining leading zeros */
+ pEnd = nptr;
+ }
+
+ while( isalnum(*nptr) && ((temp = Digit2Val(*nptr)) < base)) {
+ Previous = Result;
+ Result = (Result * base) + (long int)temp;
+ if( Result <= Previous) { // Detect Overflow
+ if(Negative) {
+ Result = LONG_MIN;
+ }
+ else {
+ Result = LONG_MAX;
+ }
+ Negative = FALSE;
+ errno = ERANGE;
+ break;
+ }
+ pEnd = ++nptr;
+ }
+ if(Negative) {
+ Result = -Result;
+ }
+
+ // Save pointer to final sequence
+ if(endptr != NULL) {
+ *endptr = (char *)pEnd;
+ }
+ return Result;
+}
+
+/** The strtoull function converts the initial portion of the string pointed to
+ by nptr to unsigned long long int representation.
+
+ See the description for strtol for more information.
+
+ @return The strtoull function returns the converted value, if any. If no
+ conversion could be performed, zero is returned. If the correct
+ value is outside the range of representable values, ULLONG_MAX is
+ returned and the value of the macro ERANGE is stored in errno.
+**/
+unsigned long long
+strtoull(const char * nptr, char ** endptr, int base)
+{
+ const char *pEnd;
+ unsigned long long Result = 0;
+ unsigned long long Previous;
+ int temp;
+
+ pEnd = nptr;
+
+ if((base < 0) || (base == 1) || (base > 36)) {
+ if(endptr != NULL) {
+ *endptr = NULL;
+ }
+ return 0;
+ }
+ // Skip leading spaces.
+ while(isspace(*nptr)) ++nptr;
+
+ // Process Subject sequence: optional + sign followed by digits.
+ if(*nptr == '+') {
+ ++nptr;
+ }
+
+ if(*nptr == '0') { /* Might be Octal or Hex */
+ if(toupper(nptr[1]) == 'X') { /* Looks like Hex */
+ if((base == 0) || (base == 16)) {
+ nptr += 2; /* Skip the "0X" */
+ base = 16; /* In case base was 0 */
+ }
+ }
+ else { /* Looks like Octal */
+ if((base == 0) || (base == 8)) {
+ ++nptr; /* Skip the leading "0" */
+ base = 8; /* In case base was 0 */
+ }
+ }
+ }
+ if(base == 0) { /* If still zero then must be decimal */
+ base = 10;
+ }
+ if(*nptr == '0') {
+ for( ; *nptr == '0'; ++nptr); /* Skip any remaining leading zeros */
+ pEnd = nptr;
+ }
+
+ while( isalnum(*nptr) && ((temp = Digit2Val(*nptr)) < base)) {
+ Previous = Result;
+ Result = DivU64x32 (Result, base) + (unsigned long long)temp;
+ if( Result < Previous) { // If we overflowed
+ Result = ULLONG_MAX;
+ errno = ERANGE;
+ break;
+ }
+ pEnd = ++nptr;
+ }
+
+ // Save pointer to final sequence
+ if(endptr != NULL) {
+ *endptr = (char *)pEnd;
+ }
+ return Result;
+}
+
+/**
+ edk2 Jansson port does not support doubles, simply return 0.
+
+ These conversion functions convert the initial portion of the string
+ pointed to by nptr to double, float, and long double representation,
+ respectively.
+
+ The strtod(), strtof(), and strtold() functions return the converted
+ value, if any.
+
+ If endptr is not NULL, a pointer to the character after the last charac-
+ ter used in the conversion is stored in the location referenced by
+ endptr.
+
+ If no conversion is performed, zero is returned and the value of nptr is
+ stored in the location referenced by endptr.
+
+ If the correct value would cause overflow, plus or minus HUGE_VAL,
+ HUGE_VALF, or HUGE_VALL is returned (according to the sign and type of
+ the return value), and ERANGE is stored in errno. If the correct value
+ would cause underflow, zero is returned and ERANGE is stored in errno.
+
+ @return Return 0.
+**/
+double
+strtod (const char * __restrict nptr, char ** __restrict endptr) {
+ if(endptr)
+ *endptr = (char *)(nptr + strlen(nptr));
+
+ return (double)0;
+}
+
+/**
+ Allocate and zero-initialize array.
+**/
+void *
+calloc(size_t Num, size_t Size)
+{
+ void *RetVal;
+ size_t NumSize;
+
+ NumSize = Num * Size;
+ RetVal = NULL;
+ if (NumSize != 0) {
+ RetVal = malloc(NumSize);
+ if( RetVal != NULL) {
+ (VOID)ZeroMem( RetVal, NumSize);
+ }
+ }
+ DEBUG((DEBUG_POOL, "0x%p = calloc(%d, %d)\n", RetVal, Num, Size));
+
+ return RetVal;
+}
+
+//
+// The arrays give the cumulative number of days up to the first of the
+// month number used as the index (1 -> 12) for regular and leap years.
+// The value at index 13 is for the whole year.
+//
+UINTN CumulativeDays[2][14] = {
+ {
+ 0,
+ 0,
+ 31,
+ 31 + 28,
+ 31 + 28 + 31,
+ 31 + 28 + 31 + 30,
+ 31 + 28 + 31 + 30 + 31,
+ 31 + 28 + 31 + 30 + 31 + 30,
+ 31 + 28 + 31 + 30 + 31 + 30 + 31,
+ 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31,
+ 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30,
+ 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31,
+ 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31 + 30,
+ 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31 + 30 + 31
+ },
+ {
+ 0,
+ 0,
+ 31,
+ 31 + 29,
+ 31 + 29 + 31,
+ 31 + 29 + 31 + 30,
+ 31 + 29 + 31 + 30 + 31,
+ 31 + 29 + 31 + 30 + 31 + 30,
+ 31 + 29 + 31 + 30 + 31 + 30 + 31,
+ 31 + 29 + 31 + 30 + 31 + 30 + 31 + 31,
+ 31 + 29 + 31 + 30 + 31 + 30 + 31 + 31 + 30,
+ 31 + 29 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31,
+ 31 + 29 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31 + 30,
+ 31 + 29 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31 + 30 + 31
+ }
+};
+
+#define IsLeap(y) (((y) % 4) == 0 && (((y) % 100) != 0 || ((y) % 400) == 0))
+#define SECSPERMIN (60)
+#define SECSPERHOUR (60 * 60)
+#define SECSPERDAY (24 * SECSPERHOUR)
+
+/**
+ Get the system time as seconds elapsed since midnight, January 1, 1970.
+**/
+time_t time (time_t *timer)
+{
+ EFI_TIME Time;
+ time_t CalTime;
+ UINTN Year;
+
+ //
+ // Get the current time and date information
+ //
+ gRT->GetTime (&Time, NULL);
+
+ //
+ // Years Handling
+ // UTime should now be set to 00:00:00 on Jan 1 of the current year.
+ //
+ for (Year = 1970, CalTime = 0; Year != Time.Year; Year++) {
+ CalTime = CalTime + (time_t)(CumulativeDays[IsLeap(Year)][13] * SECSPERDAY);
+ }
+
+ //
+ // Add in number of seconds for current Month, Day, Hour, Minute, Seconds, and TimeZone adjustment
+ //
+ CalTime = CalTime +
+ (time_t)((Time.TimeZone != EFI_UNSPECIFIED_TIMEZONE) ? (Time.TimeZone * 60) : 0) +
+ (time_t)(CumulativeDays[IsLeap(Time.Year)][Time.Month] * SECSPERDAY) +
+ (time_t)(((Time.Day > 0) ? Time.Day - 1 : 0) * SECSPERDAY) +
+ (time_t)(Time.Hour * SECSPERHOUR) +
+ (time_t)(Time.Minute * 60) +
+ (time_t)Time.Second;
+
+ if (timer != NULL) {
+ *timer = CalTime;
+ }
+
+ return CalTime;
+}
+
+typedef
+int
+(*SORT_COMPARE)(
+ IN VOID *Buffer1,
+ IN VOID *Buffer2
+ );
+
+/**
+ Duplicated from EDKII BaseSortLib for qsort() wrapper
+ @param[in, out] BufferToSort on call a Buffer of (possibly sorted) elements
+ on return a buffer of sorted elements
+ @param[in] Count the number of elements in the buffer to sort
+ @param[in] ElementSize Size of an element in bytes
+ @param[in] CompareFunction The function to call to perform the comparison
+ of any 2 elements
+ @param[in] Buffer Buffer of size ElementSize for use in swapping
+**/
+STATIC
+VOID
+QuickSortWorker (
+ IN OUT VOID *BufferToSort,
+ IN CONST UINTN Count,
+ IN CONST UINTN ElementSize,
+ IN SORT_COMPARE CompareFunction,
+ IN VOID *Buffer
+ )
+{
+ VOID *Pivot;
+ UINTN LoopCount;
+ UINTN NextSwapLocation;
+
+ ASSERT(BufferToSort != NULL);
+ ASSERT(CompareFunction != NULL);
+ ASSERT(Buffer != NULL);
+
+ if (Count < 2 || ElementSize < 1) {
+ return;
+ }
+
+ NextSwapLocation = 0;
+
+ //
+ // Pick a pivot (we choose last element)
+ //
+ Pivot = ((UINT8 *)BufferToSort + ((Count - 1) * ElementSize));
+
+ //
+ // Now get the pivot such that all on "left" are below it
+ // and everything "right" are above it
+ //
+ for (LoopCount = 0; LoopCount < Count - 1; LoopCount++)
+ {
+ //
+ // If the element is less than the pivot
+ //
+ if (CompareFunction ((VOID *)((UINT8 *)BufferToSort + ((LoopCount) * ElementSize)), Pivot) <= 0) {
+ //
+ // Swap
+ //
+ CopyMem (Buffer, (UINT8 *)BufferToSort + (NextSwapLocation * ElementSize), ElementSize);
+ CopyMem ((UINT8 *)BufferToSort + (NextSwapLocation * ElementSize), (UINT8 *)BufferToSort + ((LoopCount) * ElementSize), ElementSize);
+ CopyMem ((UINT8 *)BufferToSort + ((LoopCount) * ElementSize), Buffer, ElementSize);
+
+ //
+ // Increment NextSwapLocation
+ //
+ NextSwapLocation++;
+ }
+ }
+ //
+ // Swap pivot to it's final position (NextSwapLocaiton)
+ //
+ CopyMem (Buffer, Pivot, ElementSize);
+ CopyMem (Pivot, (UINT8 *)BufferToSort + (NextSwapLocation * ElementSize), ElementSize);
+ CopyMem ((UINT8 *)BufferToSort + (NextSwapLocation * ElementSize), Buffer, ElementSize);
+
+ //
+ // Now recurse on 2 paritial lists. Neither of these will have the 'pivot' element.
+ // IE list is sorted left half, pivot element, sorted right half...
+ //
+ QuickSortWorker (
+ BufferToSort,
+ NextSwapLocation,
+ ElementSize,
+ CompareFunction,
+ Buffer
+ );
+
+ QuickSortWorker (
+ (UINT8 *)BufferToSort + (NextSwapLocation + 1) * ElementSize,
+ Count - NextSwapLocation - 1,
+ ElementSize,
+ CompareFunction,
+ Buffer
+ );
+
+ return;
+}
+
+/**
+ Performs a quick sort
+**/
+void qsort (void *base, size_t num, size_t width, int (*compare)(const void *, const void *))
+{
+ VOID *Buffer;
+
+ ASSERT (base != NULL);
+ ASSERT (compare != NULL);
+
+ //
+ // Use CRT-style malloc to cover BS and RT memory allocation.
+ //
+ Buffer = malloc (width);
+ ASSERT (Buffer != NULL);
+
+ //
+ // Re-use PerformQuickSort() function Implementation in EDKII BaseSortLib.
+ //
+ QuickSortWorker (base, (UINTN)num, (UINTN)width, (SORT_COMPARE)compare, Buffer);
+
+ free (Buffer);
+ return;
+}
+
+/**
+ Get character from stream, we don't support file operastion on edk2 JSON library.
+
+ @return Returns the character currently pointed by the internal file position indicator of the specified stream
+
+**/
+int fgetc(FILE * _File){
+ return 0;
+}
diff --git a/MdeModulePkg/Library/JsonLib/JanssonCrtLibSupport.h b/MdeModulePkg/Library/JsonLib/JanssonCrtLibSupport.h
new file mode 100644
index 0000000000..f17ee6397f
--- /dev/null
+++ b/MdeModulePkg/Library/JsonLib/JanssonCrtLibSupport.h
@@ -0,0 +1,198 @@
+/** @file
+ CRT wrapper head functions for jansson system call.
+
+ Copyright (c) 2019, Intel Corporation. All rights reserved.<BR>
+ (C) Copyright 2020 Hewlett Packard Enterprise Development LP<BR>
+
+ SPDX-License-Identifier: BSD-2-Clause-Patent
+
+**/
+
+#ifndef JANSSON_CRT_LIB_SUPPORT_H_
+#define JANSSON_CRT_LIB_SUPPORT_H_
+
+#include <Library/BaseLib.h>
+#include <Library/BaseMemoryLib.h>
+#include <Library/DebugLib.h>
+#include <Library/PrintLib.h>
+
+#define MAX_STRING_SIZE 0x10000000
+
+// Minimum value for an object of type long long int.
+#define LLONG_MIN (-9223372036854775807LL - 1LL) // -(2^63 - 1)
+
+// Maximum value for an object of type long long int.
+#define LLONG_MAX 9223372036854775807LL // 2^63 - 1
+
+// We dont support double on edk2
+#define HUGE_VAL 0
+
+#if defined(MDE_CPU_X64) || defined(MDE_CPU_AARCH64) || defined(MDE_CPU_IA64)
+//
+// With GCC we would normally use SIXTY_FOUR_BIT_LONG, but MSVC needs
+// SIXTY_FOUR_BIT, because 'long' is 32-bit and only 'long long' is
+// 64-bit. Since using 'long long' works fine on GCC too, just do that.
+//
+#define SIXTY_FOUR_BIT
+#elif defined(MDE_CPU_IA32) || defined(MDE_CPU_ARM) || defined(MDE_CPU_EBC)
+#define THIRTY_TWO_BIT
+#else
+#error Unknown target architecture
+#endif
+
+//
+// Map all va_xxxx elements to VA_xxx defined in MdePkg/Include/Base.h
+//
+#if !defined(__CC_ARM) // if va_list is not already defined
+#define va_list VA_LIST
+#define va_arg VA_ARG
+#define va_start VA_START
+#define va_end VA_END
+#else // __CC_ARM
+#define va_start(Marker, Parameter) __va_start(Marker, Parameter)
+#define va_arg(Marker, TYPE) __va_arg(Marker, TYPE)
+#define va_end(Marker) ((void)0)
+#endif
+
+//
+// Definitions for global constants used by CRT library routines
+//
+#define EINVAL 22 /* Invalid argument */
+#define INT_MAX 0x7FFFFFFF /* Maximum (signed) int value */
+#define LONG_MAX 0X7FFFFFFFL /* max value for a long */
+#define LONG_MIN (-LONG_MAX-1) /* min value for a long */
+#define ULONG_MAX 0xFFFFFFFF /* Maximum unsigned long value */
+#define CHAR_BIT 8 /* Number of bits in a char */
+
+// Maximum value for an object of type unsigned long long int.
+#define ULLONG_MAX 0xFFFFFFFFFFFFFFFFULL // 2^64 - 1
+// Maximum value for an object of type unsigned char.
+#define UCHAR_MAX 255 // 2^8 - 1
+
+//
+// Basic types mapping
+//
+typedef UINTN size_t;
+typedef INTN ssize_t;
+typedef INT32 time_t;
+typedef UINT8 __uint8_t;
+typedef UINT8 sa_family_t;
+typedef UINT32 uid_t;
+typedef UINT32 gid_t;
+typedef INT32 int32_t;
+typedef UINT32 uint32_t;
+typedef UINT16 uint16_t;
+typedef UINT8 uint8_t;
+typedef enum {false, true} bool;
+
+//
+// File operations are not required for EFI building,
+// so FILE is mapped to VOID * to pass build
+//
+typedef VOID *FILE;
+
+//
+// Global variables
+//
+extern int errno;
+extern FILE *stderr;
+
+//
+// Function prototypes of CRT Library routines
+//
+void *malloc (size_t);
+void *realloc (void *, size_t);
+void *calloc (size_t Num, size_t Size);
+void free (void *);
+void *memset (void *, int, size_t);
+int memcmp (const void *, const void *, size_t);
+int isdigit (int);
+int isspace (int);
+int tolower (int);
+int isupper (int);
+int isxdigit (int);
+int isalnum (int);
+void *memcpy (void *, const void *, size_t);
+void *memset (void *, int, size_t);
+void *memchr (const void *, int, size_t);
+int memcmp (const void *, const void *, size_t);
+void *memmove (void *, const void *, size_t);
+int strcmp (const char *, const char *);
+int strncmp (const char *, const char *, size_t);
+char *strcpy (char *, const char *);
+size_t strlen (const char *);
+char *strcat (char *, const char *);
+char *strchr (const char *, int);
+int strcasecmp (const char *, const char *);
+int strncasecmp (const char *, const char *, size_t);
+char *strncpy (char *, size_t, const char *, size_t);
+int strncmp (const char *, const char *, size_t);
+char *strrchr (const char *, int);
+unsigned long strtoul (const char *, char **, int);
+char * strstr (const char *s1 , const char *s2);
+long strtol (const char *, char **, int);
+char *strerror (int);
+size_t strspn (const char *, const char *);
+char * strdup (const char *str);
+char * strpbrk (const char *s1, const char *s2);
+unsigned long long strtoull(const char * nptr, char ** endptr, int base);
+long long strtoll (const char * nptr, char ** endptr, int base);
+long strtol (const char * nptr, char ** endptr, int base);
+double strtod (const char * __restrict nptr, char ** __restrict endptr);
+size_t strcspn (const char *, const char *);
+int printf (const char *, ...);
+int sscanf (const char *, const char *, ...);
+FILE *fopen (const char *, const char *);
+size_t fread (void *, size_t, size_t, FILE *);
+size_t fwrite (const void *, size_t, size_t, FILE *);
+int fclose (FILE *);
+int fprintf (FILE *, const char *, ...);
+int fgetc (FILE * _File);
+uid_t getuid (void);
+uid_t geteuid (void);
+gid_t getgid (void);
+gid_t getegid (void);
+void qsort (void *, size_t, size_t, int (*)(const void *, const void *));
+char *getenv (const char *);
+#if defined(__GNUC__) && (__GNUC__ >= 2)
+void abort (void) __attribute__((__noreturn__));
+#else
+void abort (void);
+#endif
+int toupper (int);
+int Digit2Val (int);
+time_t time (time_t *);
+
+//
+// Macros that directly map functions to BaseLib, BaseMemoryLib, and DebugLib functions
+//
+#define strcmp AsciiStrCmp
+#define memcpy(dest,source,count) CopyMem(dest,source,(UINTN)(count))
+#define memset(dest,ch,count) SetMem(dest,(UINTN)(count),(UINT8)(ch))
+#define memchr(buf,ch,count) ScanMem8(buf,(UINTN)(count),(UINT8)ch)
+#define memcmp(buf1,buf2,count) (int)(CompareMem(buf1,buf2,(UINTN)(count)))
+#define memmove(dest,source,count) CopyMem(dest,source,(UINTN)(count))
+#define strlen(str) (size_t)(AsciiStrnLenS(str,MAX_STRING_SIZE))
+#define strcpy(strDest,strSource) AsciiStrCpyS(strDest,(strlen(strSource)+1),strSource)
+#define strncpy(strDest,strSource,count) AsciiStrnCpyS(strDest,(UINTN)count,strSource,(UINTN)count)
+#define strncpys(strDest, DestLen, strSource,count) AsciiStrnCpyS(strDest,DestLen,strSource,(UINTN)count)
+#define strcat(strDest,strSource) AsciiStrCatS(strDest,(strlen(strSource)+strlen(strDest)+1),strSource)
+#define strchr(str,ch) ScanMem8((VOID *)(str),AsciiStrSize(str),(UINT8)ch)
+#define strncmp(string1,string2,count) (int)(AsciiStrnCmp(string1,string2,(UINTN)(count)))
+#define strcasecmp(str1,str2) (int)AsciiStriCmp(str1,str2)
+#define strstr(s1,s2) AsciiStrStr(s1,s2)
+#define sprintf(buf,...) AsciiSPrint(buf,MAX_STRING_SIZE,__VA_ARGS__)
+#define snprintf(buf,len,...) AsciiSPrint(buf,len,__VA_ARGS__)
+#define vsnprintf(buf,len,format,marker) AsciiVSPrint((buf),(len),(format),(marker))
+#define assert(expression)
+#define atoi(nptr) AsciiStrDecimalToUintn(nptr)
+#define fabs(x) (((x)<0.0)?(-x):(x))
+#define offsetof(type,member) OFFSET_OF(type,member)
+
+#define EOF (-1)
+
+extern int errno;
+
+#define ERANGE 34 /* 34 Result too large */
+
+#endif
diff --git a/MdeModulePkg/Library/JsonLib/JsonLib.c b/MdeModulePkg/Library/JsonLib/JsonLib.c
new file mode 100644
index 0000000000..8cf276c892
--- /dev/null
+++ b/MdeModulePkg/Library/JsonLib/JsonLib.c
@@ -0,0 +1,805 @@
+/** @file
+ APIs for JSON operations.
+
+ Copyright (c) 2018 - 2019, Intel Corporation. All rights reserved.<BR>
+ (C) Copyright 2020 Hewlett Packard Enterprise Development LP<BR>
+
+ SPDX-License-Identifier: BSD-2-Clause-Patent
+**/
+
+#include <Library/JsonLib.h>
+#include "JsonUtilities.h"
+
+/**
+ The function is used to convert a NULL terminated UTF8 encoded string to a JSON
+ value. Only object and array represented strings can be converted successfully,
+ since they are the only valid root values of a JSON text for UEFI usage.
+
+ Real number and number with exponent part are not supportted by UEFI.
+
+ Caller needs to cleanup the root value by calling JsonValueFree().
+
+ @param[in] Text The NULL terminated UTF8 encoded string to convert
+
+ @retval Array JSON value or object JSON value, or NULL when any error occurs.
+
+**/
+EDKII_JSON_VALUE
+EFIAPI
+TextToJson (
+ IN CHAR8* Text
+ )
+{
+ json_error_t JsonError;
+
+ return (EDKII_JSON_VALUE) json_loads (Text, 0, &JsonError);
+}
+
+/**
+ The function is used to convert the JSON root value to a UTF8 encoded string which
+ is terminated by NULL, or return NULL on error.
+
+ Only array JSON value or object JSON value is valid for converting, and caller is
+ responsible for free converted string.
+
+ @param[in] Json The JSON value to be converted
+
+ @retval The JSON value converted UTF8 string or NULL.
+
+**/
+CHAR8*
+EFIAPI
+JsonToText (
+ IN EDKII_JSON_VALUE Json
+ )
+{
+ if (!JsonValueIsArray (Json) && !JsonValueIsObject (Json)) {
+ return NULL;
+ }
+
+ return json_dumps ((json_t *) Json, 0);
+}
+
+/**
+ The function is used to initialize a JSON value which contains a new JSON array,
+ or NULL on error. Initially, the array is empty.
+
+ The reference count of this value will be set to 1, and caller needs to cleanup the
+ value by calling JsonValueFree().
+
+ More details for reference count strategy can refer to the API description for JsonValueFree().
+
+ @retval The created JSON value which contains a JSON array or NULL.
+
+**/
+EDKII_JSON_VALUE
+EFIAPI
+JsonValueInitArray (
+ VOID
+ )
+{
+ return (EDKII_JSON_VALUE) json_array();
+}
+
+/**
+ The function is used to initialize a JSON value which contains a new JSON object,
+ or NULL on error. Initially, the object is empty.
+
+ The reference count of this value will be set to 1, and caller needs to cleanup the
+ value by calling JsonValueFree().
+
+ More details for reference count strategy can refer to the API description for JsonValueFree().
+
+ @retval The created JSON value which contains a JSON object or NULL.
+
+**/
+EDKII_JSON_VALUE
+EFIAPI
+JsonValueInitObject (
+ VOID
+ )
+{
+ return (EDKII_JSON_VALUE) json_object();
+}
+
+/**
+ The function is used to initialize a JSON value which contains a new JSON string,
+ or NULL on error.
+
+ The input string must be NULL terminated Ascii format, non-Ascii characters will
+ be processed as an error. Unicode characters can also be represented by Ascii string
+ as the format: \u + 4 hexadecimal digits, like \u3E5A, or \u003F.
+
+ The reference count of this value will be set to 1, and caller needs to cleanup the
+ value by calling JsonValueFree().
+
+ More details for reference count strategy can refer to the API description for JsonValueFree().
+
+ @param[in] String The Ascii string to initialize to JSON value
+
+ @retval The created JSON value which contains a JSON string or NULL. Select a
+ Getter API for a specific encoding format.
+
+**/
+EDKII_JSON_VALUE
+EFIAPI
+JsonValueInitAsciiString (
+ IN CHAR8 *String
+ )
+{
+ UINTN Index;
+
+ if (String == NULL) {
+ return NULL;
+ }
+
+ Index = 0;
+ while (*(String + Index) != '\0') {
+ if (((*(String + Index)) & 0x80) != 0x00) {
+ return NULL;
+ }
+
+ Index ++;
+ }
+
+ return (EDKII_JSON_VALUE) json_string (String);
+}
+
+/**
+ The function is used to initialize a JSON value which contains a new JSON string,
+ or NULL on error.
+
+ The input must be a NULL terminated UCS2 format Unicode string.
+
+ The reference count of this value will be set to 1, and caller needs to cleanup the
+ value by calling JsonValueFree().
+
+ More details for reference count strategy can refer to the API description for JsonValueFree().
+
+ @param[in] String The Unicode string to initialize to JSON value
+
+ @retval The created JSON value which contains a JSON string or NULL. Select a
+ Getter API for a specific encoding format.
+
+**/
+EDKII_JSON_VALUE
+EFIAPI
+JsonValueInitUnicodeString (
+ IN CHAR16 *String
+ )
+{
+ EFI_STATUS Status;
+ CHAR8 *Utf8Str;
+
+ if (String == NULL) {
+ return NULL;
+ }
+
+ Utf8Str = NULL;
+ Status = UCS2StrToUTF8 (String, &Utf8Str);
+ if (EFI_ERROR (Status)) {
+ return NULL;
+ }
+
+ return (EDKII_JSON_VALUE) json_string (Utf8Str);
+}
+
+/**
+ The function is used to initialize a JSON value which contains a new JSON integer,
+ or NULL on error.
+
+ The reference count of this value will be set to 1, and caller needs to cleanup the
+ value by calling JsonValueFree().
+
+ More details for reference count strategy can refer to the API description for JsonValueFree().
+
+ @param[in] Value The integer to initialize to JSON value
+
+ @retval The created JSON value which contains a JSON number or NULL.
+
+**/
+EDKII_JSON_VALUE
+EFIAPI
+JsonValueInitNumber (
+ IN INT64 Value
+ )
+{
+ return (EDKII_JSON_VALUE) json_integer (Value);
+}
+
+/**
+ The function is used to initialize a JSON value which contains a new JSON boolean,
+ or NULL on error.
+
+ Boolean JSON value is kept as static value, and no need to do any cleanup work.
+
+ @param[in] Value The boolean value to initialize.
+
+ @retval The created JSON value which contains a JSON boolean or NULL.
+
+**/
+EDKII_JSON_VALUE
+EFIAPI
+JsonValueInitBoolean (
+ IN BOOLEAN Value
+ )
+{
+ return (EDKII_JSON_VALUE) json_boolean (Value);
+}
+
+/**
+ The function is used to initialize a JSON value which contains a new JSON NULL,
+ or NULL on error.
+
+ NULL JSON value is kept as static value, and no need to do any cleanup work.
+
+ @retval The created NULL JSON value.
+
+**/
+EDKII_JSON_VALUE
+EFIAPI
+JsonValueInitNull (
+ VOID
+ )
+{
+ return (EDKII_JSON_VALUE) json_null();
+}
+
+/**
+ The function is used to decrease the reference count of a JSON value by one, and once
+ this reference count drops to zero, the value is destroyed and it can no longer be used.
+ If this destroyed value is object type or array type, reference counts for all containing
+ JSON values will be decreased by 1. Boolean JSON value and NULL JSON value won't be destroyed
+ since they are static values kept in memory.
+
+ Reference Count Strategy: BaseJsonLib uses this strategy to track whether a value is still
+ in use or not. When a value is created, it’s reference count is set to 1. If a reference
+ to a value is kept for use, its reference count is incremented, and when the value is no
+ longer needed, the reference count is decremented. When the reference count drops to zero,
+ there are no references left, and the value can be destroyed.
+
+ The given JSON value maybe NULL and not causing any problem. Just output the debug message
+ to inform caller the NULL value is passed in.
+
+ @param[in] Json The JSON value to be freed. json_decref may return without any
+ changes if Json is NULL.
+
+**/
+VOID
+EFIAPI
+JsonValueFree (
+ IN EDKII_JSON_VALUE Json
+ )
+{
+ json_decref((json_t *)Json);
+}
+
+/**
+ The function is used to create a fresh copy of a JSON value, and all child values are deep
+ copied in a recursive fashion. It should be called when this JSON value might be modified
+ in later use, but the original still wants to be used in somewhere else.
+
+ Reference counts of the returned root JSON value and all child values will be set to 1, and
+ caller needs to cleanup the root value by calling JsonValueFree().
+
+ * Note: Since this function performs a copy from bottom to up, too many calls may cause some
+ performance issues, user should avoid unnecessary calls to this function unless it is really
+ needed.
+
+ @param[in] Json The JSON value to be cloned.
+
+ @retval Return the cloned JSON value, or NULL on error.
+
+**/
+EDKII_JSON_VALUE
+EFIAPI
+JsonValueClone (
+ IN EDKII_JSON_VALUE Json
+ )
+{
+ return (EDKII_JSON_VALUE) json_deep_copy ((json_t *) Json);
+}
+
+/**
+ The function is used to return if the provided JSON value contains a JSON array.
+
+ @param[in] Json The provided JSON value.
+
+ @retval TRUE The JSON value contains a JSON array.
+ @retval FALSE The JSON value doesn't contain a JSON array.
+
+**/
+BOOLEAN
+EFIAPI
+JsonValueIsArray (
+ IN EDKII_JSON_VALUE Json
+ )
+{
+ return json_is_array ((json_t *) Json);
+}
+
+/**
+ The function is used to return if the provided JSON value contains a JSON object.
+
+ @param[in] Json The provided JSON value.
+
+ @retval TRUE The JSON value contains a JSON object.
+ @retval FALSE The JSON value doesn't contain a JSON object.
+
+**/
+BOOLEAN
+EFIAPI
+JsonValueIsObject (
+ IN EDKII_JSON_VALUE Json
+ )
+{
+ return json_is_object ((json_t *) Json);
+}
+
+/**
+ The function is used to return if the provided JSON Value contains a string, Ascii or
+ Unicode format is not differentiated.
+
+ @param[in] Json The provided JSON value.
+
+ @retval TRUE The JSON value contains a JSON string.
+ @retval FALSE The JSON value doesn't contain a JSON string.
+
+**/
+BOOLEAN
+EFIAPI
+JsonValueIsString (
+ IN EDKII_JSON_VALUE Json
+ )
+{
+ return json_is_string ((json_t *) Json);
+}
+
+/**
+ The function is used to return if the provided JSON value contains a JSON number.
+
+ @param[in] Json The provided JSON value.
+
+ @retval TRUE The JSON value is contains JSON number.
+ @retval FALSE The JSON value doesn't contain a JSON number.
+
+**/
+BOOLEAN
+EFIAPI
+JsonValueIsNumber (
+ IN EDKII_JSON_VALUE Json
+ )
+{
+ return json_is_integer ((json_t *) Json);
+}
+
+/**
+ The function is used to return if the provided JSON value contains a JSON boolean.
+
+ @param[in] Json The provided JSON value.
+
+ @retval TRUE The JSON value contains a JSON boolean.
+ @retval FALSE The JSON value doesn't contain a JSON boolean.
+
+**/
+BOOLEAN
+EFIAPI
+JsonValueIsBoolean (
+ IN EDKII_JSON_VALUE Json
+ )
+{
+ return json_is_boolean ((json_t *) Json);
+}
+
+/**
+ The function is used to return if the provided JSON value contains a JSON NULL.
+
+ @param[in] Json The provided JSON value.
+
+ @retval TRUE The JSON value contains a JSON NULL.
+ @retval FALSE The JSON value doesn't contain a JSON NULL.
+
+**/
+BOOLEAN
+EFIAPI
+JsonValueIsNull (
+ IN EDKII_JSON_VALUE Json
+ )
+{
+ return json_is_null ((json_t *) Json);
+}
+
+/**
+ The function is used to retrieve the associated array in an array type JSON value.
+
+ Any changes to the returned array will impact the original JSON value.
+
+ @param[in] Json The provided JSON value.
+
+ @retval Return the associated array in JSON value or NULL.
+
+**/
+EDKII_JSON_ARRAY
+EFIAPI
+JsonValueGetArray (
+ IN EDKII_JSON_VALUE Json
+ )
+{
+ if (Json == NULL || !JsonValueIsArray (Json)) {
+ return NULL;
+ }
+
+ return (EDKII_JSON_ARRAY) Json;
+}
+
+/**
+ The function is used to retrieve the associated object in an object type JSON value.
+
+ Any changes to the returned object will impact the original JSON value.
+
+ @param[in] Json The provided JSON value.
+
+ @retval Return the associated object in JSON value or NULL.
+
+**/
+EDKII_JSON_OBJECT
+EFIAPI
+JsonValueGetObject (
+ IN EDKII_JSON_VALUE Json
+ )
+{
+ if (Json == NULL || !JsonValueIsObject (Json)) {
+ return NULL;
+ }
+
+ return (EDKII_JSON_OBJECT) Json;
+}
+
+/**
+ The function is used to retrieve the associated Ascii string in a string type JSON value.
+
+ Any changes to the returned string will impact the original JSON value.
+
+ @param[in] Json The provided JSON value.
+
+ @retval Return the associated Ascii string in JSON value or NULL.
+
+**/
+CHAR8*
+EFIAPI
+JsonValueGetAsciiString (
+ IN EDKII_JSON_VALUE Json
+ )
+{
+ CHAR8 *AsciiStr;
+ UINTN Index;
+
+ AsciiStr = json_string_value ((json_t *) Json);
+ if (AsciiStr == NULL) {
+ return NULL;
+ }
+
+ Index = 0;
+ while (*(AsciiStr + Index) != '\0') {
+ if (((*(AsciiStr + Index)) & 0x80) != 0x00) {
+ return NULL;
+ }
+
+ Index ++;
+ }
+
+ return AsciiStr;
+}
+
+/**
+ The function is used to retrieve the associated Unicode string in a string type JSON value.
+
+ Caller can do any changes to the returned string without any impact to the original JSON
+ value, and caller needs to free the returned string.
+
+ @param[in] Json The provided JSON value.
+
+ @retval Return the associated Unicode string in JSON value or NULL.
+
+**/
+CHAR16*
+EFIAPI
+JsonValueGetUnicodeString (
+ IN EDKII_JSON_VALUE Json
+ )
+{
+ EFI_STATUS Status;
+ CONST CHAR8 *Utf8Str;
+ CHAR16 *Ucs2Str;
+
+ Utf8Str = json_string_value ((json_t *) Json);
+ if (Utf8Str == NULL) {
+ return NULL;
+ }
+
+ Status = UTF8StrToUCS2 (Utf8Str, &Ucs2Str);
+ if (EFI_ERROR (Status)) {
+ return NULL;
+ }
+
+ return Ucs2Str;
+}
+
+/**
+ The function is used to retrieve the associated integer in a number type JSON value.
+
+ The input JSON value should not be NULL or contain no JSON number, otherwise it will
+ ASSERT() and return 0.
+
+ @param[in] Json The provided JSON value.
+
+ @retval Return the associated number in JSON value.
+
+**/
+INT64
+EFIAPI
+JsonValueGetNumber (
+ IN EDKII_JSON_VALUE Json
+ )
+{
+ ASSERT (Json != NULL && JsonValueIsNumber (Json));
+ if (Json == NULL || !JsonValueIsNumber (Json)) {
+ return 0;
+ }
+
+ return json_integer_value ((json_t *) Json);
+}
+
+/**
+ The function is used to retrieve the associated boolean in a boolean type JSON value.
+
+ The input JSON value should not be NULL or contain no JSON boolean, otherwise it will
+ ASSERT() and return FALSE.
+
+ @param[in] Json The provided JSON value.
+
+ @retval Return the associated value of JSON boolean.
+
+**/
+BOOLEAN
+EFIAPI
+JsonValueGetBoolean (
+ IN EDKII_JSON_VALUE Json
+ )
+{
+ ASSERT (Json != NULL && JsonValueIsBoolean (Json));
+ if (Json == NULL || !JsonValueIsBoolean (Json)) {
+ return FALSE;
+ }
+
+ return json_is_true ((json_t *) Json);
+}
+
+/**
+ The function is used to get the number of elements in a JSON object, or 0 if it is NULL or
+ not a JSON object.
+
+ @param[in] JsonObject The provided JSON object.
+
+ @retval Return the number of elements in this JSON object or 0.
+
+**/
+UINTN
+EFIAPI
+JsonObjectSize (
+ IN EDKII_JSON_OBJECT JsonObject
+ )
+{
+ return json_object_size ((json_t *) JsonObject);
+}
+
+/**
+ The function is used to enumerate all keys in a JSON object.
+
+ Caller should be responsible to free the returned key array refference. But contained keys
+ are read only and must not be modified or freed.
+
+ @param[in] JsonObj The provided JSON object for enumeration.
+ @param[out] KeyCount The count of keys in this JSON object.
+
+ @retval Return an array of the enumerated keys in this JSON object or NULL.
+
+**/
+CHAR8**
+JsonObjectGetKeys (
+ IN EDKII_JSON_OBJECT JsonObj,
+ OUT UINTN *KeyCount
+ )
+{
+
+ UINTN Index;
+ CONST CHAR8 **KeyArray;
+ CONST CHAR8 *Key;
+ EDKII_JSON_VALUE Value;
+
+ if (JsonObj == NULL || KeyCount == NULL) {
+ return NULL;
+ }
+
+ Index = 0;
+ json_object_foreach(JsonObj, Key, Value) {
+ Index ++;
+ }
+ if (Index == 0) {
+ *KeyCount = 0;
+ return NULL;
+ }
+
+ *KeyCount = Index;
+ KeyArray = (CHAR8 **) AllocateZeroPool (*KeyCount * sizeof (CHAR8 *));
+ if (KeyArray == NULL) {
+ return NULL;
+ }
+
+ Key = NULL;
+ Value = NULL;
+ Index = 0;
+ json_object_foreach((json_t *) JsonObj, Key, Value) {
+ KeyArray[Index] = Key;
+ Index ++;
+ }
+
+ return KeyArray;
+}
+
+/**
+ The function is used to get a JSON value corresponding to the input key from a JSON object.
+
+ It only returns a reference to this value and any changes on this value will impact the
+ original JSON object. If that is not expected, please call JsonValueClone() to clone it to
+ use.
+
+ Input key must be a valid NULL terminated UTF8 encoded string. NULL will be returned when
+ Key-Value is not found in this JSON object.
+
+ @param[in] JsonObj The provided JSON object.
+ @param[in] Key The key of the JSON value to be retrieved.
+
+ @retval Return the corresponding JSON value to key, or NULL on error.
+
+**/
+EDKII_JSON_VALUE
+EFIAPI
+JsonObjectGetValue (
+ IN EDKII_JSON_OBJECT JsonObj,
+ IN CHAR8 *Key
+ )
+{
+ return (EDKII_JSON_VALUE) json_object_get ((json_t *) JsonObj, Key);
+}
+
+/**
+ The function is used to set a JSON value corresponding to the input key from a JSON object,
+ and the reference count of this value will be increased by 1.
+
+ Input key must be a valid NULL terminated UTF8 encoded string. If there already is a value for
+ this key, this key will be assigned to the new JSON value. The old JSON value will be removed
+ from this object and thus its' reference count will be decreased by 1.
+
+ More details for reference count strategy can refer to the API description for JsonValueFree().
+
+ @param[in] JsonObj The provided JSON object.
+ @param[in] Key The key of the JSON value to be set.
+ @param[in] Json The JSON value to set to this JSON object mapped by key.
+
+ @retval EFI_ABORTED Some error occur and operation aborted.
+ @retval EFI_SUCCESS The JSON value has been set to this JSON object.
+
+**/
+EFI_STATUS
+EFIAPI
+JsonObjectSetValue (
+ IN EDKII_JSON_OBJECT JsonObj,
+ IN CHAR8 *Key,
+ IN EDKII_JSON_VALUE Json
+ )
+{
+ if (json_object_set ((json_t *) JsonObj, Key, (json_t *) Json) != 0) {
+ return EFI_ABORTED;
+ } else {
+ return EFI_SUCCESS;
+ }
+}
+
+/**
+ The function is used to get the number of elements in a JSON array, or 0 if it is NULL or
+ not a JSON array.
+
+ @param[in] JsonArray The provided JSON array.
+
+ @retval Return the number of elements in this JSON array or 0.
+
+**/
+UINTN
+EFIAPI
+JsonArrayCount (
+ IN EDKII_JSON_ARRAY JsonArray
+ )
+{
+ return json_array_size ((json_t *) JsonArray);
+}
+
+/**
+ The function is used to return the JSON value in the array at position index. The valid range
+ for this index is from 0 to the return value of JsonArrayCount() minus 1.
+
+ It only returns a reference to this value and any changes on this value will impact the
+ original JSON object. If that is not expected, please call JsonValueClone() to clone it to
+ use.
+
+ If this array is NULL or not a JSON array, or if index is out of range, NULL will be returned.
+
+ @param[in] JsonArray The provided JSON Array.
+
+ @retval Return the JSON value located in the Index position or NULL.
+
+**/
+EDKII_JSON_VALUE
+EFIAPI
+JsonArrayGetValue (
+ IN EDKII_JSON_ARRAY JsonArray,
+ IN UINTN Index
+ )
+{
+ return (EDKII_JSON_VALUE) json_array_get ((json_t *) JsonArray, Index);
+}
+
+/**
+ The function is used to append a JSON value to the end of the JSON array, and grow the size of
+ array by 1. The reference count of this value will be increased by 1.
+
+ More details for reference count strategy can refer to the API description for JsonValueFree().
+
+ @param[in] JsonArray The provided JSON object.
+ @param[in] Json The JSON value to append.
+
+ @retval EFI_ABORTED Some error occur and operation aborted.
+ @retval EFI_SUCCESS JSON value has been appended to the end of the JSON array.
+
+**/
+EFI_STATUS
+EFIAPI
+JsonArrayAppendValue (
+ IN EDKII_JSON_ARRAY JsonArray,
+ IN EDKII_JSON_VALUE Json
+ )
+{
+ if (json_array_append ((json_t *) JsonArray, (json_t *) Json) != 0) {
+ return EFI_ABORTED;
+ } else {
+ return EFI_SUCCESS;
+ }
+}
+
+/**
+ The function is used to remove a JSON value at position index, shifting the elements after index
+ one position towards the start of the array. The reference count of this value will be decreased
+ by 1.
+
+ More details for reference count strategy can refer to the API description for JsonValueFree().
+
+ @param[in] JsonArray The provided JSON array.
+ @param[in] Index The Index position before removement.
+
+ @retval EFI_ABORTED Some error occur and operation aborted.
+ @retval EFI_SUCCESS The JSON array has been removed at position index.
+
+**/
+EFI_STATUS
+EFIAPI
+JsonArrayRemoveValue (
+ IN EDKII_JSON_ARRAY JsonArray,
+ IN UINTN Index
+ )
+{
+ if (json_array_remove ((json_t *) JsonArray, Index) != 0) {
+ return EFI_ABORTED;
+ } else {
+ return EFI_SUCCESS;
+ }
+}
diff --git a/MdeModulePkg/Library/JsonLib/JsonLib.inf b/MdeModulePkg/Library/JsonLib/JsonLib.inf
new file mode 100644
index 0000000000..d411a2ae86
--- /dev/null
+++ b/MdeModulePkg/Library/JsonLib/JsonLib.inf
@@ -0,0 +1,81 @@
+## @file
+# Thirty party Jansson library for JSON operations.
+#
+# Copyright (c) 2019, Intel Corporation. All rights reserved.<BR>
+# (C) Copyright 2020 Hewlett Packard Enterprise Development LP<BR>
+#
+# SPDX-License-Identifier: BSD-2-Clause-Patent
+#
+##
+
+[Defines]
+ INF_VERSION = 0x0001001b
+ BASE_NAME = JanssonLib
+ FILE_GUID = F5E36815-305A-4C5A-9D75-4F2149E45255
+ MODULE_TYPE = UEFI_DRIVER
+ VERSION_STRING = 1.0
+ LIBRARY_CLASS = JanssonLib | DXE_DRIVER DXE_RUNTIME_DRIVER UEFI_APPLICATION UEFI_DRIVER
+
+#
+# VALID_ARCHITECTURES = IA32 X64 IPF EBC
+#
+
+[Sources]
+ #
+ # Below are the source code of third
+ # party jansson library.
+ #
+ jansson/src/dump.c
+ jansson/src/error.c
+ jansson/src/hashtable.c
+ jansson/src/hashtable_seed.c
+ jansson/src/load.c
+ jansson/src/memory.c
+ jansson/src/pack_unpack.c
+ jansson/src/strbuffer.c
+ jansson/src/strconv.c
+ jansson/src/utf.c
+ jansson/src/value.c
+ jansson/src/version.c
+ #
+ # Below are the source of edk2 JsonLib.
+ #
+ JsonLib.c
+ JsonUtilities.c
+ JsonUtilities.h
+ JanssonCrtLibSupport.c
+ JanssonCrtLibSupport.h
+ jansson_config.h
+ jansson_private_config.h
+
+[Packages]
+ MdePkg/MdePkg.dec
+ MdeModulePkg/MdeModulePkg.dec
+
+[LibraryClasses]
+ UefiLib
+ BaseLib
+ BaseMemoryLib
+ MemoryAllocationLib
+ UefiRuntimeServicesTableLib
+ DebugLib
+ PrintLib
+
+[BuildOptions]
+ #
+ # Disables the following Visual Studio compiler warnings
+ # so we do not break the build with /WX option:
+ # C4090: 'function' : different 'const' qualifiers
+ # C4244: conversion from type1 to type2, possible loss of data
+ # C4702: unreachable code
+ # C4706: assignment within conditional expression
+ # C4456: declaration hides previous local declaration
+ # C4334: 32-bit shift implicitly converted to 64-bit
+ # C4204: nonstandard extension used: non-constant aggregate initializer
+ # C4267: 'var' : conversion from 'size_t' to 'type', possible loss of data
+ #
+ # Define macro HAVE_CONFIG_H to include jansson_private_config.h to build.
+ # Undefined _WIN32 macro
+ #
+ MSFT:*_*_*_CC_FLAGS = /wd4204 /wd4267 /wd4702 /wd4706 /wd4244 /wd4090 /wd4456 /wd4334 /DHAVE_CONFIG_H=1 /U_WIN32 /UWIN64 /U_MSC_VER
+
diff --git a/MdeModulePkg/Library/JsonLib/JsonUtilities.c b/MdeModulePkg/Library/JsonLib/JsonUtilities.c
new file mode 100644
index 0000000000..f84a133219
--- /dev/null
+++ b/MdeModulePkg/Library/JsonLib/JsonUtilities.c
@@ -0,0 +1,417 @@
+/** @file
+ Utility functions for JSON operations.
+
+ Copyright (c) 2018 - 2019, Intel Corporation. All rights reserved.<BR>
+ (C) Copyright 2020 Hewlett Packard Enterprise Development LP<BR>
+
+ SPDX-License-Identifier: BSD-2-Clause-Patent
+
+**/
+
+#include "JsonUtilities.h"
+
+/**
+ Since each UCS2 character can be represented by 1-3 UTF8 encoded characters,
+ this function is used to retrieve the UTF8 encoding size for a UCS2 character.
+
+ @param[in] Utf8Buffer The buffer for UTF8 encoded data.
+
+ @retval Return the size of UTF8 encoding string or 0 if it is not for
+ UCS2 format.
+
+**/
+UINT8
+GetUTF8SizeForUCS2 (
+ IN CHAR8 *Utf8Buffer
+ )
+{
+ CHAR8 TempChar;
+ UINT8 Utf8Size;
+
+ ASSERT (Utf8Buffer != NULL);
+
+ TempChar = *Utf8Buffer;
+ if ((TempChar & 0xF0) == 0xF0) {
+
+ //
+ // This format is not for UCS2.
+ //
+ return 0;
+ }
+
+ Utf8Size = 1;
+ if ((TempChar & 0x80) == 0x80) {
+ if ((TempChar & 0xC0) == 0xC0) {
+
+ Utf8Size ++;
+ if ((TempChar & 0xE0) == 0xE0) {
+
+ Utf8Size ++;
+ }
+ }
+ }
+
+ return Utf8Size;
+}
+
+/**
+ Since each UCS2 character can be represented by the format: \uXXXX, this function
+ is used to retrieve the UCS2 character from a Unicode format.
+ Call MUST make sure there are at least 6 Bytes in the input UTF8 buffer.
+
+ @param[in] Utf8Buffer The buffer for UTF8 encoded data.
+ @param[out] Ucs2Char The converted UCS2 character.
+
+ @retval EFI_INVALID_PARAMETER Non-Ascii characters found in the hexadecimal
+ digits string, and can't be converted to a UCS2
+ character.
+ @retval EFI_SUCCESS The UCS2 character has been retrieved.
+
+**/
+EFI_STATUS
+GetUCS2CharByFormat (
+ IN CHAR8 *Utf8Buffer,
+ OUT CHAR16 *Ucs2Char
+ )
+{
+ UINT8 Num1;
+ UINT8 Num2;
+ UINT8 Index;
+ CHAR8 Ucs2CharFormat[JSON_UNICODE_FORMAT_CHAR_SIZE]; /// two Hexadecimal digits Ascii string, like "3F"
+
+ for (Index = 0; Index < 4; Index ++) {
+ if ((*(Utf8Buffer + 2 + Index) & 0x80) != 0x00) {
+ return EFI_INVALID_PARAMETER;
+ }
+ }
+
+ ZeroMem (Ucs2CharFormat, JSON_UNICODE_FORMAT_CHAR_SIZE);
+
+ //
+ // Get the First Number, Offset is 2
+ //
+ CopyMem (Ucs2CharFormat, Utf8Buffer + 2, JSON_UNICODE_FORMAT_CHAR_LEN);
+ Num1 = (UINT8) AsciiStrHexToUintn (Ucs2CharFormat);
+
+ //
+ // Get the Second Number, Offset is 4
+ //
+ CopyMem (Ucs2CharFormat, Utf8Buffer + 4, JSON_UNICODE_FORMAT_CHAR_LEN);
+ Num2 = (UINT8) AsciiStrHexToUintn (Ucs2CharFormat);
+
+ //
+ // Ucs2Char is Little-Endian
+ //
+ *((CHAR8 *) Ucs2Char) = Num2;
+ *(((CHAR8 *) Ucs2Char) + 1) = Num1;
+
+ return EFI_SUCCESS;
+}
+
+/**
+ Convert a UCS2 character to UTF8 encoding string.
+
+ @param[in] Ucs2Char The provided UCS2 character.
+ @param[out] Utf8Buffer The converted UTF8 encoded data.
+
+ @retval Return the size of UTF8 encoding data for this UCS2 character.
+
+**/
+UINT8
+UCS2CharToUTF8 (
+ IN CHAR16 Ucs2Char,
+ OUT CHAR8 *Utf8Buffer
+ )
+{
+ UINT16 Ucs2Number;
+
+ ASSERT (Utf8Buffer != NULL);
+
+ Ucs2Number = (UINT16) Ucs2Char;
+ if (Ucs2Number <= 0x007F) {
+
+ //
+ // UTF8 format: 0xxxxxxx
+ //
+ *Utf8Buffer = Ucs2Char & 0x7F;
+ return 1;
+
+ } else if (Ucs2Number >= 0x0080 && Ucs2Number <= 0x07FF) {
+
+ //
+ // UTF8 format: 110xxxxx 10xxxxxx
+ //
+ *(Utf8Buffer + 1) = (Ucs2Char & 0x3F) | 0x80;
+ *Utf8Buffer = ((Ucs2Char >> 6) & 0x1F) | 0xC0;
+ return 2;
+
+ } else { /// Ucs2Number >= 0x0800 && Ucs2Number <= 0xFFFF
+
+ //
+ // UTF8 format: 1110xxxx 10xxxxxx 10xxxxxx
+ //
+ *(Utf8Buffer + 2) = (Ucs2Char & 0x3F) | 0x80;
+ *(Utf8Buffer + 1) = ((Ucs2Char >> 6) & 0x3F) | 0x80;
+ *Utf8Buffer = ((Ucs2Char >> 12) & 0x0F) | 0xE0;
+ return 3;
+ }
+}
+
+/**
+ Convert a UTF8 encoded data to a UCS2 character.
+
+ @param[in] Utf8Buffer The provided UTF8 encoded data.
+ @param[out] Ucs2Char The converted UCS2 character.
+
+ @retval EFI_INVALID_PARAMETER The UTF8 encoded string is not valid or
+ not for UCS2 character.
+ @retval EFI_SUCCESS The converted UCS2 character.
+
+**/
+EFI_STATUS
+UTF8ToUCS2Char (
+ IN CHAR8 *Utf8Buffer,
+ OUT CHAR16 *Ucs2Char
+ )
+{
+ UINT8 Utf8Size;
+ CHAR8 *Ucs2Buffer;
+ CHAR8 TempChar1;
+ CHAR8 TempChar2;
+ CHAR8 TempChar3;
+
+ ASSERT (Utf8Buffer != NULL && Ucs2Char != NULL);
+ ZeroMem (Ucs2Char, sizeof (CHAR16));
+ Ucs2Buffer = (CHAR8 *) Ucs2Char;
+
+ Utf8Size = GetUTF8SizeForUCS2 (Utf8Buffer);
+ switch (Utf8Size) {
+
+ case 1:
+
+ //
+ // UTF8 format: 0xxxxxxx
+ //
+ TempChar1 = *Utf8Buffer;
+ if ((TempChar1 & 0x80) != 0x00) {
+ return EFI_INVALID_PARAMETER;
+ }
+
+ *Ucs2Buffer = TempChar1;
+ *(Ucs2Buffer + 1) = 0;
+ break;
+
+ case 2:
+
+ //
+ // UTF8 format: 110xxxxx 10xxxxxx
+ //
+ TempChar1 = *Utf8Buffer;
+ if ((TempChar1 & 0xE0) != 0xC0) {
+ return EFI_INVALID_PARAMETER;
+ }
+
+ TempChar2 = *(Utf8Buffer + 1);
+ if ((TempChar2 & 0xC0) != 0x80) {
+ return EFI_INVALID_PARAMETER;
+ }
+
+ *Ucs2Buffer = (TempChar1 << 6) + (TempChar2 & 0x3F);
+ *(Ucs2Buffer + 1) = (TempChar1 >> 2) & 0x07;
+ break;
+
+ case 3:
+
+ //
+ // UTF8 format: 1110xxxx 10xxxxxx 10xxxxxx
+ //
+ TempChar1 = *Utf8Buffer;
+ if ((TempChar1 & 0xF0) != 0xE0) {
+ return EFI_INVALID_PARAMETER;
+ }
+
+ TempChar2 = *(Utf8Buffer + 1);
+ if ((TempChar2 & 0xC0) != 0x80) {
+ return EFI_INVALID_PARAMETER;
+ }
+
+ TempChar3 = *(Utf8Buffer + 2);
+ if ((TempChar3 & 0xC0) != 0x80) {
+ return EFI_INVALID_PARAMETER;
+ }
+
+ *Ucs2Buffer = (TempChar2 << 6) + (TempChar3 & 0x3F);
+ *(Ucs2Buffer + 1) = (TempChar1 << 4) + ((TempChar2 >> 2) & 0x0F);
+
+ break;
+
+ default:
+
+ return EFI_INVALID_PARAMETER;
+ }
+
+ return EFI_SUCCESS;
+}
+
+/**
+ Convert a UCS2 string to a UTF8 encoded string.
+
+ @param[in] Ucs2Str The provided UCS2 string.
+ @param[out] Utf8StrAddr The converted UTF8 string address. Caller
+ is responsible for Free this string.
+
+ @retval EFI_INVALID_PARAMETER One or more parameters are invalid.
+ @retval EFI_OUT_OF_RESOURCES System runs out of resources.
+ @retval EFI_SUCCESS The UTF8 encoded string has been converted.
+
+**/
+EFI_STATUS
+UCS2StrToUTF8 (
+ IN CHAR16 *Ucs2Str,
+ OUT CHAR8 **Utf8StrAddr
+ )
+{
+ UINTN Ucs2StrIndex;
+ UINTN Ucs2StrLength;
+ CHAR8 *Utf8Str;
+ UINTN Utf8StrLength;
+ UINTN Utf8StrIndex;
+ CHAR8 Utf8Buffer[UTF8_BUFFER_FOR_UCS2_MAX_SIZE];
+ UINT8 Utf8BufferSize;
+
+ if (Ucs2Str == NULL || Utf8StrAddr == NULL) {
+ return EFI_INVALID_PARAMETER;
+ }
+
+ Ucs2StrLength = StrLen (Ucs2Str);
+ Utf8StrLength = 0;
+
+ for (Ucs2StrIndex = 0; Ucs2StrIndex < Ucs2StrLength; Ucs2StrIndex ++) {
+
+ ZeroMem (Utf8Buffer, sizeof (Utf8Buffer));
+ Utf8BufferSize = UCS2CharToUTF8 (Ucs2Str[Ucs2StrIndex], Utf8Buffer);
+ Utf8StrLength += Utf8BufferSize;
+ }
+
+ Utf8Str = AllocateZeroPool (Utf8StrLength + 1);
+ if (Utf8Str == NULL) {
+ return EFI_OUT_OF_RESOURCES;
+ }
+
+ Utf8StrIndex = 0;
+ for (Ucs2StrIndex = 0; Ucs2StrIndex < Ucs2StrLength; Ucs2StrIndex ++) {
+
+ ZeroMem (Utf8Buffer, sizeof (Utf8Buffer));
+ Utf8BufferSize = UCS2CharToUTF8 (Ucs2Str[Ucs2StrIndex], Utf8Buffer);
+
+ CopyMem (Utf8Str + Utf8StrIndex, Utf8Buffer, Utf8BufferSize);
+ Utf8StrIndex += Utf8BufferSize;
+ }
+
+ Utf8Str[Utf8StrIndex] = '\0';
+ *Utf8StrAddr = Utf8Str;
+
+ return EFI_SUCCESS;
+}
+
+/**
+ Convert a UTF8 encoded string to a UCS2 string.
+
+ @param[in] Utf8Str The provided UTF8 encoded string.
+ @param[out] Ucs2StrAddr The converted UCS2 string address. Caller
+ is responsible for Free this string.
+
+ @retval EFI_INVALID_PARAMETER The UTF8 encoded string is not valid to
+ convert to UCS2 string.
+ One or more parameters are invalid.
+ @retval EFI_OUT_OF_RESOURCES System runs out of resources.
+ @retval EFI_SUCCESS The UCS2 string has been converted.
+
+**/
+EFI_STATUS
+UTF8StrToUCS2 (
+ IN CHAR8 *Utf8Str,
+ OUT CHAR16 **Ucs2StrAddr
+ )
+{
+ EFI_STATUS Status;
+ UINTN Utf8StrIndex;
+ UINTN Utf8StrLength;
+ UINTN Ucs2StrIndex;
+ UINT8 Utf8BufferSize;
+ CHAR16 *Ucs2StrTemp;
+
+ if (Utf8Str == NULL || Ucs2StrAddr == NULL) {
+ return EFI_INVALID_PARAMETER;
+ }
+
+ //
+ // It is not an Ascii string, calculate string length.
+ //
+ Utf8StrLength = 0;
+ while (*(Utf8Str + Utf8StrLength) != '\0') {
+ Utf8StrLength ++;
+ }
+
+ //
+ // UCS2 string shall not be longer than the UTF8 string.
+ //
+ Ucs2StrTemp = AllocateZeroPool ((Utf8StrLength + 1) * sizeof (CHAR16));
+ if (Ucs2StrTemp == NULL) {
+ return EFI_OUT_OF_RESOURCES;
+ }
+
+ Utf8StrIndex = 0;
+ Ucs2StrIndex = 0;
+ while (Utf8Str[Utf8StrIndex] != '\0') {
+
+ if (CompareMem (Utf8Str + Utf8StrIndex, "\\u", 2) == 0 &&
+ Utf8StrLength - Utf8StrIndex >= JSON_UNICODE_FORMAT_LEN) {
+
+ Status = GetUCS2CharByFormat (Utf8Str + Utf8StrIndex, Ucs2StrTemp + Ucs2StrIndex);
+ if (!EFI_ERROR (Status)) {
+
+ Utf8StrIndex += JSON_UNICODE_FORMAT_LEN;
+ Ucs2StrIndex ++;
+ } else {
+
+ StrCpyS (Ucs2StrTemp + Ucs2StrIndex, 3, L"\\u");
+
+ Ucs2StrIndex += 2;
+ Utf8StrIndex += 2;
+ }
+ } else {
+
+ Utf8BufferSize = GetUTF8SizeForUCS2 (Utf8Str + Utf8StrIndex);
+ if (Utf8BufferSize == 0 || Utf8StrLength - Utf8StrIndex < Utf8BufferSize) {
+
+ FreePool (Ucs2StrTemp);
+ return EFI_INVALID_PARAMETER;
+ }
+
+ Status = UTF8ToUCS2Char (Utf8Str + Utf8StrIndex, Ucs2StrTemp + Ucs2StrIndex);
+ if (EFI_ERROR (Status)) {
+
+ FreePool (Ucs2StrTemp);
+ return EFI_INVALID_PARAMETER;
+ }
+
+ Ucs2StrIndex ++;
+ Utf8StrIndex += Utf8BufferSize;
+ }
+ }
+
+ *Ucs2StrAddr = AllocateZeroPool ((Ucs2StrIndex + 1) * sizeof (CHAR16));
+ if (*Ucs2StrAddr == NULL) {
+
+ FreePool (Ucs2StrTemp);
+ return EFI_OUT_OF_RESOURCES;
+ }
+
+ StrCpyS (*Ucs2StrAddr, Ucs2StrIndex + 1, Ucs2StrTemp);
+ *(*Ucs2StrAddr + Ucs2StrIndex) = L'\0';
+ FreePool (Ucs2StrTemp);
+
+ return EFI_SUCCESS;
+}
+
diff --git a/MdeModulePkg/Library/JsonLib/JsonUtilities.h b/MdeModulePkg/Library/JsonLib/JsonUtilities.h
new file mode 100644
index 0000000000..3a3bd092ab
--- /dev/null
+++ b/MdeModulePkg/Library/JsonLib/JsonUtilities.h
@@ -0,0 +1,69 @@
+/** @file
+ Utility functions for JSON operations.
+
+ Copyright (c) 2019, Intel Corporation. All rights reserved.<BR>
+ (C) Copyright 2020 Hewlett Packard Enterprise Development LP<BR>
+
+ SPDX-License-Identifier: BSD-2-Clause-Patent
+
+**/
+
+#ifndef REDFISH_JSON_UTILITIES_H_
+#define REDFISH_JSON_UTILITIES_H_
+
+#include <Base.h>
+#include <Uefi.h>
+#include <Library/BaseLib.h>
+#include <Library/BaseMemoryLib.h>
+#include <Library/DebugLib.h>
+#include <Library/PrintLib.h>
+#include <Library/MemoryAllocationLib.h>
+#include "jansson.h"
+
+#define JSON_UNICODE_FORMAT_LEN 6 /// L"\u0000"
+#define JSON_UNICODE_FORMAT_SIZE 7
+
+#define JSON_UNICODE_FORMAT_CHAR_LEN 2
+#define JSON_UNICODE_FORMAT_CHAR_SIZE 3
+
+#define UTF8_BUFFER_FOR_UCS2_MAX_SIZE 3
+
+/**
+ Convert a UCS2 string to a UTF8 encoded string.
+
+ @param[in] Ucs2Str The provided UCS2 string.
+ @param[out] Utf8StrAddr The converted UTF8 string address. Caller
+ is responsible for Free this string.
+
+ @retval EFI_INVALID_PARAMETER One or more parameters are invalid.
+ @retval EFI_OUT_OF_RESOURCES System runs out of resources.
+ @retval EFI_SUCCESS The UTF8 encoded string has been converted.
+
+**/
+EFI_STATUS
+UCS2StrToUTF8 (
+ IN CHAR16 *Ucs2Str,
+ OUT CHAR8 **Utf8StrAddr
+ );
+
+/**
+ Convert a UTF8 encoded string to a UCS2 string.
+
+ @param[in] Utf8Str The provided UTF8 encoded string.
+ @param[out] Ucs2StrAddr The converted UCS2 string address. Caller
+ is responsible for Free this string.
+
+ @retval EFI_INVALID_PARAMETER The UTF8 encoded string is not valid to
+ convert to UCS2 string.
+ One or more parameters are invalid.
+ @retval EFI_OUT_OF_RESOURCES System runs out of resources.
+ @retval EFI_SUCCESS The UCS2 string has been converted.
+
+**/
+EFI_STATUS
+UTF8StrToUCS2 (
+ IN CHAR8 *Utf8Str,
+ OUT CHAR16 **Ucs2StrAddr
+ );
+
+#endif
diff --git a/MdeModulePkg/Library/JsonLib/assert.h b/MdeModulePkg/Library/JsonLib/assert.h
new file mode 100644
index 0000000000..5bc7ccd7e5
--- /dev/null
+++ b/MdeModulePkg/Library/JsonLib/assert.h
@@ -0,0 +1,11 @@
+/** @file
+ Include file to support building the third-party jansson library.
+
+ Copyright (c) 2019, Intel Corporation. All rights reserved.<BR>
+ (C) Copyright 2020 Hewlett Packard Enterprise Development LP<BR>
+
+ SPDX-License-Identifier: BSD-2-Clause-Patent
+
+**/
+
+#include <JanssonCrtLibSupport.h>
diff --git a/MdeModulePkg/Library/JsonLib/errno.h b/MdeModulePkg/Library/JsonLib/errno.h
new file mode 100644
index 0000000000..5bc7ccd7e5
--- /dev/null
+++ b/MdeModulePkg/Library/JsonLib/errno.h
@@ -0,0 +1,11 @@
+/** @file
+ Include file to support building the third-party jansson library.
+
+ Copyright (c) 2019, Intel Corporation. All rights reserved.<BR>
+ (C) Copyright 2020 Hewlett Packard Enterprise Development LP<BR>
+
+ SPDX-License-Identifier: BSD-2-Clause-Patent
+
+**/
+
+#include <JanssonCrtLibSupport.h>
diff --git a/MdeModulePkg/Library/JsonLib/jansson_config.h b/MdeModulePkg/Library/JsonLib/jansson_config.h
new file mode 100644
index 0000000000..d445f4bc91
--- /dev/null
+++ b/MdeModulePkg/Library/JsonLib/jansson_config.h
@@ -0,0 +1,57 @@
+/*
+ * Copyright (c) 2010-2016 Petri Lehtinen <petri@digip.org>
+ *
+ * Jansson is free software; you can redistribute it and/or modify
+ * it under the terms of the MIT license. See LICENSE for details.
+ *
+ *
+ * This file specifies a part of the site-specific configuration for
+ * Jansson, namely those things that affect the public API in
+ * jansson.h.
+ *
+ * The configure script copies this file to jansson_config.h and
+ * replaces @var@ substitutions by values that fit your system. If you
+ * cannot run the configure script, you can do the value substitution
+ * by hand.
+
+ (C) Copyright 2020 Hewlett Packard Enterprise Development LP<BR>
+
+ SPDX-License-Identifier: BSD-2-Clause-Patent
+ */
+
+#ifndef JANSSON_CONFIG_H
+#define JANSSON_CONFIG_H
+
+/* If your compiler supports the inline keyword in C, JSON_INLINE is
+ defined to `inline', otherwise empty. In C++, the inline is always
+ supported. */
+#ifdef __cplusplus
+#define JSON_INLINE inline
+#else
+#define JSON_INLINE
+#endif
+
+/* If your compiler supports the `long long` type and the strtoll()
+ library function, JSON_INTEGER_IS_LONG_LONG is defined to 1,
+ otherwise to 0. */
+#define JSON_INTEGER_IS_LONG_LONG 1
+
+/* If locale.h and localeconv() are available, define to 1,
+ otherwise to 0. */
+#define JSON_HAVE_LOCALECONV 0
+
+/* If __atomic builtins are available they will be used to manage
+ reference counts of json_t. */
+#define JSON_HAVE_ATOMIC_BUILTINS 0
+
+/* If __atomic builtins are not available we try using __sync builtins
+ to manage reference counts of json_t. */
+#define JSON_HAVE_SYNC_BUILTINS 0
+
+/* Maximum recursion depth for parsing JSON input.
+ This limits the depth of e.g. array-within-array constructions. */
+#define JSON_PARSER_MAX_DEPTH 2048
+
+#define SUPPORT_JANSSON_JSON_REAL 1
+
+#endif
diff --git a/MdeModulePkg/Library/JsonLib/jansson_private_config.h b/MdeModulePkg/Library/JsonLib/jansson_private_config.h
new file mode 100644
index 0000000000..268f91ef8a
--- /dev/null
+++ b/MdeModulePkg/Library/JsonLib/jansson_private_config.h
@@ -0,0 +1,19 @@
+/** @file
+ Jansson private configurations for UEFI support.
+
+ Copyright (c) 2019, Intel Corporation. All rights reserved.<BR>
+ (C) Copyright 2020 Hewlett Packard Enterprise Development LP<BR>
+
+ SPDX-License-Identifier: BSD-2-Clause-Patent
+
+**/
+
+#ifndef JANSSON_PRIVATE_CONFIG_H_
+#define JANSSON_PRIVATE_CONFIG_H_
+
+#define HAVE_SYS_TIME_H 1
+#define HAVE_SYS_TYPES_H 1
+
+#define INITIAL_HASHTABLE_ORDER 3
+
+#endif
diff --git a/MdeModulePkg/Library/JsonLib/limits.h b/MdeModulePkg/Library/JsonLib/limits.h
new file mode 100644
index 0000000000..5bc7ccd7e5
--- /dev/null
+++ b/MdeModulePkg/Library/JsonLib/limits.h
@@ -0,0 +1,11 @@
+/** @file
+ Include file to support building the third-party jansson library.
+
+ Copyright (c) 2019, Intel Corporation. All rights reserved.<BR>
+ (C) Copyright 2020 Hewlett Packard Enterprise Development LP<BR>
+
+ SPDX-License-Identifier: BSD-2-Clause-Patent
+
+**/
+
+#include <JanssonCrtLibSupport.h>
diff --git a/MdeModulePkg/Library/JsonLib/math.h b/MdeModulePkg/Library/JsonLib/math.h
new file mode 100644
index 0000000000..5bc7ccd7e5
--- /dev/null
+++ b/MdeModulePkg/Library/JsonLib/math.h
@@ -0,0 +1,11 @@
+/** @file
+ Include file to support building the third-party jansson library.
+
+ Copyright (c) 2019, Intel Corporation. All rights reserved.<BR>
+ (C) Copyright 2020 Hewlett Packard Enterprise Development LP<BR>
+
+ SPDX-License-Identifier: BSD-2-Clause-Patent
+
+**/
+
+#include <JanssonCrtLibSupport.h>
diff --git a/MdeModulePkg/Library/JsonLib/stdarg.h b/MdeModulePkg/Library/JsonLib/stdarg.h
new file mode 100644
index 0000000000..5bc7ccd7e5
--- /dev/null
+++ b/MdeModulePkg/Library/JsonLib/stdarg.h
@@ -0,0 +1,11 @@
+/** @file
+ Include file to support building the third-party jansson library.
+
+ Copyright (c) 2019, Intel Corporation. All rights reserved.<BR>
+ (C) Copyright 2020 Hewlett Packard Enterprise Development LP<BR>
+
+ SPDX-License-Identifier: BSD-2-Clause-Patent
+
+**/
+
+#include <JanssonCrtLibSupport.h>
diff --git a/MdeModulePkg/Library/JsonLib/stddef.h b/MdeModulePkg/Library/JsonLib/stddef.h
new file mode 100644
index 0000000000..5bc7ccd7e5
--- /dev/null
+++ b/MdeModulePkg/Library/JsonLib/stddef.h
@@ -0,0 +1,11 @@
+/** @file
+ Include file to support building the third-party jansson library.
+
+ Copyright (c) 2019, Intel Corporation. All rights reserved.<BR>
+ (C) Copyright 2020 Hewlett Packard Enterprise Development LP<BR>
+
+ SPDX-License-Identifier: BSD-2-Clause-Patent
+
+**/
+
+#include <JanssonCrtLibSupport.h>
diff --git a/MdeModulePkg/Library/JsonLib/stdio.h b/MdeModulePkg/Library/JsonLib/stdio.h
new file mode 100644
index 0000000000..5bc7ccd7e5
--- /dev/null
+++ b/MdeModulePkg/Library/JsonLib/stdio.h
@@ -0,0 +1,11 @@
+/** @file
+ Include file to support building the third-party jansson library.
+
+ Copyright (c) 2019, Intel Corporation. All rights reserved.<BR>
+ (C) Copyright 2020 Hewlett Packard Enterprise Development LP<BR>
+
+ SPDX-License-Identifier: BSD-2-Clause-Patent
+
+**/
+
+#include <JanssonCrtLibSupport.h>
diff --git a/MdeModulePkg/Library/JsonLib/stdlib.h b/MdeModulePkg/Library/JsonLib/stdlib.h
new file mode 100644
index 0000000000..5bc7ccd7e5
--- /dev/null
+++ b/MdeModulePkg/Library/JsonLib/stdlib.h
@@ -0,0 +1,11 @@
+/** @file
+ Include file to support building the third-party jansson library.
+
+ Copyright (c) 2019, Intel Corporation. All rights reserved.<BR>
+ (C) Copyright 2020 Hewlett Packard Enterprise Development LP<BR>
+
+ SPDX-License-Identifier: BSD-2-Clause-Patent
+
+**/
+
+#include <JanssonCrtLibSupport.h>
diff --git a/MdeModulePkg/Library/JsonLib/string.h b/MdeModulePkg/Library/JsonLib/string.h
new file mode 100644
index 0000000000..5bc7ccd7e5
--- /dev/null
+++ b/MdeModulePkg/Library/JsonLib/string.h
@@ -0,0 +1,11 @@
+/** @file
+ Include file to support building the third-party jansson library.
+
+ Copyright (c) 2019, Intel Corporation. All rights reserved.<BR>
+ (C) Copyright 2020 Hewlett Packard Enterprise Development LP<BR>
+
+ SPDX-License-Identifier: BSD-2-Clause-Patent
+
+**/
+
+#include <JanssonCrtLibSupport.h>
diff --git a/MdeModulePkg/Library/JsonLib/sys/time.h b/MdeModulePkg/Library/JsonLib/sys/time.h
new file mode 100644
index 0000000000..5bc7ccd7e5
--- /dev/null
+++ b/MdeModulePkg/Library/JsonLib/sys/time.h
@@ -0,0 +1,11 @@
+/** @file
+ Include file to support building the third-party jansson library.
+
+ Copyright (c) 2019, Intel Corporation. All rights reserved.<BR>
+ (C) Copyright 2020 Hewlett Packard Enterprise Development LP<BR>
+
+ SPDX-License-Identifier: BSD-2-Clause-Patent
+
+**/
+
+#include <JanssonCrtLibSupport.h>
diff --git a/MdeModulePkg/Library/JsonLib/sys/types.h b/MdeModulePkg/Library/JsonLib/sys/types.h
new file mode 100644
index 0000000000..9e27294a82
--- /dev/null
+++ b/MdeModulePkg/Library/JsonLib/sys/types.h
@@ -0,0 +1,10 @@
+/** @file
+ Include file to support building the third-party jansson library.
+
+ Copyright (c) 2019, Intel Corporation. All rights reserved.<BR>
+ (C) Copyright 2020 Hewlett Packard Enterprise Development LP<BR>
+
+ SPDX-License-Identifier: BSD-2-Clause-Patent
+
+**/
+#include <JanssonCrtLibSupport.h>
diff --git a/MdeModulePkg/Library/JsonLib/time.h b/MdeModulePkg/Library/JsonLib/time.h
new file mode 100644
index 0000000000..5bc7ccd7e5
--- /dev/null
+++ b/MdeModulePkg/Library/JsonLib/time.h
@@ -0,0 +1,11 @@
+/** @file
+ Include file to support building the third-party jansson library.
+
+ Copyright (c) 2019, Intel Corporation. All rights reserved.<BR>
+ (C) Copyright 2020 Hewlett Packard Enterprise Development LP<BR>
+
+ SPDX-License-Identifier: BSD-2-Clause-Patent
+
+**/
+
+#include <JanssonCrtLibSupport.h>
--
2.17.1


[PATCH 1/3] edk2: jansson submodule of JSON library

Abner Chang
 

Add jansson git submodule

Signed-off-by: Abner Chang <abner.chang@hpe.com>

Cc: Andrew Fish <afish@apple.com>
Cc: Laszlo Ersek <lersek@redhat.com>
Cc: Leif Lindholm <leif@nuviainc.com>
Cc: Michael D Kinney <michael.d.kinney@intel.com>
Cc: Nickle Wang <nickle.wang@hpe.com>
Cc: Peter O'Hanley <peter.ohanley@hpe.com>
---
.gitmodules | 3 +++
MdeModulePkg/Library/JsonLib/jansson | 1 +
ReadMe.rst | 1 +
3 files changed, 5 insertions(+)
create mode 160000 MdeModulePkg/Library/JsonLib/jansson

diff --git a/.gitmodules b/.gitmodules
index c3a4e4aeca..77037b07b2 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -17,3 +17,6 @@
path = BaseTools/Source/C/BrotliCompress/brotli
url = https://github.com/google/brotli
ignore = untracked
+[submodule "MdeModulePkg/Library/JsonLib/jansson"]
+ path = MdeModulePkg/Library/JsonLib/jansson
+ url = https://github.com/akheron/jansson
diff --git a/MdeModulePkg/Library/JsonLib/jansson b/MdeModulePkg/Library/JsonLib/jansson
new file mode 160000
index 0000000000..e9ebfa7e77
--- /dev/null
+++ b/MdeModulePkg/Library/JsonLib/jansson
@@ -0,0 +1 @@
+Subproject commit e9ebfa7e77a6bee77df44e096b100e7131044059
diff --git a/ReadMe.rst b/ReadMe.rst
index c3c8178373..259739b5a3 100644
--- a/ReadMe.rst
+++ b/ReadMe.rst
@@ -93,6 +93,7 @@ that are covered by additional licenses.
- `MdeModulePkg/Library/BrotliCustomDecompressLib/brotli <https://github.com/google/brotli/blob/666c3280cc11dc433c303d79a83d4ffbdd12cc8d/LICENSE>`__
- `MdeModulePkg/Universal/RegularExpressionDxe/oniguruma <https://github.com/kkos/oniguruma/blob/abfc8ff81df4067f309032467785e06975678f0d/COPYING>`__
- `UnitTestFrameworkPkg/Library/CmockaLib/cmocka <https://git.cryptomilk.org/projects/cmocka.git/tree/COPYING?h=cmocka-1.1.5&id=f5e2cd77c88d9f792562888d2b70c5a396bfbf7a>`__
+- `MdeModulePkg/Library/JsonLib/jansson <https://github.com/akheron/jansson/blob/master/LICENSE>`__

The EDK II Project is composed of packages. The maintainers for each package
are listed in `Maintainers.txt <Maintainers.txt>`__.
--
2.17.1


[PATCH 0/3] JsonLib: jansson edk2 port

Abner Chang
 

This set of pactehs is sent for the comments on edk2 JSON library.
edk2 JSON library is based on jansson open source
(https://github.com/akheron/jansson) and wrapped as an edk2
library. edk2 JsonLib will be used by edk2 Redfish feature
drivers (not contributed yet) and the edk2 port of libredfish
library (not contributed yet) based on DMTF GitHub
(https://github.com/DMTF/libredfish).

You will encounterred the build error with the jansson library
pointed in submoudle (v2.13.1) and the fix is already submitted to
jansson open source
(https://github.com/akheron/jansson/pull/558).

Signed-off-by: Abner Chang <abner.chang@hpe.com>

Cc: Jian J Wang <jian.j.wang@intel.com>
Cc: Hao A Wu <hao.a.wu@intel.com>
Cc: Andrew Fish <afish@apple.com>
Cc: Laszlo Ersek <lersek@redhat.com>
Cc: Leif Lindholm <leif@nuviainc.com>
Cc: Michael D Kinney <michael.d.kinney@intel.com>
Cc: Nickle Wang <nickle.wang@hpe.com>
Cc: Peter O'Hanley <peter.ohanley@hpe.com>

Abner Chang (3):
edk2: jansson submodule of JSON library
MdeModulePkg/library: EDK2 port jansson library
MdeModulePkg: Add EDK2 port jansson library

.gitmodules | 3 +
MdeModulePkg/Include/Library/JsonLib.h | 596 +++++++++++++
.../Library/JsonLib/JanssonCrtLibSupport.c | 705 +++++++++++++++
.../Library/JsonLib/JanssonCrtLibSupport.h | 198 +++++
MdeModulePkg/Library/JsonLib/JsonLib.c | 805 ++++++++++++++++++
MdeModulePkg/Library/JsonLib/JsonLib.inf | 81 ++
MdeModulePkg/Library/JsonLib/JsonUtilities.c | 417 +++++++++
MdeModulePkg/Library/JsonLib/JsonUtilities.h | 69 ++
MdeModulePkg/Library/JsonLib/assert.h | 11 +
MdeModulePkg/Library/JsonLib/errno.h | 11 +
MdeModulePkg/Library/JsonLib/jansson | 1 +
MdeModulePkg/Library/JsonLib/jansson_config.h | 57 ++
.../Library/JsonLib/jansson_private_config.h | 19 +
MdeModulePkg/Library/JsonLib/limits.h | 11 +
MdeModulePkg/Library/JsonLib/math.h | 11 +
MdeModulePkg/Library/JsonLib/stdarg.h | 11 +
MdeModulePkg/Library/JsonLib/stddef.h | 11 +
MdeModulePkg/Library/JsonLib/stdio.h | 11 +
MdeModulePkg/Library/JsonLib/stdlib.h | 11 +
MdeModulePkg/Library/JsonLib/string.h | 11 +
MdeModulePkg/Library/JsonLib/sys/time.h | 11 +
MdeModulePkg/Library/JsonLib/sys/types.h | 10 +
MdeModulePkg/Library/JsonLib/time.h | 11 +
MdeModulePkg/MdeModulePkg.dec | 7 +-
MdeModulePkg/MdeModulePkg.dsc | 4 +-
ReadMe.rst | 1 +
26 files changed, 3092 insertions(+), 2 deletions(-)
create mode 100644 MdeModulePkg/Include/Library/JsonLib.h
create mode 100644 MdeModulePkg/Library/JsonLib/JanssonCrtLibSupport.c
create mode 100644 MdeModulePkg/Library/JsonLib/JanssonCrtLibSupport.h
create mode 100644 M