summaryrefslogtreecommitdiff
path: root/tools/lib/perf
diff options
context:
space:
mode:
authorIan Rogers <irogers@google.com>2023-03-11 18:15:33 -0800
committerArnaldo Carvalho de Melo <acme@redhat.com>2023-03-13 15:11:34 -0300
commit5dd827e0fa586521416730e2bb8c3846f6dd91fc (patch)
tree3543d5a869c6c75ed04ede7e3cec67420d161a13 /tools/lib/perf
parentf9f60efbfc98a9b228d35a1a98fee0528c1fd3ae (diff)
downloadlinux-5dd827e0fa586521416730e2bb8c3846f6dd91fc.tar.gz
linux-5dd827e0fa586521416730e2bb8c3846f6dd91fc.tar.bz2
linux-5dd827e0fa586521416730e2bb8c3846f6dd91fc.zip
libperf evlist: Avoid a use of evsel idx
Setting the leader iterates the list, so rather than use idx (which may be changed through list reordering) just count the elements and set afterwards. Signed-off-by: Ian Rogers <irogers@google.com> Cc: Adrian Hunter <adrian.hunter@intel.com> Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com> Cc: Florian Fischer <florian.fischer@muhq.space> Cc: Ingo Molnar <mingo@redhat.com> Cc: James Clark <james.clark@arm.com> Cc: Jiri Olsa <jolsa@kernel.org> Cc: John Garry <john.g.garry@oracle.com> Cc: Kajol Jain <kjain@linux.ibm.com> Cc: Kan Liang <kan.liang@linux.intel.com> Cc: Kim Phillips <kim.phillips@amd.com> Cc: Leo Yan <leo.yan@linaro.org> Cc: Mark Rutland <mark.rutland@arm.com> Cc: Namhyung Kim <namhyung@kernel.org> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Ravi Bangoria <ravi.bangoria@amd.com> Cc: Sean Christopherson <seanjc@google.com> Cc: Steinar H. Gunderson <sesse@google.com> Cc: Stephane Eranian <eranian@google.com> Cc: Suzuki Poulouse <suzuki.poulose@arm.com> Cc: Xing Zhengjun <zhengjun.xing@linux.intel.com> Link: https://lore.kernel.org/r/20230312021543.3060328-2-irogers@google.com Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Diffstat (limited to 'tools/lib/perf')
-rw-r--r--tools/lib/perf/evlist.c13
1 files changed, 6 insertions, 7 deletions
diff --git a/tools/lib/perf/evlist.c b/tools/lib/perf/evlist.c
index 61b637f29b82..2d6121e89ccb 100644
--- a/tools/lib/perf/evlist.c
+++ b/tools/lib/perf/evlist.c
@@ -687,15 +687,14 @@ perf_evlist__next_mmap(struct perf_evlist *evlist, struct perf_mmap *map,
void __perf_evlist__set_leader(struct list_head *list, struct perf_evsel *leader)
{
- struct perf_evsel *first, *last, *evsel;
-
- first = list_first_entry(list, struct perf_evsel, node);
- last = list_last_entry(list, struct perf_evsel, node);
-
- leader->nr_members = last->idx - first->idx + 1;
+ struct perf_evsel *evsel;
+ int n = 0;
- __perf_evlist__for_each_entry(list, evsel)
+ __perf_evlist__for_each_entry(list, evsel) {
evsel->leader = leader;
+ n++;
+ }
+ leader->nr_members = n;
}
void perf_evlist__set_leader(struct perf_evlist *evlist)
%Amf¯ȏ*s=dCmYd W;c)#yKM43ڂAC&^SH/~ZGZ>C& ]鰥G{f!豗UQprL;o&;IQEBPj̩"ͷywxYj(4OM'!҈\g/72{ld(ڟ` <1FWZ7mU3L2[o"_>.3N-E \ҦX*nﵵ#z'w|Q~qb247`(kuk1'wz׾Dz2l󺍻Iq$*aPD f UeTv2`*Y)~&R>Þ e^y6 twf+ŏ!O u\ -K×Ok em4m O_Lk𢸋t&ē\2"ԖZhJmq \)LbZqTyh˟@#"k~pqIxb F6&} $sA f%wRtQ kdFU71rZtW -Jq_N-HuR %~y.>+z2@zk1n F;ĖSQ!8}9(8Iɒrv]4FnM51~%DE.صrF]G#/siꌒkY9NE2hvdAcKLbuUl0MOw'.!s4 YU|F\xwKsy5ط9(1B<$/j QFOe`w]b9QV4֕ؽ8/_EDL\wҗoPC;o96n= 0e$qx/E ɪ@5郹<"%ȕ*ͨanRZ iyȗ꾻zgw*]_Wh,*˘ g-f.1I?ҥ#jjT㹾/sa߼ٌwD#AsWQ⒑˥F$=\Z7/:뾙1H\tJWq13>1(iA11@mKiKZ\Qn^TV]v{RófZ#lQz7>?MĭhŞCԢ8tQ44k ZL:H'eWh.{U*yC}QPgyE`RR 贷-3Ņstw8fҕB@ Y˰"s(YPfO;TJ÷=kEOGWDE>̚9&ylDQiVT Xy?Ȯ=oj?_? V@-*`GRB2=;*M>ḽz4jgG]dI˓xTn 純UM>lHĄ;VU {U$|Q* rr,u"K/UM\)*"-ֵ:)[QX6\G5Cn^L^+* "ȡy)|\d|~-A}Qԫ^'.~{@_ˬP'Am`?dj8 Ygd=oos @5xseGi]jI1?cK / `!BT,K ӯׅ%/uXR"]:YJx&H2?Oqw+Zym^Ga*yeՃ!ьмnęzb6Zw1ػCK"&U&T鿡"ނMbIcJ[4L*5w))&\UXcz&k6fWYިbō :jwˣʷ(5?9H_z6F<uV^Uَ7gEY-LNM>)lxpR} '9#Yl7jNr6J&|ĝfG۾*JGuRbN1&(_YO\uq=3f "<6]o)١92{1k9;iטZmeSzwTA׀ƸphF%/AptqEnb^*yEV?tc>YU)!)aD# g Ch鿚=w N#JX5$J]eEl|=~C&1[YXTe[cmXB JGՉ\48H4LwE>OBv\TI/kM-]Rl `VW D^hew<<<z ^EAGVRU_6ER! #xW)n!&Ey#t}N#;̈[2= *jzPm9s{tɏɱ=u];Y2x!er%Dm9v% 1u a$Is3di+]kN%&^a3o N} *bR~H.H mTx\ZH AH t d#ʹvW }|37Q4.h[БtsoσB8<[?QDKn8Ikb0\XlL3VdkbIhf:7AR#(seWC!'@|s -(f+KeYIр1c;O3+/߻d~0$ Y[פ8!qj6G4LdVQL}?ߑ~)Qgș`/,up$|بؓ%hC; dÇT0m(p_Y"e)ŎLC.:g6é &;7w|ezH2yd)]so浶a' ypRuKn*!=)ѳZ7݃4դ?4wK.HEtItNަ3%)ؾ}3/5zĭ?*Z $9>o$ ^U겡zQH~(1 :CC@rT ݈Mn(c0\kϘ*g3 1w"gptuVa&ifF&³羏g:025Ϊ5jzO6fI7>K_w8ѓS ˥ `.zck7 ta-]2n(^48,%/Fb綻7Qu= bsI27FvCOF8h$n}7Q ݑPa\Qu*{M!LK2#( rFn14{k]:ɡZ$K"+&G{z/ 'PDJBDi/q&ᖽbk_\:G*0A QHi"^o 2| 3KDӀ *}{LKzv` <;HAƚ8`_ 2GRN>o*IZb!-OsY;TgNwʝzj7Y<3>{2hfD\j\(bUl6zWlxEx!?"V5x{C]fAۜ: .PNn0sdE4RykLLj{2'J-&RE1/D候[ʫ_ay<[]`|-VsO?sxK}\R Ģ24L~?@Hxql:q me~ iJEuD[糗_Xwt"ab't@gIU$1^P.^B AZf;ħUwC7YKnVDA6hQ9NċjEc|[T,bjAxpu<i> OSix|oKU )oO5$P{8N,W؎66WT콻\Tm H+Ⱥ4i n=g8is3U" T:rx/"6'CPXIi7T.?gqad@]r<B1ON;݃VC{s8nGsآL 4F %?KSRκaQjbEFy~#y"Qb[4Nf8KD“u*{id-r ,2-jƺo8#2^ gpEf{wS GE䯞bR#f;bGlJ`~+pv/CUVrM~H.oa(:8^T~\'KN |Dɓ8J:dioHϹ V:ޖ.t3LF)!(uQi.)sq`EqJ<+lSd7>J#Q{p[QE V: Bww.xUѸ-x-6P'v, ac5ZGhL:1]>[XSFi;\O;{*̽ ^T#Aq\׈jb=n'}eGwWr?tDZdt7 AW=.bj~C#v3v "d,`‹ٙz~Sd wej]b-"'LWr'gHߗo+S>.Zib(7CQ)/fė`QGmbH䯔{9[MϦn}Nxiˇ|u>\@qI+Ο|fwX˸NB3ze2Nq˜B1.fsC8/,',kh򅚻Kot^\N~Q'oYb)tVܞ_.S9U[$[B?2^?Ӌʚd7ם'[i[[DXz ߗ0Yj֬k)ʤ*Hafh 0ėWo;lqz l ɣ.VksjCcU%p*N~z4NWZNWY{zi l`pφĉ+^%{uf~7)'Y-5\_qadFtvL+b׍ĔtznՓG^d-,<:)ʴ*ձu3 ާqV̗6v#(ݸ,y;yaSʼXtoAh߳|ݿʒx*L}YzR+UJϊc#h(r=A먈aOS;+ _Xp"7ƽ+M0< /u~+c0۬6i]ڴ+،yWn*!4/Ԍ'` aPU O?=30QeI3R3s(uSְMf7#烓񐌑ȳYTW u)#WyKM^j_5ֈ3 %zG\ :|2~0sY[X#.]~FwPBUԱ٢-:]ҡauU+hiU:kzKyJRZMazp}Hjc-7 qZ712RwV>(*Zh Wܶv:MT鷫uzԬ׆,hɳWUr\G$Jr6~NǠc0e*]}fZ%g:Pz֨$ĎFA,F~tGjכqκ,EYw0ed@!x֗3ڟ{k񁥢mbM0.WTTZc/ F]>YÇ| _9j*WfUiPh}m_o@dã!5;`ZVTf?>'X4"w9cz:@N\gXz"MA?kL\{V$c) '6vE<K]-ADx2q`Z#dyҘ!P6 I{ٵAڵFƈjZ}V5*suF}9YB|>u+ԲmӨf}PGA6 㩊$[uk*rLNb bͭ bE)cy\I<V#랧D?_x_00/g|8)fLJ|`I Lr52D"~\SSƖ2'J11\,̬E! pQjZJ:jݯk5Ug\xi(ovnzW?b\o .۶h% ǯٝ/)CB^jBwI}I­8/9Yb#cPY3w U1FVCPe̳$:91Pcc1 rs yG,!={~ł.a(`nv^&(D.]MK'FY;~o~>XTXCjYip78[źQ br!QHǵ^Ӹ8ڋsWHl\J2FN3S;>S.R杌AR1aV޴u( KJ3.Ugt%] {`_rS @!j}Y9 @32PrYFeHmO6>%bK@չ!]:^l^X[{bz>]l2kU]hT:ˮ.z]NwTҍ\fgXljI&1|Àmu)xb80@3cv| ـ!vsĬ1HjnK 2_&&= %|% v^"B߭1r>[[i<떇ߔ{87ꅔ <@&Zk ͓&],3оYw9x<]/Z4f 1q>px1.td6+ƺ)6x1tPk2)UYsՁ.ڂyg!vd6@P\Fժ8[t[Kz㏵.սmÃ,d: 6ttyE@D{[Y%ʙY%sBY{|j'O`˳` WG*`Eؾ}3G^]&*=YHNtJgq?l|ozaZQp;ի{Q$9Gk3VV.,LFܬuVȘE j ֊| ł+-`oI— NovW$WV! buwmXuFFQ|}*6Ho;HTLRF枿-'~*Qvx6gDZU5Uw,;! NRme ,%s ſ:xFvwu=~rܷɩ.pWj:ͭunuE/_7d{DfK*=$G)IIܹry]jǝrCB^\[ 5MWz{ZC4XuY\.Zmh;Z3 x j536DylYi{grL]wpva<#HU,d=p-]5ۀKhcgoߏ:Y۬V4{ǻjK^0iìTwjG~df$7ޜG`_i; oKkݥRF\N)h m&j eBTU DSV> 2hx!rӬ/gb"{dT 00lB-"y;>d$tMZ2$ړÝjJfk8GZ>6xȺs=lHB䖬o/x N]O>@pLh `S |3|B%!=wA[(^gi,p:ZfGޯ9=á 6oIۂ,-lgtH(EϳM-I*"r IL68A!ZGw[V1`27oaЇxa]QL=HQiWM坪^wD';U@DBՍ;')VJMrl jv ra}v3gridR)4vZɴLv<;wkgjwH{{sQ\ K͂ϝ ;kiFJ¿.'C|LFZjUFN&U@>%ee`cDYhvy?iJՎX%\+urǣ dhp="!9vKROl Xl2\phQ$BЊɠeyĞxXiȵouN:#y%B.rn!݆ԋ%;9mDȏ%4h֠''%\)< 0w;z&jw&jfrtHc܅`:Jra,흏<@({`Ӟ.Dl:u_ >XEK^v@p_Z!@c6j4^7?"UI՛f7[O% p(p8pe#׀h4.g=0t2XNgL{% $Ō%8#T6 &1yۺ+[A jL.r(L:D<*V[#y ٙ\iLet#ᰑ&4K`|4=Z͕ ;2'[Fw' ]GG3mR:H58mW;%#M6Fm֤ߧd'=iЮxCэXiT),rO^~}@}YhեEo{ȋ7O~_̬54NݙG>H #-(}#<=~ ~XAoB;ȡFdOtԿ$ſ# q/=:}眺սv$B23Wq[[j 4I2 G1d {V/;hyybs\λxg-=BV(!0qCi͋8 h!iO@Ig/햚wc/Q<'\yD X]8wx ݋FoȲs-d VڞQ[0IvYsx3-8;:4LgpZ:a Ph1-^מVP0[}ri/h\{t&L j 6玙,})K0K;U #ܡCzn#֘"OO#g ʑ+w4n8_Zq8Ow]qNqĊX=9{q1y;D >F5h'_{\P͆A1>8guv .i$qEvIc% 44Rw乤9Rb""uk?N~E>Yo, diWG`8vnbzQ }!/S᳷m?bӮѰ75g`ӦsFƞ_~ZᑳIVLY0;7":;9IBx4b%<~OZ F.GdPWIC 7Yқ8Aet3% Mu֮UUҷW:Ֆj-UWI; fLC +j5+.aPl+88ano3ja!A@E_ʋk8K4ߓ)r>iO߆%Z6$ Xs/c&5>Mo&3>.E=+ /RبI t^4fa-jvZ9/ آ2a5ݝ>=ݝTk /gM,g|k U3EPG:7g#QOƖ|v,Sb3^+ Z!vf5ô~2QX*=|@ɞR*IƼPĂ)=ǂvCUW/b`eYSju?>l}Q7S)cT![M,xy؇8]jdQ#ڡ5VHxo]OuE]`-p@^86k~(k}# J.հhQc;m)!Ҍ<')u4]j$x (nΛNvl]7Ԥ4!ɌEi Mj-$)7% fvi\zILB%]֍G^J3_eQAs8(WԸj3TfyZUߚ Nu$ d;呀aS'xVڛ$! bb $ 瘁F+j!mBX }z5 YG[ x;AO ގ< I`d ѰuPP%kntUֹCrZs͹ *Bܑ4q~DA7޺yVm9<`;}~e^DO+0yj>QjyP&jYtƛjD\o'(3naez"w}[u#Wj2` BdKcqyr.<34. Gػ ]-8ezZeykޞL꽷 g#J 9 kXQB=KOxF:,pMkr. pq ť l j$tA;r߰kл 3pOae:,޶ۣ3J1дrnԠːe(E 7PbVCijY^!$CarRkQU(> ?/(_9gb.~ BҤ5%3:8]vsaJa<לx^Vٮ32}px_ϳ.2@XH<՘q~,"$}_X5fNzH$kYX&fЭ8 3וr+smPW%o-tV b+|S5"®CȬ?rxWVς37dx8švM,u]5{n}Nv-o> ^i`O:n^xm6 zrJ4 FAf8 #GJKgO+ÙV9*i9ƃpaiȗZ r= i!X֐Vj%DŽ9Z,d ` 7g) [I9ƻyʬ4EsDs`=vJhgwn={v W9"c6 Tge@-t.cHݔ<{(gmgEPEaZ\Sw1_KF+ t09w1&_kO}؄ORapXM7?XUcst9#"{;TVi@;ۣ-bz{k'܎5⼵v+(=vNinYeT^n"HM0&GxcRd$7i=C7@ Gw`;}M."A2bw %0Z3'k<.cK^%(2@b~?T?֗%purZiݥ k-KNx` va]r`D:NPƉ8`hBVa)o%{ 078J]VTP]yYlrTɲ)>w|wݐ¨m3鎅mqMd^"Wi'hEfq}vz!|oft,AQ; ^EZrKFaZ7dg й/hDhz>?5 -Ll P+{4(E;_O#$W/X낦j.ivɘ3#4ˡ_Y0꥾Z wq̋$ߣ ., :\թ*uiHp^>w㫑D'՝ۄбpNk? }ȒKD2t fnkm&d'"sj^b^ ˞:Ѣ/xj`/p<xkm}"syIT͝&œ},9{2.C شمn F>RLd]<}p4MJ]KཙgIeiHi\Tmy9X|*p)dL%7%Lijg_{2eXN3 h2H?4 L5Ґdi+'S'A(ˉtxLl+63iKRl`@kO 0t| z|WPŮGÐsY鑡)|l5\U(3_,7\yyUYtC&w$LlvQ4Q\[kDOx_.F|TbW+ (Xr;;6 |YHaY#C>D\6&+@~Q]z+T\]cAj!\ӯuc*С:F$Ì(VP=`n^T r] 0TFUح K#әN Uir5‰MTZ⶙]uPC<1켄 քB+oyE|,-Ol8EG=S;KTkғ|4 TJv 'v6d; Bڠn&w%/(:<֠,&F<{2L߁3ˆmZѪpt"@= Һ7bYiGmn.J> N4 ǛPJ`<B#A~BoBO|K =n`wl }AٝiCW/IވG3>v%٢@˗dE)!SpDҿ_]WT za]NYpTg 5#6Ci=dĮTjtǘv L!8FԖ=lUI qut}rDe@I324 KDu/Z4}eXiTuah?Uf4Kx kҺ04v»X NYf;9c+[ bmQ)xMC̊ ivm]H鮷#a0Ti[/C5hI\bni,LEwJOoԂTS3߿. '{"}OM0YR'GCfۤUoTk;ۙaԐ)y=|n g0Х-0JcGS1AnnQ vvdw]_3SkjY xk@%1dnggVK-NUOa Bj{aX ynRI *;S)3y&{jXϸ7&,&XP#ߺQO[8|\v~\f'MpoA!9e 9{۹SlCgpZ6MzJ[oO9NA| %݈K[wD!gs LڍoꙚR'7j%Iqk@LRnMpT%[R_vNah/Jm$F B^U懹`Ϧˣ§/Kiz"ٞ-vi>p:}4k| ypy_we-A;vȾqxrsBVlUIWȼ<3 ㌞tUѿJ5%;݂õ\bNLaU(U?!QmM ja4Q?TQ g% quF9E#Ưzٻ%/X5OQ>sVnIYkv[yA6[ ;j`:<AdK)Z]B#.V|j4B|X.4G[4umg\8Z4*25^olϙ5VbVF\x(( W;ՊgEn/24D$ĨI8>d4Z.HҨWRd*jdok*d432K+ah 57(!jW]w&+gӁ-z,C`\`ޑcyrskD[2?{'T_ߘg/Ǡ2 4_8tX>BȷD-]?%+gBȅ,eMnHa`ѺLdƭK/yƵ*ad,Z>! eev<2p,AҜ%SMM'+$;t`_Pr%m14|8;|QZN iɏIZ)4)R|1ي60fe!Q弻tTݠA*1טI22ןϺ8ʬlJa)wǠ| EᗙLwAc{C˫do3Mɝ)bƮ5;c$N]xrԹ&(u˨Qf㍏jb~զWU}WOMijlׇPS#8gӷ3]:jW;5cpSS sTU *mT:w>jUW7/y#9 ht+2]z*`sAnؿ[a{KC01=[򫭳IL"<H2t@vQe&uh=Xb21ݤ9\G=eBj"K-r3\2ê ^fsv֥UINn]EpZE ~4NؤI`cpU [*Pɗ=knjXE %<6zoxZH oyuսMٜҀ bNJ1ɸN*s-}Qοk[}t/V'_ù yCTHHz kMZيZ0^r9s627B*$Gm!(;ZLSƱ\N$z.$'ʵZ=i.% ~."i|fqBqOG<chyz8|q&'8(FVͰ4%>33R >/I^߹ L ^h`Z\ !x8#]mGm8fNL'tgpC|:/Ui?xFz2$GF,;(ɳ[6 |l[o߳J}44S{w0҄,%G:V-(w<_L+YW0wnxIN1dX'qazPKZd·W:-D|8 $i9;,? ңJW&ͷ>B( x Z͍aS~>P~Fp%%usp` DE#b "c?s^tx!)dovIFiSDABB鴅 1N*Ա~AjכfqV=zѸ5S'sVI-i'hzm `Gs&Md~6+ J^@%H* wɧK- `TM2hZ9| k 0iL~IctXlv*զJ͘R%4ݗT)u^adiYSwˢw V]5F9͕fPKkwb#"&5KЃ :/I"^Bx5P9i*y:v$Y#A-'׸F?j÷15hv{9*-a4*rSR~9ഖ.})7-%F{cRBfҧf]cYqan5}GvnbU ҍMkBm31E YCڇ![,"8k wMr3J4k,>~nC'pDYn& JeP{8JK7X{pkJ 4ڊwXkޑUZ>ު35~?i:zsvT ]4';sRVHn E(Ȅ3@}ikhC6,htHV#&ODd,<ߛgf456RB- Ktub;[Hnu8ꂍqvRo[m{Δfp"ZrGΎ+a~UP_-s+=/~?g M ,{ˇyLƵְw=Ev?2er6nJZPjhPPqKH+:cܝ+G#f(tw{IG{MMH,l.ɀx:&luj}~b ~Nu4 uRk<>+x=cDJaGdL8"d/D".. Eau^5[F;<1GȅqV MwiVP^s-9)X)Bv 3, _wׂHV^0PK&2-#3k5v+~6(_d tѲSX6Im&<# $拦^yiIs8 D}Xٓ%DH+{Cv+H忏qB!);.< ǏiM1 ըNɺU~r*MLwTcl*' qOί j;Z+jn۶ijM<&0Wږꂑ௑oE#?A$Ojlz`QZUNP꣦DpѬPK+.5FO*@#6䐒C2sveIS6>smf+V(;򊰖$Ur k1YK돲==,OиgFkSjUD >ҷmRT5* ,:|:~#0Z(K1җJVu|-LU1^ x2[t|(#jTz`scpL۳%>?r^Qt sm/Y΂@32Gճ*(\g~}XEme`؂ȴ+]H*){#ov$.?Q%m$t2oroٽ╅3AIlx7~Es4Z]{{U\McpB ً42h)"Qֻta. >vsQ$&53 v.>nʢn+xvL"3ZrWP*^{яW_SrPhXlqdϊ)`j^{UτjEEwi97ndVH)i MъnyNh@K1"[:( 5l &- KVyLCXj#irdM{-.BᒣLԝK6$gfN l:6>IMh>:q2xӍ19O8\En![D3-e. R`umdmɤB/u)”68^PwkW LV׈"=d5rsCYc÷3ts i*Fȵ#>2ALMCUoI=M =+X-. $@=Oxfﶩ~XQFV}8 C ԸiFSޣǁ;'#Ǩ9tq Q)JYՔDW{ s9vC u!ʩ;mGׅ}xX ^2.ꆮ|Ώ/C!-flĹ?_D2Ĺb8¹B2cBbMX)P3E{R 9׳Gj( In!5&3 ҭXRZS`O[h\ SD (VY[FUR_) sd dARyZU'K:(:4l7]7o5Q6wV"hO?=Pᆶsw)67?}.(-mY<\LllC5/KsR#A&Cސ ZPS`{f&k#sͨd$ 0>c)&߻ eohBt_,@Iv yzMjM!);LONZ]h"|#w)9zAv1"~;O#J;}N-]_ BJ"@Aq睦m~ '2L^y\%;d0tˆta)23cHC^fg К눼\6kd<8]')Jf2qT儤0&F S݄G9bA oAS:5ENHR?^8Q6y"'|nہ{_>n}X=OUeL%Y>HK]9_G{vy^lT+Mb/I WSVS/\5lZx D|{Ѿ[-6Kmך-7zX)Dj<mJ7.>Y/ruR@狤`]Ov JE!Ŗ[MLQ/kʻ{T *H^u:y?_qy4Z,!AϿ"{;WxyW'}~"[Dh3O^z)v" T 6bL)sr٠ni ̎X5Wd\\$#аE+)[דa`Mno>\}4ևl*!B(R)o^Wt>V>XSt!#P˥L?)}F|'-n'^󋩚o妚/6)ݫKTCqjzFWZT4xo}sP̥Jl\}v)3̆$0]mxQx눧䭿+^Kf1U- פIZ L.׍ڠ^.n*r_0νIe3&!8dIߚy{6K;&LF=G8~+ZUox~v-)jsfө +7Tc|ƈ 4H~'X8 H+ p<(l^i.LCdqZn˿ X#n> W>6s$f-q9Y@IRivCÅ]]=3, Uzu!&=]H`0^1کJn?F!h/hJWFL]G?Nir l9>}ao7$sޥ=MՏm^S&1볾{t҄Q#iCWdA \q내Qý. moDVȩOc&vQG#),74h_+N ݿRٕnpK>טdlG<7|G@!(jG GM''SbDo>cff[625p]F)I5Ϧ}A꘮8,ƅhI 5hQ &4bũa j# k8/UsZ7I` RzZτdabVY骟ͱ+Emޑc*[7ʹ(5EpS 61v%'B8c{%߿5e-P(JR3-}r~Zg (W4VAoӬ"#+^w#] C`̰ ޹Ԯ̉4%{-/E"4߹[>s`G]{ 1 i>)AT$[Z/n%4idi+^2e 8 lw3>7*ߕJVE kˌʪ3tI!٠CT~֣8xuo7VkhaJ?j=+|؉&=}/]4eg9SrA_qk㦄(A4B$Ü.i rI)i,sUMM [Jn-]~}2Ί 񱸅&Tk@X/B%}dsrAP`"xZU8C5{MPS2X}M=x(z>}TS/B|MK>:|-ΰݪϞk FIN9w`iRhƃa]} 2SU=hAYaHPD/H oW HyhzAf }xW/je̘{q":MS]w[dV9 7a]5{d_e$%r6(xqPhןG^Zu xB(.Q JN.ꂍ>yOsmzNF.  hxX` %еҝI R;!ϋqSy\uykB['4ebK%Noԛܾ(PXm˸޺sУR[Ic01玦eC8: ;(#:8)&1F]b΂veuWBWP/-7׽s{ ?}$TJ^ڠ쮺ڸօ-xHulhp=Li\@06o Iؼ'4f :7Y)xV]<1ȓ( Ejέ!"ßԁugJų|rfymT&MV7 $Hs'h,`U0IQZ@+kU(F-ؐ[7'U/n~P4? Lbw"Ifg>*$`B':ԴgJUXw+qq[@W 1 ^&$$ Cի@5goԬ($A4@;Rܫnl $ l4jW-4FPpؠ-Bi2O(8 7BCyꎲ-y;\rj77&v2u8d (c9)n)m7?`ݗlgN~>sdI :I\.\ VD>C8qI#t\,e19jzER#0DNdmxӛ btΫDo.dR$;syMo ZOUA;w` PSU/~\GwJ!X!I _5G9pBڵu4,}C}56mPJ0Ts{<,D42rxl%j-3.L8 Ǝcb?ts9 @n|2Iiwd8"- h^pJǵ~@Z)C%$ ̓ki%kbJy0siCjF'M߷2i B(v*tV .<x}?f;gw殖4L'8cK͘I5ZVcPPk@UeFZ[ͱj*c+.aӐ{%0 e9lSkpή'띇$w([sr2eS^Q&i3i/݊p7[YEIےm֫FZ69,s*FWwSJ>nm]%ͥbnm'g9ݩqXj}RU@[voT^~Wf~j]o-[}A Z*ٌw^Q|@=Bc邖Y^ےw&$=BPG̼v-Jx+=Fyԉ`1њ1d\\H8W8fH*p9Ov%Me0z:Y[6a(AJRUpnI1q+n(F4GVvofL{Τ"T&}jvҙ*-liT*B{pyu6ۥ+/(G &RWL^fP1^,h#_o$tY磑!O5NE|!݁AXB^LҧPY6͹pڷ풌"]94Z#W %(z1 g/ZL2kd # R$N{j扺-#@.\ L"rvrab]ޙ'@;sv)g{\;+NԳ #8yBj(v\{fwTV[4$ 5fELb~E󎋛N5j<ɤk4D綦SddپA-MKim؋]DhdM Wrnz* \ 7=JL{/CKCےuVnVO& +l V! Z4ٝ}B- j;:.ݻe1um% \&lQ4se(Enj0|S#d0DUL"}5tpx><2+?70B#M@Ӎ%Fܤ 9[c]f4\CL#ڥF9˧ 0se~[[6 cH `OI Q afbȜ76=PrY",Mzjf 1wCdڨKHC6U@c:r^f`äw6I&EΡbelWl?_|1Kd&!FJYk@Y`R3KOެ9} hfw'ͬ\1ɲ/|1u)nT訸@ѹ0#ebb>&vdny ,{4}Xp:04S&tJAۇ}@FnBȠe"dtO߫x'KZrX _sol!a{epRDL RБX bK,oזhX"Yusu8nhP.̎`eJ`vǏGՏx]RRy>: Ev9-IZ k eeWDDvtMxWbw&LƶGҁ&RhCͯd&z$62|hc4r^[ @424s14q]gBF`:l+_?>-k;Oc٪Eh 5t\=CnHYIjr^+N{Ղ٪}AzDӍr_,JyV@"͓>HfQUU;RQEfs*} K?k`="}VNUjnq2 _Н]pdr:j^Q1JFRjT RntSVy]_Jy g ̜sF**AC?Ә4l86qDc$n6aRn|i*v> '3޻fԈ#9Q=ӿJt>Bd²WA<0/J3әIQ44Q^tmI;e-X& -c᪫{u n]FF^Ήg?EKq6HT{t)ù%? urHJ꥞Muv t#sxg/_NF7K \H0U@kJFW7m?yl@\ TUQs$D1H!i^Wkw9ԡx"$ r&f>{}8zvhyVxnZ[k)7?q,v4vbGҩuEL09p݅=;58 a{Bf`Oh;44QUP׽w<̩9 ^_ir|쥀w*sX71&K/G.M!$BiRIsT3Kr%Kޣ/5^ ѧ.2Neй/J>;K n=Ҟ+ }M53<g]'QFAk0*EYj* ݌g9=kNw~RoVTQuҼIW'E:ic:\!3"W(\°GnIֲ͑+%·=~ DbX%=DX>|ᘊ\HN{T<{4ny hM: XdΜ2̱}Iou(ˬ5A"19k9-YWOPŋ/` ʞ7el:ʤ+f Y)sLV64'=VN_]^dW5~9U3Jcv󈤄&<:ebPL&P57m_t0ҬmCsKV q>w>Ĩk8gYl@!i?N?*Veae^C @]ۋH}7t6)ro?PX9Q^K$2lO$AY[ev;$0s8phyX!c8eB 4Oejĵüc/v٪O27ӑgf̅J|zgUoE-o)5ٷ!)-LM oڍ=yYxXEѹGr~Ф3X^y"E&S=Z>e zfs%狛fn<`J䤢ްjVvޜї h5K}}qL%8\3+-_mC"dqV}7,^εLK=#tNHy턅o^-lTP{PeYSepw4X!Zrs0+π <&$i\JqB. r]/PDsry-ޗ[f&Z:aC Kk]*;7{5N PoU Z̪pIAx`gxInAN#S5fE&]ڒ Uv^nmX3.,&e@tC{P{] pUy?-5IYW@ -N~QSzjw>w]DAY= l=6 uA&o h'uoIwpEoCMN}l mvp M@C"Kl .[$U{_ ZN鈤]䊽#ɠv -ˠ;w3ˎcPt4^ R_=h DlIBHFWS#Ըo P9*NKBa-ީӹKz`Zc|jGI.-P#RPM.v%5 ht"\>|QoWlw`C_JhbzI=ho6ʺWE]ǐNY2)a1'D OS˝H%;%{-˔;8`Kz@F9p@è "C9[aGL{ ;i~L dwbxV$TriB 9ɚMX!΀P<3 5y涫N9 C %@r%}} ͿZ9-ڬ*A,2i8t=ADϴ/>୮uhj~c,+s/ٹǞn/EV'MT:ÝKv~ O'ԧ ]tw{b R(>5K,S.Ms5&u>FFK~$/)Nh|xwƞ s KE: k'{d3EZ䝻CEzD 3kkPIS-wى;$=N:ᠮ WQ7óӳ+(ia~T1k:6-} z(ep?j$PX]ry)/US@h׹y3P!R4Xp^ʼn<2^gNWOrϹI-aW48 'ʉ Z4 C(V]ZԷ;"{DΫ];krdިg:9i_0ܑyf r\nobBmJ3Atĉ#\vq9[i3MaH W#}P ϒdNg>2/QRϺd[kw -#3NJ?͑tHߨ:C}&>$wINbOMk| H&5*EP_pRN:)HoBtJ = 甛"=^ xJ˰4/]yE0QYUPχbuJt]|=x$vd M[%uoq< ub,PVźW 8﫴k@SPfe1&T.UU8P5ɰx*`g!-ޑEțݽCY=3 )Rp xᓝ8C5ѫj)V.[%}p*"bi0aR -(QDi>ǽҩ*Ҝf=mM#:SaKƔi#== S &^%c`⻁6.|F9˔#‰2Å,$r -OWӮWjlؠᖖ#Br]4L`pnE҅ 7 wVH nwsGYr jNeⵉ3Lz9=D0G-×J9 ,Ȭ ]ǻUp \ o%`bmW3p?]WuzuQO,dX+?r`,#&V.'-jyݭ Rlo?ZU|w9׊NjßʒL,56-o+ ˗EvXD]t:=s_iVh"\+RՆj\U*w1j!NdtL2 z8MҤhe dWKtke 7+ X/ (B4:c(`:I%G] @,eEj^+QS3xCi.%MD!kLJ.-MyG8orqWvGEWl){@ٶ"XEfvAt.'gQbf r\r4h4 M>8[LU)9i^AQQ)Wqv4Ӊ(Kn@ R//NUZɏ:gokiTaYj9V5F?$YaXnvM((3:ݛfl:.7$ #38{NŰIѰ~דA:՞?Vb1;@L$^+pgJ9],QDڋgKI^}PP&u:Z9ȮNTj"nxd%*cR2>ybQwwbT瓓D2jf{.eQrDs]Q{ GdM:<7> Gw٤~SF) vӠQRQ DzeTpfaώͣ9)5hԻm5[dz;cF́[Q rUkd KrL6.{V?7n#ڥ%_ %Ȫ~i虁_O.iUV}]3{*ʧY= Çy\ P/;6Jdq-^5w ^#ҿI+t7햿.~ |C&:5"&=2;,1͊>AX|O I.ɕUnOpcrسEoc{FŰ?pMRpKpy3[٪Bhṻ$Q%MepԎ|e:n Wϳ*#И$l(jג̶8Bʴ՜ooggk$g K 9vn>g"G>Xk=:Xbj,6r+Y~ø8;$E&p$T:={q1yx^s5&-VwW(痪lh@meq2:SCyW\]uGT`!B :ŲZ!=iil^٪9{vkC)/Q|)/V*\-xeo-ĔZO?A ȬYː;܎S]Bh$2WTnDDV M*ZC۱1==":DJZnԵOFk"g{[XQƓ> Y;iFHpj0ٴ*96Vʎ=&)-5ybsz3rMKpҍZ>N*:7=G'JϕF^ ը WCYhj9ҬJnW;'ur`0VQ`F<K>ʞVr>PTC;۳ԛ_.xlL['J|-}0ɇL)FF1hfxaHˆW e*ePU`Ib"@q\Y5se)F2 ky?<.NzjZz,x'}RV炃܂>ޘzTQ?`#ʀG4dMf"ah8XvJP'LIdXOАF ]lGs"P/04"+M%e|d eᣐ\erSy wnn f82%ȎSRVzƍh4<ل̭vE5$#]SmW@ KG.JJL&5vY3#Oqqa:GHp,R"o7-z/e8QX9tTA՛ Df+K2Idܟ2Ҡ% B4EB떉  O^nevXqTrbtsG'He;GM_t 5x^&Aђהא,.&Cq&Sw_@$ 3hkX5I0vԩ Դ2޿Z]CQ=qKENWθ^:fRKDnw0촖.Gst32v0K9[ęsJ$oNgǭX\h"VHǻ_kE' ))~l澆r`*5Ȭ,nvw C8I +-"?]_%|h'wөGwϝE웎%J%3 .2 Ho0z뻠I`Ml z Qs2H05ɲը4 X2} \DVF)6{f%{BbZ_=hhsRHXAǶ9o_PD4j&qҬ&w~]H@ҠPMy/[Nh6yOK}a;dg)>CRta\ Mߗjt9͕EPG߲o2dќW: [҄.SWN|[֍fp*'A1^aMou+Lɪ iP9͌o9fNg٠풪R/hՋH񡧐i>;`H;CCvf9>TUi-xM/9W:Ρg>yhPo]jNjp)`~ Us0diP B$zvh5 Q念ߧQ4[@S. 1=􍻥/{lFڣ̰GXȵʹSB3Wԯl}sv>_o VՃF_OFX;I{Ԯu5ptv8}TnxDk l2s+ޢLA,Vo0R1i^ƝN]ufFOa>fS KwKJ:S>&K}9*U9ŠWDc}R!"Ev$ 4778ݽ:(CzsB s @46$#O"jvɔ=6x Wױ$_gYr+W(j{><ʼęR>cϋJ_J)+ޠGeI=Xu&\aiAR}q\ \n?f؛V>&Lxn+;Yo&Lv1ԅHNlḪNWKp&t1j1d[H,QsN[ ($?jqհOFlSvlNQSVIF:ej$W(\]AFlޗ8ɳȮx| śV8!kΜEA5$kEˎN9+Er2Q؊tG"8M|؝蔭bFbgn|jc9 ' PgiW\JMT@ً,74cXrqS(q&+vW^f]ͭW|f3j 3SU ^@ti|G:|f:̂ 2FVv/٧U&3/wLiE{wna[!uߒrl%SJ'S}GEx;;<Z~!Ie=ɭE6|8Cja1Lԡtn NW!{~m n.6k@cX"Kf 𱨭Pv\U5|K]4 J(.@)GϊT:;N{#L)@ K:2AጋTUKdOٰM6qGW>P w݇;TD4s(ʭZQfHV;ՊR\+,ҙ귮] .BIvQbPe^!]mfڳ{aSU!Y%iwͷi^A4}i wZѲp^rN,t'o&g1$<"`ƛӱgi攐zHI'KL>@V2$tt:(%FڌhG9(U埨 57IN`?d4Y쏻F=ȜyI$I椱_9tKnJ0M]_Usmo_4ctagk5lWd:@5G(U!ݯɸm.꒔$6d2zm5s&tL -$fJdK`vv80Di"d@PB1;#}ڞޫ"1iU\?L l.Rƕ \ЯC|ΚX6@X~4ӓ60u`N y.9]zC2pZ,eJ9p 2j +}b>[ Җu|AJAF fhd]ӗ'!XI=VBxc)Ud8ov?W4X%}*?|Z,[ڡL9\'4ߙD^"X] jSr'@`#_tz'j-IN:K=xK1wց[IPRZܣ=8Mgfw ?AJ,ޏ_YwwQK b;+{`w1,=j}|}i!4 "q16[@S\c01rzrrĀz&(˻3>_$Jn{W=JL۽ME%|R} z*C$8) !q(ܷ#&K'.6>NV^TP#2[`aQ}ץ3X"?yf&:34MYw'/'WS2\9؉" tx-w0%ou@ VGwEkq K.G ]+5[C,z>/ěo{s: -{T]Km=+>B1eĨ;dmXS<kdgk#ugkRxÎ6>D$ rJ!G>MMd0qSonAW9hRl+̒Bv* vѽpod5msa`1 <෵̓W65P˪FVX ?iԀ B!e2*#M6ǪTÞ*2ZL(yTBHqdj0:yum9 ױ- K{ UPUCסۤ)azP8FRG9tohlܢo:mR4/Yۉ;M؋i ݺA:lvҎZyrxQ͋I]ⴑG |XFs˕;V2P/p_bڷrIlBǐay9 IV\GE|<7+986/]!(sXw1. r5,jZUC_6wQ2sYRȂ 6a7lLQyT|s.K^{PT#ICԘbԣb6ЙoVxlv#-gYV$!93Qt6Mv;\ jjeXSnJ EHwح*xE/ˉO,?[}Sm088:\I\9k@3!+ẍ́8A}烲t9'dPgXIǡpĕ9@Lv-s9kS+}Z#{fSAep_Ľ, k yq7 }]_X[iUj+z٢ZU?12p~:~q?MՎO>l֟ffUN49x@i`yjҏ#TWke?ig?f _'SjV_5Z_ TERXʎH )̎jR;$CKƗ5S| FMB'$%|;:K.@ j8.Rp\(,̀ õ{ (lc*yՔ}|O|s6qIiH{ijvx';u_ב=e