summaryrefslogtreecommitdiff
path: root/include/linux
diff options
context:
space:
mode:
authorJesper Dangaard Brouer <brouer@redhat.com>2017-08-24 12:33:08 +0200
committerDavid S. Miller <davem@davemloft.net>2017-08-24 11:59:36 -0700
commit2facaad6000f2322eb40ca379aced31c957f0a41 (patch)
tree5e22bca4b0faec1d75f38dfa3ed6025969839cd4 /include/linux
parentd08adb82fda523cb51a767e2833c5c5bb0906162 (diff)
downloadlinux-2facaad6000f2322eb40ca379aced31c957f0a41.tar.gz
linux-2facaad6000f2322eb40ca379aced31c957f0a41.tar.bz2
linux-2facaad6000f2322eb40ca379aced31c957f0a41.zip
xdp: make generic xdp redirect use tracepoint trace_xdp_redirect
If the xdp_do_generic_redirect() call fails, it trigger the trace_xdp_exception tracepoint. It seems better to use the same tracepoint trace_xdp_redirect, as the native xdp_do_redirect{,_map} does. Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com> Acked-by: Daniel Borkmann <daniel@iogearbox.net> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include/linux')
-rw-r--r--include/linux/filter.h3
1 files changed, 2 insertions, 1 deletions
diff --git a/include/linux/filter.h b/include/linux/filter.h
index 7015116331af..d29e58fde364 100644
--- a/include/linux/filter.h
+++ b/include/linux/filter.h
@@ -718,7 +718,8 @@ struct bpf_prog *bpf_patch_insn_single(struct bpf_prog *prog, u32 off,
* because we only track one map and force a flush when the map changes.
* This does not appear to be a real limitation for existing software.
*/
-int xdp_do_generic_redirect(struct net_device *dev, struct sk_buff *skb);
+int xdp_do_generic_redirect(struct net_device *dev, struct sk_buff *skb,
+ struct bpf_prog *prog);
int xdp_do_redirect(struct net_device *dev,
struct xdp_buff *xdp,
struct bpf_prog *prog);
|ӝЕNpY eI+ص?$o0Y=Кn3*+{m]duJx'&/]_ޢa\"byNf߼Yr O|PO3Y' }41yq@EjlK^!PQqyI;MxG \ڮT6N6`vqXG8O?ޗ&@"|~tnW=ab?:&_tՃ;һ$F59Ȉ]Ŝ,[ f`n,ɪμU5¼m9'BfE%W=kޓ &eS8:"vW9}5h!+GFZ%dKCrf('dѣ-0u;FSP8|X^j!Pư9R䗵J6Ạt+,1?8;[@;̄0V/5*b f~nȌ7pn-qNq ~ʅAkLPו&h:W$L\ѕԔ* ( '=^u`5n^ U c2Of@Zz˶tL u(Xr%Me3/P@aod-l|`lɲ xzIzY.oo/D M$$T؎ef-܅ <AWj`!\ SB;%LTG%L? u89_rz 敄+:*7Ckn՜[>Aqw2GuH<(-\<#xut8΃[s|εItMgUXd(H&n!.Iӳ űN}~vfb ?kr$yʼ"U% cl`wSeE"%|c<9ju{= jѳ|;ϧ?q˖^̎4zta}ei0޺8ZqIN;{@mOῼd#C&VxsHpv5z6,kϝgȉ7߻Uajd$M'o>E:=O'NoFt2Io<3]ytIO$)i=Q( [M3PB,o 2YH׆"9B7oKbLO9|wZffjgtķXHS3ڿňqC.YS[ a&w16M9͛B;}3Q^h "?oF?@DѩLGs|>նz8m#vpn$Jø,ARRc_ODN:Qݲ x[+ @57 =0B3ߩlB>.pǐar1osx.: "oqQDvpWOE#@٫ySFbK@}H-%WNj%7T(:X<== 4wOW97dA\{tKÓ'C{g|Ah#,dC /<cw*gг3.OG]5kj8lV4>ǡPL.LZ5>㠀f+[ixPcn밤W%$H$m+<H:w@̓Ĝ ڇ}I!,0CWKEя2uܩ֌*ԑܝN'nDN(pw%h4FuJqÕ'+X|tp7}T gZ1phkӝQoW*+.lw}،4h9݃B&U3wfܗSqa-iarYL= 7̧G!F<%rNHnK "@I`5T}c$| >)ȄYZ:K9/x;2eh.9 %kJu԰]UZm5Q[ 2jԫzl+s0lZQw4ո1nj*Uvj9TQ+p $d+)аpTN }6E;|щH[4ji<'Ir՛51EY#,qQ6cdmUj`F,o#3eihɀ)<8떕Y|7F]QDkbtBg,6S/u~K{=:r$?/QX6ڕZ۪M5Z'mAՆl~2Óju1xM Q4i~5EH"Zab _ Dk-|ĥ*T>%zA-F$/Xi+QK4aUiֺo+$K%ɹL9\"MVgueG]թ7mNTSI F'iQ_ $/R y%cr! YAЪ|^X ~uuYt:/jxJNZϮ+Q;$4,>a#{QC6fOC{c0jLXZyHBHTpŪ?l=ړŒVq(AL+v-{Iz_Jc63IgZ9*2xqcX5APn{>yt`@5G5r bK\*o dGc `r%,LdZ+RʇR"TY}Χ7sMie:ϧ|4p~֫ZF٥kكzq\ZEcVfeԛ$Sv:1sueVنDdouk.܋[?ֶˍw4HΙSMHxAk@e5 "@Aee?=RH!m"/[ذchID#\#Nj>QZj:ƒgO_6M# M^č?jZbhdF>fd#8)V@fMX|y H2.2)X"g4A0x 4(i,FcʩH_%@f#.8B`IVa &W ;nA`MFX!TNu)/t>WVj=/#(to# #;\wp g.ӠwTiJ8-Sײn@zu\Xlm|wra0 $2s+J|%e(h%k<&K_!YY)bY7 _/¹'Ҏ|RE& rfoCRpcW:,Oazw6M~79顈0Hv>/,a%i[ [e ˝#>|=_lOO.Lrhy-<Ľ`yЃQ= CV$dQ*[vIT5l4jUkºn4ɮW'uծp #$`}v-IÝ@B:#8/ys9lC4؀5r)ږ-(sv%rX,PX ӧ{-(^8"-]ҤJK)D_\7˧Z.A'cg:rW۪;xGғ -WL0ՃI{هڼ/tU_aåI3c3ef.$ Q1(lbIT<ۣfjT&#U7E@Huj0^!B3 /"Z?:5Y;zd* ܋%^2]IC8b \}gie1-  2CZ^P^XʄsѪ!}1i %s6 FtT4ӫ#jaK3Jp佌7BakaK n8|sN|#W<`^XxA-MgZ:Dn{Ukj,.fbK/(x@l;?;ؿGF!Յm?32f4e/)0X?ȦKu,E3+<ߣ,uĀZV@Y,J$b P]E+d<~I2I$u~xDTF4^VkI nRq=Cʑۛ0_Y+AF2pɑ:]3\00qΆ*#N3hcJrԦd $"kt!Z-7{buo .d8EذxC*`7p,ȤIz21$ԊM,I~$BWDJ;`=`?I݃K!xeaϦ]5uqt\H7/,K =/^h _f j;'ft}ڸUH͆PEҠHd ʬw; @,`yu5`ӫNns%݅ Qt,ve1 -r;_k]2YS?۞#ڷ8IZTDGhXEH£ "XD|۪߄sQñBהp;dEtjܣ4E*< ~9."uvO&:oق5϶E_c{a/Og?n _H{G6]_~=ēoGƖww&.68$diw`oT?ڢtL48ZW2a!I٧UHY%-q,p"gFVZ;%͖ ln_g>-V _^^&v\DNdϪvHH(bH~į-Y.z9:?ZY[Fd*/D ܙT'Ftrݖ%a$;<9{+E4?#u g'D-C&gӌ[14ıX]_xLȦY[y9EU'j0Գq@ }Uw&h{fr8oHZ PkN8 MwI'$dC/T""{)F]EYYĔ؉,b~u{Wǽ;O8r2W|ը+^RW}Z0F7JHXw)(8Y<kWK?nl 2ͺ`aɦ0Sq1}Nvi׮8mw_pqE`rX~#{my`v%ZJ L[jA_@WP@cgO*Ô4F% 4%9WÖ!@c>n4^Fj0&UI5Zf:OՎ) 7BQ6>N6Hx ͓ pOKп )  zIT˦Zem@2|$X+k-;q~< ˨j:&s@V pR5kNmZ!v S4~*x@KOwpd!F)}kѣ/D-KG;fI0g ? 2,4=; 1M=9/X _8W㷗>Y鯠AYcB̒8 fY ͤ;=Cㅷ ċ]3l}xwSZ_ަa=cm;^ႰQpQ6C(2xy()ۥK?9.N/.̷7ntj[Omf/ Qh*d&c)MPЎyj$OlntS ie>WP`8-xk+^nnңNM,rd'ضCx?u O`Yؗ?-嬨^+?m~ͦYPlcM̅oto` ζ旐Zڈ%?s #bbzvF5$;0ӎ?ZMuou@`{Gd@/EǒvHfbE>umfwGUDB^ˋn°Qr&^Q\!.yZ$)yMzTEuHD"}IO~)@ds sкT|Sf$|>@pk'zIԸ> Rq!)nU>6:!#QI{Y,0QQΆqY1Թ~b)1F5dLی^gH,S y$]:VOΒ&cTd1 Ow#R>YvR riFB~H2i, JIH9Tїe%Wr9w79|h 7u5iu&VԨUv $ImԤg:Cf"F`# ]4 vm.QTJ$썤R$A SiU,ʵR!r1xq75~ߝ!Haġ@-ɣŜhF{]u=-xR Xj7 f2oB=}na955+8:1jLA_il^9/1.^/wq)*4P+HNRn+Y&\ԌQ-tRzdܕTQkξ G3+ÉAj,Kz >@OVbH&][VCj ~rVߐ'F*ϽN(ɀ`y頥H$(T( ZF d1s*ǵ熨M45U7#hHXAPPPs'IA_5haH&k?slQG-ae]GSGoxgMxlA4+8GtF|ʯK> ^4 _9{7 "M'l.D1pd#䩂Șa0vZ͓m} .io&42[J>ϱBQTZj_{ck?pJ%j[E@ڜL%`W׮s3@g${9w$٬ M+X|*B$ez@v' iiz矪ٛ:4w6 5~ZcOʬ5t-!lHmHJ'8ȕGSJݤ٭ 6Fhrcq2 󲨋8V3֘t9L&2j$8=h64%`!:C!Rk/o?ߖe:٤;$g:Cy|AN/I`K3UvD2Q]+e^MH.CJaMk伴ݍ-1xKW\c-E _Ө_2ABxT>o{dl}]"e73VHh̝èqhD`Y쌍[xz"TK2ȶy\j{;E3t1 'w'ʴ_n5DbrIp͙'q 2WzKDn%~;Nú󁵾TNq&\n+y,Y/̚>vq{+p/lOjJ 쎜EbI^?zZKMn,_L?vhE4oo8,}r{s^$, %?GNo2v!6ށ ]֨ 9>W3t.e8sXD|N+gGnq~=k9֮I@0=%1Cw://Kh,]+' cŇ,I XI½PSe/Pe8Ȓ5xo;8 pKk=wL.'h wgDYi~_W>?#ܑRO, oOK\2h*3!+ё8$mRl.܂La畢ݩȐ缍wOh 6z`mgQœH!/W.%y)ύQ@f,j|;޽c hBys +0TOL1 :QCCa ^kzrً#VQ$.ͯZ0]Z^Xd8nRMhS۲ 9θyVGmфB~=P;h&cHOYZYJ>5To/ (YRpA'W 7:OcKc. _ڼ=:luj{Ҥv* nw QJ1CY\$#`fYnC2^k&#ς QejBwl,0f!5V뚢$aSVI[6{CD5"gX PRse~A<\tVՂK %+QWĖ3kB|l|/u2hCdnnr"vjt;Qp@yl_v hX=H-7ufbmj3ސm -B}VclwYJ ([a,Seq P:jwQm@aǤ s q ͺp 0Ęh>SfcvŰti5dW_-@"i$B+oE~|5xEghҢ>Mgw%=CR/<2J8b&,q@uJP*+ Ck<%aWD>05(OW΂c gr sl! T]~cGytv*Nn56 ncX_f빐K4 G8P^ izO<5i-*@$Z/BbSיozZœ^c?w KNj~Vz$hp5@9=[G6CѬ,{QC&~+I _PMMweQH-w{Q3۰w:D ٬8K[OCحjA*G+t5ɂuW<I#CimWɣͮ~X/Ȇc5:z֞:dD:ZHK`/QrAq<\XrhӡG>jͺgbScXZ'`EC?I~H59$CsVgc|1H&pRkL6&f҅B\DzSR?O`P}}57P>J21mvKȀXcRGeر ;ga t̿717L[دB4WƆK$Q쥽Im`m,iB2iGֶ|jtD9BrYnߴ2{_+9IDQX8 ^vi>lx3 %/}J4_I } G| &.FPI9uI9ӟEF6{Rᦦ|!hŗxnX.YyD\I3@D\z@$$ `V[Ss2 m,e4&(\=E]d8HZ {$zf4t>9X ;Z!FmMҶ6W€ms]'Dv [^Yle{2ÂsMr3'sAɑĪ~[(6Uv&ՑkmUuh}kК* F9nөU8%yγFGSӒ ߌԚ#y)'vL(ќ;*q0(f`gEޚ}zY?B=^ZCFm"gXEԟ>e^M9IQ1Id3SfgRA MWMd؊u6KG!A"`^&֒yKY*"[%5 S|HW35H!Eqqf\=d8_+- SZuU10IOVWj`ki8(RJ4ۣ*i3N9Yش'hO"/Qf 7=giW:)P>=C6xP=IH(%K8RI JLj &;Z[?ef>ITⰡ8a606vP 0 C+.i*إq!#C/|{B;$ΘF(dFj4ϸFIE[ rxJ?w,tJ8L}$Rjc$|{K n<GR{5뵁S8㳳CIχ s 'z꘵UPGGllUl'KRkTS/3>vl;KO&mH"+̣$"9ntN؝[]?{1ͻ̷kF:[ڃAK|,}ؘ4?z^PwDѸ;;,\"v5^*f]4f^XNO((̈>cU^[V᱑Twȓo"iz=tf"epcj֨޹}lq(_RX9iqO_n柧װ?UK%Z814kfz!66텱2z*wqf|mL.Ȑee`F>T*(U\oC;Of($,|eƦK30<F8%hjA!ViPF7E sR\pHxGym+R<œŗ\.%ӈE~ֿCn[Q1u%]6q@khpe88#{$Hʮ{sLkD'UlijP$50w/(dڸSIM@8n]pS㸦|m5xMUoZ]I_z}MꃵkvC~lӀ9ڑ7cJާ<ѱrP/n<6 d~V0Pė\Rlb 'dF)MvImҷew%6lOY~$(*+ 8:.k7yǖB610ZW̖Yѷ4R']Zvlyja Jj6ψkj}Ry)zEko}3V> vPh[PF_~Z5+JUSaPW_B: eI18)'-}_K+2c+'27ʥ\\Goute)E R%r?{Op_kOfd@<5J G`רB2V5qGɰ; syTVUxXWuV7H=8Cs&N_n~ZAq:Q2I@/)%w廛)18$PsR8M2d_'urSH>i$`5P^¬W) ՚N%R=:<o!!x }Z.Oyl :[Q $W_rA>~ hs@(OΊMEX>*l͆"2YKj:ÿ?\{H!-d.lo[ʨ$>f ՠQkY`EnL"%]cZCNvho&"ۙݾS`3K"O\8$r.C?X5?glrjVRZ*cYc} ߣwQ p_X oЊp[VZψ95ͳˣJʓ[Cؑ=jP;{R'R_a'_Z \^@Vɔ#6eNX.o(6koee_R Jw %܇F{QQ{4(=m?!i-dv[(^f q4ZƳ[6S.T_ͫEWZx>Vw[ +sֵ̈[ 2Flh j5-$@3dM)pD˩NzBFbE*VJT7q %*.Ff,D4G~„䁊{sxi6UUcq;Z' lCT:O: g(YZ/Pf"i_K;X>"F}07JL?d٧s΍Ι[tޕ|msW{]u2'~"U? I|va)%1v;BG <"GrY~I}4ZV*rV=Kq5s'X3RL:_3gXFNbCړ*ܫIļ{|::wv-;<]T$tiP\>C֒a%҉6zUTV.Sopa<[eSahN\̷.iZXNeM+^` %; Lb`7ʍ暈=쫹@ʸ*KfyӍ@J}xYkHn@śņ-7ӈfuj:ɗ)!pb$rzyCv(Ir%uVQ$)ёk0cA3B}TNdijȍ0zO& B;RhdD#KCǟ[s Ng笓:* Yƒb*w~DԌ'O[S1|w%qnm:L[u -m6Z9WKj޲j\:{.`l3 `k~_R߯K\{>K/{wȎtׯYyQӥb_H#!Ҷ,>G4iQ͘q6d_|9+*٪TV&s.4Kj4~ csjo =Aψ Ҁ1)|(᳑UpB'7`Ci= K3b/ow,Ȟ>#duJ6?uUͿ&1bC޸IaA3ؿb/٪L7"i\RYUjv΂ǵP{\;;hrto!"@j|{,s,7!;z/Bl6$mC (̲N ̏Yd18緀tr. tR;rvy݉n0Ioko|bZlQQLHqb # ڑ)R] g4=fJٯ2!+Mjszת~~b&~ p=sȟYØ7VcUVvlϳRj_8I}F b>n"C&FKN6?Ȭ? w@P_^FdUnagDuG>XJҘ5hS[?j [j4ה pF?Ɋ3NxIl뱊@W᪒}C95]HĤ9x# zđH2[-C x[9h e.H I-|d!rH̓:XZ_خCzT堫dr@V {il*FNr!ӠˤlK0%A"+ ]J*vu4A8>b)wm7LR?г"4sKNyt|,7zP"X37DS%+uiǮIfDjq>x-Pq>؇t>7"͙&WbOW#a8:FWNNKAդFsm%zFOAVj ?IpuF] NaW4f߇ ]faW ;g߮e<xOoQt.G}$z^OFEI$}́LZ`_(DhkZrYz}Z/Q zpaALSBZ=@+!ۤ^[" $pУAci(!& JL+Pvz?jDBţcW"s,J''b)%>]ug`yUʓVµExҋ;a98G\oxQw?^3άTeBwa ZKvͦ"W88K?z$.s|J"M 1P/(eUst+R~hIGmxDeIDEFbĵe s6} p^L-2-jF=e 4{[6)e%tzXY4#\Bs -#{ +-*NR53`u:ME&bf]U#S>i(V8bR#RXpDdPH6_V³ժjM.] z^\5\ёv [".@ D8p0vUl\xyյIf6,IA8Kz֜>)E=ҐC "VHɪdgپw8gXM+`j5Ht K}LrV5[BfOVq/:+)}RH +IWmO;lCz2 Rے '~܂[-vH 9n-ȿ|r*Ch֗GNVFY7:L˭`49kḺMYM}y`8ѳS6ac_לFiMʇ|cTn@lih和5$h.$aVOAd\bk M<4 KZ~!sv~㿉`;N$ $3E(\,MppeH_8⊁oP"M€엕 .E2rs agEVßfwԆn56KIB5%l5_RAieVǬʦCkL7V[#sGZuf Gtnv q,ܤ~|8w~ OJR_v:iV_ŋJrVi0Ƛ;%dbpzƘJsPxG75o~Iyw15Pjg_ͺOLVò # N^wG[KÄRl iOouVt'ȼJ ,8}P? =ɉ~h۳HH;L>琐Zrr@D@uYbWr ׋=qca.[4')iV`:Ճb?!x9/RO,o 6cA% fRyVM6ۼ1:~)cƮk6 AEN\ջtpՇx&fR#f?3މn<0p3a't^m5ې&o  fmxc_E.s0\RR7!O"]yR;U/i z IJ9nokP5Ө9& !W3oWF`0DTw6a + G]w{a"_ Nʫb.WH_JG9B7Q]{[<||[BT~(:@J%:j 73#"2a5FZ7Ձ;Xz(89dwtLO!$:i0Mg SCݲX(χjn鍶 ԭtf[G-v>)Zd탅&z4ZևuO@}6fm|dg5)QzW:9+$t֩%v'%T -[9~2@['-#^hb_]iIQe"ލ%x'#uENit?"F9da, ůhvS=9$1 " +H$J8~T=ZB{K 8c,hHk渌@=(b4j2= lit\WlqBGW<7sI Z Z"ml*#hƊ$69d'.I),I f3!fVO@Ŋ GĔ| #hƯ/ 軚R1J`9+*6-ۭ "wY^H?}aX>Hd' ~gM39^g9tb LnR˟tVϠM=4_ˋ#A%rVxΒI "YRtp"PYhi܌ ,`' %-j X5Ә]@inHZ&yT {:f%EHc^;}??v=z pژ{W_hEҞd րAv{W3BwN*GW p_0Mª^J>,8c9SjaE,BI֒Iǽ lmoDĹ(}kY{˃v;|-PcsuR}[u H# %Ո+1!^&$. R'ˎ8pcireT _t@ifO(xuE:XQ֏ӆ]m+\2?N2߽ˤdZ0%WIQnj $̍RN#Xw eNViUX.j&-)^FoE"$”#4 mФµz,{/)%Ev=Ҫ{@Iڻh,#1tЫnIe"wJi-.\.ˋqBiw^|pNh2w[1Uw\ubqZ:\Rbźo{J^Ոuoﶻ.%dr[`_u,G~TءXhюz$;G݀9%M:d5 @$Tq\N>ˇvTYcZ|ԚM"Qn+Q:i. vUy~Xm5vʹ >9(QUW H{6Z\QB!/4x_YS ʌ0s<#3e/K[5BúZR/ ]Oh=#Ԗ~$q=>줤׿;' `\[򻷃GT{xG''į{i).mLd4o $v>*(opsB +tzN "{nK/f#gs#K1v!]TC1Y&5^Z(#C"Oi=wtwauӺi헾ZfŠ ʥ%WH%7iqʬ ٩M{b>uVYvl=Rj UkN1-S!yB}iH6Fq-vZz]-ZtjU2R&U>~Eg(]8YeO3{DB-F9W8ҒeWej_;WF.MٰA%&;ZHMtYZc$F?NC;c,/\97`x$m!NCz^ 8@IMr~=swt@FJ15a&X Rn6LM}s̥hX:>6vp_]v'|4F Bߜ$f; S4`eAuZpCگRjُ˨%ɑe(}ъ{H6{2 t!SٵGUa)+~"Ioq9!U{]s/xJ|g&]Vsv'=9U ML55ω\0oxIvOhx)J є &itը!ڔ\XCq,K-K%:z+s?R72Kv"f?TU|xP5Q9Q8Cqd MT#}x+Ӻ˔aT͍Dˁ^$hӑ˕-D2iGc}ˑ)IeNkp.bV[,,znrRy@שr#=9F.t`yTn%Ęf|F[fX8y?A2j'd+ 5K*mEF&4Զ!)vrEHϣ:v[]7cE xμ .i׺6ji\0Ti`71u9~ rIG\q_"B#pcOW3>8GowgU#Jaj^$72PH}nQupҤ!t }./! IJiU ԟݩԪ m5e~Cތ?O@ rmkMe]W[7E'9^{!l؈1m.! 6+xGKe.˭t 5X$ +R7i,>I1P`6㽟ή$J6h/ auRI6~Qm„\.:jH;-]3:$>!UDngBӨDhEoKA,'Zj Vk_絗-!la=PJDܹ-0 䉻֕J ۱$ToIV\ D  #:)֬,9itG!U{E/eHY7sPYsnԛ^(z\.OT.tJ1nI]Tޣ9$rE+I^Lw14#_$qRz 9c+c4ЈXoHx3'eʴBX(qꀔ\B6tknwt>c S32+' `ʽReG| E8yMU2nO!8.9>JD{0n``6A?"^W ΁߇+?<-{\kN`M`n5 |+J@I ;9s{M\vY:{qbׇㅃ8J7`ྻA:8BMpzp]~՟ o8`G9QGkh&u4Ҍ%,,Ri4nθ0 'owIn0W_nH4O5UZJu6Y23Nɜub[>;|RaQgjx[BԪVXML7-+*fRu oj2xjmկf_+5iѐkj2dmRt$,NZ:kq"I6Lnp'N`.z-tns MR0[l@5Si$X3? W`ȹ[b8o8sI0A^yR?ġP˺4ݙʣVd`X-wVzNC5FӸ'hhYr}l;Ә+ __YYP>h6==]QءІ%R?{Ԍ,RI&WwX>H.mRt`Tq^ 9'3=ziԌ@AKt8uqjQӋFR $B; "8kTb2*2< N;rc'c`巤iR~gl0~r5HF]Vgu^S5ze`?+} 1:|+ O#0|o8#@zَˡoe-@?b'DGV^waլvJj6fj,$c7Ɍ=ypDO陬 gE7;uU,.*(+36 @LvW|4Yj+.0q G[QJAQ5HDK^l,Ō+YH +G>'BP@1q >[qqXrEHz[h 2k;:t%$w.lv@8mBhtэb՗yۑ4D#*g ܃V(l|t.F ށST pS2Vvzԋ,|TVL-4y\-φ@n.߲|=q/TI/3߸>,H4n"+R@];صBx-}](o/M=Hsd[ǰfd4GQTjnPft )5v_uH "o(F ۆrFViZ gۡQF?YTx<{b<* (vf_9Nkg aZlj р3/uwai\$Ù& ?3ǑfXXAsT~##WiUkv9[CDp@4ÖjqV65:)Rjl S"g#8eMs:nMrR`63s1t5,"FXqdzA!$<"`{ kw%L*ʯy`Ȇ߿JL\E:uBV~ RHN 8~,7Q_.\3_|rmAIu^gْS~JYm.9oyTo<%gv9DFHaHq#;VCQr=#U{*0V@ޭ.?wiKR0]j3{C,F,g|u C :K6' y i %Hc z!`dliakI@b:Yt-JkN88Nk6Z#^B[CE)dNOY3>Ç^;>}3|=rٝM5.m0ϖߣUYp`Ӝ\t~_W_* HpЖY1 s7Waqէw?`m@%b52_XԘ H"<7S/D96,Hu~Y i )[ΦG4*lCox v.af〱D̋id@ۻGy>N;Kjhv#9TF+]99" xCE/Bs-2A_zr{rZP,TjUݎ vVޡt?Sp1sESK#6r*OwשdԾ42ʣ)WfeELJ| ڞ@]}OJ u?U+ɬ<ت)Sfdcڂ;s}vvn:tlOEUI?0ϩxm8D`f:A G'\H:I|,?FBeif :_P:KPtU _Uv+4Դ$~5^d[nI5=^3~xp3y._؟qj֛aJ~Vum¥"8 gJ]`2m[:UA<ѷI'~BMYcq) ES&hJd-19 M;vz]dgoo6vfOoZY] s rl6Lxٹ>W'֚#J o'SC#l?oS̯hɚFU1Vx4.jkn-̔ 9k"=dsד`.MLӶ\Ε͈ŜҠ"(3ɲ*tcx1Wi)S(R+L1747/zҐZYr,oA^MӾI0- +$r} :l6BsϷg>~C@YHnC/w(ڲw,ñ=+ҙN*_YV A%q.{Km\Oӭ֪z r +:%݂Y'1w@HdF~H_')@ga,(ay-(a|h{ 8<#BfJy4)¿ K \W ) ä1yDM [I? 9=#98 k Eiv¿G@dhͨ7(%YPzґhzCJ_Խf]UNȢC 3hf*fpU`9f`ȷ5nfR-y =/_ʧP0oq>,Y( k!MҶݒ4U1.%&k.t<=sYO@%Qd\.EVQtr*_64}wA@6esԹLy9f~UoZn|wj's^< vj1kffeUқ >R3wIY~n~+dW Egh'!ܬdiOP+uiEd:/Υ#Sq 1@X vZafv5a4)%HmgEƠva-A-仏#}`~s_(C*}䁖hudL0K+|jMRz;>6~HM=1ZG[0NzK[V XtuGaSm"L&QjU}TҤo>>9v*FQCpU]Z#&4{T5XhA͏HBs`^Txљ|a pM$E[{kEX ekK\ֽLuC;URbN@>8V$"?Z!ϔIktxqr<ဆQA2PI:KGTz.Yy)yq.^1c1\w 9[}@~dͦDp @?߆\8Z| mS/ q\\>x_tPhի9GZQ-k<Xhɤ# %zx}oE6,`GSn{!\^yq\xpU,ta-ZRiGVz)N&x?k~r|GC~.@2sʸIY:e0,9, dJIi. |t3y2<`{ij@V4o%@t3N~H WgCʗYIŴњ2S4=Ԥ% 4+Go y_'Hq<zIhu>EV'umWbQYG+k(:R'\d-7y>V{|>"A' rV:v#n춯ӛe@~3KP+|兓q=6e}WPhvdOi~9辿ң>˱1.t2'޼qY&#֒i(j~ a9̀n'q#gCgTF^h¯kCyY.۬<݋Pv&힕~gzq5duzc#k4NKVU|DY Q39LWiψˇ5if|0k.w]5G2K]vWM}JIQ? Q)<Hsnl{)}ǡrpgET=<m1)9`|PĕZ3sD˼g%+|fϐd^nS_uWLI<,&rzk _mWB`vVR/2KPxDBp{󺓥&2iʳ ihQi]6 $DFO>y#&{+\@]m N>=*Ts)yQVC]}W8Qc ]YXkWYVz\BYhV(muI#1%XF |X#cߏW[.ƎSH 4D>p x퓝@y0ѫZ)J*v7dIa`8foυ9C 8&"/ 2eyك#H esyk 'PeyDVa/LU.$qđŹD"d.;znʽyC"4%t*P_`lN*blzcolr+:Z%vW5 qִR h9aջd-. NL&?yBU`B?X.? KNh`](ф-bF+4:#'NUWڈv*I-1km2~دVP$22u-pC!lE+œyK0O" LYb+k>?!9ӕo7LaD#'DN9~Xfٰj _ќxD$Vo{$7ہ7mK*iT/]Q 6kTmHjTEHذ?!8ribjzSci1WiU/|ٽX$ߓxE-4ҐT:H3ѩ >!&H27ۀ6[H5p۩HMjdZj!ChoI&SJXF,KKVLgsIZ4.xY7aoWg&ԡQ)]lBnJr­m2-^S`iER)#w&:VR+F@cqYC5eNMԚŽ]5 ?* [QްU[_Ă0y׿MgT%\g)nکLM{RSoi0Y*2ͪ[Yws+=|`zs}U6Ld0^+j(c1段 CJ>FxiGA%ԩ\Hv{{OdI}$a=4+ߍTʮw7Vl*V!8|0j ~(f)IlSґXܠ1ג"@k!(.[jt"lΆ΂IPYIItڳCo"-#߯!;B$ |6Ѭ2tu湙.ZzK"2"7P:עޣ;R. 88\bYrvMfhz?}:Cʘ1}z F|{r)|qK`)lo +ƜiD| {K̉9%6 3N ZaڇTi&MDnj椲;d%(iB\y)A0UͽVo "ꪁ1#էuެ~GH.zg2D8imZ.,ˠ֓x(=i‡=RR\Ijr핖_]atUN JX񊋰i{"1'lF;_V%W'^Yn//gz6'@,Fde^,y#L%X)fb2{[LjzRx@ %>챻XEpt3|`G+5l]GI QIZEk+W@mYkWo^}b1nOK}9H |r>Nd[8ߍxaJ<`PwҘI*;T ,@oN<'Hh0;3k*bQYSSr&@aZP}m]nH3e"{ҷN{K2xʧ'Vr S>[^1lZ)BoeJUc4318FS$0Ytln[ ^"Acv4Jy?KH " ,͚ۛ+.7bu]jt'd[C&&`՚ l#j.;џt]v%.gRpcU O4ɷW~+"*)wgA"Wl/V 嘊)Iu jǡbDWje.~{!ҿI+Zxj~oI=Ud͕godح2H Lk-mPS_U&cUL35Pԅ&ɘP+yM}]dy+C7HtW? }$~% Gfpqga#:B.BPx~{&3Hmwפ K-Awن:FX%p \lqy='6ĈKmJ$̔.9])VH>_8Rg%Ҫaj:,uk`S B mMF쏗ϔ5 _GO7 I.:ASoDD}ǚH_L+ܐqX߽۠_bˋJZXȟdAVBjӋ cXN\’2絼|ϥEOx;WX67]Ɗ% p/@dA`mdtU`OJ?zC =tcR-G wIM `+Xz>W$9[mU$6G3NquYZZ $~Xzuh"2yʀ&; yoFiA)M,HCi6cI$m{!Kp  ml)\AC3o:'sxmzvɶw* w;EOXb,u|naw"sJ>GЎw\~i0m)I/[$fkD1QI_#7szAZCIc6{j5"6>#a&`̤lOPƯnjxHm~9,Su7g%[OL%OV#u`"K9&-*[fU[_AپW>F!)x!qi&j+h>vik#{\6(Q0 Hصu(49پ!T_J:TQEi,ZC٩1;¦wLUM՝OMc`Fu=(Icix[/"5plZrXeGc=ܹg#I.4সSijsO =백4Y<.G&٫)- ȇ'V tmjXl:" 0OX j_F3chpxtohoGi:;2)xԬ6MԱ ;ip)ksP*=֡_p $Qkw?p4'(Va4-kKm6xv99GpkzqX'eu)}8}Sj4j_4.HzY`CD%jlXАF ]x$EU(xK aEg2*BaPrm3}&sd߮`xGm'Zٱ+||\F4'gG4P۸1UAR9٥@xP8}tJl.l6 /63X:Ǚ_&`d?Dq ?A3W+]fhK>d}@"\ &>; `Ovi\ -@} J`VMf: 9: Vr`CH~b l:E~p3; +7)=&-ݼzAʌ-[ax>S6e٤% B4EBx 0EYX1*<[ ]O:C)ܮ֒XUaoEdbFǶBxL͇yZUgH0VlE]3w񕱯ȬEM)F Fu%E8_;8瑻Ρ na7gn3-Tֲ<-c/ӊV+E|0|#$uyuŚ6Ա}.{b<=8MpT3zvg7W0zZ@?buY2Vg2]S+vxi ldXJi|U:YQ坉tu@}O&w# t8p45uEvFfXvF>eJO&hIJ}ݝޢ58l2$49'_7CRO(4fͼ!sPJ #!lR܊8䟖4[Vf ku{C`2~#i>(p1Jx iz'k&\!^ܨ'v)1V +xnG}"vL  Dd dx_G9_gNƸ8d/>7F~d_.x<%4<`of޽C ݅LE+X}Eujx͞4dwH#sN.DgZ >s`+}iɅNӄ$ahڇ'WIilOTaqa=c-DY;oAN"s,fM:%{@Ffaξ* {gOo d2rK:rLTJ$Z̬yH6|,*xԏӫVusEy>G=ٶb {bs__ PcQ3 l5R/^.x+;e4l}2XU'톚t a>Ffc Ȗ ݲW~Utz&H M;f\s a ]CZ#edm7  Kboyr@ ԕ? =Rb2y|쩍|KHּ-%W."hsSM^W[?Kh's5V<w}dD¾=j}Ε8f[:iAQP>iRm&WnѴZE{^R?~\Lay<N)|na8şZ,!ր+I6 D^wŌ*L&j4 5k!soUenU5GȜ Ƌ!uEG~S( P$K8wǫw%5ޔԈ, :9 Iʵ2҇#p/Sm<3U'!{r•gN|nzKRѓ}_ I}b+ғ"VlUmVh~_spKlh^٩NR,T5̆)&/~zC~_>%}5_N2o%۲|tC33PKVF_.Sh0ڵ6,7/9?fN=cHyD8w`/DalfNInj2볋*%Cڦ™Ge0&L;"\JD6/Prx'lg2+>3˘KԅKLj8{;w]~~d[o)P g.=~|Vz5dx YuUը . n @6iQ0G]$Z )II[º\*)֪Z= B>-$ΒKLd<+~ 2I(-*"yVDb%ׅse(x-OS #j?,prwz.X-mg 󤌳|%zauo>$o_Q\RR3fLo&x| ,$kˮ(QD<1*)E?d8oHz4j,hY{EնvƲ/!W!c u.PVs@W%FA뒚U=Cy0WnDIE8#i)d}9%6$k\H9rtjPy?z'Pi !/+;;mrS/tЀ\8e_V/RZGߚl-}i̟UtJv L{?I4mr\AiN'*8w&_!$\4V!IzlЮ{pl:&H*FC(H/'!zhQo> b;r9 (oKT 9dm[}H6.^Xy8ϲp"C z^8I(z}$W8:=rÐaS6?ws'p59< U~WڌZuYU,w&Ddmb` +S@Y 'Ɲ(KIt!xcYv#GjRUu2J&j2G{d*Eb ؚFK:)}KL3;= $镩hʫ6 v+ƖKk lU[xzҋ؟M?ixH;50?)Xeh~D,kOu;y$ܲ|lxᖓ҈׳b,ME"/' V/|XeqSWIN]ڨI^&UflvAT49RGnl3=qa3ؿ(Pxjre0Uh}Z%fUSΚve0_p/ZRrDKN 7M·(}|UY޾jf RMtԽn/w/oZlqf]O1sqƆ#M=V߿jeH&L~ae{FV@}q':MvI?; ̀%a=:*[ Li7Ii(Z@/?;ܧU|ܥ7ovw'#"O#R1Bw+{x=*ӑ t(ɧ.wx>gRX0ݺd:8Nfo3b:[3` ט܋8A~>PkyL? 2ٹY8ѩ1\۽zڣ)DSxgi{5%ǃe+H5ՊMk"%^o~\ɿxLyf\ѳ.^5t,p{ɾ|m:A)҄ʎh|3 :Y%o1H#ZPロotۛu7EI1$@Ӝb H<"`tLta Ӭ%8{+es7 RK$>y oF3'TF2oXћm32iS[ͥ-CwapȔSCq:{QC#z",??3yAd,X~-A~pr#>$BoʳrCo]5Ssl0Bw)l:`IC@Ưq Vu FM͍OcOrӟ{tA*a*k~qgY[R ZPvdÒ#Mo[l>U%QE1"0xSZ>{/CqPBpa=W rJ&oAB=c{"q c5y##/*;YݲqK-UG\P|Ar hM^_B5Bt]Nt[j8pVo뢒 EI x#^̉@وS ^Eet%ok2c^қ4ꃮ"Ws˩O9q Bo@!2v $jUK}K)V!:Ȋ`y, e؀a!#SByn;J*#]`lJ|R@M?O+WEg;iZ+c:Xt1Gv[ѯPUN>|ϫo'U{Ykߟ./=Wk^}ZZRUm+ګk U è٨hRuX҉_3ZFw:H3^/1V;KAe'Uol%eP55 V%קrܼ$I~:陽Eu =VӒwܴ-ҭ0W60*ѹ -dWYZ(ͻ$PC׶l λ}#>Azs>#w?.)М!MdeØ=z鴥u FZ ;`UB`zTn^G ҳZqm4KA1]Vロ 9s=.jDw%'=P2ao"o[ Iut͵u2ށ˼#|;r}vRa=t%?$̀L{B0S^O 7*%rĊH<έVFƠ''!畷"^txTsd LD~ѱąFI)FK@FP+~O` vV ʧ3ܣ!;⶜G?ZK z76OYwNJ }䊬ֱ):YzltO=HPӨւLlu+~C[R6K S.7黯WVUcᔫ@}2i_;+&B@,8Uh{E ;Nd[ vğw%*x06ag0J@O+~!^Ѕ"f8[3>%G}+1Z]eqPRyM2OXCaA= Dv e'r>[9w 6댈e=Pqx%' :4Z&ԑ/=I=\C?17NG$%)9'QM{vT^XekG#ٮYk;̠?nd=4(h@(Fy rJ6*{*br_F{ŨjݑB2W1C%m{OX':o@=EB+cYVE=(DL e\||5{7|#;ϭج##zj+z#cOSo)y AH j~Mvdǿ{,a1^e4ia2]6sr үh i CTEqy8}y"s|WR\"TlbO%yS,{B ",}޸7JlO"H(=aR:x=% +VOe'1B=I7[A}Ǡs߬ۧZk9jk,w1 #`L? :>{a:w@mEP 4>m! Ώd҇gY0R[D8Fg/!TC. nrDŽf:X[m(\m2X@ 4daPkƃ{lj,N|qY̓G7;;O=YI"R\_Z8Gbo~:TߐB_/RQ:F^ַ!h>å4_ 5#>}S|)gcʻr(}2hco bC: +6"0=Q6l8#Fɶ'׬b_O8JCDF^2Y#5^x#gXONm):OKI. 0[3ۘF?w_?:΅ÝJw3H(],+O7'@i˷7$A-8f(+1~/W ]lF$\:HoxA bP/J'm֚D"S4#|Fo+O:WI&oDW& i6.WY9o9_q,Rؔ L3tᦿ!xʁr$9P< GIᢋ1ًLB#yRxl*|ٜ2jH1BeJ6h kH8)r)l>‚M*b"M HO? {rFcbR)hEsu[6Q}J4 s`-R t%N*4m}mݭәbA+Pd-NJ pkQHqz}p Bԯ$F`DNe=&b%K<̯gYkܬ憁qANge-!@9Y"V\kX!Sٻ491}JNhyno0 ڽhK2>.3\Y訓%xjō8792czBVOkEf 1a.sL^p,gJJjC" =HɂX]iFXql & ,:o|Epc{df\ׄCyϿn.bJ#/yutSNm{$s{o/s_"ߖ ot"8([DAc׬6{SQ~b*B=>±(E~9^C]H鬆rzCtPOQNaQB!(Q^#u*x ua)D, 63hzeRr ad1r<]0~/ d׋63h͔ N4Eq3M2!+N!2T88}GAdTT]0$6PE:0djB 0 61d@6[ii{eN~-!JKސ5UJx!mҦ@V)X#)=AمFHN/4n>/3:Ag(3 T)=м7:z7 `2ȞaLсjY$>RrْdQ-?,t>Ξqq3$|8ZY EВY$Z9Y &:v5qWfjiJGZ /'H+<ˑ1\S¢q ϗ5X+; {qIԊ GbB„cϦ5^Ժ2;{"IѰްH, %UK)HH 8pQZ]I֕j{67fFm1K9BT)H}ܲC>jxSvu ^%|]b?:t?=_Y; Sy] ]ǿH1^C6 ^>Gm3'o;Zm5%Td䶞@~9u`DwuϢ$q߈d߅|?aF؇oGg+" tYQ˅1(͜h5u Kt^$wn b{68ٻ֬i:YqK)Y%7H >mv!WX"d)Cl*ny!?iA0CVtB ٗo@7OK ۵@KQ.hH3[/^ҀbI iCiyW/ 'Zn=;q o AhjT. FѕN1;ܥ[ ,<o27_Vswy -&E3YiSm<+2rnNe D&'{P%z'.1Im[DHG&lfq'` [)/y{ermdp4D㵹6^ i\{^ :=/:%{^w;[?fJ~%5t\HػN.0`qT1Lv™–'iwQ]%њD|)lkz]Gb(䙠jN${? +eYy=zM00KIR7i(7ڪh/Ѻq}Ofy\lhhl])^S'g}+S8z3gP*mdwW}]SHSCgY\% ov6%ʑMZ]{ H&:Ȥhbq '0O]-M 5ILT+/b2tS78ll}R׌TbL}:2 I]JTdOOl?kz91sgy$ \P8aJn슽N6ρpܙrvzڛ)M=hK2'*M$&A{R_>mGZç6욋ף :PP`3h\vk_VZ8L=.vp\-',kWD%/ᚈ ;66w({-:Ș>=UݪAp$'kd_ƨ}H(0Z4xG R6n '^j}IgAH)Qݭ|qŸ?o-up]%?t{d^INJOuoV!N\m3t+oLQӭ:J OA/A2d Jb?9O+/t' / )&R i*"o8O{^KZKxضdV_|Oy_œ/Ίθ> b,3? NXhltGD(qA@ qSg(YV'Ռ+N,qŸ(%}0 \@< ^q↙{;|;留bA.B6 P7n!Z}81Iigr`*a2_<^cfd3u3.Yw{οjVw˾w&x"^+߸#rbs흖Y/GiRO}ҋ.~1i/GYRRU<zSWo[e|x32"tçIh M##grM-]:N9" Ś&qBCP؞{.k{;/ A1lG'9IŽ$ASh$va`; ԙ qьߏРLdgKqmEA8boӬ،J?|rO?w+߯.oK q '8 M|4$Y 5s)^m:VNr>fxk[7p Eb}~2+EaƝo@.hĿ/p >\/Q!zA=/Suoiazgyc6-eФ;櫙Me&gu"g9ɱfu/cyI24pg gfVlkvho{rW׷G;>*A1U~Ti evuFiKEd Y;d~ʿKH $