summaryrefslogtreecommitdiff
path: root/net
diff options
context:
space:
mode:
authorTomáš Trnka <ttrnka@mail.muni.cz>2016-05-20 16:41:10 +0200
committerJ. Bruce Fields <bfields@redhat.com>2016-05-23 10:58:21 -0400
commitc0cb8bf3a8e4bd82e640862cdd8891400405cb89 (patch)
tree5d4fcca1617d852d01c00f910a8d842741e05892 /net
parentd96b9c9398fcddca7f2386cff44a6788edfe7db1 (diff)
downloadlinux-c0cb8bf3a8e4bd82e640862cdd8891400405cb89.tar.gz
linux-c0cb8bf3a8e4bd82e640862cdd8891400405cb89.tar.bz2
linux-c0cb8bf3a8e4bd82e640862cdd8891400405cb89.zip
sunrpc: fix stripping of padded MIC tokens
The length of the GSS MIC token need not be a multiple of four bytes. It is then padded by XDR to a multiple of 4 B, but unwrap_integ_data() would previously only trim mic.len + 4 B. The remaining up to three bytes would then trigger a check in nfs4svc_decode_compoundargs(), leading to a "garbage args" error and mount failure: nfs4svc_decode_compoundargs: compound not properly padded! nfsd: failed to decode arguments! This would prevent older clients using the pre-RFC 4121 MIC format (37-byte MIC including a 9-byte OID) from mounting exports from v3.9+ servers using krb5i. The trimming was introduced by commit 4c190e2f913f ("sunrpc: trim off trailing checksum before returning decrypted or integrity authenticated buffer"). Fixes: 4c190e2f913f "unrpc: trim off trailing checksum..." Signed-off-by: Tomáš Trnka <ttrnka@mail.muni.cz> Cc: stable@vger.kernel.org Acked-by: Jeff Layton <jlayton@poochiereds.net> Signed-off-by: J. Bruce Fields <bfields@redhat.com>
Diffstat (limited to 'net')
-rw-r--r--net/sunrpc/auth_gss/svcauth_gss.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/net/sunrpc/auth_gss/svcauth_gss.c b/net/sunrpc/auth_gss/svcauth_gss.c
index 22886097d8ee..e085f5ae1548 100644
--- a/net/sunrpc/auth_gss/svcauth_gss.c
+++ b/net/sunrpc/auth_gss/svcauth_gss.c
@@ -856,8 +856,8 @@ unwrap_integ_data(struct svc_rqst *rqstp, struct xdr_buf *buf, u32 seq, struct g
goto out;
if (svc_getnl(&buf->head[0]) != seq)
goto out;
- /* trim off the mic at the end before returning */
- xdr_buf_trim(buf, mic.len + 4);
+ /* trim off the mic and padding at the end before returning */
+ xdr_buf_trim(buf, round_up_to_quad(mic.len) + 4);
stat = 0;
out:
kfree(mic.data);
s Y=x:#S\׷mx^9HG7=5|CWwOH;0fC'Ewުu.E*ả,ށ>)9h7ՃeXbU"K`6E57ޟ՚FZ&/^ >͔ez:ut_al;fKln2 UѬE9хz`:> w9딏H|_˓b>J.I@&;o#l0T"t`+"]a ,pq)? j8anwP>*,#ذ~ |#:㇏V }wV,~d<9;[jU8ޕݪ*\e1&!W:ksV([:gv[Bݧz6]饢bd*wڻ{Ik9Mp}zSlxlvu'<~z"3*vk {X/yY@ه+ʟFFmeAUyKd^\rѺe|T9:@)3̧ ƵT5)"ZH#3-SZbhzJ4boZ$ XQZ{y$JֺyY-&+ϲNxXQCpMQBZ6s1e)RDi@k&G{KmAHOQauw- tRc'fH-e׭^I(SLҕnff vhô 2n7^BuV"n)Si3F?7rXZQ+$Snj Z6D:@x&rFXU&2u6j Leǚh4<(in'eazk wyV"|Q ֪*n&O#EB@~/큆rU|AMp D7rm/`O@VSK#߹qG~wUd_uZ -K×FF+<<]=q94~rR*czC 2k"-Ok-Pr<:䁴DxQewf;V)Opc/ E|p LvICgH/VbGf<)*Kqov]Tjh^,ͦ|*C \ DLAih+`G[~T'1AM6nOo%ɑ=ėr&E9y ;htꀸ_kPd3?55BSlWTr-긆YjD"ZMe7968NTtj'd]dIŗxR>d VP}P8?8ĄQN=#Q;.:;i樉3YCq5Ln<_D#`E[|LvᇢuUI1{To^+br^uKMAZ@kdधMo7:FzOPr>EP9 85Nt\nd=N x,xB^ea;2hWr;LCx!*G/+^q%]-+4Fv@$S.EA]^kGk44#EVF%uMRPm7$WdǴ]~x.U<2h 5CyH3n͎򐾋݈>$bReJ9ª.T)֪ΘӘ7P>1gh(SܽW$8`!*i8٬'?^mF魲Ww2Fʩ];ʀz"#.W2H՟lPNCp7ޜuqնpHP=^P^Ji.>BDž3xЌ#bsxޛ$5'W%mBr>N3m_!QrXS . JQVX!Dዴa3\ۮkɆH={%dp?Lo7ck݀%礡e_?5ZEZ@1KDȚd79ߘZ;meSz /7T׀I-|~diyxpq-}ЗT@"^ՏY:_Xh(BV|JH@J8FCc _́;NooFaU\:wj{%"q6Qx9 ƻXyOR@p@h7gPei 6ٶR %,B2+ o%3h$ݏd⏙B8^(r}WP"9fLW D^dew"s<dŸZU;N]cr,{K]^VƧS!^HY5u[[c_p02u6N,0 F2QuBXR0= 0m B0=U-"*TCc86yQɮ,ľ%}sN&2x cmpʄmppf6Ja;׿r[ }D]&'H+[쥭:9eL#>v a~/o6"q9żԁz>?»MA+Ktw65 tnfG7AR< )HseWc!'; Y[PVj=ɲ9dޓT@fV_$#w2>z`Ðp&  de| ipBAUC96.9[܃W$L^b2\Bʡaɍ4Ȱk8E#Lg+CSC]Wjj!p.? JCP\a(9wPM?-6WR̥@|'IT-C3BW;uְD!G[c+]lX=FnHK5_W"dLuo"ݰ_MyPuXH;^(byʬ8ݲ[hnG#TN<.j+,21jLaگ2BmiC%,{ GU݊yL,H#]K)ϸzB#q2wIXwHK ;&M;LaRd}m>3=bA_[n]? :NDx!g/wVrISE9Bف <oytR7^'ꤲ_@?E^jJ(3a.d^ix_oI&Zt쩊<%5;d}/0Fd X-OmO9ȁ^GF&&8iՀ xdAF/(TF}8as`:. a}v'nĊ"9`E FU{*wd˱Yq"=$˻TXxSK --8c{YɎ{8vJ_~jN}wЩ-!{$! ci=->I5Ҏp?g7z* 4)#xeL<&b3#,ʽ䯩ҟ)Hh"W"۝TUBJF 醡F ~g+U>R1'gAgt}J)5f|z6GI *s4)+{!-Q$s3"  y3u6夋.^l=G  sZ!}~Ϊ4 {B3λc;͝Vz !˗,!iLK-Toc2o5,e@dd/me#M+#e-r[أ,=jƺo92 gS9u<.19&^ Q/;Dːx Pޯ[D=-5}xbWu 8az8b5<~ /xxXH祤ϖ8.$ [pjh֟1!iVaǠ6~ ;l ]cߒvOr1\U.‹*ׯגks~9]1qROCG)]L dnoɰ(δt<ޖ#/ZNOtm$9_)2f"M%#xKuh(q0p1/s~YO͌ 鐺*BU&BlƼߎ7ҒڅQϫ$P۴μfWy7fl:J#5SN9g~b \zxmuhU%)`k1\3Z?ulY%,lڍqU639Ŗod$<: $ 7Xc + 1Ւ j)7'DA<=[W|^1JN>berk:B$ܛ%ǢMq"ޱ󤋠9mQX8~3lFx:U՞UU#5jWo Uj663vyf)l8/b}Gtd-z#d]3OXg.×`9.6~(]NAF]Q=f#vl#i-"mp'v-귕>r-<}G!|Hgk]s*5 !4IVˎ:RYx]vqWހsi+tY[B}ӠJ鋏mtB_>G[nFlewNTsQ>h7+'K(K0^M:ی)f@=Fǁ\.+qObV2O=?l} ._Uȧ7,p d_/+וM3- Ȗ/t%hٵGĥnl@}r V_.}z~hZ[)Pi-A&rŰV7f]I;lm' Ʀ-G lpi3")2.L!״i0"\J`ؒ~.#~}6`<++U\ݏ[6O}_r ?Ƨ7-vl/ %ei *ׁeZi JGzr(U?*ŀx vLO8\ht(~fK%k%c6@7#/b뙟Y4! tߴ̀>?JT:$?5ϟk?zT {ѮMl4vZ.5UUQelJJ\) ‹aO_FѨ_[7?kZҨJuWJ 0G闃l{cǜvp{W|ϼ\'R= 6(1! ;b"7kmPbp"\!{pMQ+7V?=[nĉ3Zm*?1.Tf]k /-#@b~ҝytG;@y#i&܋P!؏!)sxriZ|:*{/~'|[DFKRO'0Y`>;QDȉh,M v^r/c)?R {tp*F>gou=p=fnWXr=җ@m yysw cQ7Rsڨk+fM&Tr.ɱBvzpNLi`)^y2#𗘇igD/hik; [3( sqM\v/EJA`%򵕻X*iB*2(O+BY\˝g3yr@ldYYNLI|~? pwZ2? 8X.Yc2 S&I2snTqU*ͭʽ8`$S>2r q#i'\*{(W#l2aΆ%D^DVl.u/^IC~ܩy 6dZ˽x!7"4H 9Y ٪Nn 0@\eAMWFg(8?kҞf;An]7]Fw~ng1S^ZsO㾃irsҸ[PrOC(lllΑ (eV-w@>m^X #2LXN~(zx{B ɂsv-<݌o1`xgyڦ,&6 %Ww|x~Flxqt}U1\z: ډ'Ox^'W/(62zfމ} [8zD]RŨ2ۣ$6-^uu5*#7*˓0L3vfhGmܻ]b,uve޹&А%`[fPPiK:ܥq,9fl힮^B rjƃd RRqY1jp)Fʊ w`4̞}ӛTUڻ e:p(UbhL1NTKOYgFUõ"ufs(VKjToRׯQYZuCjnLT*T{ԨU"ɑ+ؔ+XP7O . fh"2Nƀ,9ZU1SVNOP^k³˭X\Qf|eRK@0L>y0E@E,Ni_O8#cy֔bFuq2ҧ-lGudWgsdwH(d+ZXfN=F*TSFD!px4F[ڬ3X؛'Ofq V WaR@m(8 cYQc$j YXf?%&Xj˕2.NJ ˜?]NQ3-nyQS6;"iz~VruЦV^J>ZRfsr<"Y% }ꖨYVF5<7pxoѰ9Lz]mډcSZ1݅ašL M@\,ALjBӞ#ap*WmMollZ]lB iGӒY%ɴ:Nw1[XlD+PQ5 :Fk_d7LH|j<}~Qm,;wqWt9rݿ{k QH?#?*=dnq_Ҍ+*az3\ik,xsMX8ldneD$ÉףIaE RICk s'&Œo/^N(G.ʰ0-S3{:o F2FQkl vpalO8+ҖlF~1jf;3Y~vRбX,4?2zeQ EĚ0/Ŧu2-V5ҿ059]o,-ڏkg`8k MBf#YݧěP-&K-\8Km2,ߝiH,4٨ xp_$sV/^'""gv"l)gg(5}```=} {(J*^;U/q{ncTn nfk48\mPy`G*fL8UKcB=j[T)#eؿ nq"TMeZTEA5]1ҹ,2AFPec"lC⣐[IclDŽ-Bo^$kKќ*VtM{xk +|8b{00Qw3*Լ n ! '7{ȕg"ň*o)# $kJ  ᷇E̼H<z-pD\ !# Y駋U?8>|o;\J,%;^%aL7t '<גQl·4m#,?K=n"r`{τ/A.Ad-xl1}#F{ʁLr$ae%yu/ȡ$XѤ;+*򹢯TY_\Y/*no^"{F)$#7pOzO']>jh[V*"'O=~]9]vb.:^ڽz_喌[$jSJd>NeȫY(,BKɖ-$q!#uGʾբ jl I_!Εܕ$ա;~(lzNcw֧CuK&ꓝM^Z>)&ǃ  dԐ%*F^Qld1M:z]p ,=l% w0ygz-B'Y yrJc{eRkF|G@D{[y%YXsso3-|${ :}:.lx7pi=1[-jr~;9\/c}f~x~l.Қ+ 6J4k,X]SU.2f2$,LzI'+ ҵ%ȳě 9vDf>?uVɸթTk_lgo߰ Rcd[?RhըQ4G U&hGǥɀJD'hѡܓ󞥙c1<0oukv^RJ<PMVlTic6?gvN6=K5rV{d= uqsulo]4lrX%GK,wwmRgD:~iӜdĝ۬ڷpګz$T5U5mګ+m5N_t%Cݒ۵K.[K>->z1x3 ǐ ,2|eڪ]kfOBImKF(],s+,]F [!%=˜nTR}mqU˥ @KơߖyuiW(xup{6@M6+i0 !"t|GfH:*EcL,i}t1YV^`A,ѡ]+jbθU!:mX5j9NСAzU5R!"7Ϻ*p1*W*NϵlUic_p" @thiɐhOn}sŁVs6[ÑG>8tDC]"a#|CdwK+~ɜY<݌p쑎>^!u8;@ YT0Q_rZAQ#1f>ihn[5L=`XnW5VuL{#M%WRe^N6zpتҎB86yI5L+mtNzі,eݐxխK0{j0SvE `şy][\ƒ|hizz8 *ƲU% xYaiKʲ,#p, Hz#B=ַ$zg)&or^Pt mzZٞ&ܽAx%2Ԑx OLIked"RAT`虼 CW?{G #~*k(xF~~s}1J}7,jq͟L8sAJRhX3h0*Fw$ 9͵6XelWI\S3Sܥl y.d݅؇qGk#KIAZ,A)Hx,~Oþ= >a.zM XN!@Vtn@KL<(ڡm)Z~@&d F?M~Xx+İ,P/.6Rk#5gq $nOPHY -L 3YYmv N}R*fTɰM방H [FN W(\n2Z!ur@&=>[_}zy\)QkQI"az+:kjubDXK8$}HC4Nz*BJ^]6Ჿ_D@A NFW& M_WjLҧZ5ư#cǤĥ-#PፖG؜ I dVB^plR8 gy4>'-?{Do?iD^Śjڊ:sw{h{2tCQIۀetI GUfapL I>:+ƧjU330V&N%7tWlԋ]lR9F%xutF.Ri H+)>xa]-Q%P=RRQYW]D';1ALBO'sZ+j reongri}gɤRie98*Y/~Hq{jwQ\o KCٝB;D[iFJ*xgC|LV^&^&UH!%UU=`SDYhvV[E?yNNVX%\+urǣ dhr=>"!'\ gd6EG6]n!p87h8 jh%dPвt +?Ø G<^#r<] @!Yɴb d Q&ATۡZ>ZemH2|h<+,{ 䕽;~iE;>\ 1|zF6V&C w;^-ɈpZq%:]c*L/CٖE_Fmuca銣$+ 6 <2sLČp%[Sk+KeobEjztYtMS,39sR+8`y0{FNˀ kI@+Gj#tԸ?v@W(JO5oM#j +ΆwqBnUpjڪ6]nѤe6;D6{.gh6碠Ng#(ĩŅ=o[;ͩMιN Ԣ;ŕq%ɖ8e<EQ+2k.n $IsZla4 -j:HrZ56MMUDR*3tz܆qxkϸ]{wci1@uAIM_UŒ+ ig! k5o>?k],oiwp5JG~ы|\(J##uxwut4&Z(U+&oP8h%s2d@ۚlFkKc˘fܓց9D8I"5o}/sO t/ZyQOk09; Ù;Dw:$qf}'uG/x ?Mtڄ)LG+@R2g ࠣ2}ι?sⶺWjE1`Vv&Q]ENު7wR }y^uի ŎZ3~zpY2";t_ cg9$L塤f^)u2AnQss쵼bEUďK`ys7JxIm,`B`umd]Pv g' וh>C`@iNuZߪN{E3-@AG ӂzdG$lc&D_ҎDC?}UqH7 "Qlh=!o)iݖs#$߉',rm%ђ?w]9.+fH<`d/3 ~iI[( wH{xgfΏ%9'Js~h[ͤsIsIEA|,XR9h0ml֡7q4ļJCE^Hfa:Ŧ]Y`T8;V§M県ׁ{%cgw`FnLu~rviJ(j E?mk%\lL7[՞ @]%y*752tsS8LHfJoS,:u GΌ4ɺF9U}L^;wTmZ'=l:)1-5U۪56PuLlhϩuX!}}c(o,=x@b)q?}*hA#ې4c7ν%[|1 kxHm`&Kc4vХ{FZ~}"բX&&cʄ֒w`'};-^1֬^/r~94e'yh\A&wyfi)'uw!2Fnҹ̂י}DӧF9.O"s zͬCGʽgy$̰IES[HUbw'?jDN!e!?NE% ԋ4/]Et`7@\qxhyrat`nlJLUrI*xvOm^"6]G7qtXet_SuF-L-b, L jLw>cVO'qU>|2#cT4+IwЦ/HQEfҔ+XvLon' PRQL14nmxHǭxZ]w*2:DW~fЛv>F5rTJO;@IGIhISMj^<’[%m5$1D1qiVGMH?b0LidwW/){'*BΣ/hq]3~coI[iz;ԾYU'f{eɴ*)!5F=Ђ.S>(FX=$[ժ MKi1Cf` Ndoy}Z)S9Y&ΡVz`)O6w ՛BoߑאJ6/l/8iC\pL>k>Í7VLFvZHϱw'  =Ix,ZjtZ3[j9Lm DڐfOt-٫:*ywSRWfn=tsH d Z¤wx##RVLjڇs4*bWq;De^0!-cBӜ|xGrX]A]rfij4>QXR.XE r0(b5Ѹr9C1*._JOJЇ,@)ޜlGߢ jF/綖wVh`s;߀Df>mR?4OvU>, I?;XX=mFݥB*59cKax'NVuh: ލmSEGg\?">Ѡ!eMM&79^Ca [re#{$]4 VPNļ';qbi t06>9$+zjn68쳌C>`|ɒ mώ(t2Ta'%Z˧_V 㙿JunW{}># a"Vc:}|L<aX8^IH&"f=Mϭ,[p殫VƨެU+o-ntV 9b+|S5!+ ®CȬ?rxWV}3wdx8švM,mS>cu]I({,xv7Wym;۴a$(`rqjIMJF€-΁V"3Q T4rJEb?Zc7O~p$-Jd`sԁG?Evpq=)FЀG=&{D{vN+ǝky:WP12׬v ]j#^? )2Ag6GJ2 C"~{zGZM|#oj cSfj3zu:8܋WkAwOjr7\8޹!} 7rcɈ4jX y6;Ka;ԛv]  WyR8Y +?k2tq4+oI߬hъ9y+Lp%[{&E$eA,cX2OOGkL sh֊OmHN'[kYv£fs+J?#Rq-Skذ@Sq y[\-A}vQU^Rb JU~ KFm{ԷI,iE+3복#cwi}6CDaR&ޱh*V; @#;c|}E}$:X|mFQlh/egkL@sxύqH'rY? { l. "np!c; S&ZG6C(D5"gXEPRWsU{+xf{JZkT mgHJGX9q%{v@}T/cmiw # ]@8f}ZPWZgqI[j ktA1SmPFS: a`d:3é|jmP8ѣJK>s'pv1P:@Th`H\N%"9uљmwʷ@#=.'#R_\.yJedlpLm'\h~Le _*uG7y0(gQw[)6n4,05el?>-c7Z\6l,PNYѧ1ȃg N;jcuw5*ڏdpҧS8ބ*%fP& zI|B;DNFuc8Fs<F(.̂}|%;h&<&d2[4h{(Ld NIvka}RS͚vA6nAu) MV0F{f(O3zqxO%c,k1]$H3SqNgb-d`DҲD/BAjh.g\1PlVzb~zPꏧ60IUE5<5iHly},V1-_G%; |>Hfc$Ck!vWGt}D.'ަKeAM+a%ZjEǟzi}9; S<;",2̞fSs[v4@n0}8\9"̍BZY~yeg2Χ=%rijNv߃õ\bN\aכڪUc8!QK ja5Qm8VIg%+quF9E#Ưz=5/SXn:}’2ԫ Zl_yA6[ nJϕguM9{qL9CTLbUmazxo^7gho ;T.N+<ĨȲSpk_;dҐCY(Л) ,Z̸qj%4ϸV_-M['J,"J(iy)Yb=dXaJsXa$ ';Χd9Jȟ6ȾOK\?O4imHoca[-pjkr(,wЗAo~/(]}aDs*<7}Ԧtiz]fνexEe ЁCIŬPzwffn9VUDԊj:)ç?N'z\=ѤKB[gF*7IzrTb1eEe|`8ӟuu*YٔTdޝƊmC3_02c%&>xk`q#F+@%@ N?$pal/\y&iZ$aiaڳ;΂;!b$ p̍Hoh(iwAcCp('oTY.{Z\pP&XELK$J\ɰγVv@q!C˫do M]s$"I9]+f[dwHO,@hrMQ%Q^ǻĂMM|}O+mp ܧ:lvƆy&άogTJ}ҭէRT&=Dh礮$u8ۚ-zCIUuz4e;j~_g~sЀ9ꒃ6gv$@ ~V3~ذ ^ܷ6msE9X+i*{{wH;H"_ʎ"j!c<:~.!vt, ܓ _Mej+"WXpAL'I"  S&-<ڒvY[?|?8 *ԪJ]i4Ce@:fQߍ``  nOR}ȚR q.?`RBQfpj`BTg_)Toi֢Ch& mZCFCU J5Ֆjrqs: մ5jڨ^U1ɨjGVs$ Kؿk&r~ZEhy: 'c3uH/)%-7)8?AA@7ZFh)񙛑9HOM]n3"G*JrJ2c ?h(7fut CYC26hQӃ`X3-0xE5% CrA+"L̢n}1^ɜ))^- PgZ0D |>Ղ'GuJ-HW,)oh-E" ]}9%?h/dUڢ8Y ɑ N-E͔E+?mks_:Ou%M]9L4!KQVnv&y@.N78J֕8 v'^st Cd:B<9>:(S}굅H4xPC(0eTJ/z"A9Ɖ^g[:>(Uf.E"nêGO1מwqfuN=S*5=Wb}cϮ͑#Lu~nt/6CҘ),@K{4Nџ\ /˯;q簰yBU[?Fk#)]OO K=0ue!]KhsiE!Qz#tIIf3+P?Oa-&M6)2b^VٷS*f}[J/XQ&]v:w, mphUcn߉l4Z¤ןYSU!0YnA_ xOVW R{rU,F̍(-sj9&7TH@A;++Wn #%UUےdAlaKn)1<ܛR1+>538ԥ2 hw\nK>KT'4Hw6 =!f`*T .knx<ޥs`7=)Ѭ% k@g$. Gt7KAWz/ګ\* g>c(Id96| ^]\\-LsBH*&9YBgpwQRW/EE&I3H[C{ qH\E@G`/ B)_4y2%b8mb1?s+7H-tm4bol)tDOHXo3S4o%)wHޫ 6Md۝ZY9Sҙh7C";>W~bY7|7Gt ->߯~?g .M#x",{χ~B 2![k|6Qע;\ 2+Z T]/zLFIC4rT(4%SOV/ᕣX3vSUr!I!`SS++Kf2i9A;{t]ze(Z:°߲D]::|BGÆь;x=SDJaGL8!dY,D". eau^;V;<1gȕs6+Mwio6GP^s-9)X憣9"v 3, _wגzHV^2HKf2-35uWS(~1(l tѲ SX.Im&< $櫶_LӒp>e$?'Kxg";ÿCTg4bQ3~/ē>e5ݧTz-$6Fj2Ti 45B32Q.Lfơ>)2o3GQAnHu 񼓚\M[["Ϩ FA~D_wd._mvҜ>4ZIk&z]zj'c5hNj8VF-A2PK=/ظ6CJeX+Rާ{1 %KlCw~H->z*ٓq~a-I42bh֟ds~pYqF{U}&#jC|ԥ*O*PQK7{ZYtwyG`N%QTcl/3˵),_ .bs1Ze>f-<PFTӪ5nH!SsS;xLͻ>r^t sk'yΊ@3rGՋ:(|g~{XEmud؂ȴHR*){o$.?Q䥀m$t:oro𒍅AilxǍaMuڤswF4[FS5u \mSpB ً42h)"Q6ua. ?v_pQ&-  |ueV?ڂ<;&-RTwPC]$??ѯNA3 <#*\Ѱp8S'2n^Պ. K6 7H)i"MъyNh[ ^ԵHW±M4_X"{B@FL*R" Jj%uH$n|hJ!Cꪑ[=ř:6| )1C'1=ޑ]d:)/&4$>XE<ᾝ֣ȳ҂r@ @r g6;Pq9Ǖdԙ4hd5#R!HM6Q׽٩2H Kr W(\:,-{WRw7ÁnnTIUnv]l@J 4];FKQ*V.t7P$B o:98HSb[gVEy }h#wtJAy ܽݓFXi<2){iRH 7EHKoUKbҵn-66'DL(d z?vsNEp4yqgig|G?Cdk׮=1>l'Y@@ @c)fZ $*W!e{Jqv=2la :rIk5`U3. Hvh!øsPij/Ol. Q$ ~uHcˇ[2Fl@BwC?L_,76_HW׵36/^iiFO֭NFzH$tn"pm16= ş41-V"(if1 uPvO˿ZXZz,T4ҝ*L=LX1P7ԴN~}ڛfOI֣jOSIJvS]6.a6[JHS&ACcĒ8$qaҝ}rì$q&0ldo<&LpC8vd6^+;&3T% cv(-PN0N$ ۶o' HLCq@ܽ'{0hB*RE4pjb0<$@~#RlBت 7ƙ+/'>n(K\k4?LjΙ]]ԋۻi6hW£o҆IFp ;*fX:ºGy)\:5 j IM 6"wfhIV'&ux6)n(4,>4{eEgec`+1sfMo옖a0^aBͺHTvнkWѐ \ƉLܫo]:\3 ))f9"q]Z?(^ ^OJ5}|k V7Yo^3Up'uipj(,e'HaoA#Z><'sE.$R1,pfEFY01V(w7},ղVVݘlpH2́ ~U䌵Wr,Siٵk'9Ʒm5&_|!)nٷ .Q]?\l4pqR^\+-|ٿeZ>J_~gN2|pw-EFlȪ!PU"bTMT qƴƤ 5vscdGn8xAݨ[ x]Zh{,<$LP9^㸸-*F'.GgHGZvZhf[Т9ƢۅXrAZ= y'!b|#8t'`4QP|h[|-vu]Br^4:;Ytז3kUڽJ&p|q4N7^x4t' 8yF!UEwFxdx;k |, 6Z!Z..B蛶!LIP̝fڴjrͯsx&NOkYٜ1ޙHP`ZetD.Q> sd dAReVuuWK:(:4lwG]w4I>N|+Z>,y2i@]~r7=)R_>&S?Hk ZXMj5"%\V?ɚ!wܾw'uk'4&J:i2''94$PBƚ֔$GOH7,:baU?8D_Vn3=;]ߡF\[$ݏoʾǬ3s 9 4ao{1 ƶv?n'9ۭڽ8b<)Fj6*K>Zݜ0D7a`oˬۦ֦^=홺l83sإ(1CȊ/JI\I4 h8\__M`yE&H˱&rg_%|,s^dq ! t Ld#`iC{qDocEY&QK9k&k aE̶n\6ԫVPiC73G rtjH2*\O6|uuF@FJ4%!V -ĆgzVIߦ8qxV ;ȠV[!%9h a C)p݌:Ocq9f2,=45E `,)VR٤9fhd(rᯄ )M6YϤ 2y;鼑[AkR#N<|6#KDV 1>jv7{Ξ-pf$›BJӔi@AAC\mEAgCL}zytzJ`J:uSi䔿PUcx; Ǜ#mKȴrwl&p/ʽI93VPWLO:b<1@r ߃&eWkJtar>Pِ$mB{?FM4I=.Qug˴ m hחVVfۨ`c;gS-8/mAJwwi5 rin;vgmwuBdh#٦z*C8m(X'@0Hdg628٨APlܡlAg'eJRnjnUK w((X̝@/jh{lG_F=[Ĵv֬ ?c*h'F+*SC;3ɌW:i4{,O +2宮!$5dKBl\8HKGSw6 s,7Ǵn+1cf(~S(5A`t9U!8s|'Pe.F1ǃ̗(oV1{k[>л//bZ;O2ҘLś|rIVccr$2V:j4MZV6!ٳ>8.5Gj>RNvik$t֩3.Mxڛ*U$0" x^ &,4%+'*Jԫ[;&62nmjJvbGv2)%W콗rVLKvԃ-Ǣ~"A+^2o%~b~A%);B'׼QUB]izPrSHJAL^t'}L(<Ā~G;(i]4?hj©  %n.*7Ì]ajkӼPU-XnQ.V[&|r./8No)2:u莠3.w<36O=3.fQl/a_J$K "$K3{ᩛ:Ul[Ԡ3h 1:ZU %JQ vqý:WE;yE idsq(NşfJ;i 4o@3fiAph20 T\TdMjZ{ T.ĵnܸ-ͫfHX$V{ 4T{CdwkRĪmom-dL6iW^UGxR xܢ-B̊Lkʍrb^GKVF=tNJiʄvL$evm5VGkl ?ng.,_`A'+ -Ã7/8v}8eP!9Z.q MgT }3ʹSU9X-{5Γ_G]ɤEY~sA륵=wP'CY&^USjI+b$bɣ~!``[Ѱ1X:rش*,B +;0Fx3<.ק,ف<'GR qB}l%zQ/\B= Ǝ$cb?dK9P} Hiяd8" hApI畬ADZJ)C&ū$ ճ[iX' <$dW`8qCҎ(F<8(eP31 ṷA\ {9X~ݬi&EOHykuW)P%f%7ZF5B(3R`jFOê `PaTu iȽE^h'9OSG@ҕ੡צY2^Ζ{Sѧӵ1} ;=:Y^h4;7DۓY-F2(B Q4NJ۲VZZzWuƴLȤiq'Z9R^v`BUA=jE?a1RUSv`><:C5"^NI߁{ ,XȖsdٓI8G1rT')}kPm;q"!x9hc SPweڟψD |; ߙNm@jfϏL"MGhNFZ@A 2q}wDկp|u.r\?͕c+g8>m*1ٗyAr{ǒR8\],G)X65h[Uґ&^Jy②xƢu(-fhU h{0lat&~ u9"AqH9]qU@B0v֞N).M|r^VkjOդ1DQW G5JuClw77.V 7>娤e򸬓5ZG 4-h-ɂWN+6yKc;- z|[lH̨>lOSAFcV 5GŒTƹ53147Gz73eknvnZq!]'m-R(F[f[I8$ ##[s^+uf^g2_iԚV>uwp DLxjhtj#8HVƐ2^ͦfv3fWV4;)d"4sQh|(mHp}+k!DkҖ֦z䌞*s;}8Dir;K9JN}IHw>f:{&Ckgec;!C @rqዢA jMhXRT>SfӕkP:Z{Y^] 0,'GA)jTf򂇲^ 4?\$2Ls 甹oؕ0MK6 \oguE qTS0@Š.vbξ{0c 9},p0 Uk:IzǼoVVUBMdUC ,;E4 g) ]!~ &eʾ#a]O1 c0~ڈiEthm2;.4z볉(2Aw"v?ab[q wCE$BuCXZaZw^NeΖ W>YT)&1jgED.fWy6υ y8,?WdbO4Xb4mZ5]mi>N,sc?%4]jD|l!W3[u vNfnOq82JЉ?KGD]ݝu!Sފz^-7&c' g Rn\'Jri[ Z: ̚8nvdžLQaI/‘[Lg!H⽇,B$M I} IzשdPzW?sLb9)roVS68J]b2W4R%2CZXz: n!+OeG۞7K8)8hon]JiL|ŨO^D8\ o<_q.&v`ibG7R'C:W)J#I#=bFĹ}<^3NL@}ELVT.qMC^ph-F5OlNHBʝ9r+A~XdN۵%huHV&\;$ #>j9iDxYm6@ N3G4.%Pkbz)oO Ew7DD]Pcw&\ƶ'ҁ&;RhC-d&z$62hc4rN_Z @46$|14iJBgBտ3`"Na[1 iU[Ew`%2}ziǎcm Q[4M:}YWP?4q3lzl5>ն$e\F]}jCLSX>|= $ԩiZFww W٥XP &I( *ڭARC#\BV(Ɠj2rGk>a y!墉:n{݆jLc<wܙU7l+՛:d`6-\pIB v֐Y9@/vGmęݔѪ'exs7,k;͚NQa2QTUkdX4xUpx>-%QX-8hqf5,n 9\C>nB1eJY86!hVf@PkZ0,dr>vfk'<4 үA{[PFQw6vfIakbSmm:W-}aֵ}9Giu`}tհ%wN%Q\ א\)ڕ|$lUBJ >w'}\W!WZdh|}E}|M? ?j-ŠWz+}o?͙idխ EKNv#55s>Ivp*8Ao,ZB8Wy"O\vGO 7!JA,2oƠRoHq ǥ։|熤kfǹ#˼|3|;Ic|\|ȜŒ?# lwmL+5E]ssyy8;1bW&1I|>*:ڻ;dͷxR)-S} ?;x*Rs=E)xZ p%RvE>=~,5$#F&5}|3\*poV>KzuFTj2mW%u07{?g:=3;umOPȇ sEZKbmojn$'S>f 3-szU<}B埅@EodhԴg*棓ϔGR Q}Hw&K%+o1Mfoެ)gA&ℬ RQ&ÛKq9ktBoHrK 8wnQ>#nByFC>t{ЩYu#DʶB%<ЅXdDaGq3sA}<j6he|n`_c%s|XiŎfhtңܤ. +wxH"{Շ}wgKkq}܂z>zW5ICoZ<)!u@uI!=h*G [l3}{ǥv3؛1=)s/{̙G pINf% nG39<[/^_ϾB➰[%H%}TV K _>ЛG~;VJ v7i25C}kf}W'.HG:;TJZw1h<5+atS=6Wm 7RUV6XU*fA21UPω5: ;W?<R(Tҡ'/&44#A{>jP ڴËZY;FzZ%LRLs)A)Ḓܻ~:ȋZ zP04nב6e{[z: H3\jgz>y qM Z%U~ދ~j-3`& cGDE[edl.EЧ Z,ed_&٠`yΙ~蚕 ДU=/ s֡Wzm]& *$YaY eỈ&Q;&EZE%t6,}f+D*#YQ:-KesF~[(v&\?.T&I)="z]5bTKD5迚ml-ډFt{C-EFa˷7W4ˣ)Wje6ƌ' j"n{v>m_d ! HtOՒJFZP㦚lFYއ"1Ma]䍭3̉ڝ>x.PW$IR1XRq,CӤ@g%fjdĆ{!:F&.l̅l [M/sdi)r, tX=zQ()PD{Jb$q"2eH, g˫WYSY&WWvuAI!(A;G*eW/5ji30/k_ܕ.xsG/5F9TΡXէ1PX׆䫒PJl(?71*5B;[%->D7fL•+3쇼h:繛m!4[r!6lDySv򣾂46M/jzs$,YiYNUw#rȊM682Q´.&AoVfZZ\c+Mb ,j9=ELn{ ٗu0¤\kUoߟz ԄvnU,9;ZNx9fѷp,mD/-zmVdHhQUϥ߻jZnH䥦:Il}z[o_`r .XR`ve9rAbW0l >rt(c%љ<VXt&O4{6)ͬfO/r, Ō`63TdvM)H[HJ944݈Wo=P"M( ]}9N8zwVt%,:Nv I̋Y)\PE_ۚ)k#2_f 9U:ͳ42Cy%Hjƭ4 }% Ao-BYtD B$mZ,fWES9i"TYy w[ * JGkv(STzIп X^y&FSF1vs#v~:`Z未iNj]Зh=4Cq MT8-\͎kBPoC"\yV7*ߢҭD k=`ctUHW~yI'[ȸ^0-d-`I4X!:jw 1+א'Fa4|u"q~7(Y9?JT{!f&qT>;cCC eP yf< u V׭M iZ.Д⤠?vW8E',&Ry+ }vY r^oPzJ̰U%YIȌ Nwi$„7,n?d7߱|,e)l5[XS{r,JQ< w5-E`9w:ASu ҡ;fSC7zRqzk+.ܼDο\h|PE_\/W{Z+SSLڵpVz/~TmP^m!(I+]Y*f7Yy͠q{(]UH؜Xld,m<_΁eoGsIcwI8+t ,jT?S.==oт3LJR"=D[15I']hF5^2м6JaжGY%zY"Vn!RL=V~^rBHG$&W-̅͵-8xY]/,;IC\l:9Lz:ӭ &Q5:ՙP^ X<.`9qrG _x.Y1=8ȍ>*?Je[Ǥ`9Kj0|/j0C@L65 &nnBA6Z^JzB.^5u@;;URA><%ߟ;$b;-ِJwJZfow$˂ +:p@è@ A@ .RuDfv&Sz\ ;dwx6$o'riŠ%ɚMX!O=y<05Tzv^%C @RE!oՌ_s+.rsР\?O&n0J& y].{f;wsXˋ‹\~srkⰕi3'U8wɀOq2Yө-[=} ƒoqOu̚%nVޑas2r`L&AˑިNw kn Uq#ޝg#R$hvpk{r|UdyuԬ0K鷘X\oUbh }@Nݩ@>yw u{\iPO~q>_|_ܠGE ˓yױon;TPC1 ld-TyFHNM\!ڠ7J-L͍񊿸 tX]f W ɾd8l_: )\ַ{feNvXoiQEē%y?ĚU/tnqY7$U4nV'p0ݜf0[GM'je'q9{i$ mqH W#}H1_/|toWU\L@?0/qh.dF{kه)+%犯?Hbo{^Ej' ZI&͌Of %H P% zh ^ 8)g$w:%m 眛";^ x*먲q\yEqE]Ǖ`-,߳){Iߎj* }x:ž>Ǟj]&'M"JhznլG!yU\hBHaSA F 7(z2oə_E?x#$ߘS$D{XLs+8o ^^\*9/.nf%uaRvjj cyRgۖG4r_Ҩ4.@scIMw8QǓOxΞd%׷P/Po$~Evo{K5 뼌(J.^ED9+$pV3 _G-8dt~l#`=m|f_iqPqB'K]? djqDՒ0vp~~7dU˦#ܓm/FQw5p:N!Y( 'zհ^o"_IiIr YyN=)pB ̫C 8&"_kdʁ@>Ⱦ-1x(ۓtA:7Ee"xyLV!j4Dgy*ؒ8q$ǣaq.:d 7^vYم(\ঙsD8Uu`T$֤ 9vw*@Kگ̻ޕԵ;fh 0R\a b~K6!nA'0AZ khϊe]9hw{Ӣ^ŦKY"E ,zc VzDܵ RPUvER50|)>VR!IN4։{ތx⩑RK&ѬΎF-Oz6d`W.b6I͌S8 ԼUVw5&GRH .Lg*s_*؎Zf-T[UMDmF\vRp}}un6JdD|wۨH R[7lgv)$YɊrӥn[Aɔ&\>v{gOqI%eAKCOjeJ֮Lq0@ݙ<d=$Z&;KW cdz Rj<[*B탂BE6(>)@v\vו $w CpWȉ ,a٤r4UȶT?I>M5 Edp(+铮Kj3MH?DF@" _g;|SuUAcTJS8汇)q/C,n0Nvl^jP?ib֑tB{?E>C}4&ѼR'uurKP@(@+-5z5H+5$ޞ-v v+ٯyFNWB.~`̫2mY+Eb/4p6ŐxC~:W 'Q ۋ58wٮ| 0^:Smd8.ImR!8V: &;v)ߣ`]k($u$2DF 8Oc^Fj &f3nG[^ޔlI{@"ZWzBᒂ.ME{^ň\KJ#>m "'znW~+"ʔw;GڅjZ4}^jxZuF,#4%ƐΣ1/8hۊv7ieΐF|g%fs,8_;D`:U$~{5mQЀTU3x {kZ$cIHEb>БwuC "9N4|< %n fs1(LN;/B8]g&3H:16mIA@O-Aݻˉ\+Vt"~!xIlqUy#bE%2 Cr*wrbwP~i+@ʒCpAuլi, k`VZ" $mMF<ϔ9ׄ/Ar0O9F$]m`WwJ4/&{HG QtT4,Os\dvzvDjӓT|c\AdAw4\?6 $Y䖜/(gt2-KV%v擯ֹvc2~^,MT Ѝ!$aCg# Xd%Ơ*y ؋vrn;+r01XT 'y&}탵^K0(s;47WwHR];NZ;DĚ4zl H"d#9*\p BBc'|6O!]tzpeRpQC6P7I} _0+ N|Y_D |N3c#d]ߐպ 9^O GiHW<+BwSq"6HX<)~c#@0v,yOH}`;ieɤ̭i tc Yܢʭd>H~G5ūً |֨`4m5T?BVv['#o˳Ʌ˻ꠚ f)f R\. H+dV.HܻlE'픦%xNKcV3j+{8ShjhWtZg0V:Ag0HuP9UL1'|i6NT:RZ0f(\$|!<Ŕt@+8q̲& ,qF+ |cSȬO'Rg6a Մ$=ȭ5T֕OQ?vKhd֬Zo[av@vk,&W:, gÌ=Y qB8(R%;OI_C *Rğj(v]WD~IR3<-nu@?ƱSX@2bDksTc1RZ VSŏfoO4+h=.H\%tD @O j.3jhpz{4oii٣Ot=dܪF-L; irP_P A La6@LD2(WkpNh[Wd-lJ+o99=|"d١ORp{p ;RϪ4,|F @Rm>m9҉a?W_SY|}?3;4f#H6F0irP*<%FCE]3z|3˻cWmj`x{ {"nNL c;mTn9lGi5Li64u[S&Iքf[C.PBvѳ+J@٨2z}3x~s~\a~IO`dq< GjlG\3aC-A{rFECWpMx %=vTܹ ;A^|EPGەm*p8Bb6h67y(xDl(fXTsmǽZaXIkZÇj:L;Z5-]|1kv.Dfy'_RV$sm\( $J~6C>Eq朶R;;'|ik,W!?[}-B=e9ŏmp\,3~t`|S;iZiA۫σ-dz5Yh*}Ybq{C6]b]<Io0zI`]b{ ըK2H05ɺjtZ4)X:} \DVOF.v{f'{JbZ_=hhsRFZIǶ9^ PD4f&qҼ&w}[J`֢Py/[NjEZ@KI}Q1(:dg%CRta\?+M?Tnj9ͅUnPG ߱o2Ldќhz u;҄p9!e[wé?x-vOֽ\Ɵ3'A,>7F昉;ОOfKBJVT^!ŇB6>! y;F =f_;x5q T¸Hk{oz<,Hi$̷v4C:$k͎TR'Me[w_!CO"ԋVUR:ݨIJCeL55s>pjZa@߹{D/xht,{$ŎL;Zjd?}E*ַ8`U=nTyw >HKۗKڴ\c Gg'2>HGU(δՐ&C~=*d~ FU6tj5UljBךpjP4~ݾ#==3^hדJQk\\T9J )'M9~GAV}pP,H!#qZtI!)LS?|sHb_za*,%w.̱2p]KK)=V<uudg±jN|[4уٖoJ W /%^[cƃy 3mڎE$J|p[ˢ7cxqd.lDrC`vEg+xNqWY&E:gDO pقlN@駹yиҨNtC2b۽Z]ud[vzL2ҫxR6ָB Ay_F-i)ԮB@|Jɚs羽yURuIZ貓.Jܹ~%!:1bl<t3{_yZ{ wP()ZV&&$5h..h8y(2H`P-6X8\rԉm W] '߀  "TzP=tZ'/_kNLYС|A%΄ٻA1mhOWV'o82=)FgoX2\]\_|9,~6w|Ryv+M HWt(_JJn- M/8C!ja1Jԡtn I=R_͚2A{<թ0}>;#|,v1Ud R|)> jE}V?Ɇ P1oN=n9xov=% Wx1Τ=&?*iF6gQf0pi)ÕdlxG@]bMeVnQè3/ 8~;)֜40bnx M M|_\`1j.-mF3fMIpvub5@=yTHQ{TڌkBII2aCjo1fsX3gKn2{ H/ RM̼aƫx@Hʷ灉0DA&<EY9z'U*$kK;D9 vxr.%m\`-TO6RZ2i)KieDzM3;h9z,SqوG# 9d0&Rz ) IXAG.K m\dtWdLdƟmMyz2 E|keϽ&ޘƤmJB O$=b6 lEϼՎv?"W )|` w.(QWsojb@bP;{~G^Y:c@j]k7*WקV\ޥx.sq)N2;k q0֩#;._m+UyBaZVQV!Iz䵸C׶u@C~BoJV5o#,wϋ?ޜH0:<)tg<턂'*w M52h kVCG_G4@Nceoۻsڱ*D$7CT%JV 7on8b:r#+]IQ? (7*5st^x_/3}1}G{O`~kT{o.LTd2PjNZZn2BqMUR @HGM bPΙq%N6uQylG$qď`Zld7Q~S+׫5 MdG-su特 " ^6T]O3m?+>C1=e_Nht{d?XS<kd#ucRxcGGb~H$WӦ.O2cٸNi7NP|u4U+w5fI!;mt/cjY\Dn-`;aLB(=p'OmzK 9VӪj4U1O:5"PLyjxV9 {!R>DSQ]@aN󾶣mbBBGU47vԳ9kzww>fs5$f5 [[98^TE"vr-?SbCn_s#V%t}g+{'sRjV,9mwW8t V%ќrU%xUq= WCZ*1,uXms~ƒh