From bbd984f9f0605c5ab9addcefc8e75d5c1d8ad2e0 Mon Sep 17 00:00:00 2001 From: abushwang Date: Thu, 21 Nov 2024 10:48:49 +0800 Subject: [PATCH] fuse passthrough: add doc to introduce its usage Signed-off-by: abushwang --- docs/images/passthrough01.png | Bin 0 -> 60520 bytes docs/passthrough.md | 50 ++++++++++++++++++++++++++++++++++ 2 files changed, 50 insertions(+) create mode 100644 docs/images/passthrough01.png create mode 100644 docs/passthrough.md diff --git a/docs/images/passthrough01.png b/docs/images/passthrough01.png new file mode 100644 index 0000000000000000000000000000000000000000..55c13a67da36194d9a22fea70663c31ba73abd83 GIT binary patch literal 60520 zcmeFZcT`i|w>BDIUIj%d(o~uO0i{dtQHp>xrT5S~gdRHh0s?{{y@MbG>C&Y}>AgjI z@6tOVgpj-Och2vgJMOsWj&F?buWy_^hJ(1X*V=2(HRm&*`K+}Q@kUkt-knExKp@aP zMFm-P5QwN61S0rB^cQfZP?*II_;cG?LC*~Yq7S?NcOz!)&=NRF?k=b6t^u=hhnu=u zf;60LolV``Esbaf=RlyxAVt}inqC<@bAeulYncx&;4fI2mqXtEwevLPZ}NCA%6M7h zcscG_YVS?sRYBTS7I-YTdqj{me0TU(dbJ6ge_BlsmqL$!c;?AJH|uh!n{%iQ=pvn- zt?ahGc3-KPd?CT=$w?@ls`z*$L}cV|T6g>>3#CensaK;4V%bA&jMjtRL%uD?!C#I~ z(USWSr>Cbkfe`~o?ox>v;lDoq`1O|V`WZo>aIy~YpASJq|C>&kypQNGtI#c(d<*p3 zulYgdPxm15T#>*3d?Ew?&#C{h#2;7qAD{T2Q21X91(x^`TTbfqD5sp?7Z(>F=>MYV z$9$OT#oP&kw+h~`O0>_L>iXA-6ol$9~v@0 zN7cXjK(fJMCAPs~!d~x2^v6*jOH%^)e|<2?y8It=%BuP7{iLn^q)=Y4|3D%^F-JN& zbNYE5z4*E!TvWe%XR^91z;>;}vMa_&-#DP7QjoOTW9<%`c>Cd3RkbyOxq>qWz#<3& z(aa1IljUb5H{Q_Iv%!ivxk^j)YL*V&*WX;7znA8&t7^s&b5JKHCrt>!Ta25?Zh$}! zf`KNlH0b^^*;+%vjrENu;zY$%8)s4WNeMi*^ZYC?fs349ueyWyvzEzTg#3bx!9Ub; zX1DVmsg)U?o&NL&y;lFY;N=OgEkJkw$no{9Y(&xOKojX~oU7ebP91l{*w+1l+_&4( zXm)>r76kf{7mMoI1hIZtCIe}3qTF@1fApgwC-$$#_67ot<6pBbvk;`OL|AO4C8`Wr z!XcXRzoCgRJ&!=d(+VI}@@4=77J35=*lu@r)b(@Vv$2!&X-&WW_k}ZcwX*`>>ap)s zHV@Z10E?K60yna{2_#m8cCGjX@>5B1YTywfqM=cnv|skkWLkiW>k81PiJz-jklsrd zq9CRo59=;^ky2AW)D7a{)n058!+$`h{|Z@AAhzptSJu&1o)w ze}BoTou3Y`tP>@o|ar4uetEubHV6&&C3o7 zVtefX@4l+ktQO`!9jsk-k}Jxgzi_B$I}XLnbrd$0GyNIiZRUTEP*rBBTHZI2Z9U6% zCeF*uR0TJeo;`4Kf@8<-1fLehz2m}kB?(Fd#AyOE7IX;A?C%1Rzkd|=?acc&G(PEz zw|4(p-;*}vIF&i44-r``!L?A6G60mzixBYMyVo8gajc=$m89mFpoh*X8xfYMLR>B% z9aZX<_{}}wdM}PFTcfQZ=;PVn;!_d?9CZ_zO6R`-YjkQEKNnFiu~%Ey^z62{mCj|D z@TeiD`V%CfZ%w8f)*WI(>G5^H`PatAUh(zf@%s?damT9h05h$e=jMg8{ zz&#`+zkA8qO`@bB^?6n%g>I;o0--N2S_-U93X7KGG^PoFM*{=HjmiTa?fbG|A7MEj zs#|x3anaw%cCcgU7uqT-eOT-0WYl(#ATpJw#AcpEslkS4R#k8c*MVY z5E#1?QyxyQF`+M#=zk`t)2aGW&)eJ1wk=t|!PWdk>@5y765mu<;bih0X^R^QEs*ops{4=rCj|s1 zA{{w}9$zh2;$@(4A&C3ym>UvC^<9s8i_`h{MF>;A1_bGSUOwL3tz%$ZPxN*esO$qG zijeSYOTo@4hjxkg&ZH>U+v7J~No!xA7X^E&5N!PlN}I;m!RRhz~^u!ux|xrHq$uGaj(xO^as~v!uMV9UM-xO^tPM zxX;RTx}Ey*d*ivT_+xcJ;nKOwIR}_0c8jA6d7x%k^^#B2ooQQ^ z&qD<_E$?aRTQ##^rs`$&48+UTy&06Ms!I4HNEZrSXoo+Fq&LWly0R|H-0m%({6q|X zGO^cN#)H3zI}#U{Au`1z%@=H~uuZu@-PSDa`M@Ec?4}!iPcL1f2~ohQPMk+x{W8L_OQucjwUtzoop^WhPmR08|Uod!b4Q`caZ2BA`W5=X7C( zukms{^ZGRf501aN1t^Ir_k$X|56^uR&JO9X`b2g+T z=@P?x54@T+B_(3RRrCAkzc$hW8nx$?8W{hE7TGpE_xAHwRB78KP~&p+{l+2;?wUp! ziXXI(kZ~6l)9>HTkDn(6AVHa}fBhA$JeV#zBE(M$^A*>zywaYBPU+ zBrfs_ob4;xyjjMwRwx*JeCx?0WCgd!XeMjLwNa*|uZ_YVcr)%f>%b> zl=+RkHzWcB#GuX+6J9zukPK~DUn7$a4=nqF{<-y5Y;wZTdnyg(-(-6} z{e5+6g&T2uTl_5-*#1k6PlF_Igpf(YkA+9Kk#G4obAUX-OY-N&@yo*&KHlcX#5kow#D26}U*JUZ zT4YNcF_^NYzVP%a?IPX^7$8Vl?9b&1wri|!b?lYk_|ZfT+RpU54Mi;#W+oMmD_`n+ zqKN+^J%Un7DZ^L?M%?=*ZXLbbx}Y+L#JCT)b|w-NQj0TAk4k#KyB-1epDvS^hx5D} zEH!ch3mcZ+A0CI3u|L}T%Ao7#tr01o0%Tmu*bEZD36xxH;wbeQ9qDzO5H1}}8q;jv z<|~UbN{#8r*sO%_K}0r4mhtkV8_e1_K!Z^kBu^g!-D|vXv2k6kt(Fk|rt5~P)Ocu4 zElt$(zH^NrG8E=yCn<6JzlUiJ z(52l?{RrKq(>0ubBa9X}i&~h}g?yjIjD1Xv`1pTYV9gBRXA}#zoSqKed>3Jbt7wVF zf!_T(T+(D^moyRB1AjFK*P#@rLkyN&N)kjB;iEPTg}pCTOaTYXnzLF%a}-3D=wSe7 zwB597$(u1+)Sj z_H{Y6^^IG8UwCkdyM-Q}?FBSoYSVgGut`Zen zrl)D_>9-H`=0PgCwQa-&=PH#@45pwTfJ+_@=JtBj%+{QoU;W{I6GvtN8KeLTE%tYB zz6Usqa&wC!?-Z_0^XU2!*3mO4mq16?lX#!XGQq~v^>;LdSai(nseWY7$zkPxKN9rbIMRY=iAy6Yl3a08W$6xA z2;TJT?8?87O+wC&!!_%n2%1~Q=w7^<34#s*Z;meVyMT5PwU9{)`@HRpbL1eay1 z@ZDu0*yh-q67)gKXBmm6aQ&*gH*>U;P3ojOD{#Suks--EH|!eblHr*u-dpf*&FUhc z{qpk=p4kBVJ&sc$CWO;+6lLvp5%$e}v$V;2ZmbEESn2kJv{B~*h|<(E-&-PX|JAn; z{zz9b(Yc=f>IHt@s!S?S%Cj@asS|0ux(5p95kWzlkf$B!=GYOjEklHH*j&@<@$T{Z zs^@Dx_Ekl?Cyr%;gwu0(TdL*Cc^d&cTZn~LoTV3Qd{Mn+6sM0HsKEs{96=W*r7oCd zwkHCw+NUZsl*&ZCgIDA1Z@r4Nihm(U&x9Yv_ZAWss9bGv4TsRYgtGIgyn@Q&z5Ct{4D=R(;a{U+CflkI}&>)`&r;26$f2BOX6KtLrP1^TJg+1{O*e%Y^yECaw){g8?+83|%Jsp*%8&8x`MW!k?t2HLRD7IJJ|4Lu9qsM-oL3RAcz$ zI(=x^6pRgBM*D#TZgK~}QGhyACSJFE`_{#qh$kC!m0HeK*i`KHJFUIRLT;>5F1w_t z8DXWUCC5h&L$cKF{FpSFZED^(sIg}F*)FygLBRJ=4-nPfxC6)s@P4^`k-vG(+X;Cx z`BRmN%m;fi_BS6|?&c(EbybFAJ{n{@6d8&1S`3GN`Ld%g#q&^_JA{nH(hVHt)`q7n zRLGZ}1aM}K(2WfvApLX|%BcG~(?TBxOs67i0WHAI-dI>u0Y$&+SngKZyZn8thAxN1 znN#V#_L|f%p}P_o0b^vdz1y6Po-9#nzfF}|0XJ0OTlE)7|8s%AvNQ{e-lZal#l3wi`URG#USm+w)(wQ7*uVP;8_oLrFPO_9GmJ^ikF z@k#b8qR;{Z{aaR*Wo6A52?bn0jHKAOHsk=->bSO+Tfe=bhYVgF{T>1vjN&tT(XvZy zFQ#TF`D=b}MC09;)b;f7D5+St${d%)?>WbV)9WK~AIXk(;bjh_;J~NJGx1N;1CJiF zwzg^&m+wFyZ3AApFz=XtqB=_Q5%t9h&inxAQ*p+D9s$ez}6@wb->IcR;)LgS!dtbue0u-$KQpNZZZaSI3PnI40Q z^2^pZ6%3j5?}oa{lfHi?wR=m>@GjJ5|Bo@x%CqUpGi#uRQbve}{5n{%QlF?>l_ruG z7dAAi1;-ZEJ1KU|@-7cYq}LTdAX=ywJV2$LGsptZI|hgNb8&FnM+}u0HX?EbEZ~kx z@U`fhi4K13%|1UVZvx^9FRSR>8z7RGfkmqn)BAmO?sdsL^#O|r>}>RS4uv`!Y;M|f zs(}Ta#hd&>@w9VrU~Xb|d>(S+WsW$`tMA(_;zxB(GrGwJ8W+k4GHEZw7mi=r_olLR zTSQT*cHd10UXWsxFAihn75xKzyKprcqA466*s8hXaXPHP9qec+_I;hgxRamNc5kQ^ z0?@D!H$~^ZG4}!v+g|Mo;#XU4K+GYh0qvkO?Pf5|E=$BO!D3+_MBjLO{|F$ zS={aM#CBWA@7_AKaI}s+g@)ADV;3XT-h7r(Oi8IxhQw9p{hp#Vdtn3`ZB^ID1O%$B zoT@M~-I+YHI3d;O+4uH5#_<99mSAKgu+yz9UE)8}@4t%M{{sc^ zJc~+Fvd9irEE$NR6>|r)C|edAlzRP1HBZ3QH4j1SS5&*=5o}He}_~Q?HhlF6*fC_>epU+=^04g$#)$XOX zu&b^>$U&wf?20ej@JQ_gJqa)pjaA`L=0LQ%XIGgF@?s!8Qp(k|q77&VD8E)nDE@r- zoue9V6^38mWtP8~cp{a??xX;;Q+_wg6Hv9nNOI-BULe2V(-^4IK{#(P`w5gna^19Q z!V}k4tOg6jb(E2B_o@F`xT?~I5;ZmkwwO=k=os%ltk`U$$<#>znrL4)$*G(7J7x=v zzZyB)zr0|BNV#n5xve*C#C<5d2Ed>m&(+^EJbnt;!V?^dGQsL z;zSwte#-YL<3+0_4ciBLq8|@09EW%Us&V4LbMwmw_L2JCkc1F0Qq&T$qKlcI{p$QU!1@WVIdj~!n z2m|VS)pU(ACi*?d$_+;3#Si>t)l4IPJD#oZZYWtVb$^rS8e$Cd5CCTVDSSM%)^7s~ zoxW_X!aE;4Nz5T@&1d8-paX%wyV-ng4m-k(zWyYu@K#{U=H3q}KisNdilBM*K&AxrZo@|~e zQzK2wl}Tw~Vp+}p=MW0GqpmAVX=8*;jWr&e-RDt&tX&@M(t*=C6rK6L+bq~Gt#hRh zgfEJ#HCN!n3cf4p6}hU*q&cIuE&)ZDSEcC`pmRC_wSb2NL$G7d_LkqtfKJ>thFx|u z2`^|`P;YmBZi-KEH8N+C=3GS5OEybR1y4D^plaCO4`i+}+{Kvbg9BqHM{n?3bobT# zyu+D^+JZg3Jx$mrn348GocQ=UMoVc=VM8W&FBaDvE6y^1(pya zf9yXk^2vWizFv4f0IPZYv&yXE!x385P65Lxcuo!JW)Fve;1r54p+JK zy*Xde{?Ekx&_xmChdBfS#!8#a9_C8;2~+w@aS3V@R*?e ze#xWxvVgS#z|1rJsbtb38BR0g(qHxbx4R3XG-oGusieL5G8q~?4?j$Mw_zJUON5ZA z3YqV2Vt@et9SGv&efRqHP_xO%en8&Rx*BfHABmq_$-aPZZ{QVijlHi_TeaH>NopLh zSAkO%XjlVD=D2Z(Bt#qvkbD&MG9xZVs|kNm%#G8@F0|A4I7MFev*Dc;JA4=X2g9ux z&whYGx1N!NlC{puV8~@gNG%p7eZMILqe$K1p=8nnaUE<<#b1j^z?6KcVE!hSVj33t zS|y{bJ75dGIdI4~Yjhczv_g4(Zqw!R65gn}1*q!9_^|KyGKwC!{KD|>Po4f~VY@=M zTQXwa>@r5{W}pB5C%650_k{EeClWZAQAOkT+rOY?;zSGrlnniUtHG~+#~q=ss*1ds z$94REWVl{09NjVPMsdFP+1mdAKORnrTRR4Xqx5~rmc7f$_8xezCptOqD9p7Um|Q~b zl*|_NA|4l+486FLS!g;ZEfe3)Fb(dQM;;s%#%u)c4oae9AQ2s{yL~jQ3-G92_i(#{^z324dUg++M%Op|XKoDDukX_aut*Ra%l-ZMP*UV404lqm}Jw z>O1Cw`#RdxKq=F?>u)~Q>~po+aaXyfIR=K=B&N5{bQ{d&nKe+?_c`3hADgESsw52o zTapkWS&VD*UYDsl(nK6ro0m5kABhgkDfWLo<_9#bL;r#=*pBA%foG!I(GdOfGPl7i zw&cLYNyPCGha}9&h2aJ94}m-pfs1b^0ctVLw)c(Vitd0z+`9%Tgy`qy#vV$C>ljL` z+RFNhHIT$OqbR99ub&{gHu!N!6!O;RluhbDO)UkrxQdwjg9DFd>Ng4kamWBl>2uU{?-3d)9&#{L zw0;i}yrk~ddxKZ@SEP*jJtau(>5H?Eg;8uFWUuX#=E$VG1tF7C%SoRvDF)Jk!8S~D zgq1lhR63p;bk{lgaE82j>+2{-1b&h{X7o_H+rcN#zCGv8%%kg-RjT4w47XEK=Y5U` z=16g2fbk2qxi5e1pO$krAHcaUo42mkDsRepg-qUz7!?%ex=&4c^beySp^~6MpZ@@wJ8|c0v+)>7t=rCQl%wQ79 zK6ReoDN8g5E!4aCaY#bU?Np zT?Q|$S5*1HCG=dBWkvXrlYUnAjiAk3T#_y)b+O-%Q_znfQ5Ngcrll1|`~jv9uh=ns ziVW-^#L@upB|=(y>#;hM5uF$Y@CS&e=dHI@Z?m zD=Mc|=D<&Y6nN#=aWGz3)Bz+x?#RT%WT+u^qe;*EOfaW$dcc8K2V210dUUyV*eA6> z({F8+y0&9Q?ouHf>0&MVl4CHk6oH5s?yncEl3nYu+wl2I4DjEl&$#^2ax_#N-%x!1 zLw`a_tAlW`5qA;FeDsqPH|WbQ3>-;!$T_;GIrpS+7Y@ETGo7r7NlEo89BZ@8v|E#o;!jdoio&}h#x)y%V?0F(843k+kTzr#`j{azR(K;ANa)9;UG=p|k4 zHTA96I}!z%<{D5>!dt(cT*D=H4#LU({4C#R00i7$d|w-aKqN+!ki^*;=c^Ud*4LrY}Vuk#1OnQmz^p zzeaVKC6Ze3k(NKrrU2NRrOxcQr-}3Nc4oR0plm+^PF3jIVyNz=XE9o~PPVq3t&1mV zCw1KFe^y+ghdNr0;3A$=E79}O3xwwhR^}$7vBfWDkj-@8ck-c zK(eo8_vysW1R~`a>kmi+_GK7F@N>+M`Wv119Qz<=D-)#nI+}o!<@t%T%ilD&3J6fc z<$;$gH0f8kk@co|IT8g`UQKTxMtlb5|UUwP@(c4okyB$;%rL-C2$4dYhRSj0WYe4W|J zydk&_7{mP85p2P48|shPx@Pk`&Y%=iCZCPrK;I?#NSez*8vKby9e1(BA(SDe{`Y15 z$H4Ono~zA*0Q46cpURuOb99)~rNGI9wJ*)h8#-L<2A|kHMZh5klhA$9ld86Tf3#@e zTl66i+DB}if1Yx7u1p9rR()p{>3ooKww2&om4W(zEc-*10rAFT_)uDN2heq)}H1jTaXEyPn zZsL>|R4nApOqy}v*kZHn#)Q*s#mGmQ7YX$K+q?J!ods+MZ76ZyAZ~{-pyYh&F^K;S zWu(lZ+iPxxgseSdnxsr$fP}CyXYmUMp6;~(2UiVHZ>IS8UM(wPG;rsR=ZP& z=jY(RKL(eeR zfzLff2C{yVI|N8Nn^NaUC>lj0CUsS=oo!%jyrUZ}Ua-1zCkB5b=(j>X`}-D&jLqIq zvO8SDNia$9L_d%rC(4qgzgtXRNJ}LTS;PJ7zO3}r))t^rb7uHb%g9<=<+PZ6BXzV2 zT5FX-;d#Xnm$wt7##kVs^FJ^m1mUi0*1UR}z=N%i3!Kj+^EW2|Sx1_C24C`7nmd`c z?ht^HJ^lKso4n@lB_xc#fTY+UoXsA?!ELo`qhWL32J=AqAV zw*kVP0CcNgB_Zt7Z7r3#Ms29;XcFe^eP2?|x=c7*ahZX(o5w(0XkihDIu%AGF}YMU zK<162EfJWGi;`8)A?TrkB~cK(oAEwqaQ2$2jnDYQ4Uq>WRT2bLASNEY)DL0qrU~^c zuYO;Sei-*7icI%}moc3E%AE*HepggvFRkRGCO@(C>Cu&PTNyV%RzN>e#fv9zfSij0 zu13)x=v#S*{Lo|jxP#MuIR0|cJ`7kV1M$*pPRulnP1jh>TO*dp8my_x&v(WC40SO(%4SOTYSCp zaM#xWj~e8`&*0RYxI7;d0AE_q9AjmO?&1A@h6QX$c90N)QmF0r^r2MJljGlhS2@lF z!*5Wz?gBQ7zYPx5!+pSjLq2F~5rHjQY6_2a$qPRzLB3V5bIi42m4pHcpOZ^(WGZP( zN=}}f4th)oRjXb3-bj(E#m!xPG{7Gs@wj5Z$%Ce3T*BX0FWd)`K_aPp%mQV~{izMS zCqCZ5ykgS(n1{oY6M(A=9$$l&V_XZ_mF-v)2PBEpQv~#*`gx$oMPa7}(OgW~_v-5E z>up>|qoYTb>1Uyz9A@XoCj;l+_`)=_h?dsYSu86mBm4Sz0HTq^gOe5uFgJIU2>H}Q z_ux0rHO;^l12vwe0W}8~5Ar*w=g+u%;xc>>c}B(mPO%e5U!Gi#w?g;)&FD7?5Ni~$ zB;byYoLdOAT?qz<#LQmu%m-q+BI#9$z!JFD7@t7j6LYG4{7Rq@asp>zVz zzc6xg04C~Z0Jz+Z&t3uX1D-f2`n35}+qFk4nG^rTER26~9in^Cf^OQL=8)3ec>xMq z{`%b)zA$I*^pOqNxo1Do3(G7CJHKo|xErBvZ*OOB6+=udmx~e&S{hyZhP8AuIf1PJ zOErE#SpkIxZ11+nF*bi&hx2e>-gDTy%I;C8Nt8Q9`D2Uq|iOK zan9xvWaFsPcAB{S=G~`hqr}|jzb?uz_awIm)A$RnXXS^;^&-1kR>huu89-H%h2e|? zHFGs5qdzU&H;o+ULf?uz7-(qd32k_p&D6ql8-LzyXoTo7*obFLU>D;WR7BX3~e(n7`7C~;DWPYH)kINJtGe1x=< z^>$HlA9pjq6sYl z4Tq@-rSI+z2x%pUIDfU28$j%l742>Q79CBOOc^*kIR$p9#RH`Ybo$_YQSM}EymQ;& z7;KCkzM5yg)|z&HX0^=EsZ6xXbk_yc=VK?q48|2Z6@Elo_SxH;+dWpKXD7|I{%e@h zQZ<@QNdnZ^kWWBW;jS-I@<{Z_tMpJ^TKkWaqu zdIJ*;VS)kmHEW@=bIe#@U#!MRbWJ31Gwx#h9(wy@pgO%?@&ME=6Q>zK2b}px1FSZjH0V6sr}!KLQtfYz3Q;VohYYP zu=%Q}{YS&Gz3|?ouH;P^$%B~@D86A5d>4hC`GQ|6H=aKJ0=*ntxcYYO(7cjV`uj7( z^wO8>yPG_uJ-X#H--~O6LWVtHZa(KK5>)8Cx_Pmb>MUsURVo(%EcDw#B%1!NT+rzR zQm_ZK>(B~p?6R_My{{HJ+`QB>z7*f71@m+DKg9&^QkOZ_vptknfbXT9qwmBQqU-kH z1SafHNmR@uY4TscZ`qr^k_Cr&tw4XVycdq*f!P2_(*_0^#=E)+&CE>H^NHrR$?8oF zCll-f!V=y5LQ|(!9~)D^VpJ2RSoq566xm-bF^fK%>4;_tA-j;a!3?6IeQ4J8mhA=( zo@W54fRvTwXX+rpAj(>*Jlp@)jYuCajS72XW9w`Bdn>I5u6+-tgFIR%lP=o@R#(Av zs&%`-p0tt{LBZuWRKh~qfL^9t5LRZ?lraaarw@s?{?{=UI)(- z%r^kfQGS-ezp<0ZA$15)Qw@OMgHn=6{-45^sXREoC$#t$;d9nvnvZlt57d(jq`R-h zue{c*xkiAUHm`p;@?fT=b_ItF$4=4MZ7|Mwd)=a!?zq$>GP1sWZ?bhwMPX8y=F6pp zJ$w((LO|nwNtJm=G*Qr$vWv}nw;CCiI1FpEuM4cX zaer0-G_8sG^Q9KIdF;F#xgssrxODq|bLMdsnf8T-OuTFWd76_y$N7 zrH6QwqQ;t_wT+PD0mh@@$GOW8sZ8(F0%V$j*v1e9cNkX{2~j5tno=P*Sx-p^CWWFX ztpQ%zvYN+ryn8R1%YGmX$d*QRCF@&hEW{dGI(h6z>FhiPZkO*r$BhDlrvB5YDRSQY zGu*~_cFXWXU?~q6p6|qg?c>O`O7Dnb$l<$d`mNi6y(Uv2eob!Qry*qQ>xqm|VJCKd zKs(DJdsK&ZEX(X)G)X&Gl}AVVLdCHqliB_kfb)WQZ&HR?MdP!ZePbdk2eFW=`c;81 zUl(28NPPYp^!45N9jkPi-Lg-K-^cGX?ozKcBMi{*_i{?0>Az|VPYra$3Tq4$k>Ug# z@t((?vjcx|QK|*8eqinOdhtrmD(D>scZ1=v+Ef08)TL9uldd(v3B!r>=KcDX(sXz|j2?o43c$pRmNx#Lni!>ge)d zJ^F_MjbVh&9>S1DlXe2+R$${>kL!JOpFjG2RMe1bZ}L)fDh9ty(u(AFWQxlWxmup9 z=a{J8nbxo5TcC>l)-K*AJBZd*;#;t5cKYO~Qe=z@3mLHWXZaB?d4@_y%nO|mG9&9A z032iRrAv4GgY52b@>s#b3evTNOzeFJ{*A#@i8|SKK2A&h@8KbGo#EjLP4TILSLw9_ z4*Dr3mu`A}#}7xd6p8Qm1abxpT5pg@#zOFezYI6n&tW_G-Dk{zP6Po_npQpjFmkpY>sO4+MExx>hAx@vNTd{;}&Tv%U=)H;t%c zq{AH57|v|-@;Ab0KythiLQ6qyERy4BU^PmhCsZ+o$Yb65``}TgM@we~fo1^+~>izFiFoCqR^vT7iync0Znd#|_YDAaP{cJ-@W~N5!E<*dCz}L6_ zw!iokvXJVILf!XZQdf8VjPYye={q+5K>n;x`R@1$7)4TywSx3>7DJ}k4060r}5ATl}|1?Qw}u_W52O02cMB)x-UL7PpPRyJU`d(U$d%G zp%HrKxY=3sp^n>KcPOG~@;d|@oATMNs(zN~<@0AsM@2{c%lZs7m>CIsMbC@8?#C4= zeFIjJf6F~UK_+32HLcvheWn%MMCgk6zsD{#9l^*kGccG=M%xU|{z8)+b67N16b$-6 zKmVCY(pn*vgIhF)n)r~43~3G+$SXU((R0toV{_@=HV526CsR%~uTvX8Eib-v@8gJ!&%C%x_!a=&KXy}+S!~h} zft<*W`O%KIX$V{WR=(qoMwOVYq5XdU7bpQPkB=QEvL(hS0ToF5xnE0ZN1DuaEO0$j zl6}IV2wY(2vKd-6_1bOy(U*U40xBp0Q8S4gS)j^-+$BI&bamd zp>#SMCGj1>2hwfs8?UsJIhBYW3OOFWzaRPcL+N|Bph`XOJ5cXKpKx;6qLJhv!^Q6% z4Lk8nZP+wM+#Ayx|F}P9l(C!xq~b1zEG)m+cwI z)7ibsd!kmc-wGp4X^`S#%;rAFlaGyxO=XfTjSrO(a!-yzn|26?VgyG+RiG_b`3kX> z8_;euPf<|TT6Q{VhJ@qxh>Gy>-fz|ZDPS*L7gs>S-$5jnUcE!U9qpZ0rY%sD&s&^a zzX|-x1AuJs`-j>6f=yXvd*uO^)H&986?ZtIK;=Gp{AN0$*$QRN!t_3&k=dXLv);{X z`^8RU@D}-V1mwZgR^qo!+viM`(-sZwGmG=Bs7QK}Fd$O49tYirFNi&{bB=*7h;L-1 z{(CP#QPrT@wFid10zA;LG(LM_k}aErPUOvXQVJ4!l%0W~(5o7^pdo(_6G#kyqQ=)b zOUKNFxRfR*Kb|hR$JAh}xT4=A$XDs{Zez=n21Z5xe4ttMiN%XPJgXJuhw#x$(Gv! zv3l_-U4tL#fH~wbqRY3P{@P*b={87lTP7{~7pbBbQ^AhY@_Ss1>F&!0Y(RP)nqs-{Uv+IW?p|&a&U_`k0T|}Fsw#Db6V>#jUp(*whkU z2VLfX;U__BGv{uZ`h{Xrn16s-ceRePr5SI?t%%b8liq4DxUe*uLobPp&tZD`9t-tt zzK}Yi>I!Qg@~#^m?=#{3ou>9cNO)nd9SJZ1o$DVtP@QV7HV=bf}{ z5em_^8UcIki6>n`$6ls6&IVYxRp_BsW1o$@XUNp*0%!^Y%W#T>qJ@r= zm3A4Xl?W`e;}sk}aH9UIR>k6V+(?~dnWe&O1|BAsR2WsQPe(1QR{5q(>-s8RAH`y( zgC36rlr}7ni)4*%W*j6^0bbXTL+t@G9us?Z?P!OLE%Mydsr%bf# zJdR}-DLNAIw&W3h;Qdz9T;lW=Kb%r5ljRWd)7X*c{W^D#SBB+oU2>3`m|D>Gae2k%4qE z43;!KHdib%y!++xCaLfaRqST`d-=O}wCM?f_dV%kMt_Nrqn35<$VGLgr=vTSmG8&K z3D#T1wmqsz5N)dWHuJ6Vn(X;~tZlav*Qz zSbi&_pd-B7E`D>lc?H4pzE%RdPevXqq{>mZUW}Vjios$$)A+z8j{ARue)K#g@sJ>- z?jlXE&Hc2o4bu5~eiVr-u9CCpUr}@4oPc`Jk;nRnsR@eF)pdoa(xI+F3$z$}H@-j+ zUprmB_$EH0vwfY*{3vg`cv80WRir}C<=dZNg5~T57N*?vCW-wu5%S1Q_~Fls#ZNcD z;GbzyR?$67d;xFg`*tfT$w9*IpG)4zwm*REVar21+9SeC^Hy^o&fj&Zct74H7yW@U zHZG2jJa(?bKu%WK4MuYN;qVbM;$bLLsr9$0CZQsEY^*fMDTVL|0`gU&sX#Iak9RSt)n_zY9td8b7tH_Lo-veE)kcG zSv60@{naf#>0a|Uxqq0VHW_#7fSq%-eXAZIi742@f9& zPeWM=s42QW*HHEer@(5fRO2o?Y3nV*ZCQu7+VKjB!(RE?_<-hysN4HmFqm?bwX`TG zNZf4oQ{(e;Ub{3z_OWGT^Pge^RUJY_^D&jW(Kh;OcJL27`>1bN>Dy6#>A@3a;7 z>X(WpV1p3%(hZoH8rMl|Yp7%A;_!99Cdrx+K!(_qG1I_%nySM<6EC-aZ6dsp$ju1v zT-!h77!&23pK|N>Wc7?Bbdi&Lv)Vkem4@TLax8z0imZs@kM@p$y&B zM`-70(QY!kVZB~=a4Dne$SL20yDHEu_xEpt!2)@h^n?xpHa?N7iW2E66>HuH(!mbv zttDN{!OR;e8GH?oe!uW@-_lX69ecZZ{bM?dqW^8}c!_I`OT?6ghp@~)WMwk@H`u*a zsue8sQDM9D~=dQ6-_c&Iy?dmP7oGHuHv!hpovet+Nj4 z3Kp)*p|_g{LPK*Nc32m&lW6IdQbjsB`n#_5QBl$IGs!&>W8Qxw*O4Rl3Lps|Rzv#L zV_nqN=;68??7-Ec(HmS1{0gu6DHytQCI0rR2I3mGSvs)Rg+$X`zupJ>{>-R1UM)0Y za$bc`%FWc6qR-mROv6>~$@*GUdy*2%D&oOLp!XhO6b0sZUwMFP zMr>xiQ^S{7*Pd4ZY3%g2eMLTHGCh6b6*-mAsMP+6kE@}>*Id2^IC0>3H@C|7Ekbvvl;&&A?uKThm3A({ts5`T6q;d2xG(Qyj3(4@OrecD=6` zRQ+<5d7IY98uLPmbZqN_daUGgCwVE< zu#Zu6v*X26uRT-c+G{yQEl$zK5@05EU0tS89}E+y^jD^+(YHmt#u|h?{%wHKUs_${ z6OM(4`<ma!c!3VYg8Yxs9OIVy>_pI1_>%kvZ#2LZ0=AM#|?dwb}~Ph zJj`AS3CXm7z+YN@;(@L1ThR8^wahP?-aa{_Yiu0rjh2zX_#*^aSO_DNMvIaDjYU0a z9ci`jEiK5|!(eqE>c4E24~pCwEcbdNf@SA<0;h+;3eUGPS1wpS{mlNd(?IuH31`ps zi$bGj6v6S)cUay|UkaHla}E!>&KA+Q6}sZ*9vakAS2t}hguFg=XbeME74csOzP0yi^%`TO@$-QKs;h~4e)$4LAwDZ!}1@;yL9iQ|R+O>N3!Ce93N#)&mkoP%}4?!bi4o<4F-YOfp`D-a$8@WuZN@Ad?{Q zGYwMoz}i%`WD6BTNeelp_xB4dfr$uo%zbqIj@RTEAj4Kd%$orV76mYkyO-?m>7UXU z%#&Yby`AbcJkw+xQ*?Vwcgp?3HRze((hHl5Iwp>f2DoB}ge*8HXv4%vt>c!B#rxUc z$l9yZEl<_lpGF0BS#cTG!YhM<&fehS&eLwZe&a_<}Y_Ov zI^)W5JX)H|TDCcwi4P!MV}*NQLAUo_8f5uk!<{#>cqT13C+GTbk>OHzVq!G09U+tTL}l7;i_au)t}VIku@7AQ5Y}sd*MSH&wze6t zXPoT$O3b-zdr9 zX6;?G2nOY_RU(jm;r_}*_0F$2UNtqfgSAmd&Nk#|Dcg-3#zXnfP9!fND{|WF8fKLL z+}4Gd#+dy!LME6n8DLd<`Po84LkxU0q#vJbf0+rA9kiF0o;q~Zvi6eNjY{f}xS*8? zoPATczY_LYYpkK?(P6@R(VblJ-N`>>B95C)`?1vC;Ij~JfdD0J90yfRwP~^!KL-Z~ z3(Fkl7|G4fUNiAR#Cfd>*>KFl!ZPK9MS~vBeNw5x!lB2DJ30&ibRhzAK)s6R;mV#w_RMPxdSO#9f<*9Bym6esHctC+MpMFZY$uZ;E#yKP)J~g;(*AlV3)BH(! z&_3ZUxj4*;B3~X4W^GsE8at`eZ{6O@(^$X2ZfM~jcuq_leRJ?Okdg_N!yZ)*mkqNq zanxRBnxQR1%vrBrq7oxCe>lWhK;{e=uZ(^7uGkxm%3L4J(<(BkM-|p?SfET*RaI?l zZ1Vi{6Uptq)c?5xm?g>SLh_rBbGqmBJU8)DSW^Vgn!ec6a?R-V7hxbJt#6ym7bY5` zIsoS`)oJ%`&Wg!|iyJasd^fL4{8>OpGXTsI1D|J=e6!n|t@$>#>(>*oaoW=2=-vLz za7_sc@Ie@p#8k#CY&ay6%-qZ_?CO{roFZ%9j~vE;*Z=d|Gi~(cDT}5^@6^>PywPA2a(BhTdg2tjRLde3Ymq?SYrfl4%)_SfbSWEmSGc&We z_|$zj05q69VVmwxISAP-bkOAvOJt5yT42>tQ}?`=caLkx$V7aaR!Y#v;wLjB!}0N$ z4n$E?d3N!rA=YfEqo3bLB6*oP?1cr>L=g=6?%|DDc3 z-;~PgdoT;eJQY4ikq|m)IJ<)APT=y~dixH$XExLHI=3_^NRU3Fa_CB;s5J@k1seL_ z3UKo`8ZxOPwo2II?Fj+jy$_bE8`fHe^|CW)5kkmbBJ|tNJj|%gw~fE@OX-Ch@wqp zk7+|UCpB+2iN+C$?gQlF6{;!%7t-aiQ6E(LET!KY4bv^f(?y7-XKwlW#nPqY^%*T1 zZJ2AJ64)tdjkGsRRxI6MnEbY6H3KaLIH^o;Hdkr1)SYl5eD81z7oIQtdN%nzAUmS} zPQKwmmJhtMg$J!pxMhNC`QGx;6&9c+l98v6-vObsIU<#J2QQph(o7`}DdHv*SmTYi;|Z_V^} z?t9m4&1Qmo_wK3Rz)Q%I5tuBxm}V1s9{nKt0sKm36R@gv7h9RDi1Hf0&-*{ExU!uNz1YoLEU7ZP*(pQ;r23H}8&yW%{m(y6vj=~J=+ll87~L5! z?b$v0c6>oZ?Yc`;4$#L^^HmMG6`)>$(LfXj<4GULC)!_6w6+_sgNn6F_f>6faj*DVxe1mSn*EY0Z zGu?a&RFtTDFkk25rP|z#(eX#GzOmXrc#Q`o2xf>y*$HA_?rBwJeGUn+4mG&=?wiZ> zD%r;`rwpp7S4E*uQ4{bSs)r z{SnR=I;&*~Ox1@XCLjw6ml_V=;PL?CM!%Qtcd4Z56>Xp-PCWI>%Num5eFmQi^Zjkk zV`n~*O=;ZSsb4Ib@3#WV4}@9gEXf|c25F=xS&Cw*kn;-)Qr{S9SpV~O-tbT!pmYt> z*WQP2S0;VQRX|6!4RW#S7SY^tOo}2?rU7 zYh4(9ZHz)kA7C<8Js!hX=Za2aJl6t13vF*>FWF2wK7|qjmw@$3F*@3>cZsl>T1e}M zGtg&3^kYMFmL}FTIp|lFqqM786qH2+qEIeARpsNcvIUb!?iB|n8zi}Dz~C9$K?1H* z+<^15b3fHi&F*TEa70jhAa-he+3slwDTBoC6k$-L02s^yg-456&O=2ix8=fjAgalW zz=!$1{Me8t`-844s>o?}Fb>*(CRnch@wCQPZG(95!Hji6 zUjx4Hu^GbNuE>!QoH6_!UW@s5TM^I<@@L2 z>%U}|{Ptp(Vo|jelQPDgv6+zD&`{CPt*KJ+;U}031sb8VDfqNk2heu#@~){AVWJr) zQR8z>wLA{(qs#qxo8tATz+_SJ$vwGtiW2qHXk}&hq(%bNOeC>2C;Pc zVG@4RXo7eFy}&(K)kqRDm;Z8{&(?<^#goN1`#;Ftz|P(jCBR--_GaPFJV{gs@g7@A zvRIz*LlU+-Lw_toh@F|xFUMaDK7(ehDgK$|dM+y%M+2yH-PAE9kHwk}{ld2t*JMb4 zR$sqW9_c)WSi?VdPQ057JQ#G(O!+T1%cN%w9l-k_t^sMg4WzJ6Z8EN(fF!A0*D}{R zHoN=x8nU{zE!P5Qo{0hj2$9!8h5-gkNFCEjj;o*4G@W)ijK+!hZSTahGjFf1u2zaR zHfcVi6||dKZcA2Xkda;pwGMPy6QP`0;uUdoN|{oEf>bagiu(aShBc92)rSLi*S7Oo zZVlRlQVq3+Tzr_MhohkL9k)Nb4XTYzO~p#$>+{GW;i#Z?P8BbgjiRSCB2B%eq0n=| zI1=euu!s2zwP~ipt0zz#>dOHTTGRMIqPT{J>KzuI9ZbsVs60HuMA&C~v?J|bXsM~M zHq7^Ng4HGR!p7AUNcuPALH2sxM^!W~K&QCe;ej{!(Bs~0+Vaq4-Gh|l!FEMcyi-dCgP zU>_UtTP#L0yBbhD0C46gf_oqR!5kbaYQ}0f2%h@*BNkZ$7W@jOl%8iS=1cB;dvWgP z#-%HvvfoGW=4Gy`LwOMxtmtE9>36W?K@)uWm0x5`p-JDQ38OzVGpcxn`ZBkNzH}<% z5w}bB1t3yI1yj##ZNnIU?<9=}*=1FhNJQ1V- zo1%a112to;%a0?x6geQprJ1wGE8>oP10IWiTS3)vyq`H8Jc!%eug4wLcXw zxU|^^YKa79Ol6HQy6&1L`CySI}C5Y$jLFs!Hjbb=~=(uVHGDSFjfz zc8HsbEFrIo4Uj9&1x@lH1zlN0l^&%XVN8*9wGsO=nS5Fctehd ztE=5Ydz3C)ZujpqADN-C+vNs5_~wUlX1IEl&smxYCj^Xtg<$N++BAVll5pU8>Cv)N zt{TiH99qymr?z>6CDF3mu!$!iy!K6wL|pRi@57w2yDrg$H`~yR8ckf)7W91;B`+)1OMcmK`>fY?Rd19}b#O@@j4 zGkptv-VGD{(5g1w26_6p(eYIT-Qx=v8Z5t4;4Fm+WS*M{Kweol$?$nz{=mVyNB_ih z=;D<$C!64VBM7?h$AmaEaq7<5Jf!9=^IWuZEdha-HQAa#3XXT72HmoeULCld;^D%S zXtVY~>DYNAU$~o~GJK^7nlpd{coq6N|PVr!=NxgM>p5&l0$7z50+a{ia0OyP%?NVMevaM1?(^-`x2 zuxSF{BZd5J?*nl7OGwb(II3+oee zvDmE5rwWOX>v9r==5o1rzwS5^Xql&oi_O>3bPtz7`&T_K8cenmY%IJR^puQO)Bho} z$cB+hOP>t!rpk(jFL{W&pbb7?dsBV^a7CVfq}^W@zlbrIt}H?bzAPv&IxK6SjRN@k zM38o5K21M+jy?KVH|-H)0l)OyO)>g1AE+7P>6L^$<;S6MFLI z%W-)nK4JRe=Hm&s9Z5)Gms9uxoBJ?qgJnD8-GUM@p+Etz@D7(0!MVt+yo6X8vkC~{niyPgj~||P+~b) z|F!7XmZeByJ^l1bzme3#_gc{-MGgr^rPW)^TcIwM$U)n7;4qQZH-I)qCJ5%?fU+-{ zuQFj}WQ@?*^SKL^gxjV=4RriaFm*pMeE1bx0(s>nm z+Ru>KaEOseyly(+5ySnZFR8Y`;u@ZT8TuA=WGe@N#QC1fkfANsX%zmfltd&QL9M_=+ z7g0YR7aPY{lsiUMAci^aHcc;`7P?%Pf$Vf|v8zsU;WOoJs+F$NPJPGZZsrotu0pho zA^`$zGQ}Gr1Tdl-6M}+ z;GS^zlz$yGu^ZT;9k1}_LV$9yh7e~*c`)si$G2vC;PWppfrr9+w_G)oH{RH9J$}c( zw-VCH?y_EV>0Mx!w9D$8k00&7@m@1D8ncaO8ew;Xw_axR;Ci-Yv9oG_yPvDtYK1g7 zOsq26V(3JRiy_@*ZRAToGV*CWE&WmNlfY&b4Hf(Bmwk!rj2T_Kc`Z&lY&;D>`&k#K!#-^AyU3FA#!pgmSe(ENS%EIc-w)<&pGq!5sta1i*q zW-be@bWP86YQDN`uyLzjH#B}Ra;WQb;>G1K`hZbe?hv7a$oIzNZDhTc-&D@?Qkz=e z;?W(eR5n&OtT~ambedKZHMy9c&TDS`HHz;TCad7ghhq!Cd8cQ`k*hY82{j9to zJ73ivHv)<;AYOzGKw`$;99FiF$vGbKk&esW*IL8GL`~wQ9coQZ@o8#kQhh_}OZ5Bb zPm4D+jKRS+4f-IOANlpxGAa234c%`I5}xj^(SpV5Qify26Webtq~Tl(4zxVS^h zZb^Ld5%btY7O%CC(>9+JfJ=5Rzy?KL{&denvtPhvJVYZCS#Q<(>|=k~<%5=lc4YlT zw-YYQQ?8TeT|Pb$Yct z+oeGv4lM!e)(pjZR7u9|WWmB*SA&s3#Wc&cfl8!GZO{bj&_`<>9G{p`rkNO0QknHg zJleAQN8@I|;0VG{w?1uZibgDbDOxwM3Q+>}!47USl0_22-|cPl2lbv^roJ4A;BSXc z!pwRW2c)%B(N!8ivVf|=%~u~xvdFJcQtB>-^yt*R^!6~f=^q*pGXKIA;<#_;HXF(< zc$JP2>W z@jb2^;S>2v!*7ZT6}*IZIzFG~MnC|CB~;NWG6B}09P%%m_x7l}l)R1W6XAX7-HU7a ziv$X4j8Bg+`F)D2UuTp+d}TM#-X3UL;mX|m{G{vWT*z9qBYDD~hOcv~Bws2Tzj{wD zbp@gK#L`YYt0y5NV<)gNm{pr^x!hm>xfDeGk+tN zGGA@1PSQyx$ccN5E3peODT9|$PFraY7qQ!m-NKFgT>t|lfY@$k#i@h$eSC#OYyn?r z(1IzK6+%Y3+xyyf39{B+pp`DZa+`PBHc6#PYx?MkZLzw>ecM)lQfEyr-Nd|eH*hFA z+@VN(QbVs;DQm~YfEi%oGG1V&+WH|=Y)*_IeP-FkVpyoxw_7%PIGQutU1#^)0Wq-H z^?q7Gx9&LC_Uj+6XI3_2^h`|11Out^a`AblX-|DC=bxic^C|Ux;7n*(A)xm*JsW-u z$b5Fc2&(ZaPRKtWQ+7mV&?b1im@I4aVVW+;3ktf_&2U))E8qEtyyD{t=k2}8MY)R? zndITB6~@VH!W#O=qnUo)LSnet7l3=!M6)FmTTaeC%(U6fPNQzQz3Uk`gnK)FpKfY5$DO_Pqxn6IsSKSq1XM#tA^xGX4^|DjI*^RS#Wz*R)bD#@s5ND zaDsqJ+6+vN1jl&QHjv<(y@g^79tWaLvH|6s0Ep81$+Eb^Ebvwra^6BN1Lu z%nb@E@5A|^ABX~$xk;XeG2w$JhN-W#KQ+;{pqXxn>2QISl6L2i3Y7JQ$o3YjSaRfR zhzxUk3AfU`xT`06^dO4aLG`Dat#!dy&HO}a>V<^+@@P+yu0$UGqrlmDnE=5*xR7k- zY2jMG*L3;8iZha@Xxc$m+WRBT<=>^D@@i*51z9sVb8>8Lc{skJvCeEW+9Mzf^AH4~ z)Bvb23x3kndC7^ z%6y98f)$9?3sdsvoU~;Hz~|i3|0l@?SpOz9wCVUPAj`6aasCPjk}J*99a8e9)sdd0 zz4f`rmfI~`Biu)Qyfl!4V#8h_hk0KS=<6&~9<3&qQ zWSl6jTM6xps5aL|60u7`Ix@poORgzaf5)e-feKu5(_;^~YG#a3zTl8sUbLAi}f|aEN zC2{;SQiITi^wWKKSrNGa57Y;{5DQB$ll}b~R6zDOv72qAxH8}}Hj^*{yJsLha2lkq z{Vu{PDE*@9;(WX^VZYOaj7XA0+e<@KEMN)1h!ywt|5CC0=QmDz^;suV1%M44BL{(c ztcK%)?4Apu*IuGgaso1~KL;fKsw^c@VcNJ%J0PDK@^W*sMe}wJ65+^fm;@8V6iABn z)04>@C-0`t5o3Q^@scS68GK$Yuucn?mP-Zy0dIA{l(Zb$GJs_ja1`U?n~L>Tk8b^PmHEPPAq{BB+hT z)i~(AekTRvI^0ieWSWfDs`k=F+RuCLfeQ0?V$&L4D2=$Flan^e*)I>EtP@zhVU*cC z#@ZtiDXx84EIq3`c{&tKt^*LKUZ~83P#i4{h3M!h26id11wzYHXMv*HXrjrU((6AA zP)@tmn1gKp!t8BU9Jxx_JB3d{DfCQFeHWF-a_{7|;U4{c9f%VIDHibus6zb{WRjrt zzX4?Yi8&Zvr+nwZM#jK%R~r)U8DfCXf`Zn5p2VjW^DGPn`yp#|;V~xqBF8-nw7RCY zz3Oa`Gl6mMPc7BbF+>!zqG;O4aJ)rT(4w8-7&d+E?X&}AVb?c6*~<-%m{w4tqv-7o zWVTB2zt>VY+DPMm9{(D;$m8)5>MIJCa`FEpV76q5U;?U8pbVS~?%H&KSg%mf377kFvd5#@=aTWAnH!Gn2 zV6cy%5DAtd33%AO9@>hZPnZ(L!4v>`qj^?)%e*gGZHRHwsWdafgi;-PhTVHW%^4Wh z_p9myd1eqvjfAo#lBC|R34{{@YHB!XeM&Smok{3k28C*Ypm{=2W!@LBGqzWUbfJ|<0UURVpS>Wkkek20;bSIiAYOHGJ`JQcWS_N~ zQ@XkSY@d4I4zVMEffEsup3>2EI+TW|OxX_Ar+EpR=Td={GXA7VwyeEh)GgkSAu0V5 zd*~!-_Z1=7#hC1^W?p?mlu!0AOQo~gAYKIsqo5Oa#4@OI#0eQYa7WA9s7Z0T>Dq(r z(MUMNpk)yJwQ1^=(zGD^i3V~F=vABs-O3cAkJy*UaencmsmPUn1^d;1H6V}<`0<{rU&qvSGYZ- z;87-j+H$qL8)T%tojOyX`oX{1j&l3scfS(WnLagWFaQCoVgTq%AaA0${?$=D%WtCv zS*YR*Fr7tSWzAE)uKi!9Toj1Z{+3q`ZTM;A@q2Qx%%c6EUBED#KsXUz5gY>Y^4!Ao z5rD0_uvM80ndcX)Ux4HQ&hfKztnQ^eXhcmMaY{pXbW1yDqvVRe0IkBYa1&&}O^XcT z%26Q`ZzsJFMChF%tXO)RD&X)4H6dJ+jJO8fKU4l63N~OL=?&rx+^BG)Pb^bRJgIS} z>U-&pO&{tAzZrGXL4Gdhl)awH|Bwlye?A41DTYb8eq82f1KOFn?(;je!A)@f1XlPK zz4mOp<7X2dz6K%Q49kBnq-bLKkWEe@DO4jv0ka0~`2Wal+3<~Cf+5wc3k*vva0PA< zH3MCe5Y#=$E-KVy_);z)K2}{hQL?==3HeH3ECuq4x1NHR_d(^BzOiQ6dB>nAsIsx{ z>z4{mV4Wb&6>rBpvC(#$y!kJuUIaD@=#^L;>sp2))<_|T3G12369!cYkZC_vD(CpY zzL_hDuemFjru3{f(#^4OB`4&y`oBrfM0&C|a64IYc42|7nVH?DJUNhxE5Jn8eXB&C zpbult{4Yj2f?mkp`J;K!|0l^kR^>B{`3WpAsEb{}zeNhLsAcM@nq-zA3*qT?N1h}1 ze5scoB#Ji12rQ<70=imI?7qE6(tf;4I{3hs>?iHI2&^hHlaUbOtd$5|L)vw3vYo8C zu#}jLGLgkt0aq?rJL^FPGo25<*fdW|NJjDQAjG9s$yipp0W&=PH(%YGa{ZEY>h_d((qr))^e%G31^kcE_m$| z42B$%gM(tUnQrCms@+1U53U~6*4EQ{F9KxTni}+d zgoIT8p|?OKb#C2KORy+Kp^-SQS`-YV>BE4|9bIffpR(nuV<-8!lVvuD*gg@ftV-Rs zQhwe9Dwn;ysxqLi`l=;}>mHyGiGbQq3*7%Kn2Af2HmqO(!$L$>L>1w7s{Eoj0){qUqP2D@&EcRcV)8 z+N|U7bWOgUOMDg*LH4NnQZ?TrVouek3o$TG1>1!Kncp1d@docdB<#2~9?tU##o8(+ zISNjD_Bb-`UTIu9<85U1+fPd=vF4G4fKv-mj*+<^WWvD`4XhoinD%IOeM)B#zNL=P z22)6%z2;myfJ3H|0@>>9%x9}FK)>C+AodQ=Ny*x4zM4cs6~|jbA1_0%VXpbc)v_2F z(YQA|`vd``5O>Wa113YfV68_Nk>{0tVP~r$UelON?h-RuQ2-y+EzClrOi7tV^#`z&hxOQgQLN~^~!SE zekZH-BOd!8Ybo0k=wyv3wh$@ng#5B3QOl3Q#FBc#+k0Eskz4*jN3m?IFP&5aS^X)% zJPi&BD8>s~Ve+?B+s@pWgU+T#^|FyrdzRR}9#A>t`S>J5H77mdVa1ak?TV9ie+m{i z=Uso@b8-x1GcB*lVfU!6!(k1r%IYsF$FV)jf;srFQwMdps2jILj>G9#O?zl}nnZJ& z?Q7;MW-0Nd9+NZOf?rdaCP{HBYU*^d z7i4wo3vCrVLTIO$F;n{4#ubo9UX?hCy8zbP=%oF@w+9J)*YHl;3VQH@xu4BkhLl{_ zY1$eL1_oOQ0}WkxbU7k8azAF8|K`J=$|bCqx==R}dXf9#{Cbyg7FvO8D%HJWKGmFLW?3>=GNFzlR&J zv8JF{eoRB1*`MM&m%lzy@qB2%>SI=yFbsnFX>6|HXjvrF9J7#lPfr4r{CK z_0S7-a$t5J%|j~;bF0Pt(L2t*sp!MQK z9&It#pn+K;<`zS72`|LNWq4ys#_h@jt(|O3*#KO(777|>fBZOM)yi8v_x9}tVv={l z5Ud0zW#~=EY<$g|uk;lM;?d~66K-kB{ty&_8|vf`Ux*fFc~Nb`A?m70w6!bsA<+C` z1{q-pbn+z(cF&}8T!5Nh!ljtqQ?k*NG3g>r%6nlJsMRM(s@^{9l`f>_r^1NP3kN2$ z%F(u%!(?hQMj|4z2p@CfM!RG)b4vWdIEe@e+k!Yj9ai`qWj@?eM^!d@dZR{GU&F6eo-%3jpF=yWK;u5u}8z?TLp{DhYwecTN zkz4@>Rsw~c`cAk@_3%!Egvr3>-5eu;!a~xPlcW;CfH%9Ib*>-_!eeqM@iy|wm+q%e`ZovLasq*w3cavdLw=AT>N-~kgh4SO85b&nB0g0c`|OnLR5#TA z@{7i&@~(@sw<9Ey0fOi5zi1Q5xaeS#5{oF({~+wo-ymv(S=+3}@Q zMMaQ=F@r@Q`ZB^3_*tej2)xV+-QN~LFPt)YAuS+~GfrX!2x8l z<_w}MB@RE7?Sy@FPq6wzw}f>N+Wr)&+n$3lSTSb*Dj(Fyw^@svX1voGtPtlYJXy%I z#qQ1CHj)9-0D}G$Ct^-AuR7$|lnXFn*I;te57eJN{1rrK62`#T*Z5)7hW2Uk zE}4QswX3ht%1@aZJJ(jdD)<66rNgdgwai5o6wbCu)WJX99OyaecX9qG4-JIft3qB-zSHE*Oh^XOVJtvM~O&lnOJ+y;P683!> z$8G3iyTntg|4V^}!DrkK3>uuZu<%I=;r(C(yFFs%D(&O#CLKAbQ$XmAwlFHNZja8P z^4YE$m=(f`)vVCLG5B;pyr)9Laq)Eu^MKdvck*s9>6#CjgM;u@uR7$+78 zL)Pjz|8`zcT@Iq`zh|hPqplh_&u8H}Qu1i)uU~W6Uq2Ym*C>}Fe48mD*x|DM0L-=> za5AhN2R7dg{HtcsRoe;6YNye4yx-ug$>Mue}uB{-FB}Z&oih$+I9Ev=FCI z`l4(QEi)X7ldSLd5~W-l${p)z#3&+eflqLkYU&b2$|c|%F`KbzAE|TC;Hw9#u>d9i z`~5XicaRw9)3zMPj&a1wN60hChGH?6=6~MiVh}08Y4`tjrbI()`fw;P5I6*2v_YB= zIA~uPPqfLDkDGGU)SSJY|F^SLh~E-;I%-~S2jogc9Fp~W}vKbRKyaEacA zUjxr&04{mA9=K#~dSRMuO(k87e2x+2!yvV#!jnJ9tpE6B$SMFeuK<2o#K8OZb-~S? zqYpSApCT0|bauDc(Ze~J$Md>+t~vJ|rn}o$a+*OaUwfZ-HARWo&?QmuK7_0))Wkl6 zfRBz|&c(S7LN?OKWo|eK-B0_G5r9A#(G8O@r!wjC@o^a->=GVd*uZv{`C}|1T%fx* zqd$)YBs9hlGcVqF+!{f52X}MgY_Wr+A@S9_*Io?fjkVOWrQeAbj^T$YmVxxiybU;O ze0`eHXMFQGEAk_xSH4`E9z4Bm0Z;3_+6TrnB5?fFj5UuD>&qXHWf_1Gk{n(ZI@_-H zEJNe(>VlRUKtOv5{I(T-B-4P#dcdh3wc|X$zwl}y=RXdPCGf&wY`QkCo6G#(;^*A6 z7s!!%B5IVPb~6mzjTb5C!5TdzqP%jo&Z>_gvvZL3+(9g~1^|*3NT89yj?{VQvi*|v z@7@;-I<^7u0Xs{4ZuyJ-4ihmW#g&6Oc?7dmdPK$}*~TXOF}s{J=uVhWykpxkP>L+Z z&-6TZrE#L={w7IElAM&D8jck4AtKI*1h5_kyVaTf;zg0T5G$WQlLlD%Mxcbfjt$DR zxdoQd!ZRlp@Q{wcqf?%pi%HZTbKE(c@fZ58#g|^m0WHIpd4XYZp)H-B z1d45Xfk}=bsQ;ZBwZzeO7{y#Lq0>95bF%;Rv*P;)Tc5){0A5dZTL3_8nGN`7gn&<8-+;e#pE_g;&29tae8_md}-7c z5o%+!1rrTp{~0IOxge+TnyBW zzgTZ*Mum(ywGh4sX9)>TUe1>Jv30ji^XuVy zQ1<}EtO1+uv+YgcA^-J37+1RGTS>Y$ZR$hySBkMTry!QH94nFL<<81G@-&l7;BA%D1U*A4t$udM#>F6IY`3Q} z{}-9Ax*lbm^!)Uv=)Xx84?%HAai<>lFy9&|=e=y$7;Cix_YTRq_FRol9qSXPbu zdq$5hc+TM^4$R_uYL!^4U0$6cO|+%t5}t7nNPBc}l9X~P5Jn(MS1qlj=I7Wjf*J@r z5S>b9T+JeFw6Syr_$fs)w*qQmh7t%P{~}XPo^2R|z~Q%ND!4fF8fge7`Cr}fc(Qi_>fp2T(`=TT+*l{Y6w>NqDqHiq* zvsrTK^@>$rS1yS8UtahI_8Mw?aO|yPs?-~N+b3Sj91yk6%~so2b21Un$ZF6PPFbrB6~Dy4;<0G z!KI<8>5N9fm0J3Z0NN$+s6{`38NcrWq5U#QcHR0un_r$KKH+XP@1BDXWC(wnQ3%d+ zS8@+HTEf7*Q!p3xr70?E-p6&Ry%F1hs&(A>Wr&`vX2oJmIy`)cE}Y+Tvhx1ogT*LG zpq+Gd#)7HXCgQLy!Bk*xbdUJ46&8aQW6-U%8go0D=k8fJDOX2G!X&Q6<1@i}Z-hui zNz5-Q0GvU%hm>G8{xVPuVo?wVi8Kgu`X6?nc~sub;?@(^uDSc2DZb(Gn7UCLwTCRt z?e-q;vl{MJ_e3w!8J@h%Sqbe)qsENHQ=+Q04886P2ngJ~xmeuBDB^wMDpSfJPFQT6YZmJ4zBG>BeI9Y^}qZH6}6o{X1=@JGtm z=y=y0hEK2S@7GnE6;ZqdQNZUaZXU&`1z4h-zGB%F-8h2OB5RTE`7oi|MZ- z7wLT%QR@hjK(dPX(ebULIEEq}(93p`@*)fR)&fIRei&{-N-`6~cr12i!1+mmd9(?~iyOgie z*4rJhfnbxOtDv%?R%Pw`H~jA4ijQBI)iMDF81#5|6imx&B8Z~kJ6=wUqzA>U*OEkB zHo|Cm>!_b;{RpEGylv4AVBXTrFknoZdj3AMmDx3fI}DRcd?C!o{LjEr5;E`dnW!6v zg3ueWdg38uxL65K~$;@RLxc#~8V&Z|`8x~`bt2}!yI|;&YC@6dYJgn0XnQpM@uZfD~CEKIrmmTN|vnAQAP+z(QC-ODiUi~XYo7W!uz;ESLos2DV_vjYNGZ6Wb**Ba43`5P@ zN0elE}A z`}tK-URlP+ILzR~+yh8%y2ixH_|yZ`{(LX**Z^ak)-}|ru@^js`r%T+R8U|U7IMLG z)6Wc`;a=LudFMcE0JDMmSdpw z<+`hLAJ9WXDhJnUNUP1e6NI=t&O7ba#OfCmj#r^&^`+)FzoDhx(3%o0(}{aSOpzM)XYks;kvU2APDqD)cUwZMKKv4 z#qZ7Z0@eD>l(1Vwu0YG!X9%oERcK!>9xSRjUgUhAb+)bz$wAzcb9Sa>E^k%71-o@+dRej?8y1x`9BWfx$$ zg`V2@VRh^P_L6KtCOuhi~kTr;yt3G zH#{XJa?dwWvpT%)eC#0-QSL$MEAhSyysQ*9 zVFg0m`#d~;Y)V^W>&EwXnwcbbff}41f-fz;$V8nA(D^sX0fpvqG zEn+&0Lc+KE$k5)Jto+}IPq#$v_Oo_g#v5XjxfPj&;9IXU;9dQ}-yWzN;7JTEEpY%~ zp>|U|hW$*{OJw!1p^wFedSG~nu&+Ar^O#n1K2w7oMjVEd!{6rWMo

7tqg1?9xy8tE)$-8I*yY=*Wh4>2n+-E-`5o!q%|6Vq(U$b2ZA7L zGkeSHN}NZb`k+CBg(YSuly!P==zc>fT2^X49HK<{91~*a@n(ch+qHxe3fTImM8(Su zvs#zD@2Ztekie58osg|3DNJ$C|3<+>eZ&r&C zhCd0?4G0X6q>oOaqr6PJanuWgO-i!h38|QXcLoBFo$~76`nsu;^^*PpYq_&oM)E~9 zC-reaBrUT7IUAS`+@<&O7jp{T&+c+2yJZuQCR(Qo><*^8eBU98`XP=D0>4Vp1+n*} zT}}U-vJbrXSI0ZYxyPi$BwISNe;a{0k$~)_zJSdL$1g4YhWnza*tIGZ-kaurey-}Q ze}B}J1)`e?`2Ir;utd(>Q~WnyDxPG^sYqQvk2|6X{LFV_Th?ASL)GnNx$ieDE+m1d$4yjDc^H-3V;P^0iCn4QnXTC$KV+M7whURx5zsV5HITGg5FSP<#8fB7Ww z-gxP}8pqO(JJYai6h}ARcJmRjL+eql>A$a**72({w-akgl2>v6()j2;m?dGflnLs3gz>9tly^X!_(;#ie`{d&of~le)@O$ z9sm~Y-+z=Tpk(*oix`CS|NadDd?+Z!UAKs!0<^yu0gk>t{STCF`S&^O60`&K@8t{f zI{&|Wi2JXoOhiRlVu7Y|1=rA#!&=R~gNo`>xA;V^-_LnBM!(*J+pH}I#aIVEemo^) zJ4$!dYNBfzZx)>E@pAf>3ld7t!F;)|WwAnq$jV$HQVvE_4cGbk_%s`xx?&z0Wt9IR zjUV-F`nu5?ec0aHo(_LRok2ng-PVie0QN<|T=80&g^I6;3y9wn8XxIx^<32NyvRy5 z{L%f!E$C;yy6sS@!OV?Ifhb7?S#7+-qQ~6}tNUSYwgO^=*JNWG>|KI8RMn6ZPT{TU zs#W4UHU*9W0jb8ku{61;MMvNU-~UlzJh6fro8eh-T5tmYcp_yl%OCcPdqFr^H1TWA zf=)-K>7H=GV}=D!-GV;E;;UC)HtcR%MfP>Cx(sTDZpr0CxBFI{_C@Sc;KH1wqVrp$ zC$Z(mZxttJ!)mg&OQ?mWxqOVIUTF0I>nO=idjGyEkQLv`sD2<ya=Kb^T%>9}fo$*`t-fQhuKWpu*qd=pznwO@3*G!?9#}#eOJ|;d%3$mb1 zRUjV#83uYqK^UmY~9F-dd{xA>r#sw0zF_^vc_~`Re$~ z`1VOoTU!KPti1X$7r^eJ4-|ce+Mtf|g`)he+fCFn{MUgf$D9A0W0dsNLFwm0<@i<6 z7+#*@*jL%K&H7QrM^!2Le=+<*-4Y2g`e=lM$!V*hNFB!E$$Rj$TKud-9 zM!DajlJ>tY`-@w|^8>k_#Y1peW5|B`g@?x&>>{%gkJj>mGeCmaVDBI9$utTeDLVb6b4 zW$Yn9l|G9Df)7i7pIPFHb<=HQ-n_aX4oZ%nQ2oz!{aHA7BQGzYM+U&$mxBlx9t=cC zDy(L4<^WaxLG1*?>*Ig8-}-gmv9^bcEKqz1GQvr}ETfc=UP=hGdUXn3t*AK&I^_m)TKHZe!ffstD(IHW^`T-sojsCRVNQKJXJk0F+TnY^17-29Sx9ba+S<2*`g$#+p|J|pEd4J za=mwO(3?2M%q=lXolC<7Q^s$sVxv3Q7`{ONY|mOjmdAqkiWl@Mo^7A{Da{3UfL}pD z4jz5PSvX6BBJXgnl=(tN7Uj2eA%bEkPY586^1bDh3GTJy`+Hw1rV8z`_l1|}&g_nV zcc=i>@V|u{5a7Rmlh0~78!t4KsNyq7;any4O9mB{<5Z6q@-Jo^s&k{?HPm>Ov`l8j z#&OLJ0Igg!Kg>4ouDUNuOL|)NRnIi(bnP9yx-22Ybd2Gq%I|fBse5UvxE$;kF404U zO<~I-LtcO&Y>!WAaZ|EOm2pK}UfyfC7 zI9OB?f^EAq?fiJ4&vz?{oAH2Y{+qRS#A8(rdc?H!{q-zlx)2Q$>1BDcZmrV!3K>fw zpyUeI+q5*a!l|opKiaKv%I{S zc?9mWJg&RQYf5O`#eRC(e-Z*W>3>o^oAc`D=W4%^*iMj%Lse!% zdI>&@XOPRq)e{xLC{j-zX#O*KRk#ko}iC zX(sp`^03W%fF=*X5@o*fd%PV|5gj_DslPdA<$r3zqDR_iFV(N(8ONy^Ozx^J}1@>Lrfe(U+g+Xpw9J z4DtKYOcu3{T@d{BaNh;)fV6ZGsV#g4M5OR-^HxTHOm-VrY%0$3nH-!>`wuL@$Bjje zh*d_eJHPOQCWe>)V%U-PmirR{WA)mVFL1>T^(l9 z4+hOI>02tjy;OFSG)rOPW~p^i|3^4p(<5o!sLdGM9UdC|6ho9+SEcsdsCym|YH<Yja^E^wsQ zO@$v1?Td7n<@_CW#oJ5PF{FBldbTfol~evQC_LWTM4x-RAu$B+==k^ zW1Z&&1)rWp>;KZ0h?>Wj&P5U0c68P4w-AJ9eWJcGZ$Y@3Gqh37El`hD+4z=-i zxqn2;ZcPj{(U-vs>Nj}-8m0d?+Wq;F&%mJh)zaN%-X-Uy8iq|JuRrm;bR6fizxJXg zyi!z$^?>8$Q)a|_TOXZ}2ghIHK~SS|8%v_sM!H&dJw!4};^NO5OED$H$HScLsmFXc zwZS6zFnj9|%G=yG>q#hycf^-$&m1!;Ev?KvZgnAp_56E7spP0fKNizUN9?Qpg1Y?6 zzdHD0X7T=yP*l|<^t^AyeOhE)MH$tmG|Zf812K&Ya$N;_+C+cgR4P1k_JWF}WmDMV zw=%@Rva^<2rHWoOw(zQ)>olf{r#JQO6b%ejFFt=xHXAbSyD_ygVYMFq(Ox>smp(O+y6NQ`s{w!tG`5YuPNsg#pT=dBqrQauW}J#!npx5f z%1$sA1E%mJ7E_*9E)-Pq?P-@|`7ngo?aL-E=2@{x%$nAVdN6paOxdEhD)gDqqOa#x zdRI78XajFOre)Scw-%kB9Qx5J-L^OYqfQ`W#A?P8qopSz-cf@v`WfUi-s;fQpWVzJ zu>H1gW%Ps9Np%7GI}q5o-xU6fM!w}Ohj;|Vh8@z9IK`X-#&*2>J2{(_M&0$2R)oFl z;ct4|?-khsP9{^eW6%_hTxhL~ut=BbinpvM>_)F3b!AccEeQqz^^BwHe`ZNZPE6*w z$&H?4;(Pf-1NV49BRVsda`trQs!>n=iXb6l+~02F)Kq;&MJJ2o0dn96Nk-gS_~l0- z`sfq0;YG2cUD;F~Bsoe-278W|_RNdYoR~21?&9pK*O+NRze|@x37d+D*eCj3}k3m%IK5+1u) zd#zGcSrEz@SaVDLcyfg4$npBj6heO%vPWP_nOtvp&{I| zJBQzw1~vNWstd~%Cn z?LUGi$i&dABvahBuq^jZxNZ?hhRk&GvM8(LpoiRugL!Ym-t3G)ZRRlVd8r~9Q77!# ze*0`!+REX@r#x=eg?0y_ZYb~w$=;z|+YLW&dyi?@ZMS)>bhf1*8N@R>G&4-p#qmB? zE1Ju8t#as`6VB9UTx>asTitR|-gJs1V{0->{NckZU;6(p!%7*Bhz7f_))o0phc@|x z3#tiAp&hQKuZ4%JsuLRzR>^Y5syD9(E7Z6G=a-^Pw;c|Esj2DB^*Ry!8!*G0Bmo(} zt1b)b)f)w!KhDd`W?w6UG^u;n=eQ2u5Kfu@#*p*i&)#u)d~-Ax1Rb8Sa7ip54Df|V zT5!w2T7tjv^-77uBxT<#HW2b?#asMH2d@`#OOLc4Qrw;{ItJ7R=h?N~pIdq=&f|@t z?vXC*4wfQ!%f|1NA-b#a>SE$1qCs&Mq;8`0o1p{OUeMp>{9+A5gK2hBR*xZJ*jkF> zuV7rJktwa&z1;)L=z)E(iVK@3a*TvP>c>9^KZxZo+AVKnsT~@G5_CHhs44$tW0}k~ zQNnXgLX>5Wm%HGujZ&1WwV#0l6(DNt96fyZIyxW z%P*_N_R9^rLXoTXV$i#_pGlX(rG3`%Qrdu*aQmgd-fUDtNwRI=gJb)qJyEr9E$wib z`O69Ib;w;6#u0g9RPE;DMB#fSLcUsA=&yEV@mA}Ww2`~n;pf>`*}47C@Tqy3*Rko! zq^8WcdMb_DIt&cknIh|N1-T7$iE78WhZWrp_$HsIde@~zK0_`oE&5@7SAdBfsqTl! z%PsO&l#Ju8I-iTgf7<-Z&2M^i`PYcQbokoQc3{||A^!tMpR1r;J$r^M?x!}- zC7Z1g3ap>XD}4^J*K%y*e!DvrepRcoA&1Sdw0Bn<0^5_}*8zXuM@^WJCH4SFcrnE0 z4=loRd_ETb@b=x_Ge+)R;-rtjw@bCVBNJiw#z%i0>^#SQx}SFtkqrOHStvuQ%J6Us ze%A1F-gNoCogAdNVpVU|^O8=@kAAt%fZ0nthCV%pkNiH(f7~n(;}vcy`m%n(Emv3f zv8PmoYIEa-E#12T?uf6zu_l?=PkFp2eM>sYsa5<9J~9RR>?)hUmhp@$!y$?SLQ_x! zXZ^M+=cquXiB^vpXyl2NTa%aS;)7p+J)^11e!fTi&d;imqxc2nR%@0X$3-!qj&I9% zt;fGFvwbff_zgxneKObH=JKC$@W4Y9@7e6qgzBThHd)P3&N@~ROOUv0G&*r{l)YHz(H&QtkGq&fy>)F!m zlcbpIoux{{hOcx_Os1;pPFzZG@Cs-haW=rhP?SW}%fP`}u%BTXEq5E#r#Il24x9H? z3G@K;V~ECPo^oQ?W~+h51gada3sy+8Sq%&%KY#xoG~304sC=Smr>Q~t!rrzJGLWRS zAGfygep6|7eh-j`uKEHJFB7;h_dIBhDRT;#w6=w|1&cQ}dO#^T!!PdeqsjLHzZtk% zO5NH)SAqC67dHS7+WXpAeOlyXoF@M-M@gG(g$FmZir6Qgv#AVOj%qkd@CtT~ylL8w z!$b<`&T1{;e5#GzUF$QAOXQ(08b&&!xU}Y(ABCo_ExW51Yr#J*CfEGPCaS6Ssy_0q z7c<}=tZ(2AZc;yYt{Y>RaC#e{S*7P~50FOF*ipya9=c~pNAv4fiLkf`UcMq#@Mm}F zjKf1`jn$}x%MyGuPsv^1_37gy){IeryN~B5PWv8(>aYSjCG;S@_7Cr>V}$BV_+H-G zzts@()PW$z#1Jz-X{9*xS$n{$bF+PESh*gPaZ9gANZQ1=vEPYT?n%7Hh=AzI5;1HZ z#{o1oK~z~a{hsO>Mgg~x3I5}c5&u~ZL4nJboaSlN5+&6 zP{r$BKwDq21;UDrGajASH8dVQ`e^h*P)SadU37LbXMqfGe!9adebyAK#=O zuj%5mReHG~0glMQx`bNW0HH10+AAIPMO9K4(ozGUB{&YwA(CO`Xqhj+)?l7xF()mz z6|{Uj6tfK^mR}f-pwYB9GS}`0y7n|eWw0gMu-J~*biSg9=zh!lbdoM9>QrJ}CVD?D z#=MF5u5BTwuxfag-s|3W#iG19z=Z~>xD9Ak0ru{hZIjr~i9bwT)kBM{1&p{?1`~>3{=^Z!65E_x#ZHwZ6$cZe=*1ZcxN=!9&a6 zZ%gE5_q!k5r6mE>7fJ!G3Iy!6T1H$McK}y6n4^ z-oAd%Kt_gqJa3+Kq@bYRj^r!@%oI%~B=QCwSM7Vssu;5RBftYXS!5Ko&n?TN(C)vk z;!~RoK;@>u7P6G_%KVbEe?QdI&=WXnq{1+EJ~a#dMbF253TK{Qj&y!(!&6$_^?GV?C?@zCF-W67XSuP1 zCAF*rN1U9r-^!XUyr~R3pz##(4U7ieHvT@}rb!xQj+W0VNq}y)>q79v{_ea&T%>$_ zvx{^ZN2c4k4*|4XN6<1e>k7~kV&5DWNf{5NI{%{yoJpjy5<16PD;5@B`TEN1-ml45 zNKwtL`mcbzfBbkk4+ku|@7x=J^J}iR9%1?zzCikr;wY!ZbC!Ri3~~#?ZW35Uaq{sw zzXv@&&asO_Oc@`|k`JM#GI!0HFDv`Zo~!5VnR3sWusfZEcE3{&s_xoydzzf)fcMn7 zSQbM3wfM7=D=hWRs<*kDMX=#p@TR4~>BrdqHOr`njF1ANWpRurCFq(B@-jir{an?I zQthz4g*_>w&KqHSPd4=F$Z^bRT5cL>`51wGG&|yD)rWn`;^_y`%Q101d(8PFH@N{1 z>cU71(;%+!r7;S>Un>F@WRg9amXw=ej%+qOLc}kwXmB;)42S%7lsnnkLo80|;eYWt zkn+KwW8c=em1p+#8dRaL%DGkc-5*C)q-*(mboJGS1^cORI6esYnM0cE4(;EE)v~ED zCWMi#wL?1_qy%L6Wxx$C_o(RL&dqXcP{rr*cYW1XZV7kAG31jUS7i9zW{1YJJ~EM; z0aH{Q>?5~Yq`D#h&6zF`Sek(j8=%yP#?rhkp8 zccVE=DANE)*l&kKx@}<^-uv{*#;NmvH$D2Z0E-c7&F;0!hd}|SF6fw54EAhk*%T=T zL<26@h#GKq^Gi9cCPBpmq*18vl7MKd{pArc^ClTpABw@kLfmG3>R`>|ZCP>05rN}m zc0a$qtiH{n9>ckLNg3s@KyXe}zGr0Av!GiRog*hu?DsRXNw0FdExrcgl zgHD8vAAh0=3BSJ%xQHv|8Cm6N79K4(xaS#;l+Vrgb@EkTjBI7=p$ElAq46dov(jhF z-1Qb?anU+Jgl0y2Id5AbPXl0q;p0E+j$#Tqjyu5j7} z#YVW^9J8kJy9(u*+b@79&OnZs`B-*h?b@;5RF2I0v)yJo>8moWsqa9BpEODR%WJHF z6TyS9ko|XECpzc+egC+Gui1yIXh+7;v|6z(B1aXlb`MdmRv}Jy`R?w+!l!(qB`&TW zz-?8yW!{MVPXC3RlI3YU5_qfo3iNU0e<2I*gF+sMe_);UnTBl1aCz z3Er&+Xi*`2no1gnv~OkbREOYPyb#D$1_KcuuW^r2Ld#kkJK2?nwbxrc0-av+6|ex} zdd%d;>C1`84+Tsn95r+p(FE)EIK;brD*VBAaG|v|tJbOK*oQ|k>3kqEjmo>X}b3e*=(%q4BSOyKab1_rS(_tbX7Vz3sJdx@910)_!o>@8^prm^(MV zbwhrl`Jkq)OA4vUpow%Xy^L`*+{WHr%Wi%r-<}AK7yU}?`k_edeESS&Iy>T7+WWeJ zT@;|`8MhxJ!oG>^$06sVk=K2FdULERrx*COuf`^wW#*wfp(z6Gm(7C+v;o7aV_!}m z*;dCGt^vkZAos-|O8lQT$H4%r8eqDaJH;pKkX|!cmnRb_$?$Y;`HT5c|gye=v-;gSu@f)d-iZL{i zjuh_e-kX+vn){(}-$&I3Y0Svi6;)t(UROP`#PM@{1H2m`{HmrIrdIPNsjBefLq@*R zg2=i8vSYVmis|RO=A9?6F;uGqDjq1S-fUa=W$(|rwz(JDId>VCHZmLu*Bh(`YCOhD zX~ULrO9MIX7^kn3CaZwFhB${670z1Ff`&yJV39z6)*CO?APmh8`0%&iBb$;m(I6yF zCacAcBi&_Kq)+Z2KbM>W9DGGhSi8f8(D7}XNjCSli{7zCCs`YM$W}`UhbHQcc*oUQ z$ln%o?k`j&AC5;`3Q~qlhv&AG>}!ON?5G_HEV%9OKk*Jg3*JK}hF%pO)ShMTlrf8B zQ~Ag_bGf!qqh@7E+1H`a#=|6BeksOc9lw|%`Z(HxXP~`H=B%(*(aLJwtl&Nl7qt`1~N-@fjB$Omj3J#&0iXd*Jh9FlCc zImFsykFEN!RP{<)s--L>FT;I-NrK047qsDlzj>xsmh$RjQO{&1xU9oZ;q!x6A1|)j zEn503p9P+pYK+9~QG+8oU+6UO0PF~W_HX`9qX?dF$+f<_dKd6YlMUZK^1EZGViBxk zDxAsAJJ>HmcH+#Jm59lf-8FU_hupD~XFp~2V+zn<+ZU$gIaegvHPh23MO5avsav|$ zM{oTV@jFNLUMJqFUpPAUOtxXbq8v6whf~Jz75ot^M56VAm7_<4MDYTW7&+I~*1(7`TWy;j6VVL;Lj+5c(J*+(t91bxNDBDvd%BLFgjAtgHbu4ojz^P#>5<9XzOvT08D5 zhH<@y-{j0Zy$=GJOn)qd<8SLau%0{u*)kkP{La*NsCj)fopb~ebhLyS z9=yF$HNkd}{I~PM)Jry%E1h_8_7C^O9T9-_`Zq4%zzt19&ci$if&=h##oo9}|MPdwbEYs}hxEXVLB0F8GE`q2eTs zznU8K+OwnAuATc0aCmYvRuz-4X9d4Fm#*+hgqoA0&I!Ue3lqYO(kfeKiENJw#IwbL zI5#0vDshD9U?-Nn>^)%89Xn}nc-}P3#*Kn4Q=qr+1o7Sn$3rDbzD)p0$5@*ZpLKbl zZrJHrD-&0mA7(cSnlE>G z96}vjV$pd)c@j(km;6}m;gM|2>X4Nfv%KyFUd{M3?Bu@&M8pI`lsc+j9A^jt0Tr)^ zkS+3*a_rOXsc=Bpga1tJYS_}k@yuP>nW(n!(OF5??yR=E9XxO$>r*xa%5_4B^K}e; zOudGN6rXGuzvzK;bPzyl30QK4W*YjRjIZl2T}moEwP{1X1kPnEc>cN?0PcW!Htrid zeA+@>Md32<-Fx=l;t0#OCh~{)%tL6|yOpBM1Bn||zg%@=_KdRM+>)IB%6=zgz*VfJ8oB?t_c9ZH+Oyj^1Q$j z>T`$!he21K882}jH!9}UJ_$f-Cq2YM_Gd2l7P#=K8Jd4AxOai=y;kPq+JA36YRRJi-)-0|>-dcSR2CfS8b#k8Ed{fQ#` zarsUaZz`2iC69Pv%j^B2i@Lni*Rk6;R@CKxvhH^#Pkj0%VEoZc!>e_q-d@9V}#*g)SGzcUA~lih3Pl2c4npQ@V|^jA1F zoPYY@`C`97QD@)~Ut(xm%)JqbmjCuOM;%h0{s(E_D-Tys{zr-)@mP29z5Bpxn8!YaI3G zRTqAn^MC&R{~6}@_r~TaquVJ(GRGJ~!;dO4zTiGT`s-><*a-C6fF?dK ztH0@AJgzaZ&o`gg`@$&Xo62$T?H4YCk3EfTFAuNX5Hfnqr^RW}t1{?oV+tB_*={Lc zIF4L7ZsnGnU=b>XVK>zx}alyj#{V|xh@1c{!KD(|Y z20RjxH6oBM2>Uv0ZQeBNCpoo%;LBm|MykE!u-!!tIB{PCI*I2$<$?HRj)cQ^j~7myl>5v1Uv9AFNuAz1R`?v*Un_QxsBTx6bMY9qE?+GGkV({Ia{W?1`HdG4dq2Gn# z1>67zkQANpV&HpDXbk(@;k~T7Hz0Ejf<1~EK_|xygIAEwi}0PWIjuVAv||s~|Of1jYi?(Yj?7CJSnk}|{d&qX;>vr;j_^o>g2ZvamiykalfpSWU-EYijyt}su zGK}HZ!t4x7fCGdE`T|0Fh@aN`S4~6x4!t4YIx{Z%ZBFU77jYSMy1gW}6Iunz6CB(* zmgXgnx7#Vm6TLjiJRTb%5!YVbTG6kv({^W(RFX+2Ef~Da1TlPZV2u8C>@Amt<(1%T z0a&;~$W6a`A#87f89%HJvzzyjzx7-yEa?;+n+qW z8MZfB=Boc;jnW0%K8vDnfEXD5@!3c_t>w3ATCNBCEO+^KtipirU3rqv$2Cgr98_#Z z769iCl{+15Q-Ztxf4_4Q2C*VIsSgFE95>ImR)R)cx=IV%u55JX}4zs0ZxuM25 ze0~pV3JiSxqnsSWr_R5Dr-7njBb&QkrC}H+LB{a+g8u$4OJ}b5(<<>Om%!1wid=zk&gDat7NC!=aj@5ePHgiXJLMi*3=3t!+iDEegzB)x%CY0>qt5^Q`pyIWDG1Km&5T^i4@vIMRx z5TX5BUK1vfJffrZfpY$>1D($VXhobHtvM)kw3NT~zF;>EH`#1@fGj@!_xUDXI1Ra| zp2_2;UAkpGP{7oGmx?$u!l8Zj%3_)C2Be`M>Ld&|9oGMO54}#tE{J0J1p^Q9WUQ1o1 zFRox~803Gn@eQ4#4B`(K-^_mHhLro-e%f8%A$CHjFZROTOUZg_6y+59h?jzdn8QP; z`xW49%)1h5&`L+$ux+RzXsPQhy%;sIR_EIvae_#9j;Gsv*wFCcMLKg?HW5e(*dMI~ z-Ipc3x|5^4vBq6U{I?oMaeK-{J>ZsoYPboULDSz2MwNvI0SIW8hQ|j!Zjtkjk_QAW zh$Sz#5O>JiI%#X?g3+O(PSJ)o?XrHvtMQc8XbWDC```*!?N+RJxwMoShE#WM7g@{g z0!EGAw^CBucdhq69;$Qz5B#Nv z?e!M&@-I4Q``&C1N@iJkptj;`P=M`W@4!w4#TapC6i+RfEJNVk?etZ}e{dffY;j+l z?wMneVF?Q`EjTg6*UUFm$sO9hal88~`mk$r)ByG-vJM2cUJfk2M4mo{cuXyO!)Nul z=t$H;^LG=yTXDhrcl|UO9W3vL|9$!ogQUI>aAg=tgHi@y0g6tyWX*)Y>KwsVz!uIk9A8xn21PR^3ETRX*5_^+MZuCH= zwB4nZ*#ZuyprxJYx&{3XhpIMaX=&p&Wrsrn;?7gPz?g!1rHn=?QzwjA7cNX{z?4-Be*@8XS!Nyvu5jqg-R0jV2sOHSmnAd>1vFTW<;3Yl*5ta8gRl z7IAOdVd99+W>{gXSoJ&i@5=Jr)}sb}#{CIcyIxNun?Qq>0Bv>B@YU|bAWixX1{xf= z0P^}&AY&CgE0Mi&yTLA_s;NXS?Zy}P>Y5iCUt%Xl{9soQC7b7e}bE%_*HPI6?DZZPxLJ3UxgQaddp-Z2jwWw%j*AHr|LuwP)41!k#0~Br-CxumZdY-yP##>8?1m6!%I+EaOC@#wbu zVXv?Ly1~1`<&i~nT-^2)hwIvUOS7ZBJaYf6jn}&J4L5rskV~Mw4cf+{ZsYX1?!t*P zy#ix*CC0dVJC3*;jImgFoA55%t)}kEG5;GkqW^)EZ~4J6jhAF4-UgK@S=bb4PS&ii zn=&Cnpx8Ns{_>k|OzVevNv?d}5wOdG%Xg(VgY+X+mUXKOddVqgY9GI$cE3qIelZM8 zFUm2Rh+gjNSaAk#Z(ocmX&t|^_;JI#a2|=xdDc%>rpRxf8ss^zOLZ*iY72n^mh{fP z2X~S}r3aw-cz1D8;P*!j0x(V+*&rYArb!5-V?Uv54UCskdRn#038gA`4+q$9>oD^; z%UL;Pg=XVRxww3w3RMa{1qCx*Ju1?amc@064B@;^Z9;9~K&aR9EWel~S=l=G1y?A# zVXC{C6|Cp>k3uWgVz59|=2a}^(v~8^T1Sljnl}v6@+)`0;Kj40`UTQgqm)O!liQe< zvqH+sriV|dB`QdLDbukKj}KD`Mr<)HEPVwzsEkfG0vcYk1$uI@uI|28Hp!5wMo?>U zWPG^h+1nx>Cv#o1sk@C3^ZwtrW`yRaGIwHZj?p|#7yz{K3KlGU5SR+WV- z2987|5)Ky=`l5G^bus=tV8~sbc46j66w|k% zDGw^zNcj8M-dF&o&nmL_eH~B!Mz7{(*qZaAL z1Wi)5Hfxk+FAthYT}~Kil9q0`Bfo27y6BX`9Rv+q%)|fqj#Z4Q%9Bx71L}x8)Der9 z;8y7e8_x!j^-d}2c87bOj>Z1t*x{-)2Y*!_Mej!B&rezL}LE*@}eIMV_ z(skJenKA!jF~CHNLDwP@jYj1d!~gM6u+G|pVf-Xx(u>R&pz0m9->)Y z%xe{OYv3F4WGYs|ewLMdqG^8}wHaXC!1R#qiqjIT>Pfr@?bPAZP#g}vWB2J2WvlV2 zsawsE_JLKByHhk$X1K(J`~qfj+KePf72{v(N5xbZHiKG!AX_A7zK z@Lx-3c-3-Tn|ADIvn=lra1gAZ;XGskR#fM3T=+)`Vi9vOrXTZDf~unb8iCjiRyZL3 zoGY@6D|>a`EtEv=HYeuCYO&t0iEm9#09mvNeeTqxg^9Go&dbY=~-_P55!gW zsz?Hx7P$R{qgELKx!KmkPWj$$N2;*A-ewnZZ6_q;wv&)<)L~L?v+b4<1-W>v-Aevl zDeCYUY3RoKwV}OBZ_P%0Aeh@i#2$_y4bfAESY1=fE_Tae_&jU@f9fII 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 literal 0 HcmV?d00001 diff --git a/docs/passthrough.md b/docs/passthrough.md new file mode 100644 index 000000000..00bd2839b --- /dev/null +++ b/docs/passthrough.md @@ -0,0 +1,50 @@ +# Introduction + +FUSE Passthrough has been introduced in the Linux kernel version 6.9 ([Linux Kernel Commit](https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=6ce8b2ce0d7e3a621cdc9eb66d74436ca7d0e66e)). This feature has shown significant performance improvements, as detailed in the following articles: + +[Phoronix Article on FUSE Passthrough](https://www.phoronix.com/news/FUSE-Passthrough-In-6.9-Next)
+ +FUSE Passthrough allows performing read and write (also via memory maps) on a backing file without incurring the overhead of roundtrips to userspace. + +![passhthrough feature](/docs/images/passthrough01.png) + +Additionally, the `go-fuse` package, which Stargz-Snapshotter depends on, has also added support for this passthrough feature: + +[go-fuse Commit 1](https://github.com/hanwen/go-fuse/commit/e0641a46c6cca7e5370fc135f78caf7cb7fc3aa8#diff-f830ac3db25844bf71102b09e4e02f7213e9cdb577b32745979d61d775462bd3R157)
+[go-fuse Commit 2](https://github.com/hanwen/go-fuse/commit/e0a0b09ae8287249c38033a27fd69a3593c7e235#diff-1521152f1fc3600273bda897c669523dc1e9fc9cbe24046838f043a8040f0d67R749)
+[go-fuse Commit 3](https://github.com/hanwen/go-fuse/commit/1a7d98b0360f945fca50ac79905332b7106c049f) + +When a user-defined file implements the `FilePassthroughFder` interface, `go-fuse` will attempt to register the file `fd` from the file with the kernel. + +# Configuration + +To enable FUSE passthrough mode, first verify that your host's kernel supports this feature. You can check this by running the following command: + +```bash +$ cat /boot/config-$(uname -r) | grep "CONFIG_FUSE_PASSTHROUGH=y" +CONFIG_FUSE_PASSTHROUGH=y +``` + +Once you have confirmed kernel support, you need to enable passthrough mode in your `config.toml` file with the following configuration: + +```toml +[fuse] +passthrough = true +``` + +After updating the configuration, specify the `config.toml` file when starting `containerd-stargz-grpc` and restart the service: + +```bash +$ containerd-stargz-grpc -config config.toml +``` + +# Important Considerations + +When passthrough mode is enabled, the following configuration is applied by default, even if it is set to false in the configuration file: + +```toml +[directory_cache] +direct = true +``` + +This is because, in passthrough mode, read operations after opening a file are handled directly by the kernel.