From 49d1822bc05e702be1665ffc2092ec5711e77491 Mon Sep 17 00:00:00 2001 From: Chunguang Xu Date: Mon, 25 Jan 2021 13:05:28 +0800 Subject: blkcg: delete redundant get/put operations for queue When calling blkcg_schedule_throttle(), for the same queue, redundant get/put operations can be removed. Signed-off-by: Chunguang Xu Acked-by: Tejun Heo Signed-off-by: Jens Axboe --- block/blk-cgroup.c | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) (limited to 'block') diff --git a/block/blk-cgroup.c b/block/blk-cgroup.c index 3465d6ee708e..02ce2058c14b 100644 --- a/block/blk-cgroup.c +++ b/block/blk-cgroup.c @@ -1757,12 +1757,15 @@ void blkcg_schedule_throttle(struct request_queue *q, bool use_memdelay) if (unlikely(current->flags & PF_KTHREAD)) return; - if (!blk_get_queue(q)) - return; + if (current->throttle_queue != q) { + if (!blk_get_queue(q)) + return; + + if (current->throttle_queue) + blk_put_queue(current->throttle_queue); + current->throttle_queue = q; + } - if (current->throttle_queue) - blk_put_queue(current->throttle_queue); - current->throttle_queue = q; if (use_memdelay) current->use_memdelay = use_memdelay; set_notify_resume(current); -- cgit v1.2.3 Pà}_=toWgζ#n7(wi}O>_so>_^ϺN}Zv}G@;=3> v+ =-M:J6\_^v{2mw Qoϭ|*J%M}͍ڎ@mk xxR}{4QJ|ҀmdR֨[xW}|OuDJ=w[)>e{z*s kR $aqx)Ӡh(CRJTQ{j57:b]9+)^ݜ]ww-Zy;: U#$M]+}m]}vͫqځkGscw T-tW2v&  Uw7;$ۻl_^}^=ؽ1)@kZ-[y6zS_B&U/}zoUFRW}hU}PQ*TkVuuf]צPnITUf. :3OYsO[tϷ=Pd2h2UE2}[{x@RCpt-S)y =hz:W(^ ]WtwCyQÚ^Bvh[|^(G|/q_|@=d(@ HH@Ph H|{=Ѣf*/:L/{xOyJƌO}c*UE8ԉQE9HT"TPϰ^gݟyw!Zj& U6x@;iN\N6[g- z#Lcj}y[k* kGU;#Zoֻfh4F=MOBx=I00` A!21'hSTij)"h#Q!M&&B'Qz# FQI<&TU?T==SR@d=COQ)!h4d&@M4TSz2HڏSO<)6z& iOPhzdm R@  dA02 *~=QL@d=F4o V7_MDbXV-D$:v۷+LD9?"`rr(aQ P!@J/gɡGqG{ c`Z2a%'CŲ+1+Uf %E $<3aٰ @L$fMubق U(<ԮbL%zri["2"^fSK`7k3AK 2$ J3T ʂA-%"y0A%Dw nm)H4B5)B*RД$JTM$KH5E4+Д)$&&A Jd4) P(N` "# G .ӥ P E^H` 3aLK*@hA0"~x\`Hrp<e"DO\ܻ8y냞O!DS䠿ۈD_R؊=@zHJ %M TE0BĿtğ|'=&b((O0dLB&J`ef%%CRR4 b)5-z&NA\Ieh"*j¶17߹d1B003Tl`h*%J( JB)j 2 :)A(f%&/vTET145HQAR5@P4--__n fec6$2ȢHHPƬ$HKTT LMST DQ-MA%D54PQA0I-IDITDSCASU3HE)LAU !@4% T(4IUTQ50EDRH[&bX>b*(A")jZxN.JM\\*6(vnHyveT 5~|s3!9e`A颈*ZٳeşF ؅Fqs3zڷqJetcad\ohCF7nz*].fTm.ױ0Iw(?NuDbk{ AoٔCH]<>O=vC.C{ {6gbOՠajy׊ӷ3Mcv nDP|5RJ9Drn̔so=d6kjTˀW\UC0Ӌ#@Bo@ %Ӈ]fjP6(XҠʨ8ѝմ+I8|]:dOI`uI@0j˛";*?xvo>6X IF)8fu9͖s;$YS!xٷ/5LIhW1O٪FrOYlpŃ^cΣS9^,e A`8abk釿gE~p;_?$I\>{w4 Y'0Co_55ppQcA 3Xm;:FT[k&0" m)ϋө& S_xws xnTUOy8F%BcZK8 o4{r7C C]J4 vd. slzРF.׍;- m]+TIFӧ6IdH:}D MMpݥ :28p_cP+k"-rnxQ\1;pʮKXcmxG-Ar 7Aيi}ox̒m.@.*P"A$p*y[]dGI'_ktvsW%9gJBdP|N<}{o'FQ˭C*r19{Iɒ#[i+0ٿ~ =@0-9eةGd9XF#'idR~ǡm SҝVvV@%;sOǷ7BEX2U *er mIz^$g. }8L{sq3N])M@Px;I!x?x뜁 rUXR"N=~b=zcJ-3kVNl,Ȱ`rDS%DUREM$DE%UL1$T4@DT+@K$QARJP,0C, `)D;w0HLTֺNJ< ]q 9L'[.l!u EA9:wVxJ !ɐ*6E\Aa೒@Oe @QrYPKҸ)&k6ƒ z+@ͭ-ibB]G/vEFRX .X+u'"ZֲݐtC Teo·7 Ls!uwN86?(uBUXy6Pmtkg6kn8$% z׶?)^#W23r) tql:8;3MvZ^oZ\|VMtӢh4zʶ7wQ>k67l%%-xqqmd>m<֞eT'GJ =mI{7D<DH~Ӗ L pxC94{6_ٸ j^w(yb&R@"ɰ1I.O qjv~˜5wA?OjQjwxv@ZWQ^4#qx |^dRF y3!5c'nh^S[#weMxZM:.u 2ړ~ܱ8NSN)j:4!=\ۻ龕a *\MЄUE-LJOS/G*)Exphe:>\5+_{ɯib7GӑHm'߿xUwc^7j>g5kT3="-k!#DDZ)3Hx{l#uu3mcY|'V AG@†HQ`ju:S^-=mtG{I?(<@,>YI'@eG7D5B5oˇe߷?58 p@ c ߦeS#F-\{"IS'0xxZq'@ǻ9wn_ P`R^6_?8N;a\6tӖϿ_/ $~XPG?+P xH,r{e4@!MD)uG&+rO8T*>Os3^K빇[nˋ6z-Pq!&@%RFoP!.U`P"SRGG$gF[?y乐6]_ KUh^ )$g=EߊPUOԢ#XR", UsH'K:ɥݐ*Hꌚ|+꿲KRNǭ`95)ٿJEMQom#3,RVYqsE[+`p"6q_}Vk{’?OrQ8V 5 ZßjZ`p:&/s9 /fᓟ6lf{ƅ'qs6;ύXH3XO-uy qu=u>); o4Ώ}'鲎8hc_;CQOSɵO9ӯFߺiaGg?ؼ9 Me/0(9ef]xHB9"3C"n"K-ie 2c[\m^^Ǵ:UF<!CܓJG7u<&UȐ`gXz*sZʁ?ݨz)Қr8dA^\ZihB bY/)F?C<'U6 Y竰@ו؁d? cEQMA]d;/{1y[?4x!ˌ5>Qņb-.>`~q <bxhHQ8T6%Yʵ'=Tp}uJ(&B p%Y JW;?$bRYW_gYlBdenC$ Չj -P(EFؐ?`⼨Rd~fG?[U&.6 b)@_[%QDL0cgmV,W9gѱ"XT)棝 1!OW=_ݞ;Wn+n* ҹ|*!J'892pߜK늾&yAf?U+f04c=|o{ajn(՘^8 OTGkѲ&Y)P` $( Dה~jksZ)n'ʯ^zǽ5nA#ySShtҘ^`|:w(G,cG$Ĉ0l"N=B@ʄ-sirHfwڎܛ)H&LSLPɅyCnfGQHBTGljW"瞾n!xn93bv8^[oc!)r ^xBXɝ;k? 45?0Ԕ9 d[ Z'<)-9uCsStRnbc` ^Iu\|,U ޗxߣN٭_QvuihoP/꜄a˜O˞pg,snrs9]aLaEWQhT`TǶ*U{5vDAeiV qh/bĂK"_#Y-(yПd6~5salxjOxyܗ(PśUͩK90jfBE`fa<:g#Zh؃ưægDJvȀK2Ӳ:GkPX7:EQ|  Xf±J ܩf8c8>!xr٦ E֠5Tި (FE#Q_:dcyf,ƒ5BH` z yL8]JtqXaΛ'[lo{ynL TR"\`/!)AwO׾r~jP/08׽%xvI 褡j:ѥlP(0#QAGFI@{6xm0 $_~L, ͦo:֫E9 l nr/a7(.M)ltΤ瞟Cٰ0 ML 鵧1{L|omnCo=0~fGq4}a544D3;jC͆j( NZϳ'dK<~MFe0Qܪ$"bs@(67-)- {mT)>]nRH9mhبkZB? ߂DRĽq %0=7F]6@L5?ATwտg>4~AG UeacH,5tWz2zu* .åT0]wySGZqƧcLM[s~EQ$UGv5jֵ0F6-%")@ +-fq{%%- XڭU` s R O-T*a(ZTEU2r4ulچ_" $H%7pIyV4V{v@&e:5 bR(b_vA=B@U)*mhs tF'TsghGcݵ@RAOqBdz0=[߽?l3Ic7Q25{-(E&$aah=v}c Tj1Eby22]QZf*"RA>;b;f s>2p$0q} D6 {|7<*"wX)PpP!5R4!UAEԑ8>)Q >gPp 3 f*x젖~w^݉pSmrGE`qf 0vW]u&kT $ l?qb* NpxcZ8e=~DPg( ICPR<ݻ2ϟ s [\e# |׿Ҵ5~\ ]ǧ| .|L"1mߟwV5?(>hNXQS.C <`KHM]AQbSL iM դ/H8LAئ {s׾ݓCc fvJGdpspqGG,.`LpG5YEFƷc"M-!e fU NU O%On7gR2ÙN厩GBœk<<<n_O5Ia{| bdz>⛼][E5j36p3Ά^=q}_4g9|'#e I~n^E۴Qj:yoy_>=%y뮦o+B7=CX{d^G|8G#8? ~]q:ԗ]kk"oE?><)F/ =D ;KP"RW"ňUXMى}1,(&U7;;8)BS4흌c?+Ơ3BSxPKkz裳FΤ͋__^eUcQ|(*v^cE5P)U%_nd:ZŬ}UH>s{ak傾aI)#ACrQOާb y!u/(PGC2܇PRP|yDWw~: pIl?j m׮*wj³~2>^6uxj}Gm!ϿG欷e/. y:(7@]>)ݥWg=g{(Ԯe|)Nx.-6MsWue1]_~!Эy;-30U]ztۧS8x Z<ӎ\ܰ]k.Kс]Fo+ny=rK?| _6g%TҪ7d3=],I-_-=Qcy}e|0.U2G\'f8=gOuoo7wyY_*|s®>g,-p7|=Yh7[-Oքctp74_|Gʓx\WQq]tͿluM9o^r<|\J]#ux)eD0xK{Zȝio*quGw /epg9{ʳZ@s[ƿCL}0!준"*l)Fn$'mj?cP.U7%@$I Rڮ!tNr7PuKƤL%ǃB? X_J.CHYE8%'(݊Kw@%uy}0kn*{~lzPkO4\ jЛrAA[^̷s3/;=^b5V]uu$sCc9dEn65 :=.0#31> p`t.h'P +z(G,KuRf2իO9e#IɇVju-^ do`]z۫\\<m ǤG(qD&ȫc:  ,o9#dM80n.0vzM?]#;تv?V͗fsvc:;ٯgW~.ps+nlu,U.Isf)}`BNVDL[<]Y>vOIWl#x4>>D`Jc}bˠ9 CϚF%[{WyuU88#|o/ϨPT؂aIAꪼuH95&YJoez(m_:%zwB)տkUqh am>ick e'*&c-mǬg^ g"/o63hJs`ҤnOg?" cE&D 8OCE\/F;ࣝBS?ܫodEp:gR"#(&IPPmx.C.'~tw lPXg%ig aE`#6nGilٳ9 \ghs .!J>i&0d˕g['fZLcp5>Hm8dt.V#7)ZRloޜR/޲4w.be))c"qUP84t.a|mkzEO#d?}LA'0e]TTe+ ]XZ(ūU7:K+M»-Ur/3wNf\( k;F:j~-f )2ĭnc:NГ?8%6wNKM8Qe6(XL-]Xʰ|ԓ!g-]';b&~v"}C#Uifo˙opv{tr#zx쬫EX xzZ|\z,]qn( @f[?~)ߣ]>䏒Ky; \UW}Nx:鈎== =H0J{>l2SE"@0Ae 45!ʂD *L HRI RF ON(/ai4.sR%@z@:\R1 iS8qʓ4IM SHRJQT@RU ,M4N=J&IY"@ a(Zif(hr8H'OA 3Aؘ7Q@JeD"TYno>ɣ٧-ZkjmITIݥe~dlD3rޙz( w%Jl0 !Pzý_bD wk }W)x}*Qz~DhR||/at4{Cpyh4[a劻98%)Cht:'%h({:< COV<8BbOa&{/łbthV)%""ZOPcGn<~/\8Z pRq ;"T7sVvz6g;d̨7<.DZלi%h5ixc9Յ.}9O.J U7ץՆRUt:*;_hŪ8CVrPjz) D~oA_DjQxfŰ!77p\z~rO/M .NIĐF@Pg|I$-N.n˔|۫}rM??-Cyo˸;;i$6ؽ]D+N%Z%n*c_Fhw('Y4 YG^stfH ?Cu_]@3 on}ί_rk ]O`/[ow0\8q|gwv?89EKţ/a[,[civi\9y!8k=+ߟʊncu_!Ϯi ϏW|vw>LE@]CmgL0D<# ɑV歾p ,c}tC @'z[UEA?NNK8Ѯg^`c H:,z@Dq؉N+?h6ffփ9!E@ u3ޫ<D1U0xBiSDlҊ0 $$.~Es˪gK12\넵; jD5û01{{z"Dۓ^$ed6o"OX"wNh;yUEę!ワY4JoDAm4=![ hRes6OCg $>X)X{ߎ֋fPP^6SO[趔knt颬sQ ~Xy\Ë՟NW={?S>Smx*Լ[fqRemJÜl$*1y¨Lԑ$ ~mR6ZyXv:Nn~&Tfǝ)U[;t.x|0~;طg}<_p)ZO>pՇ?yF=dyHiq{jI{9yN1V?ֵ (iOygmy)-Ã͔">#@kJ>k:à Y]c=gݷr (*a߉Ȇ#Aͩ_f=/ߖtHwpFbO0vj :zd؟/~kZI[Tt$Psu/>^9I]azw}BOe,!fio**[|k v[Sl^a;~D L>YuuaC)C|?/tW1GǙ}մ}OJuGO ٲyYCos.[nB:d|o!G}k<+Ǘ=/zu}KEkL˅|r]Ng{M1Swn}t~ݞ@膃wгקr~|rzsh+jX vΏaA"ds^ykkdvtOH'N}4]x.SY9IW#w|6{:OYyB'%2EF$TϗD|PWsj.ν+JڌdڸӸa;gύcMY^6OFӟhwlXˆxŷ0ٹϷz̄ JĒ>=xӎ}CK=L6mrƱcqn:Q~=]iǵ{?7~L TBQ)_]"/2D^:OBZI?|~ߍWywL{]@2 ep^+$Ac>BBđ*1 KeYPel~P5:-=PF k7c+w(|^? ph O Qwm ^N~m.;-#ׇZf|͝ T copFVs7>35dGe6zj_&C @218b}2~W ,T=zl  wL^:Ǩ]YTgBuJCm̒!P*6!@QQ LulZ?J~HppD1Қ00@"A\냨Q5 )c:"!V,QZ77ioE( -jpXT^&(\8,o|ahp\5sLK`Czn#Š?Xt>H.V|^MbcKPM7BNPMS~W\kq< CӍ8nśV؂h .b:#o @h(CXc(qcu\:\+*k8i)\!u껐 SbVXIGGI2Ҟ1qz?k@DS*R9U,T4-݇pTOisD%A(c.jp!NRTOCBUP<-b%DOR0Apx RUsUvH E]fM5 o$(@[ǞҺWmknmp^S FHM^ٍ^>k #{3gZֺ+CH_t$*AtnojP]чn{xqi߷(z(rE~S73<_׮ǒՄTbߢӹ]El5$n8mQb'Li}Z}Ged؉#"s?2@k!u~ŰdEwe.0w4!%NǛ_:sC; /TD _f=рO9Aַ0_ܡǡac{*ddr:'cŏ.1LQ!5G~$H 0fq ݹmw_3TiLGMi\o?%mx ž[/hx j tE&OXq#H D O쾹C!!oNY^,(xq""g+(TBM.EP)%bپ-v^#@},0R@gJ3Qo>/6_0}CX 1T}vIEM,^G A7iug y̚w=_324a8Wi%}P}u^N~~OĹW3n5{wjN 7|X{ߥT.u(;|xՏ~6:_,t!͹A>٘РY]<0SBl}(S|l JRkv(m: UpgHPoTb ];x\~lpBI&~?z~\W@|7Hx:bb8*}⚥}>d|=8 &B9gcj殅@Y\Dh|O  묙3d6.oWsՇ_5.?R/#++:3.)ӎ?z݌q~c@Q5Mw]xUŻ^vGۃ?2yJ [K7/`ZrO_4 5֑D@ Gń;"?ǔ3O8g;ԝ*L3q,~d|ԍ,s7kcgyF=>),Aw W_\[ $<$g1'*c|˯oի(Cyˏsj>nc (x-k4sGuY.-oףE3wŕ3  4ר3 e"$hhaAK`hy'f, کw}Q؇ZBWbiiZ PHBPXޕh(B{Q518@:3w(NC(AABsғha=E5amz]'_w .ԡ2mˎGp<1Q$~2\pjG>+0oF7T2 ];Yrfhhu~I_:鴕ްD7+נH P_qdRI4QkD5LUESPY`>I8^Ȣ0F 3vUe@STP̊׹Q=rg]6Fǎ?p^7=[r/pߘ|3|+MM'l9J燫1sPp'P$i( P"E',]DVNZV< XFqauTOTAȇZEb.anQQ\FD"fR^.]δ7.dor TEN`˹yO~i5]I>mr,\N <0\g7ltn7fҮtٺpo4W2.P:0]kbxMai74@cDZ/YnɎԌnmuxQrvgj݃Nߓi w= ,cu}zC'rsQp\=a=j=0> ?ـ o`EG/ͻ?}.ٯ:e;~Uo24=&>iL H@J4~Ĝ"U^KWi- K_۸Wͧ@$gZc;pe^kd]v1Ef7geRuSݰ)>܃`$d;ۄ !ou{ -9@ M|b6ȳ0'zuǀ-[e||`nC&Ya&T5WϬc \;ȴ_b?>Ÿu" TN{]- >|~ĨDFes఺ȝr,PFkZ N>|g\ɾKe;&}6A9aP% K9¨7rھB+nGB ȧ^$.E#;L+ϯ ot> Dcu^+շ!5=o;T0-Y0qF!qkY\Nk=\DͣUzXss厼# e] L~yc14 n]OnGP%Kyp0 fsoϚM|h (DsLbw FqL[aذv3tf52)NQ#~vs= "o@Fp&P*ʣG7%"Aqn+`1 w% ˈڲk w|l:2ܽT7jڶ<+ E _6^M6 .<Ҿ=?D~(:kD$B"5J%RWe:&/]x`cag}?j]1c>S8d7p%a}m9dFq v!&76q@|/ <"AGd']HxHSm)h"̉hp<<ϭE6sz@ٳpƓ8RjM8Ykb* l$W\ȧ;|팈`E`/`g|G}W\ۅ%-J8Sʧ2pBWu=/d'ab{! `~cw+(ؿvQR%90W3r:SIյD`Z3mzO_h hF"*, Kd;.jlw'J+\qoK[ڙMZFpl(4UBNNXp_dO|{w r= ()qnT_,ȞX!ą7%=!{{sX ){mpOg^ kf Qp ]O޻/0axy2CͮvXȷ(Nnl= bE[)4_]46yិpyr %-k+K ̄tULoۑ6r`x:3w#s8i/tQ׈IÌf6#Ýv -&Fr vyxtnʊc?}y\mj5s8Z2-wEHVa:lT`_04A^@؞"T%4wfS-(>dMIp4՗5Ԩ# \%s%AEMvUp{M=YU ME-iƈ""!b-5ƴPjFzKM2PE=QLQZzIU0F5b`5 L3($݂**l+ E0UUUǺSTE991e#*.澜󅬏KITW`$/Aa8MG2H_,wPlzląQ' שbڥiyzHgX`*p"M5c=˧tt,*dΌ[}k&Mhr5/\i`8*/17yqbq䷕E;IdI+V/x`{]vP 'VGasz7x1=sfㅾO. ʨr$9>3! &W[})oh@~f+T/A'`@DKr( zOcymúu"vw@N*p\hҚC,΂NA^7FBVپQBvaO+뼯=G"7 B\ىӇc Z~z6oY@Xc1=2{1X~-6}օTTQQ*SK^u97="9w±6$hUPyĹN) &>vA;kTs,`ZN+ҕhm*F/e_{tq뵤ɫL}\v+'픝&9D^ҷpF-jj~ ځ4<ɋpsh}h+]W@d#a{ɛJbw-!@ `o<a/zg9A_6 JހdQF6T(/D,%ƫ|M9#؎c2(av_[ 8Tj[2h$ad`+XUZ,z'W&.X΍ q2s \Dˌ2T.O8qVt\|j9<(a?\Xu:Č!Wn]bCsLзGΡ+"_kؘX.lzRB5}" kyx8{18r7Fj2q.8B^5KMDnƦH&1 %0B~7悔w6 kC.0m%*yx޹b+GDF]%lFx'J֒P1P.!u"426||'EC(q, ֧8Mr ~S&=T!*OPҺƔe荨"0ː+s.O;r"ˉH_8XњoIP7""5R P.2U|SHۚR4"3XR;_] <#Q"0VkRSAt}Lӕ($MT LzA̽$xS:C]]jJ١xˆ|;c#ZQ `h|vu>z Kр8;xZxCIpS}ls 3&ӲUBi29%B(-ǥuY8E;$/H 6R'-z3w?g|#yij]|p(m2$]C {qEyYhbgءsU3$y4~wLfg KD>+8(\+8_%Or+Ň}L"dZGCOlePGrUY#9E/tE%m'Y>Ӧ9Tv쬞omo~5 bG)>trZCjnPW}Џ@k^uw-g]=THzj㲎MmG3 sKY-vtIfA.C_#lLi\E"n')uKW9QJ592V/s¨$كxT:Z "@|O+FY>4lO +ܰUIWTY a׮|c9BC71%"Fޣ+5Ʒ%NJiW7]\Bߟ3:u$^q8A@0SqVWq~}3{Vޭ1m{@y!9$CF*;;8TT~y |(ɗˢ/ n'Etҩmm--'9O{˕ȝh4I=>JWFCd5׎NM/5Q9pS:M}+Odq =F%|g"H S?< "K` ,BՉħF,^anf_MmʐN'U{vpzbJ-/G}z2hJO't8v'> L MnSe:qPkVT>x(`q#.ƆIꄌJ& C˘;*+?3呣 ѝ g!)7Oүwek? ù3'osT2#B]eg^%Vu]4˗Ìcvwv+5T>]c-vp 0^k6'*o=ރWzg8|{qN:5pDG\mpr|1c5:ޱ;ny1YY1(O51?pb6)_x#b+‘ޱԘ;7gozύO\z+n=5pсz͋X}87;5Nw ߓЮb{ ̙'1"=\Ϲ]Ie|XesEK}ܩ"0woa4YS@h"9<:8~9eεxc2-U "RFRuq^!.B%]DgüG_X~'Wo.?8=Dg\qaq$0jaxa_Cb\D᎛ܡxo05~ \w:%|cas+Y7`:m8mZjá yoyFi "E%#7(0(yA c̼ oߢW0)0y(~] Kc$`bRU.pPree]N6k,oƘ8`;ٳ;Z/}Qv@% 8ive(^ j|eֿl-<4I5tqSu}ÇNܼ};+Fb=6{c&+DJGm 8Jzђ|=w;("D P3,AH(h!m%Rz'c; [.sxdZ4=w^﩮&K_9Kg:͛wTK%yywY rRP!x NOy^7H\9! ݪ2j& 9n,)-|$y'S&S7+]Mۜiy%ܾNdI/NAa':YlӉ͜NinLr{7:'q&UNCY=/8sǼVg9sv,5ۼ-BwP2wYS7ԭr `ۉp(Q'܏?lP0i`dx_*)1e ҽA[زƾ̶ѝLxT#CD_kQ&sÊL󦮳"?Tt^?NezCͩ!mda`^Gt?AQ>Fs(%&'v햧ˤޗPxcȫ9NO`G+Pwc'msT_IzI`kZR{0yn }d6x~2|w}r_6w_ zmW7|4hfdw֧XF;dH)6R_芌A3۠뵵y+GNo2}i6L%'@B.y"qzBHa.TDv9z]ِN9㏍>PP@)vAx3k I!:Ry+E] Րfų$qZqZ%3ϭ^ITd3b "Կ`?E00 *Kz5atR"A~{~}k^DZ뾇s4ܖsZFZ(3qYuEV9|BC nA?#)4L傴gTyV(҇!ȷw_f.e}bl̻k#$gfƅ/ @)/-ۊt !DҎc 1ù#~N"0B2W3`9!k^ qA\'VP:cu}Ib;/nHfRQMx*8 b$x7ﺄG{Av1 ^1 SBa3W~頋& *s9._F]n;:H,d3 񳇷CJ>\LNtq"Is >//kM|.Cc/#%-j<8= Kᔿ ,Pt3Nd!,s[)"|#i7o5Pw$j2'L#Hhk ݌“ k@[/*M]{e

