From 7bdaeee4cd5debcca06e8352442bdfd55fe72053 Mon Sep 17 00:00:00 2001 From: gbucchino Date: Tue, 3 Feb 2026 09:31:54 +0100 Subject: [PATCH] Add x509 v1 --- audit/fips.c | 40 ++++++++++++++++++++++++++++++++++++++++ cryptodit | Bin 38368 -> 41672 bytes entropy_ebpf.o | Bin 8024 -> 8152 bytes 3 files changed, 40 insertions(+) diff --git a/audit/fips.c b/audit/fips.c index a22ada2..f56438e 100644 --- a/audit/fips.c +++ b/audit/fips.c @@ -343,7 +343,47 @@ static int check_exponent(const BIGNUM *e, char *buf, unsigned long *exponent){ * This function load X509 certificate for OpenSSL v1 */ static int fips_x509_v1(struct audit_fips *st_audit_fips, struct keyinfo *st_keyinfo, const char *pkey, const int to_stdout){ + struct rsa *rsa = (struct rsa*)malloc(sizeof(struct rsa*)); + if (rsa == NULL){ + if (DEBUG) + printf("Cannot malloc the structure\n"); + return COMMON_ERR_MALLOC; + } + memset(rsa, 0, sizeof(struct rsa*)); + + rsa->bio = BIO_new(BIO_s_file()); + if (BIO_read_filename(rsa->bio, pkey) == 0){ + printf("Failed to read BIO\n"); + return FIPS_ERR_READ_BIO; + } + + X509 *x = PEM_read_bio_X509(rsa->bio, NULL, 0, NULL); + if (x == NULL){ + printf("Failed to read the X509 certificate\n"); + clean_rsa_st(rsa); + return FIPS_ERR_LOAD_X509; + } + + EVP_PKEY *evp = X509_get_pubkey(x); + if (evp == NULL){ + printf("Failed to get public certificate\n"); + X509_free(x); + return FIPS_ERR_LOAD_RSA_KEY; + } + rsa->rsa = EVP_PKEY_get1_RSA(evp); + if (rsa->rsa == NULL){ + X509_free(x); + EVP_PKEY_free(evp); + return FIPS_ERR_LOAD_RSA_KEY; + } + + // We have the RSA key, we can audit it + audit_rsa_keys(rsa, st_audit_fips, st_keyinfo, pkey); + + X509_free(x); + EVP_PKEY_free(evp); + clean_rsa_st(rsa); return 0; } /* diff --git a/cryptodit b/cryptodit index 08a5f995aa0b7d88ca68dc3d3c36544b065aa3ec..ea28b1eb53f3358d14810fc4364b0ee0ed124f0b 100755 GIT binary patch literal 41672 zcmeHwdwf*Ywf{*%Bp{fepomq*2Nh955*{Lg2ExD~1R@ZNw%)@qGf74!Gt+rMVvWYe zw9FmT(%WKbr7iu{R(fk&TBSu=G+HIpS{tgZv{i4cSSKa+Mzn3}YwmZgz4w_thdJK< z?(hEb`-78DW}UV6T5GSh_IsZ_XYO#XT2@?CWT>mexW*uC_ho`oD-+7@l{Wyj#(ZNu zKBpQN7^eXr#Way#D*#f(b+kAimPvXEAjwUpn*#7df@~387JPZ0z!lWxIKPdO-v)P05Of7~If{+v6C&M{&WDGk6aC5=X(xq?rYRXj-z{m+;2w8JW-(WRhWu0_h(;Zh-HC`ftGweHn~|9_HSgOs~%v(RIQ z3#p)RDX8+h9&!|yfA*5$G}g-eoXTOp%s@ezy)i2k+%#{_tdM_ZC>Tz*&1{=LZ|1x? zmGMYr4Vyq>F8ouSTE4o`K(X`^O@`4Z?i9GvM`;sfI`Q8$IDgxji)yC6_R6O1=YRE% z&wc(M&mJHivYTXxhc415i=1(~Z@@qChAZe5XJ&6np z@qZUO3eg{O;J?6uz8nq~(({ai{;M7Iyyc+hKOE>o4)iw=*h2Okb>P3kf!}nXFLUsV z`pH81PIAcih=cwO4*c&p@IUFm{~ZVVEe`fCbFlwGhkQ3U==q}qow~z9@#%KZf5gH5 zryS^Ca%E&o0mC$#TO(mJp76#J zrYTqpGRA`8W^+@rsVNXM&1fVPGV&-*u|UAs6m2pin{EmCpehvc`tt})!LZ+K^+wGm zzqzU140~Ji1$?1MJfFf6(O9H8=55UrQ8d$=NO*lMdD%pwfw0*Wgll>Bg#%lSC96$; zaEsC4t~a;Ff{B2+DHt)=u3Ov?3vTfy0xJXU1~4-oyft7fS+T~91>l0a&TLq-V)c6X z91JIFS^{l`d+l1YIgl^|u~;O=BF%wtAO;oY=0Lki95*zW4J+L@5?eK8L3wWq*Z2cI zW5e94t5`gm+yr*YKyc<%aPD!lHPA|_%h#@HY+wn0pqavKNhGRFCZiB@rj5>eg=%nsKjkQn3#B zYBq&A+?G~~Hd{==&dV=X2oyjHzb_FB<@1nquB@yevuF9r8kbN^p(u|`;b`C_WjdKk zEcx}pvQUOggbt<7C62~IRm-Sbdt<|T8CQ6(#}{g;!upc2Edf!}P1D!rMZFArLsY$5 zy`fOVht?O2M|@XZWj4iq-f$CetO0zoHMV+#VFP*jTBAl2RcoV3v=O33+YMBYcpyO> zVPc6UQ6h{W4KM@&RKMufWYBNKqcAzqWQ5{@z-A*JmMGE_!PY>e$?t6^1-=$<3`U?g z@NG7IEt}0IZ!lzdeZD|EZZv_MFkm2>Iju^n=-wA=k0v67&SsSE<{7J2ELqa9%&e-c z!rDbc@=~hxl&f^)N@Gofd-b|?tIXNZP-QHKiaN8V@=EJ&_H65Rj&(OXcUx0A7d>Gy z{z|Y$E#W_cL?IgemtZ9&Qs}c7Yn#!MT4s!4ir^|S#xh;WDjDJy9J)@SU3``pr-P?R z<}(i5Mfl4}iO!nRS7VH!b=XGyuia8rZoq=Lq}{-Hnb9fn>lq(y^ho?h#!HPaOZ+2@ zk23BDP8a2QlT32~cU>OEGOomU$Vx9Yf-;@>&j|*{8^$=}aY=jdbN7J%bmM7>PvrEm z#`6+?h|^CqUY2-rN^lIteh4^SY9B(a|2t<0dV}0&Q1n_!FWWBC6eqtVG{b?w#YWRtq~YjhPmO6%3=C>ZNHtkK6>RKw`k=%;J+qZ)mjMjz1V z<28Clqo1MChc$Y+Mjz4W)E2DkGvbbXm0Mp-DAVZr{Ha2tpJge*zMn>?eGzrJH2Ne( z1e~tX&(`Qw8vPuNK3}8DEkRDL)#y_+evd{!PopoxjejlNo=_iOYu8vWGm zsR*2kz^MqFiomG|{J%ut&GHN0_H+%EdD5jXN3cBX?oAYD`#oJxl>Lm=X6IhlY8WT7 z(^dkMPc?|Yg;GuozMRcww=+%)u@i$wESwf#Ck7w0a9Vhs82o{S(}L^7;MXmj7Fs6; zKWE{zz&bH_r-jpG>%`#4Eu0oqCkDM1P7A3MgV$R)Euc;eF1B!5IGq@*ws2Z7ofy2( z!pAc{!NSjAyvV}K8Gqw_y1!fAm4|1F#r7VzJ~X+Z)1Eu0n-@ZZ8`GCsk=D;Y1c@L7z%@vicp778eT3#SDF z{I_sg7{GrErv(B0w{Thrz<&#;1pxfFaGLnTe+#DxKm50Fn&`uS3#SP_{I_tL*u#Gd zrwKj$w{V)s!+#5>2|UW*!fE1;^0#oBu%rCnQU2F5{<4MB1RefcI8DsqzlGC;9R6GQ zQpUe-;WROa{}xUYa`*V}Nn4PRu#=i2a@Hhh{5Ki`H=vf<-xc&QD4ugO;aHvDxP{;Cas(T4xVhX2xr zKWW1c+VFig{JS>%n>PF_HhhN-@3GepAKj{J)!^+!+FvEhdG?&{v^pL=>1{Q$#UcG7v^e5OV}H5U^Vmp*2FO;aj@D$g-~fJ- zjtXc)mcR9+`ZBvPs32#`qYF7h=xX<|+q%;3cYmHU_RgVNOo2VAgGVuiNbP$LpPtl? z!whFFLIy*=ZXFwZkEaz9y@x#%CTw0i)PIF8SBi*wQjOPk;v8Bv@hh+N5RPwH_g@$e`p z@T3v{n$$C%qThOYZZD&oL!PcfST}4L_N2BBdwOmy^K`v7;<@Z?&t?5ZN4j1fd2FyG z^;GKDp41^v>d2d(Zz75#e$VB?@kD9n>!=qpGc9&qLk+2pr#-1;FA91;3VLta{q!_? z){}C-K)0Q+G36e>ZP!3;%6+V>;{_vG-PJLG3WzLvJw20tj0u+rmvHbLI7mr-o$8s< z@te9jju{Ch@RCj7Pk+}1IDVH&-6gi*{Unc-0?3xRQtk}jRHWQPd{dTk4|jEBjO4hk zjv*s?T35%gFkn9{e%)q3Kxo}BEM^1FfB_P>av7C!zs1UnQIGhhD20~O@fPPY!nwRF za@mVqer3xg`!{xTua-+Wa*;UYvVD85Xi^&NYY{4 zf`k$RVN{pV6#KqIqfk>PM#|AtH8pE5zk*#4=kBZ~xfi&VtqYk?V4%EV852`f;w;?P!w>@_b zZ7-v=gKa33)V>5hZSA+O`z{cn!07AVCht5wJ2t`qu7D4_So!mBdcNaHy`3udbUi)_ z=~1-M4@&Pu1Norz-RKHL`r@4azV6-1g1+uOx!b+D+x@xQUU|E!hYk1i93)RXJw10b z*fEUmBh4ksmE5NMkq>O7=?D&y&bf!gY=nAj@?fk@?Zc7>26Zc-Ft_mT@RY4 zr<>G~?3YeM_c@YHQl}(nhcIHbVI5_4U+dn2bF6PtzU<8fWf$tQ=UB48E3xu@1To5~ zU;kH>W%n1@dipfl%VEI;p(WD<3JRznAk9qZOH?Tky z#IBK|BqG&Kb(c~Wa!Mx*Q7NnsDHn-6Lo&~^fG$mQElYDHORG9Y^%Xf&ZI;!+oqBAs zsAStJ@++CqelGmDQtEsZg(&I>9ot62VwvzQB&4|^$oYUkIL7k?4>z35>u(^_G`ABP zr!Z^MQ-6ijbT_pT>0If>G6OefAX17cAf@NZl*>7VTAPxYB2y-4DMDtlO!+(N>!V{) zbeSI9LD?jk@Diil9GX%dhS|u`B3ZaFgIwq-9l<6A707oq5mBc^f?$4cSmksv_(XAZ z_m7E=P`cp6r zLOjK~F=r8plo2LtMg503Ga`!cFVT%{fU(dlQu{KGolyBh=|kjZx{)Rn6L}_u2}J`K zw0^s5sMa=RT$OSkUX`lv?Q=sj&Ex1>1IFOnJbt}ZX!c0%-$-Wg_*$3+R$%(|Wo#PB z@nb#&5Y+BFp*-y-p+d7t)YnOyS%@c=-+=L$*J0M|?(gGi%JHQiEL@WlZpss;?bqX@ zrISL(Nz-DA9jty6TVK-ZPyQzxQ0ts24U|U@kZn@Lgb1=hcBnG$!@}$j&M=kBaKit6 zhJX2sEknxsgEMsHGTaSmgm^4$?G?6mx!=Mh;w?_Z-z23Cpw5TZ~`Ef_JBvc@iXV?RA|3h%)Sy>A!52un(z|elKw|(xT5)Kd)5!**I zVk}M{eG0=w=4Og{3cDL!9Y;m`_{DVLj}KXiD)bx3!W8U)U|xt!(fysR@E0wv?^`*n z6FHFi!=B5@D_Ug<`R`JcuzE*+Sg&7%cy!79-eji**Qb@%;~(qlc*01`Kr{w~3a-0u zLV8a6(C`CLNmGRgks@!X@){7xGy7aXfRHW9&bDJxd$i}VayObrxTWGvS~JDAoJS=gA_D3E;76G&p zrXnG|L&{Nd>If#y|F{G!#D{7t8pHEc$9lSn1L?0JT~>?R5n4~Gdk-aa9VB3&@9HT% z#4LT8+abtp^7uv%rWVAO7Ti7K4=_(|KlMzGtMH~m`XL(T7lk%q%e}AUl%V?G1{XNN z9^Y>uL5r_gtZ?_;Q+gvSbPx2opQ8#z4cm&z@nhtY>Vc+Fny_NFZp9>6Av&9-RBSx9 z^kpKDMQ2ZaeS*5CvxG=yE5anW&sN+$lg4o(x30hck@J+J7)fR?=J010S&}aZLouJ7 z^d2X&WIgBj0`Jk1-0M=V)RMbT$no&@E98@QzmOYUJw0=8#k3r8^m9qlz}kV$y!BA^ zGpXtT)gI~K`^Zj|X9GwhkN8C`$()982*=+|PKNA#QucPpBFNw}j$=diIU{+Pz_uMXVAAFg-&o{ zM-us9fA)BDfwTpPJf*FKj^dzdAeYAzo)060zJrKPY;bk++96`-W98Z;}PG&549BF$;eka$@TV&CBjKebn@swAH{T9m)%Z2?YL0*G*{FXHuYNwzN1fP zYd&>=v7k?%ep&Zv9Ugv7=NYK1aF3Ru9%X8{QDW{$brgjJkf!rn$&1sa3$Ejxc-ogb zQ(E|Wuc??B>MrM8nGL=QT7Ppv>VX}fK z8IOeULACqkmv|(kX8y2CkS?H1i&0?)|BaZWjY0v;olh@BG9Xx0=*oO$~^vJPHmb49To2Ww}EbhB*H*}ZjhPogN-84&le1Iu1mFo z8)LWf<5b?A$`{wOuwKN|%0RxfQc-T_9NhhDs+2m7d9{ z860iY$T^imX(4P_n4wvSCNWj3yY`a0G?!}@=iSJYPR^B@1ntdas>!jGUi1Hh_2t)m z(ZGJU%<`c^`cOmKim0xCl>(3#p@EYc%R_(QGNj4K-O`*lP%F3$F&W8|rkY(KzC~ox0!N+8z7L5=&LjQYxl|#Xnb&@A zkK_(8pe5&3Z4t@O=CmD>+A_#oMDmaSL?mxPX0kObkqYi71>Eg?{Uikx%>Sm_If}9= z(Cr|!e_U$0zFy{awaV-G{9LK&{m~2#rLCA`e^jV6(A(FdT3bUH9)b5#L!jOrmG(S} zEe0h#MWij)TH4^D+NRR){T&%kgDH*JeVIRSS?~&c|}P4us0l{0dfwwQElU z6%GdcZQ^l1N%MGr3-n{Wr`*!UV*@3NvZD>-4tjD9=1I4)DjGAnVr3pUO6Fk;n;*54 zZ9KLU>z8b-cjmEz)6gC^uft>4Z6F~M+t9!}J*gdS+5ELern)!tOX1y~%oE~fZ{{cB zW_O=^7pcU=<=6pKd~(}wxh-rp$N+4;f@il}FueCXdgc+Lr`-E7AK8t$2w>wj__SvQ zj>gcAD=v{AXcXc$5ppUe*xHwA5%^)?hjF;1{E=P|KZI%!JX&!nETOFetZA*JB1-C| z#ahwNWMZ+EcnrPL=3c**Qeve%g_P9ess6_Xii`S-dM%Do7RMfN6dm>W`mw5^=!tnk zFUsO$Q(%W!I?q7B(0-;O=T5P?-!pz0Cv)+C0ukwQ?5)Ho4HS9CJg&%(pD5qZ3;Fu~rt(>bw=Vb}NJG$l zbW5JW2hSyc*x;vrD-7=H*kvSXII+AM$uWHsOi1db;tEo6%c6Ww-0vm&8{!^Sqc8KS zxZh9rW2kshh6mP)*3>fD%KIg#l^twjMt?N54^i}_^~r|4nPWOG2CteytK|}L8pejFI4pgcDU?FlLR}gyaepa31}RFQau>Bh z$jY@HZ3_NK%D%*56I{ixPR!!&fZzzJ`xPgXXVe+OF`ny9ReJlM^NN-c(==9ZM zWhw8WsX&3AMH$lmBrmwBK>s1@#0t@NI93OsL=@=vggOrPr(89$_yS^;-#;=vsTofs~A=)EOq85ny^1uj5 z3)VwmRdkGA1&Xl(1IB^&8WpxQ`B}Qh;YQMWyhs}vQRgZs!G$mX zrb`ymXZ#UpxwB&gYx=6KqxYlujpGxDfOT)x7R*A3pl^iVIYbi* z+r~iV9x?{cb>0WC_Q@C%W5{WgO^vKPV zp$h8Udk@sYyhrfQ(V4)RH116&cR}~|hbfT)dK3keazD`3@jw=9BBW4cLB9}=>?c)& z^nO#)CpOA{Fp=d%fQEi0vcj17O{Vkm|7`e+Ml?I!$XN*|&%t80P(IXnL_S|4izpwQ z*vu*WIUI+wsyt<1MW?Kk(bE)VG%coC+3__}lPjm`jzXFq#&d;2nl7?5saaoQ5$HVcg7c{ATWko$sq0h(PDS8U z1WrZZR0K{%;8X-oMSvqv#D^seBNmAyh_JpT;PU!>kz_dGnih8jW#+(e%IDuqQwxg6SqJSnGu1ZUjHn9f25TI zt7X49KfKz}wJG2Vv;}<01if|D?`n#~a(acG(Lk&<7>@@dVdW}hVu9Ak7DPbB$rp$v zf=xjm-Zg4jjd`k;1XWF*DH~#Y=eOUZag(B|8&u zs>SsmU8Rii0hb6xZ z@=r*xn*z_JFA!=(yAUt%rN$?F3K<-#MlO2UEh=MVGh?lAE|)jI$dxR{>sTYP_B^}P zYk@g1{4!WFBrfyK>A-7PnZ;eF+3R2zc%Z`-5BQ=rbLTl(rDBOS} zbSplslmfDn81P6h9%B|>x9poW%|DCZ{~FVL&u^U5X86$v4dSNOc(p4U^ovG^S{jQ) z@n&Rtb8N(}fGSHa7WCd|mw1UZy}s6rdBgrltC@@k^qlF{&>S-PDrm#+O?Xd=tHrf! zsVY{yfLhB;RvhZ?sCDA?)>@*9;mIk~<%`_;O~Dk^ymHT_=W3f#=MB@iCf@wZ(s)U4 z(w9ia0$Qdlii!++|Sd|kA&^xYq%Ee8C z0%23bf@7phx}+qzf?^V~IS>m6LSysBYs=FyJmR?)V#vFKhP-QxF=EhjEj+nU@N5RD zXoJwakRS~qnq!=S?&10DnH2c!cX;~vXqF9E#&aeTcJ zaM{oBkR0%)<-pTr)jA8;pj zY3~B8#8&=&fZqUo0+1ft90UA59uLuP1~napJm5;~XD4~u?=t@o^3w> z*ogxm^jlYF;MCDufD>^zXd=Es@>d+3n-55*I5z;^i4(bPfR#9HyAv=CxF7H>z!w1T z!ZG!C0kH$jSJAC&jiR=SqVvX$E~695M90YtEl5EXm2+AH6&Z<#rIhHuR!|mk-i}>eT|jA3h8H}9#Nbv`I7IK zs{BJp|Mx@L>|)fLT>AWCm3}wUe{ndQovrJ?h1CoHk^U0W|DvZCziQ?GG}0eHJ*D4P z$?1R5(m#as80zb{^5nl_$n0~Z*NV>-NIx47Fz9e|E`7X}z6$B%&<^g& zOYgDLLrDK5+D9@k|B#jc-AI2P=^OLpKVr#0fb?_Fo*u|c|Av+RG}6C;Cr&@k)Bin7 z{}9p_p#8m?m;Qp4J`U|Mi}dI6(tp9}F3_$(`h$2#7S!{1ca@ZUlua;*rvW@8Xxrbj z^X$&?B*61YwD;@mJPUI?JHfLDeZgn!Je`7v>hn**b0+$S({!HV_bhu~AX||BGW@p6 z%L9A+xk_-IGSCM1p-*{I*HQ9Q&V=%CA^j%wHGO&Mk67uoNH4+zJ*PIg5$T^n`pwW~ z*-*URvau8Czd(90FMT7Y6NzlN4?Gp<->6@*bd-GBvf&A&cj7Sgvm~I}eeqM44kDkr zPDS8U1WrZZR0K{%;8X-oMc`Bf{{M`C`W+?pyGb0Q~l6n%Jtz?I#-0>v+IiA&{wfy5QxJ6Yi$;>@J?C0-%*;TRzMuk6GtdKhn!i~N7s z(xv+UHK2aK+pe(6B`CELHb}Tp!l;Cu5^k4pw}g8o?3J)z!T||~B{VKH_^Oc5C1I6> zwGuW+xKYBWgq;#@mvFa)dnN3ZuwTLf35O+AKZaRxk+8!hVU>in5;jP5^j_*Dq*LD+a=sB;a&-QCG3|_x#Y&H$~|ER6nff_v5CJzu$MD)4};d{EvZ7`93b6T=1S9XwNwCzaaU4JqI_q78eUR z0zi7sx>Df0H;3C2I9@2<(?KWxiL^0|i}%6+FO>8-^O@8yBsBga3-WhJcE9w8fPSAP(2ed*P*nZj;-H6Ka8Srjnjc=Ilxpx74*V}U&`&VE!nk9xP{MoPxP4pFqq4s7-YDo< zN#Ayb;OA!@xE%{e3fXyq1AU$YeFf+fiqAFFI45#Jf91g6>OlXj1O0mr^rsx?uQ<@l zFflLW??n#u`9v?CV5oJ1^6P3$s0-=2#zD_V9q8>2^m`rX4?56)?Lhyl1N|Z_NDA4% zz=3`T+Qpe@k-IMw5%{nSM7;z5MhAMzf&Og=`g!QLDc@ysoaJX+$h+5p{|^rI6GSh@ zD$pejmtX{Rs<-xjW)zoig|X^#!N|`JaeIbCxlePTFL0o*a-iSrK)>CA{&@%bJ_q{q z4)ix2=x1`d=f{k&s~za89q2v>dOPUU&)fUkPceOpG1=A+rycZs&4KtBl0?jyV9Eh2TR?`>4S=u-_{SmV{6xrkrnf^p1 z7B{`gHiM5P1?XT_RbdVj2MvR!Hx~2aj3drEwi`_`oJltQ$=23(h-jDz&O{z-G7${X z(K>IeIqHqY1Gwd**FHY}Nar5ue6xP`3LJbG3Tm2@I3k~jo7%}CmNxkywZSK$3b2dg zT>NROL#iguEtxpB7Z*}Fx;jK85^=_?l@590OcD`{fDfDr6DOPmDvo-x6MSNDse4J| za@Z7&6AvUPABp4GlOoVj(s(>%ZV{)_1OuI-GPhLg$ZUfSh?1FXFB0?d*@lk}yK!PX zVeqNJoM*&q(rGJ;MCuDsp@&XtBaY&fwe&bZXSt15Z!ioGlXUbA#k*|n;(E8~UcJ;b zfh}L%Xu3U;=vlhfFqhuAdU5@VI>TJPYR!_xtIRdamaTKIH`gy-vdV2D+7!#C+U2WO zEU7bVDr+j|8cSB2{(!G$Q@D0bgL^ej>zT7Ft5ExJe%2IcV^OJa1QxzTno-rvP37$Nnu}WG>;}v z>v8!Qx%2u4#KXR5dmb+xr9{IF*sZ`Z?sy=P$BJGd9x-vg)gKDbA##%ri`t?fyu$ZU zaE^}}0xFJ;gFu>FdJ67Z!BaJszcrS4JJOcLR6 ziZh0kw~eW8?TroV*A&uAMxU&ddoxtzP;iqECF_kPOseo!NM_H;tB2HjbXTekShalZ zn#Kk*5<@R*(&>4dNusVH)HZrvjJR;L3Vl^xw$x#W+N!b4%VXgdf&<@XlfO^{si9`J zDO`h=W-|lz#a>;SFha!hD`kVb-lPN5a4=#vh$EaU3zfWHO8f;JTXqzU0yWX3;G+xj zwQM$<@P!zw0OoKdEF?jL3rcQ%eVy!%_{&f9wgu{L#noQt( zYq30qRLN}p7t~QZFQAf3PLF?nDyXK3XjC*wTu)!%Gx9nr z(yG-n^yQ*kE>Mnn{*nVWt4%W)kNB>_$Q1W^!?{Vpl}0EY2yC|ep;l^|&8?BJ?4dF9 zAae^EE6stK)D80Yki={ue{ykh>u@TJJTFjcW&>A1n=eLXyuB6QcLYqt1Z+`v=raPb zs8NY;!~`mv!^uia88Bcc+BMRqWH98P8T3oi;w39)(j1=I@lDJYqtf3VMiv4lVj@LN zAel`fCemVoke3AHT{M(1D!IF?#BF6WzKY5>_&$MA$=^+@q)9!vBRq+!478wK(xkq{ z4{Zt)I>db5U)dG&lwL03NeN%9{- z`rq&jUHPxh87Qdo$8wS{yZv5Jv2?WjKPv54a3?v3ivY!0$*c1KLC{D<<*&{)D5%ac zfQ2v8pyv ze|8~3mv>1y1$%83u0kqO@P3>8fUGbIDn2QOohxxExYs5>Eaer{zq3J-N>0ItZSra# zS;5&eNh)_KIYoICH@g37KVHG{icvyaIE*KyyefZVqhyruR%#sDrOHo{eu*2(U&*WI zX9}wQVa0FH{|`3#{UO1r;4zzkJ^xq1eg^(!v$dX&dp;rb*!dN%;2U5o*W}gn_=bN{ z{yoT2-BtOk=Y$)ie1!~*>_)8mugdW|kfr!3d3BDdr2|AYRN16>A9>fZ|xU% z3IUam6u0CRJ`Td9OXaWj`ztyHhssCs+ls@OAoH(M3=%4NTlHmIiG^&Yi=fR#rq^~d zFs4)C;yNGy)%aKTsQw4ru9oe%wXT-Wh}%wE{Z;uYM(XaA?}|n+^Cf{zu?g5vx%V##$Wod_Ma6wwP*4d01pz@5U|>)J5s206GK9zRsDr5UTgr~?31&MfCM_&vor z**OCE2%#x{l>*?ZYh7_J9IfdkfQVfp$DeuU53peUaY%!V9cG4Y;*Q4Y0=y(P? z+Fu45e^L$qpVj<)xDY&E22z$+?VE`Z!{e?NbO>BZ$Kf*2#Je2vXyH7k+I_?Q|MWZBO&h3>GQ22nyE6cse3h?T5ON&Sc)b{YL6?Za^MA)6 z;!*iT;6Fklh3M5txDfpb5Bd@hJ(qi=yVFDdyRfNHx+i(0TkE0cWa#nXKmVHHA^!pd z3#I$9hy4i;J##$hi#+r{;-P=G2mK@u{mmZqV?F3!_n?2?!_K&eJ@!D|xhy2wZ`Tebjo(nzXkMq#~mWTW;kUt$| zFysm@SydAZg=68hk$55;TUE25DcTZVRllYw>;!{ro1-nkc%nX*2nHPyEhrd^w5$!T zNj5fyW5Hl+w5iF-p)|(AVP{QiV=%hr`fvkOHAU+~IfTYYODNb}-x_QT1=nl}w$wN0 zMrde?#&anWqcs*?8>?^5iDGEM`b46>VO>r#(bjNFurY$H<=EE}-r&q%77Rt!JGK6r z;D%Tv5e}}2M1w0+2KY%fg!+V8M9g#;`Mg$?{+=*2HNU(+HEqc2>4iB)tLz0{D1H4PQXx|Hs=V+U*N z=EEf>X(lzaMBEf~=2S-Eckwx@D+||Iu;QxPRoV-%-u4F6vdT0hW9!4Jt|3lC>n11O zil~W3r;!!K0kNf_xz&M-S~nykAw_^#YZBhUPs6(U7>P{~Mv2A42{f5VJlZgOcCazt zP~Xz%G{wW=8=OW}f1B%@nxYNVmxwfnqm7~ZO^DF2u^x4@rM`((tG=Nj9FJ2eQ$|aP ztZC2`0n_9Gq!C>P?G|Yqp2{bLvh$|Uxh;3?3M2SwTm?i{!!RZy*(DaHK&hlFSvXv{B2B+~a2dhL^Q;fNGvHmTQFz4eX zSdkrp-x6n(@EGFXXkcT6!kGLse1lWpSWP#2i=j=Wqv9GmHJbDlL>K53L3$4YTobIu z{}t;i%N*#;Xxin1k8wWG_zJ;CJ0&ojajp`4lvA$p&j~)#Ihh&5RfIJEsN>QD$3-Ha z6t}(xOkY=(8;PWQ$&9(e;*>a03?oTuZ*zqMv8cue9h>Ec$ATUSZMKS@fwE zz15<#pETD-i$2W|0k>H6=@$JCi+;XE-)7M-u;|+@`V5P{!=lf$=nq=-3oZIii$2Su z@3QE#EqbR#pJUPYS@er6dbdTNYtefw`aFx?Ytb*Z=xK|7iAC?X=v5Ydz@k@MbVrXP ztpD>Z`e=*3z@nF1^o16Ef<^aRbe~0EWYH&C^u-o^I5_NqVGj&@VAuo09vJq(um^@c z@IUiFpzYx3K>NsF263x%YiFW(ushK9?C57)C4)0w18Z>N8~80dwF)8P>&Vaa4&s{l zGVvnf-GaYFyqI{W;Lj1~l0CCi@IAyw5Z@vAZsJ^`XSNCcBjQ||XSN9bFmX;dGp&Mu zlQ@^+nbm@Sg*cbsnOec`BF?3Erb_UCCeE#mOr_wr5+6t0C-{xTx%AGI3mzlRC3nUV z{CeVCYG?XC0b$}A;#^{9dIkRn;#^v1x&>cBoJ;CVr{I?o=TbVeQ}Fr3#}nTn_#EO~ zI%l>CKAkw1%$Y5MpF^BmFqu}tPbbc$b7r;RClKe7Ia4e6QN+1a&Qu9LmN=KlnM%Qn ziF0Y3@d^IXb-=lmlPMScUE*9KXB@%bCVndM{*Rge*NFRw_X_?p@zaQR3;q)E(}{Nq z{v2^GeKR`+-$R^B-pmfccN6E9QD&RqKO)YhZ)S_&4-@B-H`6NkH;Hqpn^`URSBP_o zo2eE2F5+C;W~v1LXX0GaW-0~0l{lBO8K2-c66X>&Q!aRnIG3&&NAT;3bIF?NKP=@> zoJ-YAui*bcoJ-V9x8N&?b7`9C6#P=+T#{yX3O=7Wm!g>+g3lq&C1_@w;M0k7>6zIg z_&LP6cWu{8-vBbHg%v1_qOq@%}j8E{7t_98| zWTss3cZpw2+!6e3;+GKb|GShw@halIg1=0hOT0}70#6T=1d8?sUi>669tz(7 z2c=;2U~i+OW8!a_HyQDqOA1J0-c&gBxh;ETTkna+;C=K14@3v?0j@fmBy| z7wR=qW*Tis8IdmXzww2(cK^W7m7%vBtV9PMNIj8;Wa=kx;5U%Er$<0XH$l5#?OPS= z0F(|gM*CJJvI&K=x zz}`UHUJQ8a`va*B{eg}fM+e&eG!U5lQDAa+(Ti=b4m_PHNj;Z(DUjM5NWJ)8;5%Be zc1+vB+SKOf1F2*uN^loSaA&*!`H9%@sbga_^Mj=!-z-iF^U|3Qd4UH&vdpyM76cG7en^O2DH z?R$am1yUcSiUVzXMu5-G|I_$BG^S7Em!otPzdEbGYilpE2iysCZB1u`{n_9^Ht0YF zWtVoKW9xvEIy#n0)4!(|pk4BX_Qp)sq@G@q8lW3SVycM7g@!bk9J`CXWv0IbMY@$y zw|3sFX|I45=-5g{jP(IJp09HYQl-kZiD)yEMz9YQ>m0;gy!?i9Ps?o(*+VF1BuwtdaFCmvs|Z?OWG@19h*Vgwbtv%)8s=U&p8&^X_8`uZe6EW&MZXmThn| zEZPBU+mnYLt3n>=xxcd&YA(?4D-D~eVTYR^>wUC@T;cxpuAIsaHdb(QG zl`WXItGeQBIu`jZqmsAZGex}%y#uHxk-8t$cB#F3v{i`sZ#)E4X`ccqjsQ$kSVz08 z5>db^%^a|tM^Wz=EON1s9g@RBX0tHTBS>Cmk(KmFk}m}LDK25s%?LrYP*0QaR>}ED z8Q#RCk0u&xTi+GocR)xVlCTmMv0uAlOTbdv%b2`By|uIKw!4s8b}W^;#%Tl!WDb)} zZDl(~&D{+-N9sFRkFcyv&D;}c@6bZ%!N7eL>0rdcIIqb4nA#L|??oB3i#Fv^-ndrI z{6RPB3Npypk?7y+Xa3@pUad8D4=j=8XRCE*aMQsy{s@mqSeF zFR&^b6B8<@Z)2F8v)Tw>5U-C8d0(|GfFh}#W^t; zC{BzPSd_dN4J@_yDLy=qz5v`U5FhGd)VZ?MafL`{3y7oodNOwRl8= z(lt_PfC;ocTdth-_YvZ(9>nYkoQv6C%HQ4g1PjMWRKmX3eX!53>=T<>n0m*&-;+K? z(bH7R+5@YwAQWG!?(=y_sdQoov)NjtvMAB!sIWNm6Ul{g<_gdyrrQX7>{{I#gN$ag z^(03l8u1D>Y?pGPbMzQ-EX{Q5K`E?XN9&_7sqYecF@@2gMmbN-ZpVuy+QoWQPz63m z;R#oMGDzL3%v+&VS#uNEM)WR8HVgVrg{`sch*L41IVSvnA=V6V2RBHLoi*a16FK+Oa^E z*7o9V)PAWrD;2*N^j?*X4>0{z+4$cX$%Yj9xhRB`pPj6r&m)>b#UEc|c|ybP*QvH+ z#vV?gQ7tDbANMf)J7^o~h_tos!a0K;SIvB3AvzHzSzz~tI!7uW{1@|ux!Rh)!2(RG zw*DAKDy3d?hH@R_edyOCe@_=49mL2V`}CMEpR98J?>RA1JDt8+pC0oe9rG3ylLIQ! zME)@W)QjrEeo&L579IU4$z+nz^{l}jk9Q6kk30PRPa+K|uG`bP-bVV;OP%938bFG_DrCtU)Stg4sL<9fz%V*kw_r*lWhX- zxr3m6tHMx}@IpHVNUn9bOpr;BYeC{q5boHzgN!OzMkQPiJ}ZfjxpLe8(P${wfs>9vSj`PC4|K><7p7rCG2==VPpLegDrs^# zlBT_?kz52BC2-eUA|QSGu|wK=Ejq_tspO;Bcso(l`UkrFhghgo>gMiiIVPS?o=WHa z6HPkjARRRfPNkP=D)M##N*jAS+{sC>3+RD-`d?g8wc94S+7Aw6>`_VeU?lEw(5ZIJ zdya9gcH?v_dB2MBBx6i=V|-o3kXC*MsO|p!*&zyQ{-9Q&ljuq` zaiqM@NiIXm_fgNQZ)P3%9iy|a207gKWJr~6`m5g$ZEI1?gHAGXL2 zImurz5;NJXN=;mJIpXH@y`Uz0xz(Gh*}o8@{=!tv^T-m#}nxQAPH;;i#KlbgDC&RUKPJnA`-jFhp zzP%qN!Ja;jbXYYamG-(`3?<^+8qBnX4kvX%P>gfET`4n{thX_^$v~&FaH7t_1R0ye zbQx@W(a+MM81OM>W$DEjv$V-K(bApA!_sfPp0#w*r&;PNDqQ z89P&DjNQ;lOmRQdNyak!ne`mEz(Xfw`xV!eT7bDdT8OH0VaZE@Du=?E zl1=V6xDTCvsMi$E>&Q|1VJoUCgVADlZW*8wLDg&3uH_l3x{j)fV0mVHuGhsKK@DW7zgQr6uicg<*(+y{fw8RJ!YO70suau9R$4J3A18q zL5yO6b=#4d-X*vp%?%-3=^wsA538ZSSb1|FaG2GVe)m7bn=Ft{+}_1qQxLz2#uw=+ z$9)Wv^_^eE`X{nFIh`(gMl*}uc-Mn@Lubh4l(?K)a8i3x-B0%x7j+kPx)LK?i3&&* z^#mG_1OFXrfI>0O_z=&u&`#zb)$Js3x2cWAju~%h-c8`O`41MoTUI`DH=Oov*^&NT zM1G=?ouX4lyN#b|Ec;96yMeNEI{S`i3w!bHw%($^m_3HP=iRa^I}y2NS7X`KeH$+P zpGHM2|IYO}b~b7|55V`dQ|^LJuygWlE%7KzM^F0FR;i6+DYHqy6OIa_7IdW#DS0$2 z><9f`WIA`RP;KIPJRL-OEA-@bIH;2YsFSE6b?H>i8^U#OELNI6T+b<0SN;`hclTb< z3pLMmd!b|STv9sovgw8HWc5X3&7Cqtz)$ZNEnVrkk~i$jq~^1oqHRkLi~Qxy6n>5B zse74UVAnC-##E$p#{8|OM>=%Q-E`m3@pth7^me7uuJh(^<;-{c$RA(iTD}%ON>7DO zOyUQe#FefsxZ_&xB2acU>`<-!0-ZZGc}j4?0`tYwN3bnvOU_|V^@d1ak?s)CAC!~$ zm-6!R_L1i*J0_?oyruRQ9H~+4_ns=(kJ^Ry=k%F9 zm|G5V(w;t!aacqh_w;{aERiW_2aV}aPe33u7eg>>(dyLZ@1rv8&|4MgV0P}Vf_isG z@<0J{n!pYwk0(dFVGfK@OS=lGiT<5x@i*1Y-4xMCIv?RU z1N6tR*9)bzHvbWh^V{nrUA05{BdqrdCHgbOSBY|N#7rpV&!g5nHqKLdWsdUq(W4sW z+@CW!T4$8^1+$uOqGryD3!9y*`EhK67SfF3RA%c*fxFg_x(X9em02^6M`EgG{Ph4! zW8SH34awh1_!NdCDts%$*Q)Rj8NOVFf61_4g%2=1TZLa?c!~fO{QPq9^GUPWDUs5|$GQZZ}zXV?S79vJq(um}D>dw}05 z;1!ET6NIbQg?;r64bfyv!Z$JQi^P2`(S$D+ZiqHFhg(A7P=)WRXwny77fm*WeE9H1 z%i6Fnfk=3qEgY+Gs*|Be!q-|KkB39P4Uxn;Upy(FvZ(M;wMhA*jS_|59zhB%XCnb5 zU%~W0CI0f3rcK$TeCz7tg5f(D>!FBdL}6%sXsUd-#Z5ufO1>mLe2v4mChQAu3^ybb z{JKrZ*BFgu^(s4C!?ET_JRXU*n5-gBEZiJj4-XhWHH2e{NMob{-*j=UX^6()EO;QR zAXhyj-hzvk)UM3a;y8YOj>i{D z^3yP=zDV1bC+94%iZznW-W+EPzGh?c6Y{OulnBRtlO~2HBWM1Nt(wc}g_!jW9Gw_o5k77Q2!e@@J_Ob;l&zLrpzOweRC5}l4 zbupf7O28(18g|jmE^%S9xmC)E3dd4nN@7zhK6VtZcQ($bob61(H-qpInJLnC02ASj z()t|-1!Wa@1KJa6AhVFI1^8-?58w3hsqYT45OHPMI*v%F5BxA+4)dpCNH!Io<RULjsShzpYhG>6I7EQlpg!xMKq>Y6{oK6CxnZ1tS*630qIH6*HCq&e9voh-FY z_nmW&Z`w>BsvXK|W0ofjG&wc6=j%sIt@b=A+q@p0n$dr@Vw~n^K6U}z)xz7 zO8nxnj*1*-pEt&eHpeG}p)aDQM;3<`oAEHArd7z3Z`uWwQ_dIXsF93K$Bu=52?JeX zlZ>rmxHCqKH7PLyKS3r_AgQW!L!KImI7Vm5j;Tq$h?*4K5RSEko5tphpKeaa$Oz<{ ziy`Pd4nY??W7Htzo2%Q6W%$MLiyoW6*3CAb&oOI`4_wStX#voD%f~t^*|YizTH!N& z?0G(PvPjY?I!8jT^_q zL3aTD4e&w08a#)!4=@FI5b#tyemM?XgZlx`1H1sw^CbWm0^SLT{e8KLZd~CMZ7eT3 zaoniU+loe&laA+8oPn;vLB5n}uEO$;b0!2Rzww#DL4FI(DJ@@AI^oi?&ukdI#ku5! zi_SU!%+slZ@fYHM8}xGP&s>aq4gQ<=4Gv;U84HZk^4p6SeD;VM7zC93FW^52{zHH+ zzxdlCK>kpedC|vJ#PA61^*kUzZd7|pY7^@9Q-FxpTA-2FaC-f{}u4(qMlC!bki?6&-Kq? z&}*=X$!}<9`6FCDzfC<8?V~M+f0N6f3;vhUZkFYwzr;=d8t}WoKPo5wXWjT;0RJ(x zw{1E6c9;KE@F(NG$d7aM|IpR{IQWl)|L-~cpSt{4!2cZD?ZY|z?+D)q+F|ft1^J*gxI_nR{)2 zm3+x9_q)OW4DM=t&(=}=fGAlA+N0p_03R;`<6~H*<^NK=q;$d;OZ=t2juHOSNq3H1 zSXz1e5rNWKZKD>KR$X5@tGcwZx^&X~Qs4a236P&(I$HXz!_cz}dT55Zu;K5FM|SAeLM{1^7WUUaK!v@OT9r^WFIqHE#A=WSs|^`TjiDSG)}W{Z9s?g6s6Sl_9v^ zTg8@nN}eD;tRKd8oQBNtk@ z41JegY#F;dg^T@24NdxZoKf-vvWVibKEe4IAg@7<8@uq7neaoJ|6v|q#rl8$>z*r@ zm-I}ZA}rGI3Jn`IT(9Bn8s4kn0~-ER!@U|F(C{q{KhW@q(;T^u)$lA0XKJ`e!z(mw z)Ns9qw`+K>h7V}?Qw{fOctFFqH2grrBTm=pYj~E1Gc{bK;T0M-YPep*+cmsb!v{3{ zsfK$sJfPuQ8h)VR5ohT1H9SkhnHnzA@CpqZHC(UZ?Hb;z;R71}RKvX*9?a+Hq#xszQqwESTe)v@pB|cj|r9Dl4W}Oq()uvJT-6)bweU z)26w1i%jfXSc2Zkod0NZcy7nD#WqESd7?+UAbo^0x}=c&NXPUmHn#-lYm7D>jm6-3 zB&MBOWTZOUG3`5-KE^TqMlOA<+rQ+}(VO{fiVByY7xopTf7V%@=YPg1aZ25DI+X_X zTjG?t{dO)Lon5U>G4e;c=RVrp5}a^$Ux(;Ki;V-NH?QWR=Nnm5zb!+vlJEL_*V>n?#S~qyKB0GHf*0DK((h4eoMI^`d(Kmga-y8XR{FzGMqHa=Cjj`LT*LVCETO!+^|RD!an zk6;-bMS9mXMVEUG2%fF!-@ZW6h_?=uU(_TUkOnFZzRAYX+3>ihLd-u^A5zX9?*5yzZ+Yvk99o}vBEog#nqkpAsB zQ~>&?_EM#xOe^}DmN)ZdqkpI9AKD*Yj#*?eXSqHjso-Ofm;08vWanQouk|@Y`@_pI z{uPpc!9&jn9`te#J!c5L)Tz?>WqI&A-$Q=62mL&o{`VTzlPkGS)L+GVW-9+U#W7}IE@<(GqXk_g2I#=kW z&g8QdRqnAPIMYME&V#9`uzSbRODW$j=)<_gU$g;FmxzFVN3?-9t~O z2mJu(ryHdf{Hurjaia>`ImLrs?LiL-z0_GdQ6>72PCMZtf4>KPw+H?ApdVR0VaWXR zPag7oshRR-{bXD*4*h?ja+%>lUo3Qt%X)m2d(cqEc>(L~j>$^1JTrpe=REW@dC=QE z=zOoPkex4i(EsE?FGoLLZq1XGwYV=2dLjLDJm}YW(4!vo+db$zJ?PJP(6?jUr2TnD2nl&a z6Kd8b@ghwk9<;a;8%F};bqgFltDXhV7grCN%5V0dU_4F9bANG8EMsNq=FvvQ#Iw`Q zd=wl{O3Eq0;RZQM7|&fQR6P(bnUJTB7y9SdErw04ah@#<{XxDspm02lX$XAaJRWZf zu2)aWDgi#*8C*ZjM$UKm7&*A@J$eX`gBg}({j#7&QXr$DX%~1qnC4dd_f@R2y#2w z*&YXH=OkR|@X`DnrTPTu9GZG}AcrK!Mdwh49Ne74<+;&v0Jwc7I^UDXI|AL#!gSUw zb#8c`)!BEVa?UzOKN%0(8m4KFXAc`klgZPCE<=vG&N27Xj)-UPkmFo=xh+p?5GR4h z6QM{8`^b=W0(qWXL$n2*N+O6S=EK2+eS&wMU`}D<9Sb{~vn88+)gUhtPXN!!mpZvS zhva?4J;ocn-J*`-&Sp64%e=(!_6QG5&!grZ_MMZm$4TgU3fN|bs@2Dq=jgMm7JF%>0qb|^mRk(STMM%W`XX5=_Wbt zJ}(V;J01<<{b>Lb~QvkeV(pFi*D_&lw)C#8{^{tZXSbG)~m zdLdI_r#dthb6|Upefgzc>%I__XGAc#CLY(d&o+p|q;0@7mg3?S%j;@`(HJI9LB2MZ zr%N3!pJNBhL3+QTKj!bWe;l7p?Z!9v6Ae7m7Dm|Y+ZZx$Q`qs%eMbX*Mo`22_zOY*0QdTh z{pS9pfhK)y2g!xya?Zv38rT(f?Kk%^4eY`G2`>WX-NZM~De%4mwjSO1=6p>@_(C-KVQq4=RFKG&xbHRcKzM-P5du{MxSUmXE(`wAmU;i`=YJ(l>%bN z_xTjpz^c3m*g=%bz`KFj@y&f;15JK)G}nGZ=Y2stzS(a#@GlchOa)E4hWf3%_~v;a z1F@}whK+g z(K_6Zu2tt$GiWV@n1z8(>562+(+-x z@r`3l{WR&Ca@>wM%)d$B+;8uRQk#0$QH9j6iErTBAlvbsEn2!&K^_!mUnZV`?}2H@ zH}~%=V=9)h)95hq49@$Iq#66oK30{EpD&+Z{+}Q&)33z8eVO=Y+eCyZ%gcs&Srq;{ zo&GGH0ggj8_&4^L{)6qq*e((E&yHJF;K$havM-aap&f}pq4+C1l*FjK2zjXUpBC@2 ABLDyZ diff --git a/entropy_ebpf.o b/entropy_ebpf.o index 658f4038aa55036344863975e04f524ab2e35574..0ee8c9fde2c9139aa6a35841c2785a899de58d38 100644 GIT binary patch literal 8152 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 vKLMV5=yCGMN7-WN=K?OyyFhQl1m literal 8024 zcmbtZX>4Ux9Y6PN)7RI1nQjAfXTZ|Vw6E<@2O`YS*=eXlnHiHALU{A~dfPtdZF$Qu zoxv~>FcDn9Xh1;$HN+qv&_v4zBBSvGibf13esIY|Nrd+NYT(fCi# zJ?Hm3|K;rW+}8(=%p46ljxgegzl$|wSRtP5TPsh=;*{ut=EEqrAl--LB4rvsSVbmY z{U)D6YzYbR!RqR2ujQ0>q`JlRR1;}k{|RTO#J2rPOwz*k^XheqUx}!kei2f5XcfY) zRzCT@Y|je(yZLk})Bmo-^iyiqV)*~M+9 ze7bISmu)tsi6?cwiD#$X`AAD=G~CkGGtkoRbYPf6lOo(Q-FaKz#}c zB0I!%=S`S_==D(8pGcq>V=q@8l^n~B(?&FTa<2- ziUxqWYVJnO4cG-Obr$xm-H1=NEh-(gx1v8CgLrguV7dk++uiL@XKMt?vLW!-GlYh0 zgL-cg9qous^*(X1Peo=2h3K0Up&mmB(VviNLJWZKUE{ZPI_#!uv3L{9M(udZQz~#alJM%oOghToWP@5t1N-aA-sYmodP z%k6Dz<&ItvkAYl^8WQmyL+Ef*nDyP@5_|EWga+hR+!B$4HBI#;Cw?4x^GWL6YxK4& zy#}6lqC~xkcnw+W!+5mG$7iV99)A>Bhg5q4rSP%%)5uzXh{u{*8+F?lL63~``x=Pw z3-MnfQwD#e8XMdx;(tcg#W|8qeIF>iy(#`rG_^uQn1BOj_9lI4gnTU&6wICo2heoiP>rxIu26?pBt$-r%FXCIdd#krO<)c>pm z7%}7np~oe1#$S?izP8}HMf}I0wy`=Ajmb%+x9AoShrPLMy5MGV>B6FW-YZwK#ezFA zksMD>jP4O$p;|7MmQ&tbX(5>rV@t)nH@4^%7Z%Fi^4Q^Grk00FW$f7Wsj)-lFQgbK z>s3TPRm#qbbKbJ36)M@q0uENHq*ApT_lWc9T+I_`N@~%orZTm18D=y{RTp8EE20bX zVcYJVlvX&HQ@LXCT&zQf05=mCviT z7_L&A%cJuLXOE^196uxT<98l8J$>?&EU%T0re^LubcbLc%IU&{w@FN(%(zoX`;fT)E+ZY#fBfJc-O>zSxXPbDOOd)+73DQCxU+iX%7Y|f$ zO&!S3k^rO*#=@w|m|fsF#%!;r^jdhEp;8_gf3lf)!%1=RY*$6WxD_ZsSL$rlyzIN$ z1{?R1+8XOtyxdv-UB&&RHjmn0a{t-u?_8-|oa64UFUz^*s#j5q^S|5qW7c`$LS*|~ ztYvqf8?<$YhTZ-9-5dAZBGxQ+$u+NyterbFDEl$u4#MxSvdS*FLp!9+u=GM~eC%__ zhc8K%{#nD8(5Y|huXCzgkGOg_54*Rnb3r$Bp^k>3otxbOcj|^w*X(KC9dl&pV`ONM z6EfmfvKMi*4ppkzH2zdq{Sij@tD(ko&4x`iG1W0OWIQP6 zpHgSFIk=M;nu^F}GhU(M2_8GHUW#1aOe0vMQ(V&!9tU$s8scq=x1{E{T__JA{Q#-G zr1T9Q0j93O31C-aWKxFkWc^=|x-O`#N_-6h#_t#6c3nS8jF;%Fh0kh?ObS9se}|yo z{0ct6Ec~p-yhSu$LHm$19xoYPZwSGwJF$bU+WZ?e4#d5{eOJ*QT~FKtJgf0Xf#Yup zv83_6z|Q+HRKgR9-&GL|Xv6&pIn1VxIj;(oe;`G~*YRv{oPV`6;~a8Wh2)IYD&?_k zA(N}kdt>QJess|*c;zhK-2MtIhxJ4*Tc}+SNt{^g-}mr}V`ns%+dG+DVgN3rB`;U< z%Bgv8p#lz=>XQF-AMSEZpkL`#$Q=yPLaE;RqIc5@p-&@^KAqjKd z+qF&NTAR}PqXGP>0REl;J{`c<0{Dvo{DT2Jm)=Hc5?|a%f@uo)&TSGe2IxN@z<)J> z|9$}frvU!-0RHU&{(}IX+jOHeiM{}SR{+01fWIq%KNG-v0emrlzZk%ODS&?}fPX%K zeUAkuCm3hQ}`u74V$%(@vQ3hUXH zlLQcA-n8XcrpBC=1tf}Te?>v5&)G5O3hkNr#-XsBKzf+~Ld?GYlmKGJ>(>g_{r$m* zX~X%Wu*|vp8v%rvH}Y{hf)MjMe3K8i0h@iwdfuQ<`|3H?DIeyQWWk5KfIsiUyrHl7 zFz4n+KFrVdcYL@PxK+R37@uE5e7#eMIhVKiFuzg``0zI1V?KNh@Ntb9hVy-oubyjR z(T8sUKIg;RfzSIe>o5AS3;eJTv;MO_yaV{l8k_jv_SNr1{ZD-OI^duCunYW#9v>9t ze)+u*bARwR6(d})p0)5<3zsZ>*}{)m_*o0TWZ^3oe#637E&Q&9<-*q- z+i%VXQpB#W|HNi}oBAoMe%8WVvlOncVI;0W3f1WE1ppDg{nxFyE56UhlRJpcFeb$Hvvy5EKaxi6K1LbAf0OUOPKg`~| z*Nln%2EGv$Jl}1(!b1`=t}^+4Vn2<2o91~IFupwoFYAsPd#zr#H<%Z6s_rp_&fnJd zJd6FJ>H0W+8kOYi`2W_5<{n^t7<+@ir|k_kd80nh9yf%}ZF^#yqv})Ie$uM6pjZm9 z|CR30Z?zx#q}cZJ;5M7TclG?4f#ExhXN5g~L)xc3PtWTG`JxrjK$E|v?UAjM6FSg+ z)`B&5M)@iVo3>wHh)lZ(IhS_(`L4Bnf)YRDB?NNTs