#!/usr/bin/env bash # # Copyright (C) 2011-2020 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=becc7bd0275ccf95d7d4d9bad4513255 # 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 ;wHɮ;d[;8qroӓ?2ۯv♻{g޳AKcG_:|߿݃7~>쾪X$*,{=M kz{OBVnV^}ww{Wgrs7Bsk8@7ܪG[vZlpf,ɩv <T٭Nӷ̳mXUf͹?Ð[l{7?‰?hǻ13=ײSHیDc[9"LXLhָn !aBU>DKaϸ_[A HDLZq -0Ăg.f Hh; lfܷ 'H8OAz2;ܦވ5f)[R#@A@"i 욣"<] Z9 4B@- QbkRX0&*tQ|T/W(Z1{6j{'xf_ ERktZO D/L+ƺ}^*Fg*Zf{R;U(X;mR[;T xlmuFj*qO ~N}:йElvp¤3J#/HUvu@{9Kk +4\s8dsT}\R44:2YV$VF듊KpPMjCk^HR(lt`)ӷac3#{\*iag 95Ƽ5joEͲov4Ѐk .Rn)C@ b<ُ0纤+;)gƯ?+C_TX87Jr~ m[,'(R0v &Oփh} /ŵqEA?؇?<9c?Kg|vJ 0T4٩xoBT f- j^f"N1v5i`OEFh[P8gyI2Vcl*/@Ii>)iYlƾ1É|H2 7M4?`JF 1fxF1+8( >ΐsbj pz!AZy0 $tZLf+oEJT1D]W}pU12Z]SSލH[ANmD\Ƃ Z/pݦt/fHLBtuTo_ z%Zd?9 WtMgWc$x̦_r`(v__~GiGN^?,$i5d,)[W;*FE-ңBHӳq?m)T-cgK)[<0ki*+!~nW&{-O(Bne#lU *^6cnx$!<p  )X"q0J,QpSpq0rsX|gODn S3`;]pm$:I-I)MTFM7|6oXtԾ@vr„?PErHZI/ J3 p1WSf6PX\ҁjbn9~A0@cK%^ʿ'xhF.aljY'gdOװxys.QI`fM..Vbi"y;dŠ=$YU8`RTp&CM=?j,Xݙ|FM@!Ӳ7ţX熉4[^yWR9L*bc~xa0Rgi-օROӏ)+/-Tz|[WA?оhEXK`դ<rWT d^,q SEk3/ KM(il# I's`Io iYayxV;'ݎvrDH5?T! Df\ǔf7 xin]l+̵Q f;8壘֏Ħ8'(vxjM`W:tb߾3,twb# HEٱ?No+jSi(6-{yr9FBtwc6pFWi\afqHv 2 Ƹ\ZX"vSy+:ibU*03nl1pT <˅xI#YJV:wEaH6@0ӶQHs%l$)>ˮi5A$k[}>FpFyA݉ F'k2b9$:[GRQkȐL= t]? ;l-#_#|DPV~4ZHֲP*'c-m!q=D)JFS6Pš'G.IX%3-wi(p2t+UaZ1nr;LԹ"2AHƍx:ƎxdKl"#΄': K1ɒH\%zV:]#(`cl)M MO1XDƓ,?[PYHbPA+[:0Qi*DkLF Wyj3> xXތ!v hrcXhSLtI(}rsptjiw\epH}΢k/Q:qh!2L@y.qnKTˡҖ 92ߴo8P-vV.A~(AO@cv`0(u.:pH~OF7[d Ƙ1}p9ĕ3PbQSNJB ġoϞ{\Rݣmh>[ybauBؼ|M:"O+/'Zyڣ|D >f.I۸kGR3ҁR$h{ȟkJ~v<?TJ%JH`&hSX NhQ8,ve8B re8͠W.%❩h1a+zTZ:/^yr?/?σ l˚c@Z@ {@aB@9ysYG i~" ˾/>4c>㳢Wp[Er7evw=&H,WaKK`)ڳ~}vJWzMQ[{Ӯ=\_6>o).iL%I[sӣ5&ېw*L,a6L-V8MG6vs}=BÉ7ӃqJ \|\W]HP%scchӸ8֘[zLSW:^ְ_Q Ρuyr`|ͫ+ucwBCrtMܿVӝBD/HLl} {g>D0Лr*֚GF 7:XTtPJB𿨢/ũaQ%l9Vf=a9fUp1L]U,<ЌW<ܗ2'&9G"F/Th3  wO=OSn!'QFueFSB=MaphGő M҇>q$`xW-d91 xDhڈGț[ף`iRYp $ygn")>rϢ*]sfY R=OA\uo^aUM,2VhtD)j^a=4RŅd:O| (tnǜdX@T!.D9u#6+mg6d.zO\mQRK3YB1Kq /nUDgn0,^KLdXn#lu)u(V@t!$9G =QJ:-v|@tpJ67Kb ;0:6A+=Ә))>BJ/ EZ *}x$k"n+a9i6_9QEMMV{\WohlW2 &LD.G`ZiFPAل;x.\8Eg\n{ o|CN1@ՆD9۰@v̦ ǝf>(+-##k[F&"mXL2eRB!$!;k˅`xC <;2lqAd fMP?*?c ,2hcSwUF-m0xhYf`l-~>.-޼z 3%S-Ɗ}Bsds>e;ep&ޗ5[-ja6ͪepxIx VhEj7lSWP>",- 6}M>墆r0tO> tpz஠0Cҕ"XcmU@&r5IY8IvI&Hط^M8jNK2Rpu౻Vޠ&4Tպ'%#%w.Kc=\'K`Q˾)HUOB5IZJ;ȏ! E- @J fuy~0Ds>GhrK$ԫԶ?\\2<ƎNQnK=~׃V^iIy`m /,-aO0v'Ћ r 1c;0ǀߒ3>!$1e02FE`7<32MB/BoID~]{aF} q%=+8znZzx(}o4ŸOF!dM=41"u"6a2 bs=Zi 3bXoJFuȸb~g$ C!?RU3ݸ 2 K~n7jVZz74ŵ^ pƁmQu܉!y<`xgCݻC 5wÏV^K]h8Vont׃.mSTkpɠ`T X!ݳTU>&GAΜ/. 1jط5¼911,/$CF03GffuPPy)gj"B1م1(4aS2"yZ{Α/JHQ8y3 jMǦ9X xpja5=g2H S l G ASh4lq qՃ&Q@_C҆"FiI )(e}k)w @B{6iި>ټ(/we_̊i1uKf o6`%a4⌕HE #B~R +vs}R>8F/#\Y-ߕ[\g {=y}ϼor>5-<: N覆_]Eyt;b[uu0m:8FtngK\AUrą6lPh{xjېeo3v"(6Ԟ5ȕWߪGۿjhO0l5k( ,)A{}owG7нA;}C)T 3xOWסwZIwٴI?1ۢ']1F[\`?isq?F##I_ZsD]ږboEf2[5B f1G5[ vrtfFp)1~߻l!鷇wN%'q2MOȧ`Ѹ 8rF3 {RQJ*!cn>x:tΛb+Ha9itT;3a+#h7*!Mx`j^0N%o׼IN8۫A;Pdw] ub`EOV(x&uXdViEAUhJ^xVXEa&2D   "25)m}"hAʤGٕ؎7ěA"j ɹuDrvD-.+GNvRr&DgB'9қ%FB!6$F;h"R d'I#WЗ_>d`h@>kSfc@>#[3ځ3r"8>yQV۫1)0BGsrUR;H~ގ:-~5HA| P TNo\yyAi#&6X=n[q%FVo{`Ui`ӠNօΘ hxqhPzc`H6c~,Pxf<ǟF _0]@?[z- @?*O*+g2kYߙ_dwf 2Y,Af 3K%~60SMHZjzsо'k W/VLGvb 21۝mH2:pr9yTOOhCs|PE) =_0WY*Js?$ZխZ]Wo'@&BڈG‘5 jy8⢹9ς3,uLIa;jN!8N9M C"( ;d<*Eف KX{c B3:^u Qڹd9\?qd268JI_n> !$1O,QÆ 'ڪSn&\Y[ona/fPYdT^1M&F'[[Q4)1K%ZK;݁:PHYHK6;e <=<:;)~{Gao0Dq%S]V = fD-gnJNSJE</JOpRh-XF&>$K RLP Olժ^.byF88%(u@+\$`RYD=R ɘh6s-@GF_b~PomU<{"l4οPEϓ!h+5µUU3_$QwqIr ^<96h!twV%EaսT򗙶* cɦqtuZ(ݿEC&!(df:,8bI?W} %܄3f 5'_,ܦ/I3f{|K6\,Ʉ;8`xلsm4GvJN9a8YPIÿ_śˆxY|d'jhTnŒ7gpa;䔜x fi~dxX:B,Y)={87>Fx] E9TzvC+>_=>{/[0F}d%*=)WOMԥqi(ckFQXiWZwkM4W.~XyM`gғK?܀`HA E#W{G&hOQ>l <:>J: 4Op}PPV.aiMqyPO< yԗӿ'j]O!&`.yBqK0a>>Yp{$yDS{Ds{D{CXq*i 4; Ñs%b`ZƁW"6TXx#uV3xCn0s3J 7 ` lyC ye"Paubkx)ê?@(flе_H\<@ jh,4K:sS0 T?.u)JT0{VfDLdfxd H!&[WNI1El3m ~Q뙨e]"_|I8 H2r(jrP&I@8NArtҵ")9ݹ]{ƙHeamm97T]F}` s@J6p @|a~k Ә3H`n#>uXxhB %S4GHp0"8yL 3hκ'☃a+3˱ cdi_jw1Y9:;9}eah 2Yж ۭ7xg$Y1'E:NYvtq1)X (b `j MnaRW1L aǰ3RZuk3g3{f=쿓f~p l9nzCwX>SoM3l7_c u|ؾJx1A/`}6=°y XDJ?<=`Ng57x_O Ԁd%98pfoLڒvEʵ+wK0~mOU+LU+T+BdnQL쑰b djv[-#x ޸aa9䦠m 7OU] ϟZ|T;q!GBr铲(V"OF<t\BLM1Zy{3F{Tx1hX), ]nyeg4+ķ"PNTҐDh/wdQ(v18@CVŌ(>&[!V!K('K`>3|*$7ޘm8JXVdF6 e<5gl6V3ʠZw^ɥ2xW˄YBhT]{ɬLf[;UZkg.~@qԌe7I!VIEk<*nW?fF ݅x춼 ѯUrWFF=NZø~D1 &&D&şJu7>m s%c=pmJ6y7Gb/5~2T4QZ[(w7Ϡ @mEU%^{ke@-o[[(sphCs*Px*t y"ɒ:x0BŪj*Z/8Q+\]ȏBb4+:UPm88;;^',ݑP<Ѱ5뎕 ?Ѽ Z Y,W6zd̈1g N[+9+f3of7f陀O!6.UޡV9_Q@u |m0,O+=38|`6Ls/$v* "U%q5FxC5KWZE m"0i:xMQ7zR4vǹ;&Nd67Lbyh"cP ¢_q{Gr!g'z2%W(nk=<P.lWΘxׇAaGA *Fh͑ ڤW@0eRj.XtlM$l>+d< Tppc~V~2tJ7HCXakYϊֶdx?idfOV $9 IʜJovvȚQ`whI!h/)v+%fFn)WrozIńD.4ԭ֋h)j'Qa4$EKXC) -f3Ϸ)4pjJH2X .᧌\CIHJ$e72{ʦ%ԱuK=~IOB'aY>cjزY؈TiK  #-wʼn$OO!ѡ< :FN MSXMhYfwf3$[S`8=HEL y͈nJ"(}25Pꓷ^@QMq;d&1ߞdG3 |}EQx"To߿z%#"F&6S7+Xv1 Ɗӕ=?hW(z^[G>ju{2<kۧǨb%A|w0}2NoQpR}E"L;Q7PCv\"<|el{q\U$L)s#<UxAC&wV#j`o"kU(H; qY}ԓ0ň`3~{鯆A:m ZqgPYVD>$ѻʓGTM Б~\Xr-A7%%ٍIP0^&6S=89>7oV9x eF+Nl9+Qmopk{z$1UMl Ǭ Zolꎈ/~E'$a}bgI( bG&r%WIP w>pjx¢"c{<~X2rVʳϷȶ/?Y]s+k+g3f?r 0G9P,9*oSPtEnONb˕U)nWRP-20FI W)9Fd2i/ε>}3"4UPkgz,/vk/jn|Gt _W ljG}͞1Sf+jz YY\dUyj)!cߍ2^- Cqԉ> 9o$w+KC2BOWdW+ [V9Jdpꞷ/ڭw5|_'\_?4g#XijPe# rap ,A_X=qf 3bz\BXX 籁"v<&х*J{RZD25g XFU@6"+2n(u~&~ AI^  +b8q+y"Xt_Bv\U-,eΨتD\g|tXWī+WoJ=G[J4gB8g|.ZHCN?+:qⵔdixo!ᶍ Y\2xmb(}]F)TZ ndzttgxtNGi\G!fNUSSۚOZMz^|-j5[94ar,VϩY),~fVcuLT|\fEQ+ ]vsZ?1+8~碅N߲͠ywb _o?޳lAS9uD{+-8ƽS6fOzw˝ NpU) smc^'p(꙳GWm&v]{c~{C$TDwjtA_`NYTްk%Y >~BËhdilӯP`.81J(7G~ݼM&=QKls |(6AGKN-¿Mߵ|fߙwgߙwg߿?7mf&Rcɗ}/=eVF tUJ<7P9@ }{* Ȝ'ӂY*T[Uz ³ MAuS -C?k_wk?lr,n=UM9@PwblPH ]K9oVMg%1=d/-vSa<7߭A|: .(Wڍt8>r9n{3`W+|6\j_BٳgOωQ|xZåxQA<(& 3A'US\T㉣"&ւ9if[P40f9\v:푙s!_zmۂY`R8oaL{(+5ҍC8@J707/Cz^q@wvbƺB!KLĖYs9"m3s_蠕@-\@>A?x#dwbM} MEx|i"3̭Nx؉,& hI|Bz2`BB BQlK>ksJ b;1^ rk {`-sf{PL.~\D.Ӟ"ȓ即H 2PТVcad*oIBX04P-k$w ǫ5rp I|AM^nxQVE˕gX[Lˈ> i5#w]Nܢ=fx!0H9FQ Vw΄?MN- {)f!#c7/{Աۗ9) r9d:|4]@GuA("S3F-%aKIÀ`!{3ZˑQ ,C!-(끃(9RhLRۆLTr\y-@Z|m%@He#gfkLdKSv\X4A]ԁ'a֒L'' )NBp\!*鲋rtG%s 왊>9!DlCQAG qb>d17!y Sq6lNo1ZdY:^wtZY0 #'y{ w \[·'{*d1촠-;z#Fysj0kU\2*(^Ԓ3.PPP2brxyų7?2|j߄#?$sfY:28ߣuP, -6q(hʈt$c#%\(zW0›d.j7Ig`u_;R$w #?iS>8v`8[i(kp g%c|f(1RڙHA_^eouޏ.=뤘fIzo{ZR)QG!Fk-Úg\!w gí޶Í8"2=%ɔ6@7Ț!{6 "?o/Ev*pץSLҜU]L՞]b.~l͛&-+#A.VSN|ah7J(}bf+f//AX>#2@͏x&$2YЁFZi_V|WӍ jٖxׁl%%>#BɺTTbgA4ZQ@~KC[j5Qw1E]oڨD DtfЈѪBBPuwz;q15Fn<?~aPCE"T o.]R4-%P+T$PNhf'58I爽[2DdC[z0ׂQSɶl1^F ZYQ0j2vQt,Q8kU9{ [KSݙ WUtơԊU${hj!*/ r̊̔56[\RO)R50+$7QɡRS+YGV ?{nOpdp]93Pę%Aόd|! k ABVTG &ι3SDe՗>N d/p@ a*w~/R%9w$nTHsW8_Gyt/ !"8'Qb & 񾗟It!#<Ȍ\٫` / Ev6zLD6zGpZ~ lRkRz:y/~((.mÔo0LUW?IѬ7/#!'׿0~A_B45^R?78x@;{'8NL{QC!mⰸK?~`a~p*:z-nCllPj@)Ng=t.ʛ#ؔee2BC<`q HeD(XFM9b ݛO?y/^XЯ2!KՃ<h/}?!Z/ŷ]3|K` ( 8X/4>cv?O>M|23f?3g3|7z]|>ןVԁy^ ?{F4oGĺ _";`(hI:Eŝz;z|9B$w)S !sʦ9f_1)>Wy- $).)7|F2%eX L)"vsnW pK!*RuK0)}+=U9|C7[b_w؊΃6:z62ʢɚBS vх84m.>mwtc5n+r7nz^](T_I[5o8get F#|f(WsV*NjX$[h^I;<ƒmspD>q3v p3$*&-J9 )BEC1* 2U(G۠|Vc1S,]TdZ)&v+lng()TCWŸ4wx0MP..Pk#o3}LbD#2'&jHQ΅WVaď*& I *7MT`v[H :)h/<"`ɜb҈aj ,xaԽ#R[ɉ(W-5ܜ# )d">TAfRƩ-aԜkbnk9[]P/1jBxƇi-# As%Ɯ}]7}W$Z㤐%%QƋ$a|Ս*qZaC x042b=Q|O}݅i[\*}}$!vV4T恶n/Pim|FRqK%2FU;<{ȩPP8 ’ՠIK tQt *'D8h3qߓv2^_󸉦[ũ ΋/N+Mi~^r,mR_RH&"$vOov08'Ϋk 7Zᶦ,F^,S^ k=M8,?I5 %_YcWކ?1eyLR-=F[:ruu$!`0%oEN(*! 6YG6/%S)زMQ `Q퐊gX )kpTr}~\w$$ɗgzMP ={ #tʛH*;D;|?X>k$i<Jy\0L WRxѴjptll+*ެw{ot`J^Q5 2֭hAQ JOiokͳP>ǜ m&Ax.lL&DM:8YAn= A|aL~Ǜył/Ue1oYPok(xv#%/Κ x%cW=\O -n!j0zM%7?8Y ~Bx*OC΋UdC:Beo@0 + ؾ*1COހr]/ B9JC w 7DA `Boۘ}="]V;j;m8úV$=28%Q3< ]N0A>OhׄnVnVPam*Urۗ)I)V>l 6 R2 }ʯұ쁀)q&AE-c鬵 :KCwh2W42h|uR[bqv!kv$`Km,=cVW%YsH~eGd MiKLTr0y"rksY2 j1Sk4+6E9FJm%hT?u3d_)*.wl 4;7t?-.!,_LAv7MvC)jdɪ|kY{Քb Lc@jd\+oO|O4*Bm}+2E<(Gc:\7["1tP)U 5PAP>[A]9|XmYURXu*A ld+(&w\@2 Z!a x5xg$S2JMR}ׯ2rQJ.?A7$4A L ;9Ba d݈ErȢbS8-om,/aMDbRiúgZ!quA\> 8buT%c5ƣD!dTz1ck4-~N~@I=?d7S$o!МO5& E_Q$ w >Y99dĂ:#[TQ)3QOx,1W Lc&뵺7^聊X:ߋI{W.]6 Af9,g"3 085THn6-Z hHPwsrSG'sð,"R&qH-Ub+o}MI#o I: cDADN2 6NԱ"d u}t#ypq hJXluUNc%E-+W8gdZhOc9fj,/;t;A{ܣKk<90U'ޚ7ίzˍcl]kK*Xr@+2sV6c&sL˴ӟ^i`!0uK6&=҈g.ae8"p,28@KQъ"v<ܔUfҢyPA^x#NvT^_,qN+l&ׁ&2%< l!2P+Kcݮ=F<Gb;Ȼ;M8I 50Hg(6CM զޫ"u1aea4ohľS r5yq3%-V>y&F*hEtK/  ~ >,l@Ȼz ]?rzS[a,KQZYːeZ&wd |8J4@"zcayGC[0xk&'>L"5q`@ QxA4:%@*k[Bf]KeiV 4n[^z6R5+1 )RKT_h\}Xj5I1XEWbJE*d`PsP2ߏK=giipE)>2@{$o FHM,QFx]T %TعސɅRNmWEWGǵqj`"B@ƕ^Ljx{J鏦mtk]C*P` E~cJ5yl/NwhFx1_}/\"`wwWз =40ϸ֧4:=2UY4*x7) M[&&vGovcJ>?D8 ^}QC3>a63J:jbL.3ȬqҊI=q#S& mֻ2d fÙ2H|I'k߿0A׽S߅Wb/véWz8j-V0n&2B:3+')PKnj"Q90C+^&\>7pZ8Ppꆝ} _%=2ޥOܚy/'ZM&Ohjl@y$"^d~.y([H~3xMѫ,'b¨/o0z6T R?sNg*&}rM<ց8L z6j sʓq po^{IݠԒqX1"R/C!kWڀaK8w 8J=`MVfAf{ЭL`Vh6O3Ic\okiEgJYIy<_gکfӬ_x3fI9 *%UڬDȣqV6 VK ՠJHj$|sIYXTeRZJ4 !Qc[ϝ:m\*H#_Q?CO)m1?&' 5Q&%puZd a%[Ć`D;ݩ: ς h 񐴶84WA50e^|5O^rʾKk9z'ۛN\>h/ .J& q}tvX3܈??{?dqSKCv[W )#] ON `ٜP4##N BF3@T՝ 1{C|3ai}t2nM3L\&Ӕbm82 ;LTc#/'Xpn&O,^$dG:<摣*I6]y5ZhrJoyW/AM#`P6NG(TsYɄ'!O.!]а'Fmcl4W\m H)XQ$_zz&WTi.?/IzA[vd[%al&ig-[ߞi'It):7Ujtc]9M=P~j%#Fk̫E1qwX].YYYYYYYYYpἇC­ ҙ_t>3$n|?}o@}|o+peo;*nomC~FUzU=_n7[cV= lGH@F* ^?ߞOt!9%?-߾/;%4WcswU񓇺˳F+֯܏?7sy62VXD2nT] ?b.{~'~bn0*wDp,|bͩЩʥx~~~u˫ s0% 4d`]xHVuXVEj=۬ϑ5:4k}k·&}k7eG깢\L@񥥥o t + )V`E^ 2ZdsܛLZ!I2p!;+.hB`=1&E[Jc`[@[7.;BE&U}(5E'Nu dVkI1$&C)6]XfHkMj*cpC@`O @6A HHZk@F %kAX=L&ٰ5Mgi0TJscN[ rÚ/8]5ipnoxtOvָ*HR1xNDM>(L? Q3qefo}SZ׍) zWĪfFS[:zѾ5=ϖ'nۃQ-@-'OR?q? %ʋew:HbO ˭h\#i܉⍀gmܤɷXgWT<[xqK-.u70E(X ~9;F lثq|c79߭xps4Aj뉴#=%X {;톚i1;127"pw?ª^S?F )*lG&#̑?X . wo>Q=j^Ohi/Ǹƭh_AzNoDb\7/[fu0"%X{x(7Zo+apw.6-e#Xh82דhA"x-̈́[7l4tt'؁/E<:-xz-!0Hu1P0 _x/Sգ˞q3.{eϸ}'.N{Lft\ {:&3pO. Dd=> ,q1d-64PH-@B έa~Qn 'n:w`Co\W^o,rQ{-\^\K&%A7ի1'3J;sjȗL«vkq?,>ڪYY]?#HN9W^*k['/@I&Lo![uh t|>!\F,;;Ό>3>Xlh0