summaryrefslogtreecommitdiff
path: root/init
diff options
context:
space:
mode:
authorChris Wilson <chris@chris-wilson.co.uk>2021-02-05 22:00:12 +0000
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2021-03-04 11:38:41 +0100
commit1ea36020950d44ef9152d832887a0c1cee0edee2 (patch)
tree6521cceac8b25a64a8f9186b4bfca1acaf65e8a0 /init
parent834c7ec6af441a3630fc60d72522e06dc65003eb (diff)
downloadlinux-1ea36020950d44ef9152d832887a0c1cee0edee2.tar.gz
linux-1ea36020950d44ef9152d832887a0c1cee0edee2.tar.bz2
linux-1ea36020950d44ef9152d832887a0c1cee0edee2.zip
kcmp: Support selection of SYS_kcmp without CHECKPOINT_RESTORE
commit bfe3911a91047557eb0e620f95a370aee6a248c7 upstream. Userspace has discovered the functionality offered by SYS_kcmp and has started to depend upon it. In particular, Mesa uses SYS_kcmp for os_same_file_description() in order to identify when two fd (e.g. device or dmabuf) point to the same struct file. Since they depend on it for core functionality, lift SYS_kcmp out of the non-default CONFIG_CHECKPOINT_RESTORE into the selectable syscall category. Rasmus Villemoes also pointed out that systemd uses SYS_kcmp to deduplicate the per-service file descriptor store. Note that some distributions such as Ubuntu are already enabling CHECKPOINT_RESTORE in their configs and so, by extension, SYS_kcmp. References: https://gitlab.freedesktop.org/drm/intel/-/issues/3046 Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Cc: Kees Cook <keescook@chromium.org> Cc: Andy Lutomirski <luto@amacapital.net> Cc: Will Drewry <wad@chromium.org> Cc: Andrew Morton <akpm@linux-foundation.org> Cc: Dave Airlie <airlied@gmail.com> Cc: Daniel Vetter <daniel@ffwll.ch> Cc: Lucas Stach <l.stach@pengutronix.de> Cc: Rasmus Villemoes <linux@rasmusvillemoes.dk> Cc: Cyrill Gorcunov <gorcunov@gmail.com> Cc: stable@vger.kernel.org Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch> # DRM depends on kcmp Acked-by: Rasmus Villemoes <linux@rasmusvillemoes.dk> # systemd uses kcmp Reviewed-by: Cyrill Gorcunov <gorcunov@gmail.com> Reviewed-by: Kees Cook <keescook@chromium.org> Acked-by: Thomas Zimmermann <tzimmermann@suse.de> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch> Link: https://patchwork.freedesktop.org/patch/msgid/20210205220012.1983-1-chris@chris-wilson.co.uk Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'init')
-rw-r--r--init/Kconfig11
1 files changed, 11 insertions, 0 deletions
diff --git a/init/Kconfig b/init/Kconfig
index 0872a5a2e759..d559abf38c90 100644
--- a/init/Kconfig
+++ b/init/Kconfig
@@ -1194,6 +1194,7 @@ endif # NAMESPACES
config CHECKPOINT_RESTORE
bool "Checkpoint/restore support"
select PROC_CHILDREN
+ select KCMP
default n
help
Enables additional kernel features in a sake of checkpoint/restore.
@@ -1737,6 +1738,16 @@ config ARCH_HAS_MEMBARRIER_CALLBACKS
config ARCH_HAS_MEMBARRIER_SYNC_CORE
bool
+config KCMP
+ bool "Enable kcmp() system call" if EXPERT
+ help
+ Enable the kernel resource comparison system call. It provides
+ user-space with the ability to compare two processes to see if they
+ share a common resource, such as a file descriptor or even virtual
+ memory space.
+
+ If unsure, say N.
+
config RSEQ
bool "Enable rseq() system call" if EXPERT
default y
 06 t4)fHۜ1  ~_`@w}4bJLBmcկs؅sHz!iqT+!hmPPr8Q’VVC9@i.Ɲ;9\A2\>uR+$lq$g\OS$R@oo5po#.q ­<|Z1^CrZC%Js=iG+Jzj갫IK(`Qc7WCqy?? ٲH \aasW^JQTD-Ґ$-;^uGf[C_m:\s1ʽvh.sAygFɔA&Z4cQZk#*ܫq4׉Ca~u0U,3z}P30T&*k ̆fa r_7XYP[]Wƫ'# E~y̷[mSƊTHԫ{twwQ"IքLte Φb';`!d1$Jiă0\0ULDQqSI7`Ҭʧ}'T M\8((p "!|~ϋbd?,8CESIP(HC<20vns?]!`l6n;Fl<&%%0/oG(|95_>u^9.sq3ox}h5_loh"kC>7Ni+r60(fqa:Q|%'2hڲ|_R8uUX(H|~U/~Hx=ϞԚ0G~?Oî3~qZb-|MԪRoo1WK )QeYv=lUm&zL\=ޜ{Lj#VWTk/k#l,oO'l# A@/\+ w![ޟ=~E{Y'Е=4A,X iP[C\XQ1bs) zަL?X K[SD8E7>Ϛ^GY)'L8zet0d ;<0CE3P&8"6 CwX{׷ɭۿ% TG(p@@3 :ז $x9IUo"GSFIʭE=- '\2пAlX3j}K>x[Yۣ8>~|7.9:<"wF7_fLv Gò͵ϻnxǽmWD^]Vjn⼸ jMv}eFvv:JsDiPBߠ_1cvYUw>3U42Uψhm7瑆./'<Kw@6aqˌ4njS۱Ft|S-}ռc݅UDg7e9KDkGhůwW I=DX#.f5u; RO2ʾ7әCZC+UCo?L3=]/YKsuaka9yU@%{Y5rJW gӇco/',6B3#~[~J!ZU5Ty-u_Sа|3s‚)~-Ɠߢ1(_}ldMlbK~ogz+'*RoU"uLac <_뱽r\rюco|_;oYɡdҞMn9t?حbUj\珎q?#GclUo79D6|gG4eIAeD0ȟ재CڍkyȝioJ0"}'}xMD2ǡܝVs>!wtFk}i@[@nZեc`z١!@BdQbpz8baܼ'ty^,0F"NšbP_]=?\lvp;:)f Aڰ*2`/Yd} Hx+\5 @Rx8yWb |@CE~M'uv[jUVmsLAAh $"mB QFI% _eXn]r"q+[eǁ {쪾UUdy3P NDDF b$'S_P>]kie)OEJ 0_]w>rshf#^,[jɖEco}0j_;XR0KiV}KTП p=htk]^[G?>hboOqtԸ> Ӳub(\ECw:+"ސ^IiКF\!!AnS{DdET38r-o9nE+kR/2f2 *VqZLWмtua:X̻: L>:eBKxD@]j:*K-{GFAW0u ':ش^~|0- v-| |Ey΂;3uF#c>#|쉁 Z(ƸBJZȖap՜&]SG#jCB=E>c&O?J_D/^/}:u򍱅8e[s+0bluϨ@ 3'\lu[mY0ŃxGcUWWƶD_u9Kv^Ur{ĉ"qXy!lX: ;Gd@to,(5ZYgHTym8ZOz 6oMuyIJ7yh#yĬłR&!* %zXW*(dL ל, HԤD Q(^@o@1" tptuĨmTx~n t: _痦Pߟ}w=6Ǫ/ggϞ[߆dm_ d<ҧ/ sYh{>Euοf&bPKWQQd~.zʵpa) ie8PkrO)m䖳sg:\i~]g0Ƞ$‡)ay?0 RGP@9wD 6gr c`(w=y $J6JVJh&3ơC.Nf RKs&C؊7 \g @Aƌj1馀<%CzSC@}D' ]+B"SMw:@i-'Z /~`E*y6H"|Tb*86R7jՏ, ҰշoL<jFG I5#6\?mHFO#hm{kgAwYvFd}_~Aztvt Q@U@XG fA2o~%~o':#UUg0(d jޫBeʯ{Kk@YhaFr2ahu-v{頫|d>20MӃ($$dl:,ѢX?߾'&*ysO[FF@tgsz#PeT.6f쑀 dKbPzܧ=@ S-8z(Ds{I$ 6]o$"xm\n~#Ǟ:k t*0N_Nh"`1;S ԌjX5xУxHt?PK(> pT"l`|7 FIb3E(3Dp>",xjqՕZt>e9%ϷnW`?5t4tHaO sxTY`\|9q:fLq:l_J0#wo6 ոͺ_6Q)NoFeθS۩{;&?*7]k'vUAphxI"JGLW'rreul Uی#{}(di9_VFgMPK:W*P~Ez@,5`r"G擫 @vZLtv6d#qo?}& P"a ;yá4˸|(/jBJ]ë@n-KɷgSo՟i:m,Oo{O 4DUҦmo3> +jϾ,{B%- H{ }wϫ\?ó*B "Z0gh#/B(;-1"nxH0 ܨz63Q՜;۝wI3\&8 `!A)&Gz`mi{߳z 8+LDk30+JB:}I97" P8W___?Se?G'Z L[^ﱆPre! 94cX=C0#rM }{Gʴh˷qOFktCw4awT)iݰ~θrV穦u<>l&<<4Q KO*h|~2o0'㷛!wpw4x4s/ʞSZ`fomNh^_ni }s6z;sD&4etk`d^Mg[9[&ch ʝ7gs0{\T;_)ȁ=a:}/%V 9rx KU Y_BD ^UT/h&(Feì EHGBjhֺD?e0$ 7mʌ+fXj%"{WѾCVQywvУ,A!GUpU_X''?"#Lܷ8hۯl}J[]=?".7sws ھP}6oAt4?Hv\:2SSɺK|[_GJ_,qpG_S3tnHﲛd_H@ RT"6 w0$GG. lkƂ"`N#PP}ܭjLlG#xx_g׵O->7& D^9+3~@ly=T[!+NQ@/wa.-N>{떾nkT 펵@w9 hzk(PkCq?__m]6קIr;,}UbMbޑvCzji{XGCmSkD9wqusÓD:5,qM=g˳2t]9B)Ny:l<@ވ| C:GJ1ݯZOx;f A ò{}/'b7~Ӏy>! x 6-$pXnS< VLB 7Z<Ğ^Ozm34oBaJ%!+piH$7+m{ SEz=䊦rQr@h@L\̆RHbԖ,LtGZ]}~| #c&$A!' ( ¼O+?KO6N$ X$xfGᐒ~z>%m߲KkΠч6|,lLt!|w=$sս2v~RpOU smEm?f~owmGG{d(;sβY}p;c)[G?EN== y[[Y0lxߧ~AOF;S 3&LqdvƐ{hH",>۹xUku }:mޠ;Wy[>C ݝ[HkkM8h7P;ָ:C{n] 9͗T߭vz-4wllKP'{<_ۦ떋&V .\x:xTxr<;ͫHu/P ܛpp<Nx}S ۪vM.=/گ9uWntc4gZ uȋIT=M߅jc#ɸ(w:$kp6գ|8]ÛZݖY5]ڛdz96gc0҃XtKhՕ;ú>t[4I4-.DaޗGn`.AZG)I^zujzvA0cK1sS3pq~t3х!#fͺe !r;;_JyM67KI#w`wGyc)VRz[:+uaOa6lBf\mr=nv+JϹWi9ۻpÎfݪ [^Q堔MՉ$wz 4fCFi)ϜYr]V \cϿ,ݘ6պ\C9k 0*cW=<4{O?b'`27,<~<˾ޡE]ؤؕۮѲ@䜂D^m x-E!(%VA>ze΍x>*"$n5ޤqǵn3>VmOnS:7ی֧_WMzdHg d;i{c(ۖƲ@/D_-ҥgY,? smtvw["[4=ZqD=zm{x\9I! V[Bdh&%@lcǨ hd9uKkɢe\D Q/E-p[Mbmx"3xu(70 T2/b:1iR xC /s5VMBl"憩`P+C_~;-n@??h8'~&ߓWDO6c Guٰ0~dX <JsRq >THfv4k#&ݣ'm{EY:ۄnuo}v~,$}N "aGW?QpѣԜrS WsBMHDTƗcW ;nv oE.퐻ɷI ?V7sEs[87ۛ"J|&%ᔴP &>GJ5Wg. 6./?n}5St#E|Gqu|(\r~ .nLzjfswFi.ગ>̖T{0( tWoQAsM=7|D|2ۿp'5C3*q\NP,2.G X[߱Q`,攗SC7bP$0eһYXA@,@[,PYr>/|h 2a@_EpCOO׌|8ӕ#-;ylٶ7qqШ{kحoO[ͣb^&;/z2*j6+alW(eػ5[9r?'z荋KvAx|׻uG/0r>7FßQ֩MQ代*v#F :ζr({U<%b>fU;RT}0zJ$/4,6` Ō';o<{ OgRml/tpL5->x5΄voX7OC[|XlŤ*2pfPCtQ q}8ƈ |)(>k"K߹0JhdQ$Z:Kb492 ?e 4X{Ҽ%[z e-s[ΏGxƍsj@$:^7SȳY%mB^196A􌬒tׇ:v𰾐`wUAJl0J ުj:ç/ &TyXoEvA3<م>7JQȋmr6 JG9T_:]mwpCp~6iS&I)bbڋה(((>QsS)v:擖'iW3m09GmhQu#&=ܼKX2*ggu%Gd*>πɢPuݦyo<;39:3<.NH@gC%u҃e{zkZi[Ev(JPvpfȠB:m{xZ)v`~xZ %^Vms  ᝬF\c{58K,a:uydh>c{=yM fӍ^(-nT˳ %u^;IR :F#*IP|ngg[pNg@B)BDrLE{0TyVƢJRi׮*j-8o۶FEEMVt`QdtLPKjovQxu x{aӣH|.dd%R`" e&C[Y^Wf3UE%SA5E UN5y]O^awߛI0=, Ԏ'RhKI҅P[u)'6^l:.]eۄs/*[A乇އ!Pض p c.U;*n%5򓩆]2=$rURP 5MasJ[c]{eP&Qrvhj=<]roH#)G8.P3мr ˡn^H-d5 { 7?@P}|Qh[zj;l^8iQߧ~[潠E=ӏ.BA$ l <4U{(ʬ/~P(؅PC6󿀄ϡEpFYyyn?KwB4xyus=|&a_dz>`9\B|ϓsxvC/RY4/Fc!2g \P W.]}8A?7KK {Oθ6  VXGFʅUaOҷ%]Jg~xq٤Y@|I$vucw:~t㳋Putut ,o77L0s0cDIpv"@(*hh6_XLR0$4U,` _r:uᐽP~ʻ4]@Ȅ4䞍+WoQ= 8 {Y抠&nXѱͮmhkYiXV+q0M!e,;4׹|&-"`s'C_\^8"~#CH(q=ӳՖ}#_ށ5~<9oD5(n}Z|*g@Qs7siTL &G8g,Ҵ2x[7]mY@Py?gp8*^h'zLj0_=Di_8*m/!*0(rR R<=4+S&yYpyo !-eör{KPU.]YyO)t l\qU^ s2 PH3 iԂ]M}N: b7~I X=|QZU hlkhAAU&3\E㽯ܣ*B'laT \\0R,nzv.O[p4ґݫerMr~C@RB~(pv!|N*a폖##Bn * 5\eG9e| ps/1 o>%砷o3m(UJ { Bbt! , W\8-,>Z-6OgM BO"wඅD725ﷺ<> %mdz0\鵄sǣfݥ{".gA9Nta"oǟ=O^bV[^M3"O NvSǼ(MpZSQӞoSNZAyuG7MKRN4zj[pg *,1U&ap!QǠ"xeij#x?9%=XX#ilyҘa/u|_w18US_H>*Ώt_S_N+uz߻r:S%;C іi>o&?0S1.05Vå@&`dK"T{@3(.Xxג)saNȪkB9QOG~+$],fğb&>Ldy5NN +gHuYs/|8ʐo@yܽ a'kdGW7++LCfq"goʜdr'\lrsЎgNN4F0@ $ >7sByiq'4DFJ"҂ ؏|Nw3K5=U?3RFC𲧚\-!߉θ*1HcprÝ) p<(8^cr`cM7az2 LRE.ܿ9 "M67pFHӹÅF!!p D3CetV"2.Ԉ| `nGv8ęF1ahC rQXt]6:|u\%8cCU*Ea[%|};09Ud"6!1qDfu" hp'vߎGW똜+q r륀dƳ"V'RbCtMP'P$g&;mNaa8x6mC IӴ oJ퀮!NiK۔⺵>xvhsNӦuhSat\;ꄍ&]R/--kvMQB:~$₾=xt$\.}! m cs>^&bTlIgf {NZ# X&\f^!$_d+oܴ/+agԨqj°oW aSRr5 J5n9$y!x6|p/SCf,Xi1Z!KLрBCT#x MTuHO7XWqgȶooymIQ ϐ]]{jn΢65?QAZqV6}< W<> VΉo|]Cq|_ 'w8:C[G*oQ*zAj.IFz:seb'S[ڷTG8?t8a,ʐ?੾럣+Gc\x~eɆm7ŰQouYR CI^g$4288ז ;,_qzLG^s.sgW[9gu{~:h.]w:9&1zW9OZ_,UŸ Vn r?$o{zRC3I,no ImA&b]$Η ƕݘL$4U-@N_u85}g'kCfAk6Ĺ»4"`p=\Р3<$TT=܍ó;+E cb:Vשb"HF/[tYfmn?BY[/i ۥR% Ȩ`9l{U`*k<|*zKgIJpW7sUrd4!FSW/G|w޵xQZ2Vr%9aDȍn]׽2g 1iQ'AE΢϶fwzK W~?dkyh@slc t<(n#tzl?2!I%RF;vTNHDAB薏NF1ݬ "j{ d׷lک/?R4ia{[ m( V-gɶZIQ5Y>^N9M %=\JY18"8*(nuW>nI^TJ< m|:HPt.P7cs݀ $%`sH" hА06YRgr maݠi"8H*,v3 &%O<*7qjQ8镃BypC*m(5br<졙r(ͺV7SgwU$cj&FW\gfv-A4kd[n'ыC7"d =Xq:40p(I&3opX&6JOF Nf2 9HE"z}KN71Nxv9|7_8V(gˋG5`Towz(J#O2߈"̵z׼jX{qd[]$A m}[7EFydztro|(9Z 'xh!~mFQ$^9.Y+1?[\JR֕mc-1a9ݔH7^uz52SauDZY#fv!#T u^^V)F#X?PxAD/Dnf{1yͫx>VOUC/룽1@yS`f2%؄Xw{Ovjح )-<ΏLflPQ0vNYJ +e~YɁ2, z & (jrphj&(K:"];9L~B'L^@Z&t|vyǜkfnpzP<K%8b`[^D"aA\#eXWQ\*Ǹ8~_ qlE81`|Św?di>k8T|Gӈ5&/Ԡ/9:{8nMi9P NM;{ObyVe:s蒎}QO|[A 6wmXa!iQPHLYsf:_X r*͝d9g肎/A  z'{ 7"Cf3WR2u|RTЈU hkpۋG'hey"DN[O`3(,Qݱ.z_! #D;WO SyGF_.:+,X/ BYn-&'D#1sUdDJ갭C=[7+`S8n'_n5(]p[vQ0ϳJFS_}Jb= !@I` Mung{1>ڈ>-V^SH߾n&"3utC%Bi:6e^;fI֕}Y Vы0vQ ͙3!$5TCX I8`(oΡ0C&K t]#g2WAT8ldl݋F3{u}б_iPN $}̫ cF (6|N%*55fuO{1h^/e9Bi.:R~\wc3Hٜ/]fWߦQןxJ嚽xg]+F"q\C(S\qTA3s y_"bA89.Hq˗㷾ŋA8)sEW›( \Bj5P(+٬ 7 $~yz7PY„ 8asaYb `7N}4&`S\>`Ξu)rio RIB¾4?SL ǔnX`r%V1+T̍dBAr0Zi߮q*[VHآb ᄥ 7`3CWS TXmآ*Q$Xl,v8 t\̬ F1. 34(%‹?~'NcFh~8i*|E0'ꝭ@w2\%I!2fH?^ _B,a6١  ([M=YWR]Ly])f@,#E-*\'(.T;GYn`G>= --=kpFa{q$0dҐo+m6F@D <h?yui=> IA*j@>5/@q, G2 @N1<0H@% .(52Y X#W 9'ͤ@{sOC) ."(h9d[7UȨr;n = *ikίLf r½lzbLxez$]}MAya0nHa;)CxSce縩A⹜WGEP{7Pj ;5B.Z T[Ͷ(ނ>N9z/V@MJ`ٲB#x[fax ;ms+rHd.t#"e>Z r% MkS Z ,r*[E{s͍DR/AʲzηUD8Ab@!  BF2B6r @T `x |c 3{ls\0`i~|3RTXsl$@YÒ)&X^KOUMܱE~5  ^gyj)4$(DHg , Ua#9SPɭWN>GvX9mٞ=]^.j H;iEȒ5:( |A)bSF`ӌ3rj号ys|6$tLb.)ĮKab^y7TgoZlITwq5y`~P"~ދ# ]HJ/=g^6Eh2vZlep΋{C;/xmH\D*$_WBKWٺn.Ou6yU`2|5;8*ɣB @ %zgL#HsrpǷ񫃹wX,:DbT BLR-`|`Žm+){l`s%r% deI4oX]ҳ@F>UZU*0P9DUdyׁq4g}&@L n zJ󐄇6n"]_ۏHi{muOȡ1 "@f5c4Aᰡ[n'(c%tmĊ=_rW%d^ .k<}UK5\7ٳ)9 UNuI"]0T.F-#&_͠ZƺPF'e%Yf.H=aA`-]{9j4T(pԬ]q]iq߭J.kV^39ȤcN=v Rv.zvmdEőD=E>;Ff$Gjy7Ch VYTB4=iOW&? KˁDGf:KddI| +jtc_=[m2 +KLOrˡ-1Wm PhG?>X%lMr:ԱLUb<4AASͷCWFs-fOEvJrtgć=Fx FJ|8Co}Pxt"(45έz|V,\;<>0Y^/QN6Eya j~dzZN3 #ߜfyjIwrٳ2Tң0s|//F8lpvµ=xyWnR8ShO (`` ذ_ W\Eu#<}Nv{ikYkm"Rqc+C:ɕ赢{;~݈ې]jzkI8uD6k1bN0dҡ8r]5A3B@~1BQwշdॷ뵹K!s( S5(KGjD%<(p\˪gPC%Dz„k&Ek Va0S<#[p)}5AAFCx#6x?nDC5 6( W"! )> dWjq _*g OHMϟ0NZyJBi`S1!\= J;eF.@'emVH|/\ )eoPQxLe~ײX!y>an4`ugUZ;0pVWu1^+G'Z塾d{{;|1 H/\0wWie6ŒH:QhY9RD1Ku#1++!]5y_1D,l-/m7HYţqg :e!<*Y?+zNPXyv\PH#YNJl^ ~If%RO#BL&]t't '3; 5 2&\<^xgMVŘZPOn+6B12o'Vt*wѻ5O4o9xB[BXzW@ j'[Gr> _ީ#ClX4 ?B^h7#G烟|&g5gi@J4D, `ɫɔrMC1b@6of!0.{K˚\gWelX.8Q4]^ޒrifsc/9qZL J -1]Ұrlqh904qksa@R "i9Qt`) ʪ=ox@AKWy5 0@DM rP.?XW nDV"\GWQX0Amx2?KxAkN5d|,ߓ+d~:(²5C>IǤor Bgϐ8TB8t kK`K!O~ Li;[&[sqЩ is#+eBę&d4iD, 2Y̓J<>sSphu`7{y?D~ OQT%/kb{db8Nb5{y } H!7~FRiL~li2 }IZq_2|Ӏ1_IK@i̋lzԲ,E4!<`8U9@9t0s7qۋV?ys[l٪ -V Ul~ z[wV/*s 6ބv..ō:=<+ۭeWHK翇,,"P cQw Ū 3٫~1}rZVV~BB}x0}y90Gm|mh)AN~ !f[ﯯ}l/eΰ/ÕÃ$P9QX Lnf76:RG&}VzQpp"|ːWR?5[! =lHI PѮZ t9*B*H<ӽ2Ťvr/ 4E]~׼f<hgí=otQ~1,/[޻ ` 4s6"h.ֆN{MO.iOs=?Vo\-')!#@ǯٮ3peR1 Qlz*(.__nF<8eGZ5{;-aPDHohY &ާǮC92,X >ˡnT$,˥I>jF3R*96Z +N#btjzm rp朱JQ).QTNu*DѽADIrfau| ui+KiU]06-pNtW:*1\l/h"GjG|qjݣtv*~XO-upM? ^{$ ߅JOCP`t,!Rܸr<E9pTCy?F.?+R4$\*pW?5?pf\Tf$?ڹE 2)XK ~DN)?S5֔+C*~GGs#\]F!+&hz"=B UAy䋿#x\|pQ0'Qv _ȟ/Ŀr>jAoH<Bʃ $}(}q ;y&U %}2Ev;ak2”m~?N lT+dmSVɓs6Q`Z ɔFZfA+~%az1 |׮YL "澨\CS ~-S!#†ȴ ʚŽÕ] aw8 :%[03]{GǍVT@)Hq͉.2؄?(tI~]MT +foĀLuF6pl[O_'[`!c=CAo4UW͆Cq _':( S⧋;xh^ h|ukS >l9zr );ܺt,Cȶ `2!j.Jn+oUzjQ~uk`tOԧr sxJ!0G5|.gHCE$luU98gƣזa:KxuD$@'4~M(1A,-D.:,T t3ptM]vɔ d~$uwDD0G^]MêaM$?tUkt>,>T P!\q;J?^KP"DC_v\J_t\eEz>urO Tфg?mtˡܹ6oX3QXNAkGL?8 /<{WkcJZ{B`;$fB#Ǧ0CςrX!_@!Tneh9+{f>n_f@)]ezיd `A Sb 'n@ f_.v;vpIzss fOjzBu] 첨,LY/HbU~{=TG,@= _;z6}*=$pbKb}VxME|ΏOe-zFJ8gx/Zujn.'k0uρ!΃wC,PζsүOrtRi6Jna/WCi|dcɦ{Bv9eõFƶ}VTLٟuRA=;pSnlED-${ËBA=sܦu$\[^`9y"yax21%MXfv;i257\.t[2FVee$%(*\;`(A+žbso$? t_rؙd#LD"菡yۖm3N❕ a5xذS,_ Jl C2̉DJ)7={#(bHK4(A y3* [aevjc nK~my'" tǯ>2tt/1y0+-9 t .g\}xGgفѳ_?]>Х-WI(!dCoZB-nB6S*NTZ*!8zcdusj ^3l" Z= p,2=ng];I{AS;iXGiNO+B&CSB)d~A8A%ɥ@02}1Cfyg<|Ő Յ6oK4EZ,QFOxa\$l0_A؏ A}Z93n\t!T3D:2FjXps P7v&ڷ%t׮ GސhlKsz2wUsy([;d #kfsT`X>zd/^$L|-6 &lU'pz6 Ba|O 1K*yh\W?îqζB8Zf>jyUԢ8dL`dҁ]L5㋣ƛTJ1ֹ˿r1soǬb pQ,p5UCF(+2 2ŌC9gs"vGiKg:6dv;b'0cWʪyQXfP8 ; +*=,^} aaK20 LT9!sYʨ5"LH") w9o;e݌W5#7(΁h9đj!~y?DSN^!j JjE} f=aʐƓP'гf\cg7yלД ?<~Ջ@nF#&CT1L+up9ȐynU `~q56R8D[q~Kk%&|{w[u=: Уo.7J}rI|آ?NܨJ"EI0F-'YXbbʙ*"4a}T_b.#JGgsܕ1f(gq "N Xvn3`H+6bl3U R ] H:0F 2Q o}\ Mޟc寪cc.\ _5_j[ߎDHq"i~Ӵao~/Ejcr$8[{I{Z7 wv1AmT:0BO0`T ^4"7\E!G_jg Y}~,\!SdrWA.J@P?1$]o'`ymGsd+&L^@~jlfbADE"bx T+ b lDzfG{癮̷Ʈg솸1 ,("DlYTCS@Ɠo16$9owq#k޿AFrɬ2p^{եT/g|+tݾA !]i[~ڧp}wՒU$Y7?e.)Hv))Zv/O@_WwcsT=5Y>h_.pwcqMr-Ce=jOuۆ5UK0OF᪪7Z'UEi  3/~}ǚMB|yBBa|=|^@8"\χ춻\jbIwm-QTꏆ浨$J 1V8L|G4(n IPc*0?Ze@s?F ?'/ :23$2so,ٸK`KQ%rI(Wis(j @,P(fæ/ |m #H@M7˫KTB !"␐s5 JWgD=fsJLI.r_${F:sdZtc,N)N, 8.La9Hk0 TsaKiP3$xvw'vD3\,b P DQ8zg"@Nd|P>pd8r:AGP'LY7ES*ʔ':: /V84쬮u@M-KӅ1 DG+iwXBYzVB|,CB.G; BpJ}3(e~&e`Gމͽv =#`VȳTGAt9|OEk/Fy )]{YB"<7GuU2-4P#BjDZt8@މρK %8}3^^'&VdGfs^,w*~x]M0$i{ppCJ Ƕ>S"3i; ,~\9d)uǗ4ǜ{3E~Ǡ(`L[F]Yoޛ50<8[!">N3O j_Y@>KW2"KkLOj41Q"UM{eBPѭ#G <n6b_`f&`2>vw^7jz* ]3v$u#ox}G=iK(Q}`#1j྾05x .T%`C9y ~1S $2N?o 0l֡,Y^dyA}Ad:}_Inw _иL 2<]b;N; dngr}d!XedY嗢+SfGB+4&-Ts Y~5OX|yΣw/Lht98sHo9eXyN@4Z0ypjY߹k|8n< `!$Ôu@rd8s~Al-!Py?Wek=nnU Y$}ev)"dcA|(OrX49a'"Ӟ=lCjg_ۈoy5%2VN"~Y a-Q}>fa}pR qn{i5a1a6[v1 g8Cw=Aؾ==h=e jjOJă =sMJ ]~vUa;hl.v;48kc5-_~#w4\Nf}OjHgӒ 2dtWXxT˺/{^QkGS Hj J#SgJ<.W+H7H2\d8}ڲ|{fNjJy~uj{t%f]'3D@)W0Its>f_b0$oont9=& }yWm^ [uGԑ8xĸe%NZRԿ2B$Sǃt#*,9>r #ᜳ $߷yH"Z\r#"oj|װ<}V _ V}yԍY" wi~Y 両.,&sypat۰:NSCQS@?IBEw\G4#^.A_pȴOXL%OأN9רmɔ\!̟B}È] nC,'fZBd@%RC/Ss>RC~H S@0&E$ڗ,Zm[%3'^3$K6ȾJ[u\Iو:F)fKqN| @Q,(BQkE`ZW-[lELIE#QSkZU"|Ce\4:L҉rÎ- 9},k|DUšK}2Lu=Y˴ qQf碇5W"3&# q/bb'Դ $CfeFJA٠ f{@[E[ ǀm,}x;cѭӍ`YQуQ( 5x~+:b,t=wpio!-:ec__sޗTA!ܰ3{6UUL^Gi-A췑a#1S7$^ 2sez|)u^/˘ IH@B"qcbf8_Qu,rR ~.,p}9l zm&X/79>G4>o=!{~4,>!Fp0(@C>wKw= ¨ibT^Ec[Ekfo{\ RL3Ƅ <|\9[[`mlo?Fapi.pDDc/~46EFP2pe1)d6,}]nwVp5էK;uoΣP|cWٰ}66ڊhFF`T=Aˆ61ƶB z`ݷU#_z A J@  ۵o?C\<>?̐70, 8؀̠- ~>UP$G3/8SaHO(# Iq_mh`z2.t4^J~NjZ cxd㵿iLT'(~U 9s0)9R#~_+pL.&T'~7mPYa''nѬ o?1r6Q$oY Yg"fs>@\_c'ڻ; 8k <Is0<uQ]לiMu1\#JT~11OHD㺏/}'NOl+F*]3V.o '  N{?u,Z2!~v ϲ_۬E9P=v]м#URQG}ڼ{dIZ%1x m4 xo7 f(&vw)~k;^p&:5 X?gpFtlXQ$t2X?;"}+Nݠ=L}eɡy,.PQP@ibexUk{nH;Øč:" 񁂞yL '~r̟T߮h~g ]X? S F:~Y$Lj@#9}2>5&EwEhJ xB0̓U`%60V*Z \_%\ =#vN 2xȦequhD~5,(Bg{[@ %}{uS5i}״@=DssҦHcɔ!iEFHCn3,/C[xsbqt PEHqG+I=8$thIoc}`|c(+!ϩÞ Hl[a Xʥ8kojP{4eٮeJm9g(F3'Ȍ˶bQG8^U2n.`*ɾ[a92֭n9h>5'/izC85%F*bnfck 0mֺc*1@=0gW>@@&O2[H>?aBAok=.=??b4RrvŜJGJ85?Vɣ<v AJyYH^g izv2/UZs])o7W@C9DBL=6|90I^S' GoVvYs|YT ejΜkց)/1l~18yǘua﷥>=5r=bzGg.] vsgk]W|Q=*<X?!^4w6.2Sja?wVÜɾL 9APM4]Fvܶ׺J@(㾽\v +#(r0 e|g\gI$:Ro"3>4f*D}A(>k1#A ܨyOmk39P:0sHhO;c0s3+k} h11t-y_"^1o Ή, 4E0]R'/V697ij!ݜfKwު[Lab v+`V(+\>IOgcBhdm?\ Y{t|'sGCp&1lZ_ī#bȖ~Qgʸ /թQ&o4\ wdN|gk C^ ȅ4ȏS kz7C>.D Ą\;0ԏ)H`4M˞ LE:^2S^&&-UJTf'zI.` <b)ƽ1*9#K0CtvlN x8 %<8qunGŁ r9HuȍGCOرX?;\-/4I;^- 7ZxQ5﹘dzx27rV! MB^\o/r+_ssp>|?: rȝV~\ YXGL^v롺"2B1<*(aSE5H iww2Zoo kTs#5$BfZƆyPy2NsO}VH~7oЈ £^5/<\5vؑ ƞW{ f`[xC/9rgQr 94A`}W- ,E}>cW94)ar e.Wgr7 ꞇ2Y &u}5 F88r,@֞3ATsv})O1Yuh]ZD8'ᄷCq`H`NlO:,D4iX*+uVo5@ГLܿ@ @^7c~u}!R.iЊP05B, ~7텈RpdEg[ $4Lz"=)47a_*7hB Cx}( !z&=&﫽GFkrS`JBj8³cO7o< djM&&F"37Yin)xqhYl8F7"ZˆP.aV( !pF8p,`q.ڬ<\_Mmca9< հN0۪q5\ǀkF1 +d낵nPN[qhwAd|z|`]"59~$5:< kCb nyk}3GB^<F11$eQPz&[V^v}_Jagƣ= H\sCv`;^sU\Zr"giĤ 6+;ȐGOs=\9Uw#~,#;ai ukJiE#/O >1㨠!'!iXҝ ySkk7Z#W[<9߫*cӐ0C8^*aK/9w|V҄lQtrw>/6jDx'~29G#Ș=Buq}nGϚo)S:~#5XͶld8.NfpJpv >ʸ!Umqto:Þ8z]>d:f#zsHoHapO$eƾ '1r ¢~2nE>x,pȌm8.͆,Li811jvOdpZ ['3 6b'> xm]q)j}%KǕ}@Z::yW^1zZy$#ļ#G։$8\5rzۻNw"K ˳8$aq'|p Jl^BDVSƹWޓ]!܆^j(=b ˹CSδ_(|=O|lJ81w7'񦧃MrWuxpl s83:`1猄c@#֐M "A`R ,^Lps dG[ s97$͞k\nb\oD2,4]O UO#xDP~O/i -0Ya$k"c.Z%W}f$C\PXF94;0{|#BpC*Lp]TApǔf`w"o׮ax`B5̀춥b?K@@<$ѹH* x?!FTx]i~JIX>3Eta >oA+4ߋp0&c?α[?3t&QJȲkzk2;΃B-{m; A -"eCxÿg=>L,0-)61FP>'/1n/$ |@-""y+Vh(:Hz`28grǯzQYljrynhC򹣞gcp0El >7PW]X\4]aT༖cIɃl]Nכ8b4wdܪ=K[.{-䖻:jG1N 'ۏ(fYwG{ 6X s6Z4SG[Pu>$-:KP?09uDdB,Gޱ6qL]j*.1)(E|= +*'^ )eV4 -z @/r314a7y\,G#'njkYI `3KldDKW ..E@!/-r&)Yᚶη7ٞWA`';mWSa{./揟?@>A#c?v^e.t(8Gv=ĀZ0sgdqթt]-F;g6fB>SS"tBO熉5YfݩNG$ˈ.DQ/tQ k 7:-j2~YUf<𫑟jc{` +-{~=:?$05ӕm5tf)W+.17|MbtvϜMGcb6;FHl\|Ң.Bm*ѳj=nm㸀],ʭ (9x,=slڒ}$?| 8i) Pˏ!$X Eub\3yd3-{C1 5DLFPl'1?>OIH%=?G3& e̼^1R x;` q>IN729S%"җR?m(-SS4ۏacB]CF̟ 1!P N!~EڮpY 151M(YX 36$R&GC:Zk`?]z˝H+ˢ [kFOu}#OvIO$FT*hکR)!ɫ0GE.yiyD46~[94Uu*&#Fa\" f|n1bщpc: )WCNW۳Ǝ0Aq, s01و|W}¨Ț TL"$f|h/aoxaI7HlOFiIMo(vQS\ӷn&8pIxPt3]A%ءň='{!drE8,9C(zDCGפ;!!\ΉSzTAy`>za:8 9bn*Uqd%cMՂ`lB%'f93oC₈Q;ў=z|%ik;!ey(,y`!IʦoR%]~z?݄q'ɵr9x5Aþ([ *B|o0c;VEr`Yc(R~Eق Bsm66DM&EeR?r@KO.ۃ-/]uМ|"pQ <ȧ( "德9yݯSdS\8Q$;nSC9BBq! xj'C5;m˓@)& !Å5gPwtY)#)n &QTEv+K'p“O8 +#x[$7G̡(_ز&A>7$u9"!E e~Q!8L6Ud?LNaٛ#>IM{ZccKJF-IUȷ kU,ŒpQA4ֱ6}$)FU?jSK5 B?C^9KE7 bɅ<n) /Cu/G:8v%/̷)#_V`>LWت2$â\*L%_%@}4$j6nu"$qFtY>K8}}4š@/?gXGDs"%C97gEdkmu  a8g\Z!^sӕkGnWa?6g+i3i'xT|qήtU*>]AleAl.5KҢQx ׃9ިihۛl*c(Κ_m6zMg-S|n*(/|0 d1Y+g89rU9g +.b@9 %O4Ҧ z4p.:{[jaP[-"0ˏd} AI@.һ׵]{=MT2NHpyuF3 idrݍm(7J1F/NLV^:ymvh4?!לNPًwy@:BknN*aݣ8;ɝo(DQì0Q)w\⾲#_toV6=b DD*6B,*{}H7K1DHeX·T3|A W_݈/z~$H6SWg1񮵋 L_{yZ ,RGVF<tfӡ't8UX3A*[0䔍-5Ɉ+U2/ݻ3>T a!? YWIܐo uu`'NJQGP}B-G𔛃:* *$iO'O XG@w.3~d[%03+g*bnkv앿,boAfuO{̈@p>0~)͗ǧ voklB?HD ?^#hѪaNt`:b|HbAR13{_xJQ<'lC0BŇ 4KI8)eM" DNMIk ?ڛ֠ >IqDrbO „ I `|4~ϡ+ɬďH_LQ 4Ay 6\ _9؁V)PUb~TVZPڟsК+J":[lh*8:d<=7XR, '+A`(2oI(啸'UQTVt T1 wG|tQh( @6~ pd')VWt?WEߩyʰSim7}9WWl~]87{ӟdEF:'7]odѤK^d |!Abb7oǾeA^xWڢw+v 9u0B)==<5)i6*:0QIa`4a%Ņ|srMqY](.ߥl7T40!( ͕5 v%T( 4z3Ŏ|t9ﻸ־ $Fwy@? !OP6 zTŝMi*\1f UTL'"4a8d@ɟc8%erT1mk -#&} Rs0ÓrvB3t)M\Oͧ¿f!ߵ>Gp_k7̓Ǖ#A? |7v`;䈲6璍)~i:wtxQo&\mg'_М!EsŖܤ Dx.pwAV:Y8@2+?H>iSPo~vuv8 9'ZVzF0O9 y<БPtoڛtm +_VO';wmrs!<2w y|`jiG:A<e? We G3$h/#_L}sY51Az޺ɐTG}ABcv0\ VRQ\feQU/tR뱄(*@~"<h{<ֿϿs1\÷g!vuwX t2<-oci 8+;yN2~-m҆KK~g䶚u@?)|.tUnB9>Wչw),8>>3ދG9ǃrAPvI lϫ:%G%~ɭ'4cykƀ2iNXD#Aqvx3[ :K H:|1~, rZ9#[/EXX39OB&$zU{,<|}Z^A] `e`/Y?bs`F#/am'ݻk'vWag:{B ]g%/Ro83Pފ)>3ӊu>Gr`P.pP^Ym8rCGօspsᡸPf!$ kE, R ʟx[~(Zˡ=@" ~ʚ||~d[ y0w-O)ww*{Q925<#3FЈI&-}}$Kk/ǯ݌.* B Kbs"S&!LK>IMȶo,~wr-R;A?m1p;[Wt xɧ;vXXK1^,}M l}p'-_Ϫ^6:ek Z?FǸ;t7ӼIR߽~O\⿖2:LE]w*" КZ|evwӏ+O%9zW'ʚ\swqJOoD5I:!CK%c+_a,'.pDuUn>>F`Uwd?7T/$dvh*)#eAyZ}cEOTlۯ.5w_p^]l?m8OV9`M\Բ5j?J_pʜl6:/qwbFHk|_]wD=Vo޹{!O}vrOk_~|t!:c\&“BumG﷾\H呔mup`G)piDg 9ӎO sRŒ) 5f UD'c޶sחl,OHũ}dH1贖.L!/P$(gvlX3&׽U<R %!Z7:f.< =hRe&Vkt ε:VfҾhK-'&kaMmcd ίp_ 5D|O:{+ kK?D\(7CW騂=hwFV#;vFl >n}*AV߱^50qZ:v/a yǘh M?,n{PK"u,~5W3wR}C.ǿzgU|8=aCBӨFdy-eBgtWihmݶ F_ZB[J#vfU5#dt[g,z{Jq7 z3T.^L#*0Øg0#j$ GW^7E4ُɧ: fat< tp/-z,iO }|ȗIgv@"s™N>_ZGם2N*@>\zPs'eDEl¢| iuVoh]9W #ql ?=p"Z2M`O,v0y_Twvn=r[wސm1qxz Fe9oOӗ'n2M*ʫYłĜ ;|@yazoW".3n=wz6~¯n4Ej׉ApNv[z g%5k]P}ly#R)i.8?(h4lnUY AREo E{2ƓN^Gv&j\5ƂZb2U$ LE!()) j?v7'ṖK݇X~?2%>o~A#dHiHFJ{o,X Xb2L$fS5dze;k}ߧXh\osj?2`_4?@'fmc]φVww~`׶q߫=#dG \ME U/4BHUU!m`^>%Ps׿?~A'󯽟y}ԟG$Ζ>?WCa@łHpNdJTp=_zw_Z߽@:9!? ~39>fd 78^-_ â47W!㘬P>CI B7"^Ih)C;-r%gH\狱=pO!{zv^,|w,& 9ZYZCm@8L۲6:RN]J))Pic^ %VIi5 *rUؠ(3qûLC8?Lwu3)eP@I  cNs =q3PM#Yo&u*˅7hpJs6@bmi#Qa_bF7-8mM{swfGoOޭyu " Dq:5Ϡl'K_p &2E+e # ל'*~7 Wd$HHo2ˮhI9Z!,@uYDLk$ t@ S5a@ :=QDB(Qs:@`o XӌWC`}RHi\KeC?CA#(#(whY/}]i;)K\byAp(8se_yÇ47b~r}Rc?CX\,="fX !|:\ ;!a44Mw8@-ñXPp~{LOaU#L B lb>q_/k&ŰEIQ*9&J V@n!B #AcU֢>u0$ &O<'t]1)ܓ N qLsc5q&T[U gK2%CFfU(=p\ltԬErhqФ7+9Zi s.+wzQ*W]LtCC--K˳bMNn"ud"g=z0GE !4%V9k{c*:\նiy{as.ޑTWQ|'v27~[e"sTZ2,ȥO%xSL_Ǯ$r(vD {Qܫ6h$Cї/cZ܁CVPk]s&b⿓P.aY??i+ԲXs>I[6gU: