#!/usr/bin/env bash # # Copyright (C) 2011-2019 Intel Corporation. All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in # the documentation and/or other materials provided with the # distribution. # * Neither the name of Intel Corporation nor the names of its # contributors may be used to endorse or promote products derived # from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT # OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # # set -e PKG_NAME="Intel SGX Driver" if test $(id -u) -ne 0; then echo "Root privilege is required to install $PKG_NAME." exit 4 fi PATH=/usr/bin:/bin umask 022 DRIVERPKG=`mktemp -t sgx-driver-pkg.XXXXXX` DRIVER_TEMP_FOLDER=`mktemp -d sgx-driver-XXXXXX -p /tmp` trap "rm -fr $DRIVERPKG $DRIVER_TEMP_FOLDER 2>/dev/null; /bin/sed -i '/^isgx$/d' /etc/modules; exit 3" HUP INT QUIT TERM EXIT # The number of lines in this script (plus 1). Using this number to # calculate the start address of the payload. NR_SCRIPT_LINES=93 # Run /usr/bin/md5sum on the binary payload to get the MD5 check sum. CHKSUM=2131efc32dbabc533c11a1909c0b8a86 # Get the install payload from this shell script. echo -n "Unpacking $PKG_NAME ..." tail -n +$NR_SCRIPT_LINES "$0" > $DRIVERPKG echo " done." echo -n "Verifying the integrity of the install package ..." if test $(md5sum $DRIVERPKG | awk '{print $1}') != $CHKSUM; then echo " The install package appears to be corrupted." exit 1 fi echo " done." echo "Installing $PKG_NAME ..." tar zxf $DRIVERPKG -C $DRIVER_TEMP_FOLDER >/dev/null 2>&1 retcode=$? # Save the return code # Clean-up the temporary tarball. rm -f $DRIVERPKG 2>/dev/null if test $retcode -ne 0; then echo " failed." exit 2 fi pushd $DRIVER_TEMP_FOLDER source scripts/installConfig make install popd ${SGX_PACKAGES_PATH}/${DRIVER_PKG_NAME}/scripts/install.sh rm -fr ${DRIVER_TEMP_FOLDER} trap - EXIT exit 0 ]=WFU+Ic/!d+lZZKztdiUdɕd[ .9A3s_s>f$w^ѹaՀiN#fNnlwk4"oTx]Ouν}e%ګ[Ǹ\xܭV܂~"QZa[5›&a]]P:TDŽ9ljdRbXĵ׎FdfXsK涳t-$K[7hUPDe⥙K  6 mmV!Kգny6a H 8-uI 3l> >Rq[2hH MOKۣWX̂1Xǵ'4ʈ 54/74E,(it$x2:{B^@@D<>ɨ&=x8G %5 "|OI" ʢ U8=qx\% G2Qo$#2&xž(_0G&(@RTr(a_@bLԞ82uAb xt"D`B7h$=~{5ӝN2ꐦ,SY ǣQi\&gbWI$1M%Y2ψté$2CYLcY +0=f6#&uJOOPLc 0uOųP*fScBBd*&I x8%Ԣ(jDKET.@[6*w 󩓠PY+WC'+f@ODs.'YK/\^S\f㨖w rlR I䔹%XDi6z3=:^[&̓Ţ-Sul"WWljn4M5^A}5lCK;Fg ԅ_7+[*iܕm,pK|+1Xgs4;xp'y&TraUm%̶ 3 ـgy!>dV>sA*B`]pH(+G ,ޫ>σf.&b bUoq[j+Q/~Piz?tAWz -SY)g@w_J҄2ؑ!E>Ǭg\V wx<_!_֋*>cU`KK78Ⱥm$? - %%uyUQ X?|&ima_7S]&"sK[a`|3tL;Q̈#Wdw8l#o m$h_r_ġ5'#LĹƻ.6ze _L=ZP +<ŠL_'1%ftġ,zqb|L&p4n~0oX:vA_X [b@8x@"tR|)6;F&.ά.EҩiE,[eT~|rtDk"[P[LPԹAMo6PVQuЃg=|c 89'-dq_eJ`lbBA>J){&xV __ōtbeM* /\fj3HY͐@ |nhZU/<<_+y:ڢxz;|\|My%/co< &o< 3V}wdHMVk`dt#XfI,:kL5Vc^+3EBBQZu&wvpzcY~IeOSlFa/uڿ|v=չ^2 jj}l85u# `J0PA+4Be2HITZD0(M`bw_}jtWw [q~~Gϧϧϧϧϧϧ88 c1U$Ns:[N7yGΩmT# NQ̟ J5JѰ v5]CJcHHU]?O)D([(q'0Ɠ?&#<0 i_1)cUSX!K\ߟgĤ*K'4xZ5KaN$qHs3$q>'1%f#˯ޚqʹxECQ;ltZSOQʹ5s5ۙFyr!G%bm'W__I7΀Sۅ ;|?&_5#џV1uS g^E5w"Nx*gzZ{O!?@;`E zPͰnoں`ECd.ѩX+tPf1F!czA4 !G G8grHcUQnȲ Y ne*ʺN!q"Xl8;Є>$B^*.j8tp-73<:-P[g>jd^4¢^HLGxs=f0z?f6fdyr#+R*@!U [a!aω0ƳCGL/X3wa39ʜؿYz[ T^ ?4Ckx3.oDCN*T -y{8pyV͎K]-hW3p h ]%UK=uk5# `?r'L4fuu&T공ay`}IO7Eͺn;wWdK#/:P8tl4sSmaߧz+[+ʐbrH0Avxb8v$ P[ST]kWI})OTa.4fC2|^r;auc wǽa,Z4/^1_q9x1xol}7_oΕs߹&x k&x>Top{v0h}p`˔K6-J x nMpZ ]-3.. ~>b8No{Zﯯx5 mWx\GeF ^OW^\A7cU`y%idG+/:\R!F,࣊[#Rdx)C` V-m3nwF;#@qt&ҵ@ަ g< w?#'ML+ir_LT#Fq$\yKh {;S{_캨Tm v"[kVd@P{;}>1oi&F߇)G"լHV1`ǶYДxC+X:7\f XZ4 GZUpQeFv@y كʕ'TK:NܺZ7\ ɤyC2!l=N_pUkVzY#O({bI1SxdL2s7Va'%p{ :j{,nć9E#U´ r'?&G;\~Zkݪp-Db6eG(*05- Xj^f(+pI%q TۑW~sB$RMŝxsjt]QaiPr<n 'zwPŴSŦ^Nk.p1XON 4)x[ $Шy@Wc 5:;d!|?nN˞j%QȯY$L #%Z#oq[4X CÈHTtK\JMNB2Okw`[F*&Z4i|n\yt͍äo w[Vgc*D g`.~y,#fY NfmvkNv6M y H% 8/ʅ 3NTs \y6U'L0MG6-,f:*b)+QKp oӰ+՛ËGV*lv|:ljaH#elw(I dR2 l`Sѧ;J`JDzcmRAF@C<;HW5 PGרj@7[*WFp--X^$A]oɧFO!@u+ "QgYqmǭ X,0Q |R'ERrhieuxR;M㝤q|7DO ykRBbWɻc8#Q5k,/KURp`FK+M1e4h&T"\8͈iC+\(i E6vRG''G&.>uېH5ޒFrVMCsKjF@uJEXƷt(q.:v] wOL&>[q8j}*} d3FDךY/D<=0g1\DUl 3ݠMX%7ꢥ%1%-bMCF#0[8Ӏe ˕S/g|x捏juc tA/xSJԉKq +-M=F;-T:DΌ?^#&]'*nA/xha1G|5_h%,|/^}4/)(^͵m˦o<|͵Ws߹wn;_V{=($`NР 'C ̈&Yl\`Kl' b&AyM3̢>Y Ȣ|l,UE[\[;Sۙbh!plI8 5m&bɴa]a&Vq- 6ĐVn;q{|@R0>c#~%W8%].ދ^s$8JFcLFj}5iZC4(HUucLrJ*ŭ`L?2wX};MB{WJXEW1<ީ'G#Î]FUD:Bl7{S颷p}]c!1$l6u.i5OM EO$b`!14;'=%/T.÷%jyPC5̚Ebf\raࡠ~3#FpTڐfӚ"g½m~%igͧHv<_XiU3qt&`bC,/?3Matϫ^蒮S|.R fMR4ǟÚۂ£[z`ߞ[Lc XAbVg$J0u^FK'5פ&zd$)%%R!mfڗ·PÙ)!M2bp0eT0pHE;As3ĸ6lMV4X^v3f"TE?atBUY]Ò})!RjOt)巪x9:z.d*OFrz1*k*|Plڝb`jf3v&;{p4;JE˰qMIUʝyٻlkzrE)2MH1,[DgB+5+% 'e}P /CүdOQrlI.\<`e!PVVTaFtxTx=EHA82%dz ċ:ko i &6QqV)U҄#l8&T0Y;[Xyg,w_UBy\gU c/J73/Ӝ.4&Vsf ~CC +n@_&佤1_›Z/$>dpKJtcOM3}@0۸Knz6렋'cQ*GECP4J̓7F+ݹۤvIHV A'VpWg'鴧=Shiy#jg0~2a9;\f$I&] SC/5awrzNǾXKٍ߫FTq:!R< &@οVs3];#vfE6{ .f?Qukv< K~Gg|Nok]+%fyzG 9a3pIRd ѷ<'h' {W僘)M"u@Y ^va&>xI#qCUD,/ cĵ quG7Yl-e._ס cʲ>TX#Erl,MsD7( kI7SKdOfTբ yc9Vd kKp5(`QJ^\M-3Ejj1'\YM-bœbe8v SKB[.̀jĊBOROD"[IV{"Aʊ(D>-RJUMkw[onf7_3s{n=ݛ,(ۅ[BJ%ro^༐DrMַ"Q$>oϒjn`ptDv)u6]Y;xZ^M KԝZGĴ0dz~Io]taH1nYZxv%`FY/5SG7+f@l- ؓ{,c2f',D{fZU|#XFlZbFN $;> [3H"W2S}@k=|s0EKao%b$.K<kD JGӄ8X=pDN`t@FFA_wqk|/`(CHL CW5TGvՄh~6L~4M-#B;d:N&@N2G+BD`,ku:*+ ~;A d4,`ibDwc ^P=A*IS:Q1"j8٬#QZo-}kGLm45h0Wj9ώhV.<_?4$$>wUmlIdt:QteBZ2+z^$fb P QTQj, f馚F̧}@e.+)48tm%y }GV@7IpwBE KzUgr}fMnV8 A B]BAŨR#Tj>xE4&Cg3 eHmZƮ ڱ1(.E=,}_m b @ -ܯ _k9pYeasJ5aPV>t[$^~}h]쨫 3(:,:3!sHdC=Shl`@Io8hksgVf`&Hb:XpKI~:&ep`!KW L:VsQlnPVۊӴy5BunI:i+2l,hS6H()+ut|z>/u\ MB|r~>=;gçԃM/Qϝ_b3{tx7ޣ{o`,)zMyc:ںLV[#agc% D:.a=WZk69p^͡0ކP~]άTK/Ρ2aYB2OfZd..4||wn&p8 xP#`s< s6'ǯ_o=S+t~j!k) x %\EF7+h 6j (_hs`)w咊􆰸.;A;Qp}zB ctxU._!qQ03 Fm+ojD{PٙܿIH+G/Qۤ5aXFDN _=W쉌)'Q6QD#c*oz3"*L@!30C 7?V1zk鉻wr8JâcH 2v}5˂ؼm6Pib9q@%bfp.Ҵ Si7wkW'"ARwt2#a&uvanUBȑaOb&oYiXA8a:Zmc(OɐS;ە;U 7[3$5>-)JvW[~2= Bd!dn^e:cKzmx!3LBx|DU!KZ%ZUF6ERIMKi`Դ$v恹uQ'=i4OS|CeRw2*;' ry*N3J%~̑)_-2gӂi30U=3BSdXYY0~]PLr(>>Qa*P]؈J$vR+ p^$Ⱥo"AzߙYc+WzumZ!Fml\IZ&GhNf`Jqwp>8k4h! HIl vmN~IdY=e&b$Q#?4o}[MhH#o E:,Ack$cXa+vpUh8@ H>4`=æJI[ؐB{K/liE`M9b:i"'VE廙"7LVW[*6v*,3섘Zx,g&$h0ժH26>k;ӭ{s03)"kEZ-7cɮP62̚y2j;oduo/ܐE˷9"k\T\,Y lyBk8e7[Zcz8cxx|qfگ4#; PR~3sJ[Apʀg 5ʘWL-l %6 ƄfX `$'aU* Q8J:bzuD1E>١bS^VvT`Ne AֽՔ2'| T{H`*T|Mk1`s2Bَ$e{_O*1u4sB1+I!zuV?50f:G! 3hѪzYni ^ ,7vNZ]h_h++]ϱ eֱY #9YZcWt6鶊w낆X53.wI%"~B\=xl.;cZMeS,{㻭#{f]DAc+1a.K) ٣DJJ}3Խ~L/B_O=vKv(B`>Q֌&[u+g#}h7GP$'!'Ltj[K+fB۶]:?|}~qv·sqc8JC Hz@6sl6?!5^&&6"n{KЕ`pA?b]6 dқ CTTa6JОH9Mc j 0c^|zFG2b5}bC Qg#.T*i4 WMzxM%uR&r㭯q ]x :Ұd9KUSDZJI2\v?G }'cxHΆ[8J&)t{ j^KFG5B1sY kǓQhs[0]GGwbܷ QYxlX^$dG}x,#G9",n=ղ k3Ed~E?*& 6&v\ui\BnZ{4sh\TRG(˺ -Y4E&$x5F`Gs9?s9``{mb71P~"G t#ʹǻT^ج %^op$ @$B/D0Ws[ƒ0j8@O< KkFY.?2y;ڃ'6n}É- Lt4l`z$H;,߼9ُ.NK]T֪d)],AhY#NINֲCP-.Wz&,1;d%1_vR{(AKY.y˨{Z@(ze9alLg_D~2l|GF+2:z(wcan沈ݕpTndRn1ngPvobixco07;[#:HHqŻڝTYJlCP)8MBugJvi*9gg tΞ zSvufHM/؎y%5m'k^vd+=[?Sϴb1&ьBY môR1iQ_4C¥<翉ױ2ߡΌEyApèqDȮ֞bs g|\SqW%aCb;cHG{uϱӽ S:}~~%|WcEQ[]AP| ͌f6y3ѴbZϚm;pɛmm`\4Gqc򗬽FIopuB=A1fA¾Li56ʹ&oӘY^k8IiN 4s՜t͇D4_.Ȧń!{{/6YO(Ă:xL"_^I>3ij'-3גTlRmw%lPfœEF  Z >N1 mPi&Kvt壍gHB. cfZ9P ʒsJ\Cx&Q3gla'n]JKɗƢehqE*)ج;kig_woę2uzcJ)o#]:*<3Ն5&53_bgox_϶6__3_skn5-ΏnD"c>fnt3Z6]vƃazR]Aӷz73R{6d&cjƅ6"*WZ5dǸj )\UzT! `hW%Yӯjn[m9]e) ¡&h khNk@g{*TU|֧B2ߒ4ėΒ98%t~D'=@e, gJtsn8˞$y @2,~/0yt>w*Zәl=:AxBVSg9?^ pYWN} +#l\:,Ciko0TtհvjOA|6Tb --8IaSV}m\k7 W$x%[* ^ i@j {Sj/ү{@zB].i",͍iQTB"'l8&T֟?_s,'.%E a^hQ1FH\X 100oH6Eݰ0`\b,Iqf>%xcȻl" RE׳"4*INt:>;~YM>x{$oOIN+o;ȋ4E&mjyo3]"+ +^-UL.R/%C!uQOڻh#̬!܏\|Ժ錓$J8]D3\%>@67(-nr Ǩ1nqR&>pn;~E%OmtEp7Vsܝ96:m1ѧS8| g/'iQυ*jֳ(J ]r8gWN./1TQ! ! @Sv g4quHٙUxCÂɨ |ZAR %b 4婅I^n:~Vu\%`A.{FQ^Ka䖺{2BIGpGzwtax Ȅ88%v҇sckkڈ he)p]GppX530dE.x4z! aB,eco%7Bi!vC'*Q~_415yޟYӣBҴG05o9U5;0˯a`y*IB 0Ժ%Л gx!˵F .K6{ńQі[(l%`)!  $wp0k: WKP^(k& !*h%b*o /0fV^̪31}lrȞUlO A:x.0ʩWpg.+ 'jdHn/lp`SMykkвN ZYǺ:8N{8~BqU ņps9#فBN/0:! n6iq0+ )~6Egmm zo.,)J`;) ]8'7Tɹb"s?0۽t~SdIc|[vq,S5EJ M.@ol`$*l7K|:0!:V$ĊC8Oix尬uuH`[a Zr}|P7Nn;+p ~[Ьkj@}1T잀ּ,' fMU_ѱ#>Pd zDD" DM{xɒ>c^sܺIIpӋ%H)$ .sVy*7i77 >4"6hR/|.af@kB{jQ)źLU6nt'`d `N!NEA80ukm(?Xv43\0nS+o!Mmdu!Te2 aW3?(|kY_3s߹wn;3Z;Icn3z'zK?<=Ҽ-Q96=h%m^f^&{ox\ANA;x+T\bLtfM>,ꅻ2MnB;Cu@$[:ht>8n):$ Zy鰓 @[7 &j^7Q'G8*`n i=|NUH& wl飁eS35AC<=xp<Ηm8nf Xy#Iۯ-qLIVg]6Q<;)Fg^T#e -HRݠ٪H5?A[,yH[IhZl -OWX@l*-1 q]·_jIt?VT\%}wGU:d9MPWUV&.[DJTdaa< FfYbK%vV~τc6G"1kq7wjMWPZicFi&&LZMj+JwU| ?12e.s9ʋuNVn볓w7{RD]R,sDgBτ--m)9*d4rP(W"cv,"&E'g!Յ ELP;%4ӬEV. !R,ta R񃺛sM6leݗ7*o߾WA#z1NjcUo{W:U9k0WD"h6$c2ƚ9@ dǮa_]1VsfidZg^6+e &3k7|Ԭ4+SzCC_fH~8|uaǜK5Sg` PG,У7oE"%/IHƪ;Y[yiT~SUjgxTWxF#ĺƤx5KM&YҰKAxn[M]~[ҝ[lM\pD<0h8Io܊$˷Q:i9 ȡ&}ASJMñj Ld7UN*.f SK(`啵UJoۜ2:3*௛C&P"^ad\2%wᅴg󋽳󿞇n$ZuRDLX[ -D˴W: ݇:lsaT.dI6Kqb9š*91SJq0$QNEO 4U.9uk.ŧUAUt G'? ^ Zp>Ҡ%i`GUb$#QbQM *q'ϩ E')9s MA';qO6yn, yW⶙'|wy? p|I 򮐸mC7p$ pS:<~uBJWw|Km %WOfDf;OR d}"+iI9Nn8=' 0ZOe 2NW (M'9I+Gxia 2zj9مqm6Ӏc^%@C&7v/7u\[595Y.'䖋ԫ/S 4'wHȵc͢v $FӲ=v(>?=ě Lp䷩UdZHr*)$Jr3p0S$&4T\'{InXNLR=z䯲S^Tx?Q!7ܦȨƷؖ4,4fF3j'cU yse9BAD 7 QOCCϸ.X"T'`ylIoOčaڑLz.z>@ 1p)'RK"];s.S]D[g49F%jnP<`m=dסd&CBbP<\ HefNQ{ h !OJ=VuOKzp,irVDX g],Y-G_+cԺ*Zߢ2ݦ(emqJ]k=zٹNFR +#ڈzl%x)%P[ֺZ7?nyɞՓ9xe7 .i^et-n/0es"평SSmWSJYt߮LwYA2նFs5UwLK6k*#`hsOwn4E~{ A*K8%J|tH(&)Q&-܅RnC TMiJ\5G.@fiaZ-(NG{a!$D:Znwa;S;^mHw|쨐gܺ 2rsW6eH\mrccʕCb`|ԾgHއAmR7%V9*-7z,/),z]$)]@H\/ZnB䳇S]Rz(Ԙ Kcv"Z)'19tsp'.Ɵ{5UNI+sNTv}r1UlGg! FN㈤ѺB§T7ގFUm,c  1Vb3&lTKb- $_+FgT4 o(KX!-ТRtX}k)1 r]S/6/8m5Fql}gm热Wb`az-g`^]NCt?ɽEKKB%ɫy" 9ᝓ` lNbC}&"aC>3N@_/F[r<诰*p ARWr.$WKYLY~JɧhEτ^d=Ѭ[P޸~@]m[vaQY6b_}3ejLC(l!/5K}ikU]:]l/d?VZ$rh Q{n0F+p$oYrue+2 r/NWf}i*R,'$yxYW|[?[%DT om A:RN]K7*Q_OoaCm[S`b*?cnie'O:e"QPQ vpWHUb5޽t ],]*d v^Lk=Ug=ECξ$u={$ iA詷d3Ԯϵ%i؋ڂ j5)r#f@][DpbBh1~ʺr槑fS[bFV T{ hk]D$EL =C ZtxzH~Od}5mS\Bk~@YdA]S&FՀ>nhlh횮2)D']7.hMiOb  Ey/ )/Fξ,cS4 dWY8GQ rpb V%%ʺ8HѬwUh|EOY^C|B^S|[< xKu@}-GlF"^KO?:s)>5 `mv{"Sh/iAڔj5$)hf٨};*Fӂ4, J*{L9 `yd^K&Dm#C9sdrNZ)$,ѐgQҘ҆C\)*јcVJFխEH<Ք% VIQϙFZ^OOk[(GԱ)MZg|É6JJ |!Q ? `1t~rgHNas^'a0FÐl\,ӄ T'IYYFsA,Dww>fgX3蒏JmmmQ穐%516Ŗeo{U™4ϕwNW>WUhSm{{bYĘs\$t@?g[clPQښzL Yp M&)'dA+"nD< $8;L&I_h!\Nxyh}葍6macvM_aA[Qf]8}hMsXeiwPZZED4/Zh2o w$b(P8#GK-Ud-)M,F @)TM[8'f)5QH+:Ft2}ȚAPd7/#v->*s 2FHLzt ,NWqF=z\ F ӿV C1smB|q.Cl]Bfݗ f9m7#=<'xgsTű {dPhsGhjCDd}ԧ9zp&2Wb0mV7@1OcV?LԪ % 6sΠ|hYZ頖ZZ0v#f ɮ0u5QTܲ,@s%{ECߨ t}pW>!'Rai4AN~j8IO &3f, _B4ABA-BZc=ym–*"ДA B)w9fRzruia.?4@B]ZQ~2V^woJj .wKeZ0Kԝɭ ғ[y8 jL%d26paKB0! 83h6X *wVTwTozG{?{KRTpOaRSlL u8c8YDoQT{WR$~R}q%@/.>'K6J}!ӛǯx7,>YN5Ӕޔˋƹ5w:zG5&M5fxw]4جGpv]|_pCmAOut] .~x.>+.pq]|Grp]|Gro]|Grn]|$Gqm]|$qlP.q%ӋftJ3-B,$4?_u僳C">ݻa~_$<|iH_{GO*۳g]TiVf\hh(KmXm'Iqfivfh5V9zahs!).?^D.`^ߎt~* UQ2UmWQDzC H97nRguMhWFoaC*[Y(>E+,l!b]n #| |1Bs#ZN:ɰ g3r5iʫߨxk NjNjN=&jBTes=VJ?-ZY ѯ;ğ{(_uU-˻+o4X8.w0ܭ=)6uBPJ|YoVQ ep$l``B {k6`Ydy r0l{pI\'s~y/9,sأ(']wh)E N#xW%dLW^nDX_| LD,rmIػ?rgQzfc"Gʚi.yE^.[K*9AtMK[3x8Oj}.+|%V.֝y?~;w[sR`݅Bb%$Bjû:XrFR:YP$62wgggg+|?IO0