|5kZ7+Kbbz&ūwEr=Or)n9>[۲u'{O0D!b j_ }wB- WB8 GJGo_✈Jbr0?r? '<:1?%FFc*3tv־kQeb}͏a3{;cjeۡ@(G nmfE W>q뾸vն6d Jf7secw~#$z@輪I܌A2Z T=5^Ϥz7kCmֵ\Kp~Kh`D<Ki64>F DHx7gih&c\))\v3] &3BX;ozQ]r@|TU|l۾ZCE%'%f0(|~_7a#3 *\] j}UN?{=0F*^ R1^r@s44Ǽ,>R$\;]|0Q{: %%=5'gێ"^P |fJeT7Z^W v-a*UsVv1P{a8!pTX}H.aދ { #verUx3F?W`#5Nta mjxCW~tdw3ǃ6SJJ%ub&(@%CNF;qXB =$.ɽe̡Hc+ >[۪V "9'0^!vqz"7vqthx+YE~7 ͳrXoObT*v xA!"0MzL6%fT0zvVB@!G)pYiFCgw:  "F㎦ji@=Dc+/S=G/8’ ̩9+6Aϋ A`zJI}z MiR{ KJ\𢖀 =Y@khXr2TЅďb&;{8ҢY)oᣰ5vCFAC'rt5aٿQ;X).ks ||w0 UA"_Df&2jqbI"Ӂ$<-e * -ebM/U[03hX) a2s ҤX!cYP^HXp J358]7O֟Ωـ[՛m9d 0YR{ 6>즯=o䛭:QLo?Ge(ˎT\+pKiwKx~zC #>;w :"H)rNxSŹq41ZX`\PA cםߨ^K~` !hèrEq\-B.V'5,S6,h2{}ִ܆\[p2 sUC>81J2*ʒ,^̗=Nj*?XU;3 U^GY[Yo4"F -Gq$exOA;?RH"bC/\'˿U:eߝ„ y \TX^TD pqb*1P A$}i,e~*%*o&>^kB!?5km`xz}f9a೗Ɨ' YywDFU('d]0 k-(b)I 1voR U\ [&٭o}%߫}9<^%@sp3ixK|FlF-*s-Y\fp蓣[Ng XaN]'r[>$cn5ڄ9OsI y6'ÆBNf} :KGѻa~2;xɨE՚Y)Aх3ytb৯gɖׅD~C FF\Yb8,}f^'OqN u+X[wƍS+ ,ⷛxL_, C(5j`eA#poPo#2ksXeҡ{sksn R"VZvP:$>h5ZO72(Dh&wHd%631tc|:5~U˴Q%v+_$}`=/#sz힒7iOysW^?lI} +5;x6XOV<-)aWw{FYkiq|akqWoPhG7F\wCtdѸCk k &}#4}ү<3*t@*\~=kN-k{8 1wC )j(Ca> 1GjB1>g;[mO<h" šy:;3g9m9՟Lvr7;4ٯ9]%YIUь+E2[ bn ;uvg[ggۺTʇ.[=YߤztDӧ,!_u$OZ\#6d0\Dv.eYT۩X< 6Jg*!ذvӪ4vKzUkX;]7CnպKl|~'wmmNn]-!篥{+oqN䍼oxVh`Μ@65r--Ao\=eܙz]lV*O(0ُqxUXj'm^H9kdT"]ݓ?43Eƹ\=p"|:kTF6 [ĪKya @mfyw,2# -ED>G1l) {QČcο[E~{ZzoÒ14Fhhsz׵cuӽN Ŭ5&rC^.Z f-Qf~d+)o4T\ZB=f0xpj A ̾1qPFs{X-l^bXH#JUt ?8ayq"iA8G[r'a7Q7YdF!-"c?Zj"3:x͒p0NPD 荏$)-Vc-pG0^3\ 9-W⋌ur}^%1C׫ֺ!N,O,QV{_}#zUL;\K!k.`mZrPĖR;s䲾os ti:^ w#F ZaHj߁n(0glZEppx"1/7U!,{֑oj{ʜ ~w5G;Q;HT3cA;tZ|p@-Wsd93rP5TntjQiz,;R[^U7f`߾[9O l(t8xD kTFY럴`nאMc(-_e ާf8[Tv-.@x^_xJzRs1NƢFF~~emkFncEebb 7SGU >5Ņ./WMkN3G>%hP4]%Ö˞ ɒj.f*Nq)֠82mv\pFInڢDk9+Um?KAot=1goU1(EH{tQW{aM Vc {~UxF-:^S9r='#Cdac\3FJ?y+|XGΨ:U-œk爮ֳ>xP~Kq6+ `Wpן^&zLA`|d9; 1(˥mT{ô ぃga sk/řL*th5M`梿B M20BL:ޖS:ʮnh{<&5.0u|<* ЁV~n\um"20x2Q:UUefkF²eFP ܿ,AmP`x5$$KD4 [:bee]4^չOM=}epmֿED2*!s1CqPYICDZ7cCw!1(5Ƈq{*;go-~h ѷ4()|e3pyBr~ PDKz57 x5>+[ K9q9DHף^X^Kә狮Ǎ[hR<1Q}MUi9Ζ-HwLBƮ $iY4*H-@,69CQߪz&A ]j:SxxE/W鋝۾ W\FCS#.+e4Fƫ(O sRQx~K(oke-w УGS8wJAJaykºt6sXede<&J0-?Kj ݭ̫w<1.~G#簽2҉#E:4h$8xM Ɵ^ )Nh{zb~vkP/(;>IOy "17Q#JJ6w>)GlZH=AB<_"(<^PGT]=zҰgz C$P9QNX K%nmL ғg~ѻcUĹ#LJ{Czu~_Fͨn'#c肷2s=;tj&q~W+䈂?¨!.|/6fn2Ǣ^Lk]>OS_m. >s>ώPͽչ=Ū7@_eʱܱ%s&.n[5j",\`C#IÎpGQAaӢJb!?9[}UO^cU ?;uF)־,^#_G^M{ET1eJbq2ryX 3"RY~/PF4pCgL\ {3Us*hSV;8? eMτVϓ?WC*m8}&_>Þ?o,x l{t/f&YU]&Wyܖ?sFj@(PrdÚCXp\rT¦VW9)"n`A+7s/rtdo#⇢j^҉U~'S+o&+ǵ}pI3w ٺku\m'9HH/ViPuMjF|IZbY]ċ`ȿY1꿧{.gyED%0~/!~y]g"dDbȦM*`}W^[qnTn*3Oc~W~c_eH} sxN/9\N$NzRSGjЂ,®)N{}ݑ}*Cn~ )}i cVЖ7'=R«s~00`),ֱ; ҠS2! +?1ì̾|gO]v.ґiMN]vgj)}}W"K5~[.#@&By[9  ZV#/E,׹| &F%0^;tk*(kI0VqM46.A۟ݹ*Yҋ(5[dEtuςn\8 ; ƹO%WOr 'ϏĄ )I2ӦC;p d@RIڲ~]HAnA0wa)MK5RJMP:ŗMFi\Q7R,F~ r:|B+,NNY accP ؠU3dYIAUvM1Jؑv˘4ʒ}1 *zlފn-c킩+ ƴr 3sJ۰of3X80}<&Xơ{ ω" _CjvoqO[ Q+ʃYG=_Gǎe@Rڏ_FF PA]¥35⨯9VԸ5Y;t&O(`@y">7;*Ѝ|ts3g*Ƌ1Dxվ<6̸`W!> 89$:AL !%ȶ7Oewm7_s$ . hQcae[aX.u31+'.R%%uYApż/aۡ-ǫ,v㪩-^%QH&*0תSgvcn9t 덬lW"xşX# ~Gt&Eu1ΫBGG_AW!M߉k%ݲ,fc5G<@ZΝJCct)KL 3sF(.l QCoZR_ }BHF`1f-zlQ SE!/8|:A26n`e X0# 2VƦ<(1.8}nUD׳~g_#RwYOe r腿|W0_>׵7NHHtM#Fq~W qrr~%([cN1Mc`WW(_%˹p|ם̑#\9?SNS@WM =1O)9>Oӄ8ObBdGBcSkhghN1?6s{NWzR$+K5ŧ.KR 9 2?S?+p{Զ\^|OVn={,i:xO*==8vݒTD2(Oiɕ*?~#OP=tyԊj7!+)$)B .WuPvi&; {atmл& hU?Xļ I&G 0TXkMy15pi$s8G^}+f%G1@_YL?%L֏=u-gJ*n QL6ڱyӅ`AzұU_ B=5O'~d<ʈ( l;~\󡒎u̇j-;M;t9aHpd#Rf3D)s|P7odxPOabDBaeHl@_* ng9Pt[Y:8 Gohw`6 ȣ{EeXkPyO&fޞ_y7xy*c5rȝ{dTjEU< 5v{@̪e9; h٭k]wN'ڪ>TQ-VUBǰr|gլY7O9ӎK-+~S1ЯvoOcz5w\Hz.YBHU&^Y"jՙo%HTߖzVæ!؂p c*AtވRxM ?q5z$%/xisә[pD]|]Jp X}$l˟b8ЎH 1c <%"< &@!=T1ԈwǠNĽ ,*@|״-|OzO58pQV&OK  9h-fq.9P LH$ }||:qtŶj]רU}(|TB@E/s d0ϵ>R^?H~nO z.ɓ|Jyz͟ ac[*t.3((I_8S^^ׇpmN|MFxLݺ ֈȄ? ƌcW9wC78nso{>_8]bJkY#NLH9=w(O;dDM"@P] !̠:S7!6 Xt˜RJAYx86/BFm&yNmqU5O8uNV?|nMZGPT ՗|()࿊N{}+1SQZ!Qт$YI~[Y5Veó(µ;h@Tiw$sP1~Ā@"xHJ3˅?|NʗN˭Dpo۳ c FsVVk8bӾL L.goBlj0[A|,Hd|"P~N$#n=1<WbFPW_ceԾH+~I!c._~p8y]5#S!KȄn:CȀWτMԑK~$G^;;o,$1ŋgZJΐɳ/epl$\=ф"n֚OͽW}䲚Ɏ'ݼ%߲t퐩motzu㐑TcBB2@>0vbL_CawP%*:2d독\)(a{zǥ-z._\XC?\:]X1Cj CG=|rS#j{NFc~lF4Dl6IC A)UDX߄S1㈞HY'<*4E7)c{y;|͊Bw#A㨊.CI3C"E99Wm9PP{xu3C1NBCxݱ4Ǭ uZ6|H@͎6'w! \7nq::|;省@.IK՛9Io4o¿hxi̧^ .˚RJ&JJDTGT;vlsS0 g ׬C t$//DUU"' t1>g\Fnɽ/,@ѹSxg %=W_5y/sp}9jbwh]Mėמ]t~}kڒDikasܞͽQ|t$8QlO*|`#KV/{ `#ޜ 'z|QTeHP^S&Ts:;ӯO4hZ~T~3?VI˄d~"s0_Ic48˺H寰6;~[Mb9-{ k/~'`8o/\ƍ/1=?MYY: {]v"cZY]߽u y$Sa=mCٖ3hLЇo+>M_ʲm{r(^oV|xQBZ98!b1a W45f\H7Qא2XIv|@E/>g?v%DU5/)3ac/W;בɫ1֡pbu$('nn K}՛b 'g_ 9%$J=@_ºE ' s͏aBB瀍΢cj1 \-,grJQ+b1d `뾐/3Dj# ^F}qƳ_ۛY ]|&l/$~(nmj9DVGO'yW?nlnVn϶pz"w#ջڟ`0 6 뎦L 2y_\\Wƥ\0  ߖ<,ĖGurT}G85i alZglX\'oU04M] Kv6".Va@ZGl_#JpJmE.p}]myOqT;]OSbkbVOYă](9.!q0hn*2(^V iR.0= vu D@=֎bN )2Am:Fr38&Hmr Yd5&fųkQ|Y9:|@  ws+d-DhtJR2`$$"O:#!35 j;?5`Ia9e?_.XXBY1 Guܤ麌9BυvFP2+6KW.w⥝AȱL0R\\tkv-"!=B_|j 2i_w5j_J=E_|!/ZN$'7m7pWf0N=Z}sze~jtvCF*ªN:*=J(gLA^ڰa}5.7 -{0AXQ~maKn^>(*FwErpYka$'D؁YYI&Fu `v\_kzWS5" ]t O4Jm9m;%2e Zsԫay߁@oL{ja'T/>,#Z9aU+ F|td*9a~V95KK '(|j#7tw?ʈmMgLPf9;0޸oggȊv_iPW,Wy'NLrp@J^?A JD-+F2_Nߩ:q Hx PF!9xJ],JH=rߜ"rn6Z;U3QɿcZOE{7sJ+l[Ͻ_ >'#oSs .c"r'V)!NyNo4>X򸻪Sl)R=_ЭC~.hMب]y(C֑> yfW^'BDԌtT rXc>^1^xT>G٫ڧN{pb [܄ftÝ'5w >tpz)叔2heܻ]weM-|}sX+e ]}( nva;^mu*1qQƤ,nE^<"$jIpppӎ Սw>g3}*#rLJQPUTɬ4z`}f5RT*XP rh(׍р'Q_n i|X(6OUHT>` /Wt9ρgXf&]&%"@Y;*WJ9g0k㷒_w3]D(,?6 2Ec߽Q3Ő= :HŵB #U>;S8n׋"qC 4c\?y?p6{D~3"#1 nw5<ש BiC\VrᄻU'M(X/k8o Y2k11ߊӄFM?h+NYBJp_ՃMg{M꺦h@v&v#\hLhm((ny)P:MP(G1Ѯ ^bLyOK\Vm!oa|O&$Ņh#i:)Ǘ3"~U301kD?1<&lx,7;o\J-Ffet/ /hY&86: =ez#EGt# l5mqH{ hRy0Y=yFN FagA!;Ŗy0FV~ok/Bܨ}ՎoIg?hc)(OLl(Z*h@\D'Rh\tFM$ l*"TW |5\ 'MGvLP3oaq"w~}b]= :~ù6K^n ߛޡʨB}`&\ו1OH#3Ծ$taeA_j&nLs(#>/h̽E\B9k/#Yq UQq7apP&l4) yz_|'}d13 h"N&~Mf99U I?8qrJR.FG X W16rt ~LEKFcՄT<`-f%}v lb1ix\aY!B72;U^g7sCW s|Ec9;+5jbk~w>LXcz?%3`Z~wC+鋅19^ U@JUT ଺Q΄z.ֿ܎4JGeQM( *0 ~9Dr) L5svav+`sggu bE7!vϸgȴ^dFlyq=._=wTjy!vK>'unl~moCGp1 kHw9la3ĝZP׺F#..`o`43\0  U,_-oJ+gMzq֮p1}v79>qp(˼6wg-/ I]ah  hՂFI2 {q&yj`?zG³ )\a&wRj8W%aBnp33ݦ]p|~Q1,/R&ƂZ3swW4`ZEIx{k{-_ R++[7GjgGmz)+7轟nKFp1iɜxN\}Xuh1 7/אs"Q⮌#!3 ?|<:kc}3#ϧ1mo̺fପwDgQJP3!2ЇTɄ7&Js.y;'9R/ czR\ Ɗ5U ;WC|&5ɶ*30/5 'fхA凹~!:NŵŦTX=V'|S'aiq}[MjSz㤇Uʝ翦[^ozIBtL+uX8I0P,fDuW7 ft 3ecu!Y$)BWŧN̾%(Ye o r 뿶/)"¨ő雡8E{=8.Zv`àB2aQG6M18{NYPjbcj("H+%jc_4dt'=r/\ x'YI yй)x44T}MFMW-wg z< s?jHf % `n> M J=X^%V.ࣴC# 2C| fH>w.d!ebkbml\0r4Go',{Iu˔sc&ѴQelfb'ܤr{YJ; h.ܗNAK(7򗂉^l^LJ4=·~F,O|bq4*ι}P!B8EDIdx" .0`E {. `* Z>d>갶B$QWv)狧e7TUE{X]y>3G.q ,vYInzx< nT/~<UvW^ zY]vR/AR8`x_-5FNj|9&|x81 V 1,,~LF`dֱs5"{kX;jԌx _1Kzm`:/VX%@HJߥ,c ً4é/pq0-*`ϋnZj:16}k To/c=ptpmYĸqY痈}bͬbv'0W,!Ts3E,?[Zә[X\5H0'(ϧ9,uFr401k$79=g>9Fʓ ڊZXԓr'{Ӌ:wB=>vUG=7:( & qwYE)/_ f^=NCFoch: ;m-s[`` X3sFsdF?5\:̴ʷW#q%s{Frpy.r ?:=[ m]Dq%BG/48/rpb)c|kV3T/64@{Kq1 gZWㆈox}1\=.]~;:O#< 46P)bMm95JI9(VtpBxnhWS"ͣ}I-QYH~.ޮKŵ旓BYTw,7:|X'>5;جzZ*tE`yxJFld{@? %~d);(TG>8cqbOߌ%B\j4U&lӞE8J"<ډ$y?8sʻӟY"`H9Y5GtGb$:p3ɡ0KpBo/Ju$jpf v/tr]CK>sp頃Bc Mz2/lqb#5)ӻBX[.FQ^fsMAA5N-W_wGY|Ȝ?eF>gFKK6Q`BU*_7z&J0N/_yH|ЬKxΎ2nո_Y:8i*pŎ^q'N <$6$ OliG5-ۗ(yxҹ#XkfNriTQڟ1R?sCnf.W8s?}O`ӅBp|Qj_'Qnߩxq\oh;c\ k߆m\C Fcz{7Ubpk#%sYcX8+T\;ett?\\%! h\^>>{b`N/b-t ~{r.`ouvLW1`J".f_ߧ2Mзqe|QS51■ |"܏'"y‡b<@6$jCeg o EJ#/MF'9TT:p%;smzCd ⷋR9Lv.-FR!7 =+Oh*si`形i\zg9G2XEb ǵ%'(.̠!30lw /ux8FͱD:ѕR]f75죮;^kLK9W3*A2.]r|M$zq%E,RтGGCm.#cqxm \rҳ/)}i61n2 N&Q?V{Uk]?-麞d&d(( # _8S kٗXlZzV93Sb1J"rJ.,ԛ+8 Δ΍3!=YDdX `6i0i'y ];:)Cu Ϋ0Omy]k9q 59y{aH]X\sYj\%*\g+CfNR10ÚAk71(<;4 q @IuB:g+HdI1U՚?46c>17DUL9>By 3&?`KzwV7.i 0]LPQ34Tр](02Cs q!]Kw̠Nр ?sHjE X;[S?:~8I@0 f[r3йP J.Lq޻zȠ}}KP#$c;qgB2bA)PL8 syNZze[ٜO>wӅNQW @<ATy^=[/ʶuY47-q1V\GmQAuN Ψ|}k&~Q9##,םk8ETxFͬ)A`w|v7DwYL3+"W=wy񖱟 -$nK9ս(@Kuvob."ULn6˓^u QG!ReFAmhQ YϘddIoڙl\즆IPH_> ?)sb;E+\\0tx**ujW /F,x@9Q(u'Nf[\kEd1p+VƏO{Fnf<(P!JAyUIf(+K=U9?G˛ϒd%b3OsA]X[& t#PG߭q |Y*@ > 8S_[Őc*{j* 㓜Q͒QXXė1S_2&su2ϏӋ}4Bڍ U +xtj2^]q1l!P2q4pqncQgD@&iĎMb,,ܾ6Z/=Ұw0rid@W+2k̃#d Glyz=kB}2*"7K/W8&Azw1L p4Uwf.?+Ao~jZJVظEB7={W%%amFO&ׯ =XeX]=nE .Tެhs\f'W²c bXb,V&p'("g~+Ax=bI&t\ޮÚlF =Fuۂ!c/C`UN"b@ED ^|) V :fp#0' eO^=sHp(W+uY89>S1).%ܧiNjr"ZOʐc(r*>[DK &~Q~ϯ|o[2&Gju_3#ϣRʵ EE)DpK>][qu'eq"."V̢~" CǼ>*UЄO1 .) p7Ve8?\1>%Rۯ !=N D}p0ϙC.opQֲ\c[UڎtS> (L wN9i<Bw6FL olqHB~խO9#; 8\"j>⟎: c;Koʳ,5Nƹը5ZVȁgf{Y^Lwfqox:+5lD0"teI?pqkICe}c;`LVW.xg(Y$Qj{:y+ek|O_oW k5GܼIL.ow>G&bzC~`3CAL?/N&/W'gfz!ׅYX @ zygr6z[Fa~8L]9>Re6N3=o$xoO·60z 1HÖi4'PHwkn*B0!+tVT1Ch>σ?d 3\$DPd&sܢH(^X' LYgn*5+MuhP]GBPkH:@LV* 1޴rk>oAČapVWCJW3 -ڽ?=x/vj1BWn=mtHu<(0 }G?]۟26f:Qc)3:o̼=}L %.N Bӫ {&o}?PuLݗʉqD/u Q6d0(i\.v{Q?DE-{?Bthб1#Iit~2"ΏƐ(ʹēN0gd-J0@Q|(!jiO~K$tFx;[A:UZO|#.'״Mx#HfN9g Y"!*JJ0- Ipq_suxmcl?рtLP9<޿dF8?֖hEhN@1h@q&5BB8z?aܩ*'<֢Wto۾V_ P?AAC{џP! K%:7r.#WA?cɯ*9Ssme4ۜ=0V vxS1CHw".W{