From 8c6fc812ddaebe6eca78d3842d242ad98b75fc71 Mon Sep 17 00:00:00 2001 From: jhh Date: Tue, 26 Apr 2022 15:13:58 -0500 Subject: [PATCH] s3p xacml documentation Issue-ID: POLICY-4012 Signed-off-by: jhh Change-Id: Ic047507d48653a0568bc8d01f2b8a94c4f934c91 --- .../development/devtools/images/s3p-perf-xacml.png | Bin 0 -> 71291 bytes docs/development/devtools/xacml-s3p.rst | 50 ++++++++------------- 2 files changed, 18 insertions(+), 32 deletions(-) create mode 100644 docs/development/devtools/images/s3p-perf-xacml.png diff --git a/docs/development/devtools/images/s3p-perf-xacml.png b/docs/development/devtools/images/s3p-perf-xacml.png new file mode 100644 index 0000000000000000000000000000000000000000..2c27967f94166357183f58cf827752281884d37f GIT binary patch literal 71291 zcmb5Wd0bL?`#xS-S>rZMGiquw=9EpQrlzJLwwO+1jX9P3l4GWYONOW@OHPy8xX`9% zE|iuzDU!L6icnc%ZltETqq(4>pdcaw@;hM7@;uMy^_|}zy*y%Y&ikDAec#u8UDwTx zQ$IPXe4+Klnl)=wj{ji)^O`m5r`D`l+qP*V@Jj1GA1~m?TG-EyN7j_K=>UIOvp(qX z$-`^blwp;`{u_YbH(&n21GZ+3YQ5~=T55RF`88{#kB{3QJ`>|RBe_A`|L*Ld3P!pW zU1k)pO*=)UYJ<|g^49YKN-aSz8yz;r@7$|!MBxYzTsg7j4-37`$KPwcPnsyRpsf>_ zFU*}7N&s* zsu}{>b5q)xAco|<_tbGdXJm;UFW=+v@_CNXxR!m<{litD#nv^||r zleW7iMPuAO+h=Pct&&uPn$~0?X>3%=GvR@JFvy2jxT)mr^3K8W=1eylqL=mhQJMP5 zvXmbF(HMprCqR58|G<#ubdD%oI!n1ezWV`1JZ{2BdP;LQ?c$leWo~94qe=Js3RFs* zDyZ!Z(1f6Pen2X3W*(7R22Ql=MGSP+LUi@5vUxp!u0eT7iKN@zR(+HzTgMI(_PuDP z`Hx>_pnZYj3~BpN&a_9Rg^rCGhSU&;`N3q-`t;2Ggcra%W^j7QX*1f_rrp9cQ8rh% zc9}iu-n}-yvS$fSCsJ6FVnesmke#WO!M_LES509=L`vTuj(3?B#iGRw zHq0zE=|BT5Y^FSzA&Oe8ZwiR5gysZcx6FJm(n9D|Zr{26+UzHLj#-0r~a-7PAl!~o5_=)yau7Jg4x0d z+e@Ql^+I^{E|4$NhB#u-fL#u3=i2c;yq>t!+IyB)(}k)HFDI+#XiT-+dOS<;UJ2`a zn_OB(Lt`h#SoTYCi}z{%Dx;z(kZ5^K)Pro#DLGq1uX&@%JXpFxkT}fxy|kSLIbfCC zA_&&e23fazcdK9Y74($?H*q;TGI|hBpMFdv2kKu;Id*!lL4M+f`Dcl?A^esg2u%O| z1)F8P6GyY)cg?rM4Gq6OI}_LD&*{w@!;uV7XX3s_g<`zsVkS8jeoXH+A}e69DVTPp z9Pw0B#QTj?aCR}YOX4{g$qIlgvA3q)XpCgr*#kSDI9M)d0uO_Yz0%&k_np;Z_6Bgi z7mS!OJta3yGng}}Y6G>xCdf;TFh^@`s-t0Me}Q#KX#NV`G%@LW8fW*+P;0WQ*Mvv0 znqs716%qfX87%jwEVH*mGu?q4(RRm-3Er#~xp z_73++zKFEl9b^Ob2}t4PatOfU+Up#I_{N5?iz*VPVNF0b4O|`coJR|D!w&A6P!X7l_YR{?JcC-Q1h#FrDLg>w z#VB=4B=Czzd%?+(p!XqRhF%!V$)nUSb$NAHvMJ1_t&D`{oPhBnypuGzErZ-FE`i_3 zkZLw}5B*9|iG|~RY5N)UJ_KjpB66F4C+ZMSFlmvto8UB4&M%Xw`)wTu}}X z$!+D-O`S&W*k#bslqqZW9R)#{Cmp3(S(%^SJiEK!#y!S%4|YocC)%6hr?8%tLxFld z5)D`1!kUqYQFl=|yT{k^AX zV88qh)iTOiFX8t!)RDAyiCc}@SOuF=(anFDVp*IW=0CeB<*imer_$AQL6`gkZMp8>O3H^G*Q4kDi&e;8YW>WvELX;CGI_2 zk;X@u%+6oohN8(%E5qpR`q1)yDgjG83dh|;8C5t3e=s9CWMA##l^OS3C#9eMS_&z9_s>;vxq(u{5<^wiT$AiC34Mg#|-?dC6IT^+NS z%?;e@O^i$nw%1$PMpESs0$U&MeQ;eMJ998R5<^xI4opx>BAZ8+$q^~I!I^lx%cIIB zkAA&hjCJ+%ZMD+Xwg(_|Z87PJ!K3J*`su8+274TYx%G;RK!OBzjjYDM+A@W=BxCMc z6YeJ#bP;Is8&v=;?(>WVf%NM*HZz@+=B2Y0Vr&B!Heb2p1)F~&Int1rC-9kIMxg9r z4xS$}d=d$qa)#u^CbH_?^6FwyQY0v+lWsr|LHX5Pb(aU3Q8ymaqP@3*M~36fC|~Y| z*m>H)R51* z_XLF|Ch=w>suCsW3h!c&Sp#=KG-7+zs=E#KVte4?y=IroeoA>;N0>=h#H8*9{_4$) zKbOn%3T>}>7UY84{XSFlFeG5vLUT{T+>2u80rjbL>`Wr!^{BnXgL&n{1>pdNCLW;o zJq;GpMm>APt`ov9S3Esv`w60I7eQ#3rZ2W(IH|$Wt}{d@c{+SKLRC^tsyK@2XvZj>n|3zBr~X zyRD4n8QcC^^{g;>cZqk`yxuh%M??BF-kT6-lw1aJe$G0Fhqrd?PPvdPVdxLodW_zj z4fN<6Q*>02;GJjjrxfQ(JU7U!>{Hzm5F6&}UQyv%ORv_s&Y?FEuH-N74rge_QTkC! z@;lhwCIh28nvxr|&48N+AN25I<-KpaHRT#UwP{6Xp_+_e9{P1oiy4D=st|{#w%<2t z;ygvzJ{4Jpah^I_tKYg1I>6Y`#QK>LP3ae_qZV8tnFVN_USO}hz9JSJPTpUt6`J#z22eLk|DN%LR#Olr6# zQrC4Qjn|ox!I(F9a0H+sELYBjb^eCTGalnF>0zI!Aw3V;wPkD@`&!A5C7 zk@3RZVGqS|d{E=XevH`T2ETm?b6^ha2O7nj^ih566URJ|D#8xJU3vz*?G}T24QLaA zJ6reYsF+=VBOB`klwcXw+^hWqsa9`wJdsneDX0RsO*$~@reeZ&~XpDAiq^k*?vl5#P9s2QBB2Xl(QRCfY)gihU^aT|g~ia)mU(PcjzzG|Vqd zl`rrfbM1Z=*-OlPn24VyeC*S4Q!wA;Zd>gVm}b^S&)IDQR6)IG2pM z;W1GjN0^tY^MQIkN$RB(U{AkMr6&#Fx8$#EVT`rj|H8r7$sWfai__uRT-Ve_xoB=Y z=;+C0+(wp?*7P#JCwk4flTCgVnY@D5h9kh+C$53*REKkgckwq?FPVUxJ0mp86_|4Z zpn@C?Y%%k$#9$RPt88q6$Q|Ec%{j^}wkZ%wE5 zflO5Sxe~kudOdbZ%4$VE&SLcP7*GHk}(23xwPa(owJEJ(LdSM-&{Fx5us%!KrF$ zLCoLd&?m28jBer($~{4Mt&!UG{5@{W=I?#zYAb=P2CYN6)C@-Go^ac<=*K4hMp1)w zACU@w;G9vn$yC_Di!!vSV5*<;9(mmDq^iUbv*74PWS~XI*L-LX3(W|)Oujyq5kBi+ zQAoW~fOxpA>jlsmjKI&KjHr_b$(7rD9WP6Rk!;S5{b9)sqrwALtRU0@YEs{C_q2c~ zmC+5Wv&VV)x*u$FOinQl+R5De4l3XGbM`}lXjfr6M1xZ-S~w%j(j6bkdKoS`nEIVytM_uNj#6povqg&~(2kC->wQy9VaNG}y2D zztHE`68&YXGWI3Ch@CO_dycjaivP~H;?k8#5P+Q9EP;E*T_C(KG6Ug?VQ=oOUX?$yunHb?AUIOgxZ1U{EB32RoW z=--y~EY?2C^+@?}&Q64pJO$(ht9Y{3Jr)0mOBQsYVu1}r9U4ca;0iqs!iK?27VV(4T;2~!|Q_sRAFbZC_ znJT4h%?k13Ms5<4b*Ns{~FqYJDrC03OjE;hCZ6rrSD)1Y`l8=d#gf!fbi+ zY-#%w8o5SM3psplxrM$bu4ZDh>CWZ+eS7giaW^1D(xHR6>fJ%rMoZ#`pzN~m2;=h$ zKqI{@1OHczf`c1~x&!9zU!3bS`~GB4}L zL@V_N<69MVc<=J(q3{7SqJB~!C&$sx1So${zQ zmOs7xcA$1hIx^u@V?`0R7Ax9L9uBHJ{bJ~Tg)=C4psM+vuC9XM>OQeI_$NBlv}R1z zf;_?xK{^-4Um}&vh)fH4Hk%@T`1`hzBBp6>1zikW@l{ynSS2`57lDr1K@i5J3!XO- z7OG?X1`VJOnh25C1QEqZU+|*tTCy6Uz;{Y{dPYyM0X2<({wmbQ@24Bcb?Drh8A(y= zO<7!fD69syr>JkThT}qL`>H{}c`olDhY-x^3^$U$flGgK#_ab5+8XzVhOwwJw4GEsJHg%cVd z-QR0m_a82Q-P9sazaA%7Su3Fj8y%oSOl}zuAf8ci({1O z`bN_M=jl7&d;m7tzBw4kR_es9=B|ruH-En3G}p(V2-d6~gRMxQp{?(a(HfUoB}3ow zn*Lhi6zkh&MW0CLyK#BoDxhIiI3Jr%vzOMLN~Q8$dxxtY<4opW1K0JS3H$mzBCnIH zvSic9JzPjb7>QA$I7JujJA8rXqqyhDlDFNAN42cdT315MpjUHdMUjRa14OWL`Ef>i|GbX6YONFf&pZJ6JpP2Hod*SHB*q>+;E-bCcX!nA-Z z2FUkY)J}bxS|SMqLLlA8q!qv^4+GaLua~91bv3axMY|eVWqB0bKD1ax#0P{VXJcZpc?dV-grZT0XCtYCaY zy|v2_q^529q#0p{40zlT^r9SOC9yKTXqFTcB6u_MN2GJ6*myK%d7)is)>ae$Lngy| zrdVJs!(!EhV^JJmo=p#sG==hbKmi=TH;`@rKpq#cqbYIxmx_?f+l#Q9DZ{;qD8j)S z)s%9j&zB0}wdP|n$hrXECtud)n|x7!j(LNVJX4tl3-qkLz8fv)i zaDU8RJ6&e1(ex}c9@0PDPaXsbx2b@mN z`#ao{3|V^8Xo&e2aEZgCAXJZCJ+qv)8@6Pbz&gwRw7f0vYsS3t{7&aGLu+E8X8?G^ ztSnlDM_I0AE1hCO(%Dn;#H?ZB>rJ^A*V5_t0f1eD>lc7{JY9@ix`8{e`KnDHzV(W7 z8*$$t7e83kuy6=F9Cg<#z;keay#Rn-oMZxRxh(Bj6hot(>3Or+dbda@(J6_G2`S(p z9lB}Dm(#XXZZ`c|Ug?=|S*7n8&k3lTrhG^6BA?Yg_RN>>#|6-R8F%lm{HK(*>Ffo5 z&8PbF9%^LPF=i+&I@S?PB}rFZg=-v?#S%s@!*aAMwtIxR-_0573B!ZE6tg2 z0|t~7**7?E+35s=(uWi%gLFL4VMsYD z)jYnQ8TUX4`|XbfV`$ktt5gjmhPg%$L{NuJroh3XZX&sI3&f-|di$M=7kws7m!~}j zp)Xc2^Cl~AJ!bFDtROM_9l(s4LbE`bOJqZ!jI#?k};%h(vHDExYakUMUa zO6?6i;kykWLjcfCtRI9SN-2C(Py06m{Z z-gv7mD8~M=Hh_OwJGXy~URnBsWd`gdGVdUTHwMZ)_cu(I*9|WioD0Yw7`IU-1OdD% zbRUx8QyPeio0nZR&P0SxnY!h8MESoY@PbY0kR_mK;=8E%0`FW}4GI4e$ zDE4hqhP;Y7k5~RDw!~$*3P~|DwnysV&KrrxB(}XVsOjDVS7iXqp7oql{%S43gN_*5 z2nifwKUdEJGT5B2Fb*4uab1Gsoe+#hdjJBDjo7Frapj#k-GsUK=9tE8$782r4A*(( zoy{q${CYK;J}*@Me2fkodM3cZp0`gEOSR8}<+BcDzY4tBg-^j*?!s>ODdy0GSK-Y> zox75{n0!n9&OX00R=!MdKq*zJxfMWtaaxF<#M3@!^p8H4B8mz^rK~+ z{&k?!HzT07pBH}H$s9vP;ZUfx>1k0z%_Lg21Xv{Q^Z<;tve#Xp8z>~3%t^{+{YpQO zt0}7KoHd~tps5r(Jdb&P$iX*A_7NoYF7l!cX+#G)s`H!6)DZNg(3k2NBCcU+P{dtb zb%G%;@*@R?c*2VQYN_Ux&?Sw2fC}A6jKd$xP`l16dE4cm z9wB54Q_iOTIuiTn7%C+=K*@AJ5c0}mup^Bx2hmw<3#Gy?)r?^a2Btajgy8;$&P$3; zV5=T%hRLVD0SwG*Uj$``RE~zZkXmOyMGweieq8-D*6AAjZQ#9r%-99V|lA%q@ zT$3kg_ZZJm4^RV(d(eQ_y$V#>(Ds_}YjE7Cg_3^9mm4!vU5!^cKqU?165aVRW~Ry1 zM3V2u?I62_qjnX`A2ld3u3LWr18vNIqa#x5UFr63rB9BbL291Kqibd9KGDuSXxte+ z0T74=s!h%-W6pVR4D5vO%GLE6j)8va{1*4*s4o^P?|lx8NtOU}#g2b|LbS{rF^ZEs zmzyK>@{rBN7eH!aj+#pUH=T;zM_3QM1cXa zQSndlA$9~O5z0$u{;{~8dflp3GEccXDyw-pGB+T2pCwhVaiv`agF+E*QQ7@&Nu`tZ z7d4+Uy&>VR(Z}*;3z}J{&9E;aHQ=;&UMQb^|2j|u)1`UF!kkfFq%1Iw0WcKE0KtRh?T+E&XKM_aSK}dDIt`TO0hqJ! zHhT*o-A-ROL5|p*0^QMD={lRT#mAs8207sDSAwBiC#(RAR4I(n^?oF_uGo@x!mhi$Li0p|iSiQONJc)c{Q*~a($KxJMnI=M+k;5~-# zYGh`=)Q1pUCd!|7xU@wA^pILS7?;*$==>K$ft%{#I25dy|*&hhp-E?k_l81pD^}C z=eWM<8_vj&{}*jX4zX58tKt}es&=~or@^yyqV~M@=&L1<0#CGu zOmqMin>_E3X97+7 zH{mj;YSZ4`TbxU@L*`=5f?K~yrG|nxPTDB$8~l}Dg!v7$wR%&S!1@8LGIB~S-%{be zPxgk>sr1J)Q}+#idk7TDj#%~>@8k@rs+>OU@YqoomJI-a#6x+`j^pW1{=)Wz$eD=s zhXCj(z=y0prZc+t{St&1UOfOoH|ZMI?gHw@d0imrtLRKJBk{YxKc}Kd1en@ zt}mB*S3h4armPGDs1cx)5<{*>u<*pNi{LinfLL)1e%>okzq78p3D3@i-}Sl-DzqQ~ z{mRo7hYuIdYZW!HeqMYQ?UDCof_#fr-=SsC^(v9Vvvd(Hq1@%WEk|!oabv8^oPo5! zW1sOw{Eb*G9qo+{dp~VQlx!D%>4MOlLZ;1OO!P8=n)Z1C|6`jKMHYU#c)-60;9J1I z7gRUa4e)z1YOh#E^8GJ<&l6TTVL@u+m%^^jpi#zK@f&*J#;2y%gn|j2(Rce#rDmq1 z>>46{74^_^6A=GP=FK>_bhe!W$rzwj^@_mwNW@TXlVSIv&nZBD~;ejY&<%9I%{qS;K_ju5IlRjfCX{Lg&BsUq(J`x ztYfyXvP)#QFfWf4KuIx?j#Em8=F_4}6yW+b)|0{E{2L9U5ibZXsZ%#fo9AHLTtLv| z36_mx6b0?w96Cb1#1F!=Dz8rF?WHb1&>7#BwK0GG{e{aIV-b2l@t(20hAdMrSy!3q zSX8FvUM?W1itnxgj5-&Bplqn*cHc-k!P|(GaOfCc6tg8(#Hx+ z8%ccl&G7)a4Y%s`M3Vujl#uw^HBoe@I@|Y`59GMHV$LY3CP0nwTd&A=^-qIDLZiMPa}~J1PyF zc2O88KVbZCitnHXc6R81rk^5S+#N04O+Sb4$O0#aVXO=p zZl5U-v;tWG&|6t_0s*oz)ekUxPRu8mfQu^kUIi#*5Jm9Z&EuG!FJw&)_GJHWC@UJGIbXaJGZ(g z<0;2wPA5EBhz}13D7hm^)&>7>E)GCsy~)lc51K40P3Duq0HSmNLisvWBFYKG#p_6jxU-$GSs|A*j5(lNoG&02(*7` z^<0u9YR0KKoEK=$5+U@)fC7RhNG7rNbMVZg5XN^l2Aa_3HZ28fh%=zI9Q~H|qZ-6~6EswziL zZpu{Et3L)Y_TD4YREA9@q}44j^7?vLLEiFfARl97*4ycFoMgsh_UqE4M4anJz$xnB z^_wN4nRo`052xctrMFQ!bj1!F4*aBxA!zO$sfM~!qyW_OE}LjxMKG! z%%Y|7!D?pY)`@55O4t^~UgzWXbO6dCcEp=-424up>a&+g${F1}JzV(hT)h+Ni9y?g z9?fmYKEN|b+mas3@AWdOMn7!LQ9*w%oF9 zp1fARW=Xy?Wq7r*9uN)xrZyLVhZuR)vz*54q?V)CSQ8I7;LLaH)A!#s&$Y-k>0g2; z1&`a$4(y@;M3byquc~SpX;C>_b-wBKzSR&aH-$K58sqa8NN)0!b3?-@`^!TZhG;0- z_266L!s@R1=ZEXkCTU~q-!+CUe{C{FTnXvP0jvNSpq`8zUFU`?usTr9sacU`_ zVbYktn_p@R^kwKL2@y9Hv+0S{rcj<2(E2 zTfE!{Z_-WWZS#SJ`EUN#c=%B3Aq~+Mp8(yZ5Hd+>a#ZypF3> z%6fuUIp8K=4YKr;K&`kZ_r{f4h!sFB0$#MHbVHT~3?pQ#?f2`bo3J2wNZ6bewk!z| zcg=PxY7uA63JtXCdjgRFm>FF%)vwcH0HR$$RvQ1(me#dm@CjGi^4bc1U66By^pK?$ zSJ1w;FUFTay>sz_mWiQ^d+e=AmOU`_Az})Wd;^1)Sf2x)8LTZHj9wgXK`_0E7xB$dXL2F5w0C$2Ev9EqDa!dZCGbw0*<* zWR2*CSS-%~%9P|h@)KU9`$Xe?x%aIIvV#B4q|eEhds}Xl{oi;osp67+sfPrpy1Z0c zwL>>fw9d}&Hyp@+HUXqxEHcAxj;dyES{N}EAMhn2Qh&sj)?X=6YjVlEb@5v*wa|?M z=5r1eb#*G=PR4nWp5R*mcsz`-z_ys93#$j4wypGLu4dYc{-C=5Mv``l;+)GOZ}0_^ zl9m{(xO#-9TzYLUC@_!M;o-F`TxUm$-c(P>o*GDuCw8ZuBgD7ybp8)K`Mfeh_4S;u zLYu%w?xbKWRYl|3)yzEZ&h0U57_L^efv(bqy+Q&UI_571p?N35FM^})j>5zDL0yB~ zvHP9xZsl9#tGv35(WRo-8DA@5H>)cX9X;KiM_i>Ne<~DtUlX}kH15~ePG;Rw=bJu- zYnaMcZC8NWgR^=^;@+p*`exFB4lA~mrAufYz1MOYF#3(c5#-|&j|srK&dVKEoiehn zW-@Pgw6Sh~UBo`Js%JHxQ;A2u^n7d%0O%eK)oaZ!nTYM@0f|Cqu}!2Q%o@KYGb}BM z76raj-*(nr@W0#}JicyKN*1we-3W+IzjTwSH!T)^8uUz`d64U(GP}d_Nxn$9M(!3vH7|)p&KRrcOy-J z0%H=>rR^3yga}%?%?>2QWdoC5EtUY!wv~&h0ql8yvnvArJU!_X6@Y15onDeb@nSbZ z>5!1D7W%J&r_5gDM6``g37O8hyNYJDeKx8$b~y{1^wf( zI9l9L`8P++8|+@*^kLoRX78OF;(=nwleXyRy&w%85GzPPr%rP-ty0DY*0_xIJvcTFMD* z5w|w2eqpMB7f6IF;E}q`a)wwgB|jz{n@FXTRQC+t`P6tt&|;^iKfX<#auynVgyIjqVe zENv}7f}NJtqOWp|&K-x0mft#D*PI0%4jD5Q2ZcTcEQe&w)f%v_#-hRlW18C0f3PjI zNVKYF-~=hAMWA$wz$U2cQ@Fy;6^mnIX5Z_E!K_y~?0 z=(@9MvElV7l_+g^CT*L8*9)4jWTMH>+#EhM+{3+Oy8dHjk@KpeoPr%%okbJ%GCgcC zj#F1`0(fgbMFaF?Lx5si0r0S zeD9k)O?nP{w~j32-I$lyt{U~E^nkpw`CnCK2E^b~FK2g;`X!Ig)jWC3$%fvGl8P7@ z)XCk~E~WVJ_s}OhgZu^+R3Ml4p(dc|wm!Vy?tLYPb>($ua6)rxCwI>!LYs4#*Zoy5 zsQ*8y*Yq|9p*`)n?Lk+|wgPIq^-F=q;1ep+^wb44iOvwOWN44}03cF6=2APOeXasD zC8JV?QQtw^1*BhxJe8y;>?1w?Y{XXZ^QH#lyXkWQ z%Qah4%Zh!+wNT45#c^gT3t7M{Sfr1+UZK5=0OyC8vZ)M0`^T^LqTJ9{-;# z-n@C|G-e1KmaE`nYx)#P5d0A|x+V;$>OTud;}dMp`NIqTd6%2AlYR)#P0RzhFaB-S z`J0ZAP#=e{Ogve?R&O5%QhC^Q7aw;(;nQxAC`yMxId==Z>#Ei|3{*$H|2A3Shv8kKgUSc>4ifU8FG-xP7{ zhMwf5D!d4tVmggu6}1+xUhhi11O|*BdpKa3ArE1+Cw#|_I=HTkuy0^ID(BM4E2+LF zQ)E#sB@Pa#T;+WiRr@qcL!r(Y-?ELL$ptXYMx7rL6%laujlnJ(KqW22?-`tsbs( z7!=H-&B&NlTO>g6xJsGxG#^S%`Jt~&w2UW36sgGSqc&ryAuINaX$Thfpe*eIzFUsXhk9@XlFk(M3cv(uV{)p;*UUa0N!NeVa&Y?*l47l!6e++NYJ z6=qF#Q>n1W*Gr8 zyNojN^E>poAeW+45F#8v`+}=P6>-n@Ev@Wbg4D(Y|E2xPysCCF+wV2n6^@5P!NS}- z2s#~lbIM5;!dx3tz+m42MgN)Savr6ZhKZ2zC<{9WHOO<<@kxzWF6(9Kc6n7hMDk7) zgXXko-(1uU;{_@u^y|0Qho-BZVm6ZI|FRUGf$oy~RzF(`t-0&`&)+YT8NehGFU_nA zGX*B|19ND1`QiUQf z%BZ&QKmNa+fxyg+bXfspEer|(h60nYsAb;&kLiA3bdF8pwRQ1)SC)a{{v(@AgZ`at zn{MdVZ89;m*e2Kx>=@uH2{-^O^nQQ;_W;L#2MguR* z^x$+kOTy`+X>vVluFB>(=oNo67jh9>7n|cIDvfPk-=sgO5U=%R)uH{7ImTu0G!3DGUAuYYlq z>%7R|+)+U1T`}MMig_uLZRUIQ8RxTlFk>M4uu6RT35WmSdfC{iiFMp-gN$`Wur+ye zk~kz}M-!F=x((FcqXe(VEHLe2t|5SuPRLM_=q@mufy9i#q)C_LlNr7pb!;Qf4*>eh zoBPe6ByVNm39jp>!@1Yy@6#nZcyET9edwCm7e6)lSv5hF??(8z)cR{Nmuj|5sXKK0 z`Y7!iWUehHMmkrpedwDnm(ueg5JmgYBg!%~;S_mc4WJoHv)1-5!kZm#* zwDqWzp|&P)?0&+P!tz31pf*MIo3juWxAx>%z=WKE@J%)z8p#x|u)q0x2oA+{l57ySm4E1F0Y0{ayOFOp9Mt_`t zQr^Nvov-il;O5e-s zeaCpTHidfl!v&cPKUVoNZ_IXD@I7z}6>B3T#(9<3W7diJ#RoYg*v-sHU=#>y^_rEJ zK@Kl%?|8Z*ngmRMbCc0%W;CE-D~~^HcN83|=STdB^)%PXv7WghjyMAQCJ3c8Y2;TB zg+OhU4ay*qJ20NUzy8I*8~%TUiS%w_eNK$;#$wy?eG(87JBWQyJulv=?h5G z*)OdY!S&rO-ETXA%g+wRU5F#f`w+y-U3Tj)HnbGW`*Hd5nmS> zmz=eHp)yJyHww4@-m%)jiDmBQXIl*0MyIW;fsQs#tUEd_H=+Sp^##)yYWU_$Ih&m4 zA+Jy%CFI`J!jmX2rkoCdU8P5L^XW@BLM>!b!Vprm!c z2X~lZ*8X!B$#5TNnj~)*WHTg^U)X=pFlPywksKuRpc{p2NV(#Au=TKZJzPf2Enmq{ z+M7strI1QpOLn%%#A%$5btPV5)u8^%3fSBC#j1Z%oMSG_P$Y$!Y`O~;nNAOtZ=9() zMySgK$7zW5`2m!~14k-Dop^4}Vsx|OOLY9S@?2~;D3AafWO;WBJHiK%+vhyb)QH1Q z=Nb;lXL(5KB!kotPyt&MW4Dd5Y6JACjSA(DU@@2ELL)3hHLiMKwnZX@ODf&VqA z5pJtE0MWpQ&$(U9y0n4M4fbx1xqOFp>TpSON-^8^+c-PNxVCWYh})5rV0Rvm#5 zWk$xutIbzoJ6g9^Zp*sR16E%h%!u^y(p!|{L>zOnI)es~8}Y`mN(j`C8fu1h*THF1 zA1^*8-edx=J3uacb^^-O*Z0Q+_SLZY9(HTutH6Tv{$Tz!_KVRpzr_L)NLU8*3U+e}K}Mp7nUU1`_p*e&AnO<`Tiv7qv|$zx?3{ zFus~sDw~s4`B!tY+9p#g0AU^m2jtxAfR$Jx?fV9p=P3P`^BkbGL*gNzXExT~toJWR zY{e&S3^BrDzk`#2YPdp^3O$ae+(4>--1YCEr_A)YGI^Z%NsF3Ys}}RpRk>AD+H@%@ zw`BH;UH21~&e3>N0BxaU4!i2rp;>(Z1T6ku-`U|g3(R^@6R+Bi&dH|9^=MZ96wf?U znJoKGGy{}@m8w>%dx2j1O(FTunsZG%7<T1P zpJ3Mqo~zyhE*xQ&L61CW34n!t9>$2!l{0L)D%|Q+LCf@kYeqZ%Tt^c4lJL)dT?S0B z+-FQL#w@dnq90!KQFLVxydcG|JLOP%@lO{WF^T&EFDvYS@=yQ3S-?UvP5gXqCD#eQ ztF445^hlVa&_v2Lp(|LOd{O> zo?E|shBe%NtTB1=rq!7d8hR&VbyRJ=|kL&?SJ-D5%5hpgYub7`K&d< zC?x#K1N?OcH6=B@Jy1T^B>Q5K*cC&@Gl5f$8)do6%m0i9U|bqVh``7kC69E*wa_R0 ztUOn}b8q>v;hr^vUh4%nk`}rxDw}l4g?pWoc&ny49R&qPOY!++905ycludRarDI zj_m;$jhaI_Q~cX(HR+t18}L;q$-u~hb#TB7HvBHa+pq0P{P>(j%nLQHn6HI@erw8` zW20EarW`9=JDC*?%uxf}m00~FN#?qG9rT4hj(8Dq-Q4nEy$Zr-wc&6c+ljFXQ2DIu zo|hek&E#)%^H5={k|!`SO&met7s)gM5YnG!rb+7UXr?8{Vw#K< z+?kiu%H7mH(Swz-<1B`JWbZrQ{oe0!;&-@^H?TZjjyeD94=7#cp@8jy1a0(QoYGzc z{Z0>Px(bvhSYOi?kB+jl{0ZvaoZ2{{U|HIF%?#Trss1#e0F!l3@ic8ib1ve}WJ+L< z<6Y~_en8)3ogPjG=czA!M|<)r?%k&$Pgy+>Ew9_NeU?OXsX~U~fX?uG`Zms%|BtnI zkB2ht|G;Z)w2z{;eJYaKvZdW}C?Og%wJA?W+fyN8Y9-n!(ja5Zs1&uOS(PNr6rDDQ zNk|xjlyRI1F*(hU7z~CPV~lb5eeR*QcK7*x+t=^+_r7|qYp(mg?)UZnybsDlhgje~ zS0pD^NF65Sao18s>fmhcuUq>iX|_s*J>;s1a8#Q4_H&tzd0JwpEDO%Yg|I%5Uhzjd z@|~L@U7~Ay&I5G&_bziI+gpBIWAiBMWJG62j03j7Iq8^_%UT@IYFhVv2O)jOYsg`k zb#mRpR69^EKYYI}1)g?(VI{(yOf0QpJA>%zMt@5lP)#Z&>xz}{O3|`gymrO%kJWyE zm=LnTq*z=yZ0*&aH6CkFX6}^acce?Gsr*{erc(CZ2c(!M9p6kr@L8t3k$)O&4(Ab2 zrm4!;(8?bg3Cm)oE3SIa45JiEVYWz;yKoCqYrPpUH5#<@b<;a%|IQ3F{CWFgVe> z^FpLm|A>mZw>=uDC`4wX2UHXZ^fl>M=M*L6EprAX+Fy+vf3>;d@>wHq46*4`0SeUM zcLpx2*KV2+F%JGJ!uVvM-_$PZv%HbNkOw159|#obh`_{!-3hX2moD##mRA6hi7{r_ zm!e_h4GLZubel0?T%CgkLFM1*+@9sT$i->QRr%%Xl((h#8m&zMLm`}IE@D`SX3dYW z1b^#8KYK*d4>B4%o8I$DfZpz!boF0tW5b}&;w_@;kFlQR&b)gmmDH6H%t!vhV%@W3 zISRJ`$C!g$g@z71n$l0~>dH%)$S`MKwn(vUH#;pGQ|m`_W)bH$4d^cIBWk z{z-Tc*flIf7|GQ@=9k*|7*jQ@r_Ug0Mb8!#k1egFY_YzO;oxRlJ`bxO?&I#nev_i7 zRooqU#Fp3OpFiybM2ZUmddw%V1=PcDP3YkCUrSSW7=CZ@5cdU+J znl*Nu-=l0&qlf0456|4@3C^#_`CFa_z^7Y;_6f}^9lxX3>yfBp3^r%5vyDjV)0F@E zi8}&QB4BLS_dRomD|pC6S2{^Gip+xCNkf?mfN#Bh*+NaW%@UGLxEC5WBrSe((?X-9 zV@Bi^(`Uy{xR|qQciJ76#ugJ6?q1Yc%^|!&BUDue0b7JKD`R1)s6zzPraBKTgQ*yi z7YaKSNflQzNm6ar+u@HX6)jXzBYHnDkWtGAxM4?pBTW%!6B-1;^hmoM9d`=-7d3|X zXnZ15d-zbYKU#2nDay$eFHO=_KR>EfCk z2Q@2Z*!Xx(#i8LRVo&Vq@K)hGDRQqpPdC|u$r=!9s(7o!5_j(p@~z#U%%IE`lk}90 zG_}#Sl?^dgz2Y*1<lkxpFB8^vda+*!a(G&x( zO1z&+fhMiIij6D2ElVyDE{qEwM@u&_I0mqW*hvZ6e?M6Rf~ja~AVK4XMMY$TMQ^Oc z;J)M))swZ~w3DrSmR***8NzFxT2=~w1@jMtbkv%)PU7`5Hl?K3;yv1fbApj<>9{%o$BJY$ednC<15dZ2!0qB;8~`N2RCp+&e#ZYGDk zS7~XVbQaBYmg>5e(Nc+TgH@WdAcuE^S)5HFG~#VX;oPj!_sH;16W1#?-rVVc3_Xj= ziVvWNxRiHu_YgbTW^gMSbe~=5?!ik??L`M+aw`xS|HlO4?;1gPqhraJkx{0$U5ihR zO-~xPNx5wCc$5?B!_1XFUK0}Z-zz60Sh@|PGK0%g(m?g%diJ$rv}Br0%}Xl3WSW4X z{qO+n6(F874;a`J=c76nxW5MT)rFe$^E$QJFTqo>Tm{mHKRppr+Xl?4y0L~--~9Ow zK64edl9JQW^U)S3_otgCq|E|h=V1!mPm^IEBB?Q1@U~42HWv%$(9Mk|y-4Fc^vaOd z?KlJmOyuZVT!Kmfcqs-GHH#x7JeR=SgVEZ}&)nmk%HcY&!T8)UrrTxI> zo>?O=En}hFgE}6p6R4H+2JIYbT$*E$Irr0?l zuyg2+0-Gm>WSb+@(_-=1pfxX#(+(F}zGVUb2upWA<{(^XKbR}tWwzKH-K*q(H0&&L z$;VR4q*I4LnC3_;YP>aKcvOfDxlcQr!)?>^N>1$YFQT>+&a@vs9CTMfoQwAHb46?U zLC9zQa2)>dShh*Obn~!cZk_k=>L)oS(whgPNke0exfR-)iL$Zv zDipazxV$&aL$f2QUO97nZgxY1jau2yei`y!1?xY3CThbgXZ_FVP}BX&nAQCpE6 zw{RqG&x_A8Uhs!#+Nog0`kDoStajLx&u8n9R6EXk@qxTf?s%|hS^S(ID|9|f!FP&l zBTvRvj42ugV9K4 z?xm&C+Ryw4cT3oFP5#B+AP_K^^W&I8(x6-iGT?${FJzN574>xi<=>Jd1xP`_UHDyN!nz-!go$ z1cHIW{CWl4?SeBaL2kn?icdW8cdBgKEJ<*(XCe69+XVu7*(kt5;Qa|p`>v>y%klPWa zKW)JYw2~{c8V?vXhmLlRBn0T!Q1LQj>*C|>CrlkYBM3~+twQIO> z^CA~_RXDCAr`Wm$3}m&ZVDqQ*;2f7(fdkVlFVii>-`Yn%t1nSfQIx$U6FW6PRjskR zO80s6jbgvW4D&0PO^t7K7p_o_l_B&2n8=js55-T!F1>u07SRrsbfpNp@KF1L;);&Ll~i}DeQp+zUFGg^YfkQMlYhnbOUu9j;V`+{3m`sy zHMvxshJl#M){ToWjb~7vU9@ymB-=<3QQ?x5Rd>XgFPEhtnJZLY0mQ^z>05l5=J!%a zXhvtW(-6TI$p!JLv;PsbF35r=LTTcteh zwoWIycofM69;28Xl%S@1B<^s%}^{= zvFiGV9n~3Hp&=R0{jP;YiCaeMqx)W0DC9x59VscB@y9#f=H>g$$<%>+om6*!{aU;y zCzf567g}*`mh{V3`5L+0-Pd?+YGRKvsM)DOQOy(n>V*1GnNWsfi?wC_^KJF%;y&boOSr`Ip>ySN2uTg5l@1F9dZSm6yHHiK@rfmgXVa z4g2}ux}WJ}dL|*{x=Z%A)z4Xb(I^H4e!W$oRenD^_>__ZM%r(1T&Z^#j#Ti;zp&naReNx2UP-|sulWuPuL!V<@I1X@OVW>tKloLL50dl``P;u+@{lRp3)xg~ zdqh%UaTPY>Rwj*#Wz8Dc;X=fV@8dd0=vV4f*kCgH+$8Q?q4U}Ya23gmTK{@DjF&!O z6B&l#qx9#Uu(?&!GBCCzwi5QXBo6vmO$RIhtBt+cBF)b;@kPA1%K{-W=$&y8}akXA|6?Jus-gf$LHy)q_-@ zs%VHQn^$+50Zx(vp|a^%FoQt+N~qaq*+8GxtJnW4A&>FxB5uFPv(qeNHd>}!JDJSM znmE*YQ7$GV=9!0a+XjB}Zr61c&ixr2x~<<(mZ$U# za8nIy+6kxLY+7kHu4mi7e+5I%4n7VKFsS+}#4hhV=&kSrRG@}55AF3lE$7VZLZiwE zHhV_NYg~f|_F6a8Z+FX;cCHpAMcKp{vN(UteWguNoCY{|n;3HSss!h(U(iVetwioC zy`dCmO$3sG_u$P~L!L`UKi>&MZ5`lCvfr}RF!VxIdI}2Lu9)I$D8n#2P5wqLKD7Q` zGYopkYhPP|k+!Kr<)ye4-uT1f+nl*ZtX9I@x%+l)ztl~ZJ~}X`-IjbFc}Lfsrzh1( zGpWY(+&1!{+u0q_JZ0Nh6x%$?^LDik!=#iTzBXgeQJqMRJ5d!p_(v)qBBB%a9}c3A z)`hg$W~<|)I2GVgRCai^WRxp0^{iMZX$c%9l@!VnrAH&i`0t^LZ`^U?_bi2KHFE zy;}0yx#3(iF)i~RJ)Vpy<{+T^s@qeeu)3wFO)5r%=;Vb1g*K;{<6qefmNnsNe;PR zHH=(|DwLyNKO+bCXr@N;H0LTZR=P6s@cbn$_)B$uJpV2EuEmZ1EZ5F-<4vxP7Fuf$ z%wzwi%mise+|RUAu8Av5YTBhI-gw3`^{J`_QHf=Rzv_MJmrW4EQP zx@koe@UnosNf-2FW|ANduqrR;2kydrles<7yCc#~wnKJt<*GFx`Cbw@TZZ87fO;h$ z1Gt>NS)h5pTIXGmk3rxL1b0J2OSG}8vrQL~0ir&SQRG#zc)mf0OkV%kLf}ov^wX9k ziY_$}cVJU%b2}GiMHLk~#hY^mtnupj6g>mUI~y?(QVf4#-k4vj?8rRnVqLPf2%lm- zak=g_j4$h)ztzClxk>fr@3@CF(oh?0>N?Ct_(Qk#h-%43)u(xt+zXHfM`0oWey213 z%lxzlv-9&;!p>^c{m0FIlZf~mTiM2))hmj9tUb-2f2o!z8c>`TrI5WVUMk6CsUn6$ zLxP$?IgX0*)aRIwzM<@RZy5%ZOEVhjDDrXJL=Jm8;I@zZ6XLXVyYvg{RI{+dH%j1v zBpM^RlW-U1Yg7ClMEm6r;qwC$^2d68uwPxTQcw22)v9#DJRZMKY<6!uaYYt>?<_S6arahMNG}J+sj@i@j!!z0$sySRd@*6A^WE7WXS>f91ur zpPu^8&hU?~X~}*z>n9=cSa9Mc4o~eTAKAuw_v6U}H|JY~MI7zjVqtQ@&-N1dNPc0t z!ekqMmAxtU_sWH>zwv7365$>*9_W+FAiTL$wvu{uxFX}=?eq>=c3^&z&#Wwupz9jA zfw5(8nMA$j^(E-8U%A2@qE{j5-yf8O%dl$b+;?Vxa@+F0*d2@DA{Yl_4lAEkPj5Iu zJ6(bY^C_s1U0K0ISzI(LU`j%@uqBHk%CdNVdZ^fvHIV$&`g`fQ6io?v7UPW9tfIA? zqnZ17F_n!!EMiR(L%M}QCykIh*p9B!#53Q z4!=ARf}Jn?vCX=S#o$HUqj&Y6RdZ9=lns_r>-GX94&>^-|6LLq*il+PFk=2Av`~!$ zS!1qZoNM;Udl3Ek$T9C1gIQkMRtLUVzm%6d zACblWajU(|p0I9DdXaPca`3XNE`m4}PTp)1ROPU+b_Q{%)UKWv;q`~n23atf$LZIV zPb6YT5bfc4N{pzvE`NTW_r!sYpxW(3}>gj2|fW9~n063h=F{y3QA_q2RWOX*l6h4dARMk z6X3Q3`pl_Oe36SFTe>|5#-nMf$eNsQIbBx;XEVW&S#Nmg@%+jzxaIh?zfYvTdxt6y zXMcHs+Oak;7^{wF^|0~nx=lAK+X~4`1${i;MtXL{v0YvZ=|$Y#%^~+l!KecN18Utf zuSXnfTGAoQLDkgUDtg#azP3dahKaK{niAP-pyt81k20o*7l}QHHu@>Tjr!tU<$HQX zJ4eUNVAXk-CB((SEV#{&&0+ac?k(!^NDAhoJMf-A*gL6#p;do6T}((HP?54-kv=`g z@0wu*7aC5(U4D=pHmQaVG}+A_N!k zj}UGl;b+m=ZFic=%yT&NTG{2@D;l4LaUqS_%a!VCwgE@e@CccR>N~?B&l$Hqb|6d? z5Ya^U*B3nOkXe_Z?;BS4#IJxoHpZHJVaXuW0ayiIaq$>81VQ$35JMlA0k=brh}CE#8CQzH^$%e zUU;bj;MH8ez(Q7`;m`wTOS<-}zQ$SPu#SF=jIUHBNyF#!5xL2OZpL@PLE+B8!pQ^S zt<1+p;qU0Z3EB$W^`$q{|2xZ1>qvBf{p%xxRWOSTUVI{UlEl^bPVzf#ZI>||#@%eY z*UHG~k-ReLqs7JK1nb|p!QJ2{)>bZ3tfHPOQg$9y%)ar?N?8Do7DFWU2eBj! zBE+t7j$xUNiGE`yA#hEeJw=r7n{Xf$=97N+g?t6F#MehkU?|*J!b64&o^>8LBDzi*PJ47ofEUrQeP>x9eZ$6G)$(lKmjBpX&fP z=wG;M8>I&WDS`P1={ktrI2rYA%7TuQ*ooNB`bgJTP}yYOmG@l!9G8$TwsF1(uBHrs|Vhy5!iZdcdI4oJn0 z?vfCl-pQV2FwNnmdCcH9I^?FU<M^_)P|KAj%&!WYsO_X62nV?D=;Ir*S5BIW_#G1rXC>kqZoH>wU!L4QS!ZwoW&j zD9>5S!yvn?U8h_lm%d~kSG@6GyigDhuDqc$m`$IA=lmi__nE&VlWXukDqeLjRdn-U z2|6M2Qz2P%)yq0X5S60{h)udj`fUPvfGd4x>2rl!ZZQ@eV4R$;!p2rPS)btIC0Y=R zd+h7@jnlZsoTWwd?Z^Rd;Ec?2i>iY3-}#0-BI8S>HPUMvb2k`Nj0ex>5}Xw!e{B_NK9 zpsnGDrxU!KiYLI>A~7={GKRcB*n<^k%TpeML@T zTS8oWLWO%`#h8szL}TLWbgTW+Hm6-t(UqREI;WWBFYX|Cb-3O$App)g1zJxMWW5wn zN}qkE&upT85o>T@_RTOcZvGB){sE?-)-tSdjZIm)xM;4hvaOT9v16-aFosuI)S3VN zdqw7UD;zUx%WHnwjQfR~G{F}P_$QXQQIIce9W=fyD_*E2R|XkBh^doZIr zjG-JD)M*GKuSu{_i9wP#mt!;BeNG07gTH0>`wIl~jy8pXAP3t;k?*!|4BQxwm_pT` zA>~7J)ia<2Qur4XJ~+Vh7#^4=qKra(Mtx?`Vvjl-qZIDVNbg~IUqxo9e(N^E`E}m` zro0&97V*%A#F?H|Dr_y#=?1#_05U-M<4HWuL=e`QBktcOdk@3s81{^c{D?fuh&QO za;RPrNJT4WK#mePnZU&>$z;$$e~x@sVaec(MJ^uP@p^3IB=?L_JTtD)4yI#xH*3== zx2b&)abAIuKYx70ZT}R?UZMpN=EuIa;T{waHo$$7vsOq4O`2Ps!kY^D7mKkDi7_ zVKaOn9Nhny4C|wBC;uuZ=xUXuq$RI=qVYTu?Re#0oQaWk!cYanSV5WXgmBGwcnL^T zj?n~It(i19JIqlkoLn5S2)^I+>@m&t`FE9(C`IH)9CK?XB;^qd+kA7mzYij+12?%` zN49$DZ1M^FFx1~t%;6wCv^Z)*4@lKrA+N zbMyEr0${4r$c;Ir$g8V71M|l=!x8(5L3@VUadmu{xJ_zPKbjKk%^tRhu4LyxJ`aRP zWhs=lR^9GEAd}QaZ(`V@mZK$#J{ithoNCY!8K%UqcOj> z5cau=fd+s7t{s<*zSbOCA~9I+LtZ=_Jj7?r#vk0p7mH#aR9EpOw;H)n`oM4)I!qhR z5s+p|&zFaBJr{e>a;x{pDiuG=E9Be)O?=kDkkOp!`kEeMfBdT3Kp%^ZYCMe4AA%oy zNeuV69iFqN4A^(5?oK%y!`vk@b3OqD1-$0S>3@{QUH z?wBOR#qRFPZ+3tKU5Sc{uic*>XF$iT@E4g?fTK zAio;2ngT#?fcSdjK38u52esS80`YrCHKGws>D)#?@K}^j$tlm&*-dvXp8mcF<%8NF zL38AU^}TW_*J`)heW0}>d2LmQ&LFpt73Aa6TYMGGU>=N5Tw3l?DIy@Lr-({5(PB8a;(aF~@UbwSZpa!09X>}aq1CVe?uy#GtF3;vogbHRN=#>t4DiidSacJYf0 zbJ=BPKS6@y&{|0Y!3{7$?H*$BUK00VaeXwfPL$bmVuY@|*$4HoHvogSL@OFR#EvQo z+SGpC8@jQQDdF!)QGF_~dIL{Su}sKYqX)_yStku}^GNK|p5Wi_ZI-tFmdMS?>0A#Sw#g0#cePyDU)?n(?@)NyEV zO#eNdYDS)yukPAUZZQc~ce@6{S8+NrPItxoUaRm-{38-s)?Hgm!VE`FjX@5b&dTdO zzUa^fr3^PAOK<4DTQTpcafy62Q$1nz}G0&is`N}J?1)klQ4jhm`R_Nas7tbZf_qPt>a8`g)xRY9bcW5>$i+kR&mZ3 z`(G#H7>lfHe7;WEc*&KwlL9dK41#)*m2P_~c7bQL4n8&(lxErYS-sUPlz19b~3c)mO1q%EB*8C`BMczj1?AH_tg1fLk-60|yL$ z$FdE%3TuszGy)2bo8E;7_3P%KPX#Q7byR!gT}~Bsu&=|GO{AN{EeTmjhcBM)sLFsx z%mI|Kk!}O}u;0kl)EOD{2?bs7uSAeNd{{z!IT*S_(pzUdwzzW47^-IggYF2aoSDcS zZbG?1Op-lnaYo17vsK|W%d66743U=uhg~A-y1-PIJj2$q%-F1f>1)2}tuI=i3?M=Wjv&aQm*H`?kaWMNab_EZ=?bp8KV2&L<1lE^xa;`t74T%)6t;-AavX87)k9-WU>T*K;cr~wAIsO;p9LGW%r$yYCuH@7RKKyi8+4dl!)ZLEP ztt4O$HcO0vdNhGx%$BrOf#?uq8dijuUhWm30m8h*{Ew$5X@>ox;|%pE_8z4Hcy%v0BYbOZ$6? zdF?Xd;7xID8LeU-jyt3uJ)6#jtJJA`>G#d@1TkmP($$ihHf6b3kN<%GA!B9+`e<*n zu@a3m-5`#P3F)vf8Syp)Rs*y%A^Bs(PjqgZezPEld$Hkfo!;mxn{A_NsuO|)%pVrm zTJ6TcqL4X%bR8l6?_k?XlMSzrWJs(4HU2N+a1izE+e!7PXAsk3OS?zifNH;_t(KF25s{G`nI|~_n#H-xjs8_NOr+c@Z=vg z@4;yWFZ~0IGCL9CBN2q-dGBZ;b5kYxA!*@RX>jk4ga4!=24ZL5kL;VcV@;}&eW#L& z9u{@4M{S@ZQ!m5SUj}QFQ^Un~?DLnDj>>tKgXRH?eL9IRPr{M+y({hL)R3Oaga|*? z-QZ|av(r^!)PgNMv;jgN{vY_x@4j}vcZ_lV6hWs_CI?oYEzP(v6`g|`EirTeU-5QG zO?p`gpHiHUt>XyGuW^|G*Qm10?C9Mhuv!_&Om%O&CC{TSDM>vwlVN7+wg3uScY|T_ z!5e9lOhKI#6HG8$2u^O=p+nNgdj-D9M$i|GpwVgdI&&i1Nvc1WlnTc48ywmew-2ND zo4<$=X7LFkC{P={QdbDLryldl(`%}t8JRZ=pqY3}w6I_j&*ef*Vz-V-kpIY4<2GK% z7|-&Pp}W1`aUW7+C)wf7XuyWNLi8T9}F+*;rBnBp=-@`9*N)Wno-9f$?g-a=d zm_8aFiHhvOB~`%Z-$lNg*wG5%ZoO>V=I2GKRMeU=>)U*1_c=$K)I*3nuGbTQ$oZWq zoitq>#7*n2XUW|hxMvP`~@V6TBvCKvZC>o3#%NuzQFIjp~X|+lpcUaNUPdAy<{WyJerxfk_v*u6khS zCR7eEbB=l4`#dvix5gMAbNx;19yr_9eIde^Dwv#M1!T`U2VEBpSQ*i6n(Eqb8Q{!t zXd|OoHuY0YC~V@o<8SF22ETA=1_j6AgWIwav*?6FJ&{fS_vHFCNKyHXZ}f+3`JpO^ zPE*wBK*&>7n6*a3WdK789hD+9{ego8IGUy)>~}@zjs1MJCIR(j_N!-Co`^;Mn>S!&YWil=ays#spS{r%O9@bq_)g`wKSS*Zq zu?>GhxIE4sv+`d&)`a=0LMdy>zwkoLS`N?&!j_g%Jck<-(nwq)pUV}W6I=Lzr z(CMe<_BrQu&-Q^sB=hu8vZoDx<>l_P=uPj`yzR2N=Hp%T@h*o{6t|{2@qqox2OtC< z$~$84i<$E+Ivc0)yweOLXOHQ;hkH`UBa5}=YQB+MUE>z1`ck#++kc;%sk%ocP<^0- zSk*=hZIEJX8X2nrUCKazV>UY4uK^Qzins>}>?uiwZTX(*XtvZO$-m74vF>x=2?j*O zmmB4&z&1iXfJ_bYPI$~NlT(zf^4AYAGNi`SWx)$8SBZxyg!Lgz>FnBG&b*2pRgXU|t(+lUGJ1Y@LDx$Y3aJ+A)(!MgnFh#Nd;hxX#0{pjhlaVg&v8!779V5kA`S>aMNy;TP zDrGRyeozRKBc$mLR5`=J_7?f{Myf{60Ry#4;mKY1luz0{hF8z^GJ9mTGQK>l-3fI) z5gke}GF5N;yOFd3a(u)+=TZUUSxMhRJQqpOLO4ENhSV($6gV$Za#oc}%QRc$hNLd} z$`VOZX3RA?U*rBIAKErMQn~04Nhht>#&{8i4m@|?HqYZ-p4OxN{3Vw`e9#}r%2$n< zf>mXDkp9>aPINE4-6wy#+eTy3Y0erp_pw%Jd z*W~#?lp*4D`okMU9C(u&Uv#aDEJ>Uwn6W#xaPru%N5ZhTtmKvW!7%*rHU4rO2-myV#)ra!G8+vnM!=_iEes?pu5eGX!BPO z(O+HEpxX`-gkzpg&VL_xPbB<PesB2k(`|Xkob~*?JI1FTgC0XD)5LS zzly<(=6I-_W2y;o7e0~*)rZS#mLj85Rc{R)gZF1IK7}~RtKX7XLXt(oN-{2|_iDZ< zvoh*Ncy3V9*hs29>ajd<@m#OiTNo%x$zQ_IY4g8>r@ev1+g)jSvAtxzXp$;4rCPo5 z0Y6V9<1#2d#k>;1Hn6xhlpXYR*guhf!rTm3n$Pg)zF;qKOR|DzFES9ZyZ z_?F!UanvH$IG}=Qv>f~nLcOXwLKfk5{ zk+5>~v;N1NSOrkKQ_R(&E~GyiIzw%cG0*#$8_l5^w`sj3v4>1A5S*uV+pS5f*&c2g z$9|j^U*we;n%qp;l4Dpi<`nj~YwfJQvIgw*OKr+Z*DAZr6KgrPRv&s{2!8jXM2*Cr zhxRJXxpTJB;=>JbPLl9Fw)i|3(u;>5R;QA9g*fwd8+e&^TLjE|L8#_a9h(82rZ69B z176GOGx)`){b|2q_arv8t^wJa8T^ANLpmz#~6 zgOf%&JlDc*%k`q;?a%7$x9m#xhIs6?vkLNkE}7oGLp`&`{!Pxe0(QUd zg<{j&{&^O2Dl6MgRoRf0=~|D*hpvfddtk2=wymb-6 zFJ@KZNSjw$#`3sxKQ=I(+J*3|`9oV?(|UCftg4s51-ahjlWI3KHp2@?uWkt0(SC1t zJg+z|kJ`6h3aO-ifiq1i?NxUBkHG2h7<+8YDNZv2^6*%0mVWnvb5v7{;8h5f{$DhG zD8S)4H+|PAk94rnKmw~FMRl0xI>2C_MErxM1w7VJCJ>KfNg*FTaA>mKhvyvk-(F=2yW6UNDmr|s!0GJZGFMHnECEHS z5?_XuSUS7EUy><@I^Id8T~BA;xKVixrsC6%k5lGudCjgV>spgF-DlK%u*=6*wLZ5H z*O>;fTzr#Y=!{^|(QaI0p--cX}A7na!pXuE||6aNw@XEPC?bssU`GngjI=8qfk8R^g z-xKMxA5mK35v8SfZ`A)6Y}?PX z-nqSh5S%)>US7ifz~6YaBv#mq_5pA>3>c7P; z^`qlYpf08Q^}4iYWIW_sGRkIvqyCgPm}b9c@>Bc;b}-}mTH#Y78XF+hD~(i|$~FCuc*I?EaA$4(o&}1boYV zk=a^9DQB_+x)k3^PCFP3X(c{W4Y{hcIOVb|s3J3p@4oluI=XYCwsW4M(g&0D6=ZKh zSW$_v3k8~J#6h>Tk|CvV~;FMcl$Ig)Kf5df)Qgb1J$xRlPwHQ)9J#9q$J(u~;^0I*v>F}Dr z{+fSnE94yzj5>zoP02lw{CStEC`|TkF}C`*2(Gh0G))yw8JcFLwehL`_(&M5Sf!+N z(o)T?%_=4_v@c>qZeV|~A6-TJ5DQN1x*@zMA;$e*2Bh0&+H2*(1kz@Wfl_CvnXe)#XEy=GnA7VU_vi zodF@QikVw3^UkLde+)z}f+R{VMyvwRzNfj8pui_&Ef5=met3w-vfr!=gshSFWiku( z^A4=B(z_6*7cAb5{2id7Bt`@tPj3D&yY_1?|A#y$lCQNGSU~t}6))oVhyB(49=x9F z-hNCgLq!sPe=1(B|0dcvIsyU{n>&s?ODPY0NHBGf->NlAP+BaV%`0h}j=evrLz%S0 zS7@rpPG;Nw7AYGmM9y+HT8>}N2v3xuOWMW;Jk^_2T=~Cb%PP$jdB7jKbrRn=8_VV40a@0wLY9kTvafI$4~T zOjDa0x&fsN{JWXkU^h^nFx>T7Uj@W&$Qbm;EP9-CG)(NSC>V+D@TW!;S=FI#wU*cF zeUfZ>9{y$#)=D8&oa$$`MET+ku{%(Ce}qm52V*;R%< zBsv?6D#CxOTVxtRcw%w-q`BSetY4(=XCG>}K!LQ80O35Hmuf$ot)g^2q)_wL+)vzb zgXf89@h=wsN>t6V$1TALpFJI%@Zrm(ZtuM=+QHEmG2x2!T4md@o1B&0$KvymbbbAD z>Lr#Q#Rz=H?>xcM1$LfDp890j%%lkl$;Iry)cWZp+wx-FnKQ-s4(XWnbZ;2kPxgx7 zjl8e+D*uzD+Erxo#=Zc?S1!#}!kS_zGqnQJmQ{ zpOWklQkUbVd7-a#vQ@A!d;Y@Efxq>^BZtneR^iJs{fPqzVx)#M_4TKmHwElE&tGKq zx!-XsL+i$+ZcE;nge(ta_OU}bNUX}xYvmlpjrLGzt|pbb(e0=Tx0Iez^nic9d`^ev z9|Q5HgJz2BGbXaVjc!}xYLO=%G`?ch&xQsYBfC=yNvEhHaRKp_G~&wC3y z^(u^eVW!{tD6=dqb8}cgyxMK=L;mBXw#P3=xVH{`z=!i)2}yA(&+5MHZ_6%@{Hj1k zf&DZ{@FOEs1bih&-EOdpTF8SLqw3owabzz=WY=yCc>00cen$?Ve@H+VfeO--~<&$;Q&>jd0kNIPbP|dq+ARcO= zJeMtb(eytCE z`zKMJA=fx%IOT}t;MH9-(^mYg$zJ=?$NxLHtt~#)ls1B;hHxg~W61Ce;XlaSL=siU z6(*_PP0!{+rpVAl-tB*e7m*w)HhOIHKeDnTmEd4ye>acLhfoae#3+{@73Nuyc79Iz zmd`7XQ7KL#R!X(#gw3QDHPkb$j`ggz^-yzNbLtptOGrG6fBvC8&v&S6<++7)sigHB zp(xxFxA?F%KGNGZhxO$wO-3kFUxSE7$2|D9Mius|>X`mG%sk+-zNh>Xo4RSZjho_T zms@(t!;_z+glmc~$&V~p92wdEvr2Yl1GDgM5VW>$&q3zkI0S;YXml5+G4D!w>t6V8 zA)9(H_~VaDKgZ4N)N9oX85&NXYfX9{fFav)QUDs!|h3bnPhX8huQMVtVQ06v-JURDn^5x5) z$rn@7#8DhwVMc%3k|zo#6dGvoV|`qQDDaVnS9<8>+28#bOO{T=sM=+kA;r~^ORg7z z!AyU&MS}r&(K4=fS8LABvuI6iNR${}bYVm{a&+^jm;&{3cEFT7&d1WPBbZjB=0uX8h3C%a^uQ_i7KZbI7B)IQLlTJn!M>e%3gSD-(n7sF zR6`cTo)4Q<6L#o((%ZMtha8MMuX6o!Ei}hd&rXFP#kN5R(%|6{W3qCv3VO;IQ(=TH zYMkj>_p5Cpd6P*`xp4JzFv*h{O)(duHC>vx;pbogXkv?2IOZH8QUhNYJniV;V5hH9 zM9{6eIo^Pd(RW?nraVchv&`AG)*5q)M3)g0^obT__Ug zgZ3v27WC{(tk%hA8z6OZj9k{Z2|q0d&Sp7ftFYDLI!gYGef%8H#Yy0ak;Zr$S(UVH zz$Kb%;}#_3Sa<`EfAf*g-9`1!e!OsK9Rsy%9qLi~U4K>!dSi%sc2fu2@|Aa?@G7cC z?h0#LeX;JpZen{Gy0mTlApQBKp8btkJ-?&HyV~zPklcuo##FO403%ojuQh?%K?UBU z%?UjuLa7!wwpreF=1SUc?quSz5E~2HjG{KDey0??I>8!uLeLZQpxTT+Yf-4$aT>D7 zo$o@PE(aeApxU$KTg3RT{n$j6ncEsv&%G|*i)721k$jvK(UvO=V1VtwthDxm6V5D*d)wC-UYy$Zh3cB@8*FM)tNpG!aTO zm#C=1E7?81!-evmdPmEpCT7r4W6f!dSjJyPGTX>gm))NA@v_+8RwEwTZ&Pkau^Cr>wb9{PmALY@*_XL^!=Wc=@n& zu1Ch|-LZ3J!h!u}qoaDS`fFe&$}P54tCPKwQ>;UW|(sJ`6o zsn+X=?z54Xf|BxiF7AnNRMc3FIzjFw=AkrhH@)-Lv;3-iCc+bfV+WSJFh$<45dD^> ze$OxH%Yr%6@Mg_t2gcH+Gb7`-QpT5se6>*51(mNK2FLpZ+7uBo&br9aCh{Z7wu={+ zFf%P`j4s1)SkZ#ebx~IW+)!@oy|E6|F`I!r=a>P~yh3>wTdIf?!GE`lVI)=WUoR%< z$=k$>5AC(y5N~tnk-wC@5&}TA7*TTm2U<-2J+pKujW@l49GeDDAxvNq&qO!KXjb8> z&xE7jEfIlR+SW>scEh382EFTb*7o%xH?;%myR|Mfa+a^20g2 zRX2C2MR5YjrMNG`iW#BjmoUQbw41aoe1UYu9^+4PG zbyBjvQk0>}D~jUUPMpznR-6VSG#u?h(_ zaYER(jTn2t)F>o+dGthyav+i&zWGmf6`)6xw8=etRA=vx!F}6t|G=w^*h_lM+?Y9m z13!bkWPnS|{s;4NXmeJ%jtR;IPmxF_VA`xKKPQi}$(IeZ2nyYrjaJ$Pi+HRwHU&cMGy^)?a=C6}7%g~k1F%Vcs|$d+XJfnxXF3AGawA;ArmlOc0@9S z#_ar7pV@Jl(JDL-O!Cd_O9FGGL;DSFsViHY-75;ro zG5BV@nt2jPC5`JV|CYO$Oj)AFoesJx-DBP`{mjm9e=|6*&ir`Xo634p&FelvZUxga zP)gzXoV+rIwXBV09G_&snZI>(MW4jj-0L9Q2^9uZm1xBRu259RLO@JG9Ls=lt|^6vu#?V7?@q z?+m=oZcwU+|IO7*SlTFGoKCZ?PVtUu!L4o*qaCKqpJ5LyIqwQ?qF;H#Cg_2c?3b%~85tiEL+ZURjy*_AZRXlNV z-X^l?MGNL*uz~kw0UaJ_mRlq}d5ZbF=!L>$Azzo8K%Z!)n7TI}QL~!l%h-HNF?|9! zk`LL&`6LE}rJAN`jnuoGGwfk>6&;#loxHmz*b-D#t7tLXmUp->Igf;&5iRYQ)E)cZ zoesv_GWIm2xkv$WlsMUU>M3_eRuveXqX7)G0K2z%z;(c*e9 zK#>a#8B6~%ur_pk`CL-2j|!NRd$nGkCxIGVz5tf968BkNmN~L=Pa5frVM~TNju=^e z6@jq9?7mhWv1meSz|H-ein5j~@hs`DmH`tl5AamRk8=tFGcI5V zH?z4pC(wEf$qNRkRvH6U+@z@^aLeLSM6FX^MvX7ScUuBu8+|!Qpbye4Q6eI2xA{ju zA<-8nGcWBT0;A073kSHKq)_4asQkcgW$ZsTad6d=$e(#z$l$z#r!Inl<&Z$-Fbc#a z%@y!~Tni_nq$Vjw^8088LN?&2(K_8C;>b#fp)HM%Ob?QM%aCY+EY_Qr?FU`88pOep z6w?a?Oz{-Z7?E8gL-5~fq_sF#^MF0O1Vn?TD(}CQiFf;Tgtf@s{dsK9kHJwJqJW;ig z?b^sGl**w{^lWTuHCR?5?zhn$6WP3Ci7Uk#w9XGdsjUZVn@EKIA&}|y8vAX!*E3JpQPu;*ZjScYGBO$Px=Z|ZDdfj&!P;NpvYz>wT;+BUK z5;Tdnt4Yiy7cX#5R|=93bF(-Ul-0z0erO%gP|8u7Q0DrR;JjR*h-7r-&`+1BmDnmr zQaG3Rl$Ywhg-Du}Z;$rnZfTJFMVhWIlh<;( z_{x0&QeV*W8E;y?=F6VMzNL05d}(fcX}y9Vu^4+~R_db@Ly24;1&ZdLS^$HL@pdG- zN87z0`N~u8%!=LGX&#bu9|R9V;tq$~ws1h>igW-b5ZGSIfXKG4hBmZu0*1L$9h4-3 z-W8LHoCM$Jqe1;&k%Lha@7<%^lGPrORt|y^Fc@okECBOk^C`q7k* zU*Y&&Xa$e^w8p-OVF%w|Vu#P2i^vqz?Qnu}bE@FxWc~lh*cD=GebGUVs}O%_f(CgJ zUOsRRi355oYc`Q{=fcyJ`Q-@l?rQ#`Orxk6!ZiX zjo|;cuIMpeNRq9wUp5Bg`8f*UvXNU-$T%S@L~V3C-;s zp?uE%0>u0ji;aGbXZXMH$Sn4iH4Kv%(smJBQ`h&&`6wz%tzxP{37tv9U(xs{e!Hr5 z$jVJ`xmC)q%pKS$(6jE}xuab1kr|t)uEMp!NC)6{_1~b-oP%tyuQSwFD6JU0w$i~6 zND+=q4rT~Eu?8E8`|W_p@{_w6>W|*}F!C3#?JTYbO#PV~;YWsmkrrqtT9lvT-D7m5 z`z&I_a8BQa6?v-WoB&x%Kx)F(5;ff*?{l#lWW9+$7IAuRvwniQH9@1{f-HgWUX&Ah z9?BZ8TlcS~P1C?aifF>k{utI-9BQkpwy#>*HqG9y|A-CP7lAHx0&Mw(!E8Q(oKXwr z!~N3y9d&CEH}YG%WPWARl(M4)PzB%QWv~;b{Xq6&hAW20@U~R4 z&4;zafV9jM5ymn=-3?aS&Y{VDx=*NfGlUjBrj$^fYN*EN)$N8-yAfm(f;r?C9MfLa zef$~V6#>qP%y*1yn7I75;)5$?4;}|jikAnX;by~a7k`v=Onl?TqR84PsZcIAig|QP z*rr>#@_nFK+Ma~8LME^v?Ht@~0S$v?>}}3WCT9F)h|GX$_q_wE@P18qyGFKC5h#`H zvhy{vvyrYolY74O5rAf#d?+>>QjB`sl7=bcQh`ST>IMXPnxN0EQGm_?C5N{-f;7=H zc@t4$&)eC#Q`7v>{Ti8Gs?>$>NUQZ|ikFSwtBNknp#tOBvnb$!S&mi$C@qH8t}KqY?V@VfqSO=a}q8 z$3qbB#7{F6_nVE~1^c`;We?OzG9|35de2*_*&GI^Ohbe^O7fODSM6!A>bq%WSu0uA z3gFtExQTkWZ5rgHPQz`}6%rf4bU_R574H>qF(_doCXGu62spK^(-md1%<&hW`g-6( z^P|(4(}@E?)zMEZ&s5hr5p@G+f5aG&9^0iM(z4N70Cjw7Bx)BqwsWcEtW#*gW;gFh=6G9J~Nn4j0?Vk7QP>JEAlo_Y3MJE%0TLa6aQ zl-bPY;z49UQz+16{{k1ZYlMVd*;XxNr`L`Z>wio%2g8*dNryTucubMoTL3I7goNnx z^qD>*@~sSD>>A|RZvDK1w_EGIXpXH-A+?tWBB5u8*Xo+iG%!k^8rm-?o{c$$|Mbl% ztS^3l*7#VbXbT-aLzLK;f^KWSLGHdj(&H*SP2V$M>|ULe2HSFyorUE=a>oqIJaZc?w@j zHb={M~(MLSN(G@5cvSEQ?fCbCU4$SwOOi~1JT z84>Ho@ANY*UwL3UMee_|;F6y1LEfj%?3SJ2i!J609L3bIVawf?7AqhsPAdz?0e)Q2 z99b|ac-U4==-gn{khEYG37pAPaYMPE?x5k)(GPwtiq2`E6vt;$h&{=3)Og9Pj88Nf z1XB%GghgBIkgZGubd0_x@uh|Rr2Y@C$IUhGu)S#B+Ww&3ouLtki)>FH&p_Eeia@cd zJvk)lyrwG}{{ZFXiwP}RHHuB;u2s{yx;v-KyzaAP=0yuBBkaEM;M?jGGutbvQ!s3R zQ;(;Fi-1JWMVbN$^yKDmETvw}9Id7|dU|I>vRvqM2?aGGu9I%g$jRKxwM;hqUjQ(E=_bNZsKN_TW{3rPvz8)0V$t`c2Ll zLR&sa062Dug_|`%TzzM`4{7$ElxSo%M?EJiP>Wq-`ytj`7- zj7%%Sgref@=5p_J6YMfPf^x)T-g8du{^$vd>-Km)j^;F;CpSH1E;L zvwx4ggcYEIH~|uchNLIVY}!a0Q)9xp_+k!d z#b)INxUVU`r}p^7leF`2D|X~y#xd}pbrF{;jTSc9#Z-d7099gxe9tGrSA+1t&kFPu0a&Jz z6KHe;@8Nv(#S!VrVI(MK8sW%Cnn9&lamYP()Ijm(I>X_)uPClDi$=-Eg>jhFlSR-| z{a(;%5!EL+P_uFAR4uW8^>oMNs!LM1D{%v}SN!}{a^++2=7j3ItCZ{^c_CeZD!jmS zMaEGppVTeN;DwdEm;~{R{GlN5R<>XUb-DDd`4vbbL2IrB@lZBZ=wZWEpR-UyXCb4R zTq_RmN5I0%`4pma*iq~0^QCoRwLCY*gly-##r5*voTwjwBXWoUB}c!^e$okaX}Hd7 z!OD8RlT$;;pZ;K`Z=;*P~$-x2GA&CN79?&ttT zm2Q-1v1cBP{ea<7Gzd|Aq6?WdHGV`d=C*RVCXFJ}41veh132@CykgBG@_$W9ZyXOO zs7ts8>3BeouDo~KmzWVEiUCQUET8BE7}#1I4;n#-#7v?b5XTUsw?1h0XRbVvJZQUZ zC07%wc8oJwd$(GVgR^8(7*a0DiF-a3bd#O%{s}icNGBa_pEx=tw*Ju-7X9f27iPzrjwl zvs`$7Grr$90cy&g2jP?~uY;iJo6uTR7g2ES37yKefiFo?B^l1v`P7u%Ic2`HWJK&e z%k(4Ku|bGATU}7Sx${z4%Cj}o7B74o#eu(YLNX^@fLVP7CQbNVdE{(|A(8 zafkggf6yIT&ikA`NGX+z+eNb>PWJ9H2U7SuM-6-hCD0fU1Ra4;DI!R3&!&Yta!s9_A z!{bUBUj}S@0^|`!SLJ6mRGB$LSplgV33Kq=MtZZI%5tODO2B9rbn|R<%6{e#Ua}u! zdw0+UJM?b?rxL|YX~^5`sg}^=UdrGSD;l43*XnLGC_X&Anpv@H`ut|wZR);@nbpAT zkQGDTwvMFZmdR&|FNRbXYTuHThNW-QYuZT`zntsN{vImholyZ!4ra0qH!DKcxkN_$(NV&4nZM`Ewd_6=bY>+vbw`BP?9wGy}k`4z#g=ok@0+uQHi>yfBt z@^wYc4v-$l-VVxevSwOD)9YEsvl{P!!|w3DUi-tMvco{clTxDy;0Yd)6_~AVn#V)w z58VWQx&ryS&U{~%BY$>`0ag=rdLYS=kK^ueqEBq32RgRvl&V;ut~$Fww(I}We%SMu z_CrIr;yfSq~PgV-b z*YFv3y8qVG0-wdl2ixJh>hd%|Mfk1bog4vv4rg7_2;B6BU_9Bjp&!AxP*-c(D+mUu z1Zo&09{ihEs0gdx@e|f^d#wp+*lyqR$OuITG^%eA)G2fs=qzND>i>hp4~)j8#P%H` z_mS+U>{*8oYX97Mz zvHPdW{J@Q7KV3TXd`aJAX+EBUKS;y!$A|e_z`*#ZFFyoRoW|GJ#BftM#$0FK4(?rS z>6Xp_3RK`lLd=}w-2j95#F(kC2JvJy*iVCoJ?EXff^v2oH*ARtRzpp9Nsf^~X$%JrGrpe}y0q1m1=(Io6n zS@e5YBgha9JKXl5nVqm^_OY_ZjGFcfuE)p^sH5a;md2`>T4SZw6tR?tB_S_xXeWvF z5UgYWDyDubZJtoc3m)Z#VDLZpFK=orqOkhT@9)=Ce1baR;o&Bb37UiG8Q6hYB~5JQaBhMd%x_xcF>L5J9IitROula**F!2pY7iIT{9L$ zte&7drvb?yzSNMS_7-{4*#hjG$hfyi55=dC#p6F>$d+CZMF^U=+Y(>WT$ppkKPVovV1v$Ki}E5AA}Htl&!Qg0EUS#@!0`L|!(LyVM=4Xs z&sIj}1J-qOKcrR4XfyWi;em*x?kDebcpTv>;CngG)NZhhIWUE*KNv(pZj=0D`F*u3 zC!UAq2@h6tJ!a&}OlPdtR{l?c4J{L{fP^vsTu1&pm4XA+!3L=uC4$Z5NF*yhI}n)6-3_BMX#t!@BNu2v=QX^qwyQ zBgc6o7yPca7so_dC@GSC!u>P)zU^UnY-jm8Ajk{Sx8-b_ybn-As51)DBXWPI$9X<$ zvuX&rxQgoZ))#|Rn!s7qSeIi#zvD*yPauv1MyIUM%$iMp_++yzuIUC+1ap_dH!Y>n zK`r^V&}Ql?=?iw$Lf_nQ{o4S}i7+o)>7Yq%ceu$1V5iSQ*RZmsLuRA?l1jFVPmo4dXmFIzjvfojJ7u zqoV-d)_n=kK>T5tyCsNEfr}mKUVC{vuuRK4QHxoAXO*F^q%gEhCHc)DH}@OZ+4!nJ z)gRC9DudJ*35xl~r!+TEsH@Q&b~{?Qrt{7gFGsV|egj^)x$+O=4*;MeW zOo6!Ck>p190yMLwZj%q*N!R#Jl(ZTB4Rs(4p2{IQERBCHdxhC~7g;1_)b{66{ zeS%b*K%{t@(DJ^DB!&UmS;AG17cb&D%z|kBz~vpIK|9IV!A69Q-{P$$W+025vahwt z)P9o^9-<6Oro32o)Oze_YpFNU{Lhw0;*Rfoor2y%{s-Jb@VEE^*Wega90CI4T(EQPn?ko&nVHipaoQzSG9| zPH*7%5IJvD7x7Ac2B*$0?}+koV+{lu9U+1+9~0HXJt03~-D2pFmhK;eD&Qc%VRygiLL7d z8`o9^#I6BpH{;8p$Sh`%17^Vtx)CHcCXkAbA{yO_gMILuMOTc729^)76XPq_gRgf4_MzM z0PizPh)3R8{1hVA8Mo^Ms}rM9-(9`JF$Gxn_Yvc%pjY3d1!i+{XO2!tmceL!RhP1~ zuXF+p6-#~xM$xBK!I$(OW4>|3?9~lA%s0=gv7TBoEoa+Pf;xGwY?17Zbn*N48mEiJ z;)t3VTzRM@RDyZ;`~w4Ry9sPKvPEi#xnnk9c0QmVep z@}?rz2VmZOa)i^hHwwO^t(j$RWUeJh4ee|n`zk+>~|so_BJ(<5j2n7D-M3n zV((Mbe8U@+yZg?E8L2E2N|3+%kYp-ta=ae9@Vyl!qsHTig)ewPDr&yDwOng1&cDzk zLxzmP3+DP@!2Nib$L2lL1T?AnTUSWW=th=(fF=inYjnbZdZ6TcXu`};y6F>kV?SvK zctK1^fLVM7dsA4vaMg>&SDMB4>&|$b)mA34a0eerT_dGO^D4LMX+`tmR|<`vhO9}9 z1Q#!Y^T$Bv?@WdbdX2MHCS0#T%M!bTc%PrqvARwzPJatZ*2ERg1NKT6lRbOet$pf=cl zdLZ&9WRT4)qzSX^@_lYg!qcsSo+%q6B!_N)iBH8hM8LvacxS@J71AxTb+)RPEa*Rp z|5;S2M|!5#j|%2`O?|jA`lAu%?JjD!YQXk0%Xjlmx;Lmj{!%&l-vFD{%-E0&A?uZ# zs{_%DB*M^W>UCbgOXIVAEe)?HIp0-(n-wjKack!$uA0CU17mI!G7Z%$#sSm}uxT+VY}3^l zc51!r@WJDT1@Z$HGi^L8;*h{4DtPyjoKtzsui_|iuzFLl7Seq3m)?!;oF9~fdQft% z`!ztE2l(=_-l$+un}?12<*`>~&Si~gW7Z$+2>HO*)@5cC6#>+sMzCXN^j^_>oz3bz z>*9S$hFPc}k<%B?Q`|4fd2J;oy|XzX1GCbNuLR=vq0YJ~@3cnE3g{YSkEJg{hWHe| z<-~iubabPnd#g(G-2`TP9ZpCArLHq{b(S}*Qm-g?Bn)1mY0CW$;E9QT}EA~UYqPsLvlwC)* zBI`EhFI{;MyLnr0S=$W{O$~u2GpxdPc!vSmen?fM<*_st>KOCTg@S;FH8X@QTwToB z$?r`ihcp(uP_l#uWV3PUayqxezhUD05%f(~R3$V|Yno5ofVcy0>ZD#gzGeSWfy{o%Z}cV7dBm|Ks@dadRY^t8J)7i?8gU2Vkm0!v!WCOvo%f3v>xqxq)UIma}ah||**n;MN)G9B? zs+_Z>ie^PZoM2U63w&8?wIID%?OlVv-+DWiG3fb7AD^+*IA#SXAvt zq%mFRQ#NVoYHZK05HR@V?gYAnUN=~~2JcSLvUU5$B~t*@+Ocgw42#O;D29oe!FB`) z$T{tyh4wlC;L&i1`^$i>OAFtAvG{|$)P$U*qo)q{ocM@q@zNa}7X(!0tq+Z{wMqfh zBb|vlWl?3#vrUYiC%v*cx}cP zqY4eMe*+TPaPWZo+` zwg1hvitbNghyZOYYS~0NL638Yaw;Gn1p*7dt1L_4VOMNpkX~L&m?Y;S8ZE_d?b-hT z$=pW_EAU+rN=vI8vKySNlj+3E4MQHm4N*(t!X{G47Vz0YJu4dGXhDDQwSA4!^5!JLWvQ$ zT~Wag6#+SYn&pbj{K`|l4>ah98SsHwa)yG z{<-P-Cpv{mn97}_Q*?pjO2_rP**B?+AZ}FYGdEgH2sWr&lz20KFutD>-NmyNz3JI0 z!k4DSGK*|m$kK0!rAvtT%lTS_7*K+QT(|x07Q1_Dq;AG|u^a2jLcYI+SkHNZ^WUgdK2(SkveB>!qRp9HC`hA%^w|*TAZQ;4lg-SF8kCF@WTl z!;Z+RMCQo8@!O@(O?oU(T0J9+FIiw0;!wQxf{=}=`Cx~vxp}ir>ym6CGLcV#ww$?~ z7&15AnSmDhY6HfU`$JI9I4GavK4P8K21U_--n=mW;Z0-&pIS>kIpqj9V=3A6v)?_O~`5xV81 zo{*AkhrtH?(Kz8Q^D1!SvFW*A+a-6MlD$;hj7Ky?fx-OUJQF>@_K*)v@qcK;yC~0& zR`IN1`f+d!y=86?4M740UrfP3DL_ddjIk#?E3khOj#>#8g@B_1uEn9B=Lloy+xq&c zW(%d?hHc`wOEI5dCv;GVD;;HRA7cmB?FB&L#;Dz_xF@m+>2LizdFu@GM;sXEr)wkj zKkD9PV)+#07F8l2HLK-qrJcUj6GBvbb}aRTWg`-V`>+N+Tvziod#UoGSkbiT_O@dF z=XA`qO)+OTW!pKwV?0qjw;EyiJ-q$kFoao@Ua%6V-Vm?lwgg*016(#T?gU+rm;wDM zz||-$WiGI@7eAHq$??5!{C!$%-R_E(m<;dhyw}-Ko&-oz{Ksg;V-}vgscEyxq~BVjmKnN@ zGAO~c;e@7IaQQ3<0w6}2~QmSKp|z@h>-^$z&8;btNAvlA^h~!AZLt0 zYP-3~3s(h+Gt(4G0hBYiiMo&Xr-E^W?F>{U65ke!iVC)#LD(DH29vzCPU04zHLPQ+ zJ(jAD#&ef9co~W{8C3f~I;YDLW=A)Jqw>~Qc7i|p zeu9VZA1PAS7K(?j2&QbNo)cFtj~7|Ln3O5n6m{3uvq&znkHHC9CSXHrqxBY5BImnJ zZ6udl6uRVPdmawT5e76`PS#szh7!6w2G^u=TU-L%I)j@I*yUS;s?-^cEZ1A{P_yEm zyGkB5BAtA%9_P|%!tc@o3*QuwVy4pKY;IeN5H(|>p{ez2>UIjimdk`G$gJ^AW~oG@@zR zlwe!`A7#>CY{0Nfx>+6HVp)jcU!-htKq)9uHEGb4*erM;-;LEHCVZL?-f4b##m`<52W4wqCBzp#{NEAlV z91dRhr#6f$_ysujqc$a%@chSBJP-KwJN^fC0-}x}enx?SyGt}UjOEf{V_f&xIijF` z)@{MP7}ut=XF*`lNVWVm+NA$`yG4OrdSg9~Jw8?eD{38l*^t}~tjA!sIGp9oNNWj+ z843r(0qbHl-0(DXvPSx3MF;MvG9rqrNoO)6U$A0PMYhch59h7f0hyy$Lb^hL>4s1I zT_NGjW0j7EXni6&Kdib+Pg@q04v3g;%ZPYz#-y4!7mxg*P5r!%>&O}$1OYzt)42%; zaxa|zN!N*=1L#cT1p8E);C=l|{~pbF|KV!+2icacMM@Jh$S`W*e)!5XXzv03oVkTO z-{wbtu`@Y>(6Tbiqe2urU;-cS?Wt0*q53p zPru>eZtY6))l_tKbMuOoR^hsi12@Hyso>fbC(poV5|Ilk;Mb8W2Azb&^Y?0Ruo&=} zvu6e7wipfgu782-{3a-uJImwZ1(&9MXihWMH3BzPU$NyZa*ok-odT=)9rJ1$Gxo|Q zE$NJ_6?A*WC*7e#v}U<$-b`*tO~keZGN4B7Sd|F{r*>S0Uwva%aW4f;p=8O8QAiHr zsG(nL`V^&0v~)Lnc{b%RB`_9+KbVO%QJpM8XAYMkOL=a5i}hZZ-TPw!YxGb^s0Pej z>GOwnBOU7~q<98+@iQJzRDtjN@r#G*sB!31q6EiTyl{JZUwj!+DUa?lulL326Q@Ku z;He-NRR-QK!zyQbjfJ%_+ihr0LEYU2zi^_8yv3o;e3fT-wy*Qtc}m^T^(dmIbUYO? z9P+a$LJfCZm_!sO+2xmO=NY?ljU~OSjv&-X5z{cW5xwgk~;UxNAlOtmcHRQ%B7ie2c)?HJ?nfX^*d6g=>1m+v=86vP9@v+ zYH`DLcqt2ts8gBadE~+f(lDax4is_#U4Rz+yE?!4&?AVe(o2RgSra_iI27bg^}=uW ziU7#lbq0*3rfp~5l4st=hc6jIk%Fe@7xy}sI0(nbgvi#?d&B%UkXrDIChW?s^;|;H z+)TdYGDPEvltFQf_;yw1FAVgVk(E?V6*RT!zlkI-o?7l%p|Gy(WqUDOS?Zv!nj2EX z!(HcA9_DeV02wBM?>-9!bp}>Xcb!{$0QU02#V`)`6xt@GI7!<9xF+tPE9OOc(%Zp^W zk!vPbX5p4DhW8G)qCn3OrWvgh`Cvs!Z4zzrVMgN#jJjI+Id`B{q!SOXIB8ao`pT9p zfQRM*TlzSff0+O)h>z0VkbvejogTM9a{eEg0R%y^Qp5s_ccF_)C~n32Yg9&pnpTq^ zTcaVcq>K44qu^|GX|bd(lun1i!UugT?4fau>-zFS{Vcsk?r&~X{VT6`OFOoHDRE?~ zPY?iV5?q}jZ|fC}UIt_3Z@?*lmp#ktn|&D$Kw`OdvASHA1q?Ge@4>1LfRM=DXo!xK z+~5inb9*WnHLHqCcib;}pZd!6tSmVgL;$(S2CRtGke~H0FWYAe{;ywzOa3QL5pbB- zxYTJ=5FvCmEf3I(IthQG?ul2D7EPA>e3`@kUyxP?2~~``jqQpc$ACPvUmAK*cSiCe(2nr?4x zv)nhX!F0k@Jhxvtoa7K27{MWp*7r*E9<6%YuLwsEKfa_?-U$v@AyB$3-B zJdp1FccOw+`SBmskzh{*)=1ljT4PM6+t#G3OcsG%fxYs=odQZ}AdHd~QVWGFhQ7jH z@2COQX7HR06w81)SpY|jrdV6N8ezE;WxHfxSo;;~QVIuEfgP)w{*yow4GScBQsC9= z&WWY5w!HZ0t62jMz|Zs8$HdeF)tNNxeO9l~7(RJTr?l*Q<@Xiz!m4vhmrIAvUuJTP zF$1$p=g)AA4%G#>OnDN=+2I>HpCiM(Apsj^<&5AI*r%z&!(hw; zMq}_{t3*69H+arBtQ=WS6lS_xKFwNMg*JnCOZ$BSmib$}2AVn4aFi}Bp_kB5oG1rS z2PoVm2kAPCw{}1Z$w15UB;X%j!P-0{ysWVR+CAw!c=tR4y0c@a_I?^&;;GOu^&>O& zsNF0p%X7x(ZvK{i6Sv8+Xb&nU1u2{}FgSei%{|*Wd)i zk>xU?TtK#Zs`I-gnXd-4h4tr%+WW~og^@<(3JhS_Ra}sKuxA7x*!S^bOpgEa3mlwK z$EowSYo*DcS+WOGJ*`=;>mmFHR0iXr0m@)-ZpyR^7ZB1H^us|7p4syzW~g}*TcEOT zw;^~6{sm1eYxeY$BV?CYdHSo$TS`aFTCwv0J-r!zhM?&srF5k9G3tTzPkmI*_Z54C z0DRP6wP0F0mSW2sas`ecc~2I$a9iB4^YNcMZ~EM03Y|UG(lk*QH`!miUk~3?F7Q1C z3{BC5xOty0gCj`I%Bw@ z^V&rEwh^vua45@R?zoyDm^8fsr*f?nvOhSCvTV87^ zDq?nCYY(8yezsf~LS~rHTyzV}>U<)x*~y$R)+JpJ3_*Brf%u<eC`z5mhH#}x^pTs zEtg_+ud$)dca>)~cj{qS4U$694p8u6;7hh#p;VeYips5>eKH-HYqGM*H-2)^H4xB zi}1oe2#Vc{X75%&F-CbZwU9LCfk9|nf!H&=nIaQFX{>jFv?sC{!Nn@KqT zzsM1}OtL$orgLJ7xJr0qR1YDpblAHo!kGK3?;Z&2{GIVKR4F%VM8qpjEO|hgc+;gJ z2{n83>dhGb+lu2OKd@e)+$hFdHIl(ZSUf3WiF7f;z_vUP34tkLHjv6~pv(gX)AISiBO#umQ2{bDPkR;3NH2l{o z$4;Fpg5`(!J}pkZMd+w&_|H++H^DsgydG3vrI)XTUpgr1EqJBTV3{7vVB}7|k%X33 z+&DhmRQG1tDW=lMR-i}Bpe*x%Red6AzL5g=@$aK363x}nm%VL2fm`)gFcsb(au%8b z$8a-|9`E&)r>dV+m>cW^lze+4DPi=FiOi6DpN7By`}Kc2CRLjVoBd--pR&f8W%3lh z$D#Z_iKLKrQ@0W0|FZik)PEKPsdJWAkQ%D?Xcp0Qj=DU+Y_<*N&{7#WffrQsx?6X# zeCO%jWc0mQoR#3GBrvPd4ajhR^C*zk+s`x+1hv>y8hlQ^Bw_ z2MFH)M`~6oF@Py7B6kPJ{K;&8fV_Vf@Cs!3W;Y+$@^suX5jaX*+{=>;7_Z&SxuHc@ z5jUmhG>`f(B(<)s8Vom@SCq2gkX=bWXewk}+v*=(ArKuuB?Awl2C&lTD#T$oAu8zU zRPHZHpBMF&O3|{a+-xJwO>e5XX9<}Z0@y6edDC<~pofRJtPiEa!^Mvi5P;kR%*os= z8$uq)BmR%b4~z;wk8}A_Q5N(L`158<@%qAynT-F*aCbc4onP zf$2Qn>LHhWvGJ~VO6OX8@}Vt~w>e!7@~P2qKJ|db;;l5Zg(6Btbrmq5yw#oNecP}b zVBgpLje2AdX7oMyHY1_hRL@zxAc3o zXFZXG?Uz1umplwXRox58@<#gi81DqPUz5R6lEiM>I6k`T0(pU?V_%XSBp%*tEj_lm zIm``qD{qF?1||9*S0hX5+L^rOGf~v|1yS?`!xd(T+?ZCIW;*fKBQ4DRtV(&X@>Pm& z8LMs%r4-kE-&Dmw?#jhHFTO7WDTF@Tj1)x6DY<6BLA`qa2+L?-fL592iHjRHXx$mjcO11=v&;+O80hq^{BN4QCAQ$oG=_^{8aVxe ze`fF}n3doJnf&K;m2_U%RHv%5EGdsB=BuxsfC@{>dIX$1H-K6%zLNo#t)e*{aUF#Y#Wt!5la-UzE`DxIje?fm=%YJtOnyJ?11I82T01R+ppX*Vwos;@Yg${4um zdl-*IE*@>-WI`99PMFP__mZDD8l)M6uoUd2EZU%RFP6fShC!N1PY5Zda(7)*fe#%N z1!c$K%FC(+jIj1Gh26PKk#$8!#rh>Wh1cY525`j9N~Bn zY`ZM`h`S!lo43+^ug$K*6XFj2A#yCqg!u)5_eZc*z!4NR|H4A7Y95*UoWjP=DHNHD zta1}HDPnDU+;W0}onHksB?Yn9JxW%tZY39hP_zUL4GTYkMpOGoxh)&CT2^Xy3Rlew zQO*>Q_rI%nzkQ`HMVzu;~nn6D#X1?0_+C?y4MtV=P^4Ij_sbO0hRvpJM5?acW7 z{SiWs8NpicLpYcW{yXo)K3&Df{AF61u+a%@V4UeGI>1`Ubz;bx9ytwSPtLzvYh(7e zRC%y&m_Iw73LnDPpk@7{_22D4*v}$}A*#+0BbfGDdna|BM`rD}unkrFEq zYyCff#vMfY%us(}De->+jp{~dS0Kxu2y%x&qd5~(=dkx0W1UC#iBg2%@0nPjF=z2e zDFSHkAqCXPBBQV}$H|96dSl%7x6`^rx^;~B=;OY!y`|j*4{7wcdH-sca=Bc>)+2Qm zQns7JV#4AiCgZu20TTo!`d31P_VBUllKqg+1Gi!-vrkhoL}aFIfjBl0g5(Dc(9Odu zR(3pYrZB_wVQa{7z=J_%_fSQWpP@6e=G?(sq0Zni;$gTA^vuNB<1Rq&sRvQP+jqVc zwz!ymc$DmK@vo8w?u~4F|LB1~j%RTIe$>b+M8N>^_F{0q zM`npzcC00nu221=f*)GRExp{X*9+bD7?iY8I26B=_u!q>d!{s>kUgR8fl4xMHXCWT%CK4AP?U}pK|X~W!9Dey%)HeH!bwN zqOo!{@K7_{ARaEC0+M>Zr-Z$67+LntT*JzCqq=9WymdO9}F8;#QYt|Lh0g~rdwr|O>R`YdkCX+eS#XrbQ)Rpp8ybZ+sUf=6p> z3&rCabwZ$X;9h)kpjRom^yC(3y4#6v_7V|!s4$f6s#>l@M(a|Wk2xw0jR;t-4Y|5He~ zE)X8tnXV_3BJ9FQ<{Knb{zpv~iuP#-Qe@#!S4_u6!-})(mB_6x{dFY)Coj(BVK>QN z#FC?a+dvM1tRu#Px&5cc%08j}lWM=4&2 zlYz`XI=))I9WCbat)Kw zwCPfX_z>*3HCB)E<6L;!J?XVO%^`jX>O?7|a^oUrBNi5}xvrlTvdiC2+{q`1Y{NPg z$e}(>MCJNjKL7i;3qHnBQs1Mc|JLJ${Fo(AslG*Y#}dWpSCs9MvVoHX?YrcolOzu& zU|a6v{Ch-O7Go1Q`&2NUIjL{=2ZBlX6SgjNFBE+1d&|}0=utZ%JDMv z3EHvE$hbwMgwC5&NgkkIFD(M8JQ;nh0@S>uhuqET{K#9zob4;P`2v$fpOIsL75t1>|RP=e%`PJyt00>`Ux96GAqT9 zwXG|b9)*&D+Uv@#hhkX|hs%P3?}RqM2-P`i!d!o%b}DP-L@^lU0A0^^8{K@|f-g8( z*7zs2VBSTumG=NZ6;G+EC;%#0k@ZuVx!y#fX&Uf)i*J8k%}#O%pYZ};A@O1j!91FP z%cQ9FqeI)J;5qEXa8om(@ba&xvG!Z9f(um|XF}@vtQWLkUe_;PJoYywgX(_JGe^Ck zDaOSRqh#oL#nh&W;#hcIrXw$@ln!yz|1zl!&ZOo62P3JJ;gD)M*)xsfdqFVvnar~t zyH3!2t^X;sx?e{&vZab^HPd#AicpcB9y^K_d0(-e>hHHNV9oE-=*KFAjb<1vRI`OZ z$%+kHcD1=LL<_!Oo!{%<`ggS;X92MDJ!cga5%>J?e{IcMdFS*gkMov|=_p%M zemW!}h+ui=Ira&F2Nj*W*+jLHXKg~F0%^di8w}$+UWz}1R89YPnVcWKy=|BgS9Ib({##7A0p$y_5>gfOIid{s$g#|;&h5|-pC?dhCT6%*dX)Id$tX@}cJbqzj1s z?-r+TTXR|ClAE~uloX-#>)`4pmyyN1ENat$WQm5NtvtErrXv)bh<@bj285d5Lj`#d z8~+JI28DGLTOD_PkbB{ufPI9yNERzhotO@SoDN&`1m({B%mPOdS~wq4+;K!jmDKqO zOE;u;yOK%pE=HVXt2qK^s~^w@b}3mMWiVwOOuu)rAP&{N)7!4IYs!&0Pqq7c+vQ~^ zmt5$Jy2;VXkQq10bYrefb+-`0+r~HIIac3X{SzBobdyzH&c93ym}=-b)0s~_X<`pl zpl*l-oQ+17$3SH5+&2f#6xtZ}5BqoKzI`*saXUCMgrMzH8y_m705n}a0ISn`rc6R0%)Ga*ZOs@ z(OGfe{}guZQB9U%JhOn(m}xbXfJ2;*^Wa~I_(o`5@49%p1 zHBTjq0y~O^A=@+t!*Q2$wi?QS$rd0?nm8^K#<+ZpZLH_rs7@X`?VtUz_q#mbw$ z^ZYJ$r1U7Nbv$MUw0m#z12ZJbjn$VkMC8q0$yA6Urd(YR4r&)AqYi&uWfZU~BkEgH zCDG?}jepcJc0OYMz#Xrorfg#nekPtZcArq@?JZPw9jpc-0xF3^3iMy@$;<0ZtV-cg zX7ZlVmC-$F37?ZfGIRN!_RwgV`Np1sJBbJQ^tj+u^2qfpb2 zPMz%K9r$idIkX)jq>A8=^hQDETW55Q3q?t6(8^vE)3--Xr2OUrFzYw2v#76CixjkPT>t@!X7q4<#3>hC?gK#?ePj3V;)G+3Mwr$Vwki(xDkC}s zN+|6Rcn)KR%SS(oHOyFpg4Icp>E4R17f*a~{GIVWvttg1B_cqewb1o_T*#i}oCs#b zWeK#}G@Os5$Yex~28#2lLdjVL7?xOhtyiuyaZ~j{I%XLcr4cuoO zp)M()?*aE-zg##y%0Fn&6$>(xZ?NePCkDRJl4Xypl&$g*DrZL@n4EZ5XN8^jyqNtf zrN~mTgbA}lr2PItmH;$@f4m#N!Z!va(ZcK@zjK!?V|}OgjJ`+;Iw{m78iJI=eB~I% zFt}^GSG$W*bR8i+vEKHw{mz|qXKBx?LS~{*#@j$geM4V%3+mu~tkw*|AwSvCsjt`0 z?faG4cr+&=(dI@K3n_JJjT^|Tngabg3nxnHNzWO}-C;FR@=IzYolC1K%KKRkFYUz3 ztB6yvR%E|&#=s3_8_O zZ1K@a>llHhhr=`iH>i^ux3}g5&kKA<8I?J9?hrZVx{ujtg+~d(9^SR zQ_fmEl!c6yYX=Pbu10)1vKWymQ-B#T(Qtn$c}%i&{go=mWEXfQ4YOdn3yk`xp@cI{ z4eaQE+4TC#<4e`p?lfuC@uaz232xezU#I*WInP_B$Lncvnw}AW{n7sZ%_RskG1bsn zSv!hDf`hC3+9Rb%klJRbCz(k_CgC?DA#JxP3=a%T+hrWBB$%zGMfs?4N7QBH4Q58)F{%+awl}n=ggNurYo|=-YQ@kn%YF%tJe6L!^5F!~ z2#RrRay*b8w)m@kExgV%`l?01rG3GLFX@>U<3!NBTHxQd2|Q2$BXX;zv!P2-D^%G{0-nAwR{PCjH5l^*9HnV|2m050dr}@0+pmY^c4$_zE}Lj zIdXgvi#SEX>l!q5l=;4}{>qa#qTnMg^&qGlGo3bG>Cn?wz-^#09G_sfg^8Q~V+9f) lqS#vze`{p8c=P^~e*#0(ddvU- literal 0 HcmV?d00001 diff --git a/docs/development/devtools/xacml-s3p.rst b/docs/development/devtools/xacml-s3p.rst index 64a3cfe8..57709ad0 100644 --- a/docs/development/devtools/xacml-s3p.rst +++ b/docs/development/devtools/xacml-s3p.rst @@ -13,15 +13,14 @@ Performance Test of Policy XACML PDP ************************************ The Performance test was executed by performing requests -against the Policy RESTful APIs residing on the XACML PDP installed on a Cloud based Virtual Machine. +against the Policy RESTful APIs. -VM Configuration: -- 16GB RAM -- 4 VCPU -- 40GB Disk +A default ONAP installation in the Policy tenant in UNH was used to run the tests. + +The Agent VMs in this lab have the following configuration: -ONAP was deployed using a K8s Configuration on the same VM. -Running jmeter and ONAP OOM on the same VM may adversely impact the performance of the XACML-PDP being tested. +- 16GB RAM +- 8 VCPU Summary ======= @@ -37,7 +36,7 @@ The Performance test was executed, and the result analysed, via: Note: the ports listed above correspond to port 6969 of the respective components. -The performance test, perf.jmx, runs the following, all in parallel: +The performance tests runs the following, all in parallel: - Healthcheck, 10 simultaneous threads - Statistics, 10 simultaneous threads @@ -59,39 +58,26 @@ the policies that it previously created. Results ======= -The test was run for 20 minutes at a time, for different numbers of users (i.e., -threads), with the following results: +The test was run for 20 minutes with 10 users (i.e., threads), with the following results: .. csv-table:: :header: "Number of Users", "Throughput (requests/second)", "Average Latency (ms)" - 10, 309.919, 5.83457 - 20, 2527.73, 22.2634 - 40, 3184.78, 35.1173 - 80, 3677.35, 60.2893 + 10, 4603, 2 + +.. image:: images/s3p-perf-xacml.png Stability Test of Policy XACML PDP ************************************ -The stability test was executed by performing requests -against the Policy RESTful APIs residing on the XACML PDP installed in the citycloud -lab. This was running on a kubernetes pod having the following configuration: - -- 16GB RAM -- 4 VCPU -- 40GB Disk - -The test was run via jmeter, which was installed on the same VM. -Running jmeter and ONAP OOM on the same VM may adversely impact the performance of the XACML-PDP being tested. -Due to the minimal nature of this setup, the K8S cluster became overloaded on a couple of occasions during the test. -This resulted in a small number of errors and a greater maximum transaction time than normal. +The stability test were executed in the same lab. The test was run via jmeter. Summary ======= -The stability test was performed on a default ONAP OOM installation in the city Cloud Lab environment. -JMeter was installed on the same VM to inject the traffic defined in the +The stability test was performed on a default ONAP OOM installation in the Policy tenant of the UNH lab. +JMeter injected the traffic defined in the `XACML PDP stability script `_ with the following command: @@ -134,9 +120,9 @@ The stability summary results were reported by JMeter with the following summary .. code-block:: bash - summary = 222450112 in 72:00:39 = 858.1/s Avg: 5 Min: 1 Max: 946942 Err: 17 (0.00%) + summary = 997436933 in 71:59:45 = 3848.4/s Avg: 0 Min: 0 Max: 1480 Err: 0 (0.00%) -The XACML PDP offered good performance with JMeter for the traffic mix described above, using 858 threads per second -to inject the traffic load. A small number of errors were encountered, and no significant CPU spikes were noted. -The average transaction time was 5ms. with a maximum of 946942ms. +The XACML PDP offered very good performance with JMeter for the traffic mix described above, using 3848 threads per second +to inject the traffic load. The average transaction time is insignificant. The maximum transaction time of 1480ms. +occured in the beginning of the run while the JVM was warming up. -- 2.16.6