#!/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=7afc042c10a97b0720bf570ac5b822fb # 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_:|>{߻o{-^w_ITY3*߭{ϛ=ܬ^}T7oXqoU+!> 2õ"vY-|S˵=y,[;0ϧoog#ۤ9sf!nl ~#8wkcfzec`,ƶrE40Zq+B˜녶ɫa|&% 5Þq0őZ`P!,\̸v@oNp/%d)vMk8RF0aD H=?5GE yri慜 f6Z@,(2ׂ=7 oQ%`MT2j^P S, UcZlp+ ~OjKi/RanK_=n5贠3諧A^5:_W4uLU@@U*S;vΫ PNw8:AJ/wd3v8U x:8Yxްj ɵTnJLtLhٹUGSe 8m+8Mjvh=O3jT%VM!Kj\6a9i%І@  ;v[qMRv]6$4hp@<}:T(7P  t6sIgn "F^B>r8@Vh ##qV\YG9oJ.R5bS5PihPuHGqe(WIL=c'*ՆX׼P*ٮ,Ro`vg:NsGTҺ~Sh sjyIk@eRIhm\R(HeǛ,xZ auI?VvRΌ_~WJdpoK۶X߯/*A6P @f⽅ Q30vv{=8M"E#?Bc{oAAH&1X1 @"&S&) M=(HS$< f3NlsGDiiaaS2rxM1+D3YAaߜw윻n0-ScFxL Ң̃QN b2[xs.R"!©2D4W*P( ܱ17|p{GT`YVjhGL!eD|[9A-4$f̈xr4c1.P dώ.jGLov~ٮQmS>?l+@`{L 'I;Rd 92`dA3ɄG<=Q~j0Sh~ U$f͏V=C h~ |99{>` l̸-En5fء6rM9>hC`;қ( "䧤#90Sܱ&'K/ǸHC3ݖ޼v~Uu`n ];琔fbQn¶ ߅} Z f`zeդ 3c#rnJ[7&Q@ֽ=ܪvH1b\b2ĸ!3Rtqc!Fă݂/ތ` -:ƾd#5X1\1G[uF$-`Л<[\phM2H`Oa9zO*׍7ŷk"_-Ycl 'IɊX v3Ch@!S k&1^)VHq2/~U*ΰ^!f<¦X\/¨W` X:dlK|<A:5Q GqO@ A,+) @ՁXl\;.";7bcOs_~]@mOU\U(cyDTw#Vi&*cFx)Q! |7KY9P5*G+2𗃂޿x=m8O}1]%aUX$5.W_7ʫWeg=Q׏- IZM{"|", 1FʃՎQDhA6lrOBaʷUKi,xxZ~JoA^KƴA /,4|hqوu3lJW͘ =Ip,O45\6CJ%9HϰWl :RbeiHTHW @%ĢRKrv!2墐t= 9#R۹c-$7 &i\ p|#\K;(3WCBBiydd؅"X5CtrZcRY8E҆54V(iDkD2Ǥ]ƗWX츢ELʛ,"1s__Pa; fRP>e^PcP.ۡ^t'dΜTcoM2r9ׂÛl"Ay*kE&bF>6 H 1% WFћY:[$*>e}mwIZk3La '/g 4z)8/[S6 ;L Q 9rxl/˩x﵀?p<οȋGɬ5rr-vb@\ScT,HיPr:'eIi q[He!}M$ sq(-DK8o*yV zKu] j&!JU?|V l(S9unyvlq#><䯃9p+op)/YRn-Hi,3ɲN,r;R |$l>6INr,7 /ezJ)HS )h2?$OT"pahE/7LTJ@>Ӏt•rߌ7csA#C Zg8ڔ*]:C\l=cǜ,)Z@28$p >w@gV5vjܗDȸgk&<87%P ZKiKAMGoZWecz ~+ cx'1u0uyy:} bH]kB#ś|-2GhcE>w8()QYwcEbзgO .6kk-<0غDuyl^&_'ÕTYtH-YG"V]EK3$mܵR)]A)  =Oݵ@I%u|E?[Շ* GaPr@%{D@$0r),r'TTRl!Omwf+ ETG՘`yȃ{pu=*-CX'5ɢά.'}ڄ?%}wnϟyr?/^y.-|Lf[`z]jz '^8J͉f̛ "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-ߕ{|g3ᅥ{=y}ϼg^7Ym[tSC/ʉ.<Dϭo: e67[m2zS O[\9xa{S*%$(l:fHkrkgR-{EE$>ӚE&+&QcޜqogAAۗiJuUrKoBiܥ1{[45Ҡ0#Y/ :QBrU#ʠf i.+٣{;ޫv-+{Kl՘Ws9_>ϭxkTNVm_A=w5녌 /Mp]rϜ]ns:%ZҠuWZBeRo}(p}vGmHmm;e\jʫo_B5'Wqs׎^Ws6I 5݆?M@p V# _kQWaTyvu?Y;pBcӚ3lUؓ؇y9g*kG{wh:q)N&=MryDrx\Wt mK1{ j°>0,eQ+ Q1ay|ݔ=V6VـVfU5.&H]slA`(b=-/Ցui-ZX]#kV OY*pj_p)¡R&di@yT覧̼T J°ϻg|0n[hR9 l}5wEm"T96H1W~ +Oյ{|f&g&gGUz]vu`@E1B5^=JUxՎti Ute>'- =^|~ʃA:jSEMNΏ*<) בjEv!5Yh vE9Z7"TM[NJ=a~sKɼ=Ǜ-%V Y5eZ/*?;-DzVlZ$ʟm~Ɂ.ij#ӭn.\^@ݴ8a Nf~#ȑ/ -9.mK7\"3pw!3ӣK~y9xt3Mn A`w]C; V|X8'~0h\F \9#=)(W%Ga 17NGOt<:́Hwx4} ^Tˁde{|}u0V/'Ēsk^ևrx' Ix(2;A㮄X:1ĉt'[+zA{hvf2p"Ԡ*m 4%/l+"0 cm XJno4ylG eRңJlGMZ @ h w eܺc"Cr9;#W';)~D9T"d3pmX]a#!Rw `4D)ۓt$+u/duV20A|G4f BA5)tP c$YH9BCNa~/t8TxG]H;KBDhTvɽ}1IbcZ[" -GdcLX$q>O=W6y# 7˳W%1.?K ?ƴƛ9*:<`hK^}e.^@٧)k!LogWg9svVd<^(tDޣ9_*)$}?oGnwR~>y *O'漠iDE\I#dwX0*4~}izL'qBgL4D841BK$1@aK(<3O|WMZ/ .ǟl ~Ln 'J<.kYߙ_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 H8fH"DJ4BNӴ'l2yNt3NJ3NGbkkxR,F(d4W*W/}^ BE{X]]V!hEs#xX~DCԀH (QطA?2&@ҭW!E(AQv+gJPOpEs2s[\lHـeN,\Jɴ)ɉ*K@{hP ڜgMn;;$ȼ9/)t4(B[;qOb xTXF\00S+P@nmrv ܎aN`M`?HC ߕjٱ.Wg3g3{f='Blr0 |/m3w}g-,o(oN}/`o>(9ocT_Vf1m0]{$ a2a/ى(xzknn~Z=J4spBo'ŵ%w88kWa'<۞BYWؙBEWNUaEW5Dmп#aŐA22[F Dqäds2MAJ n?#کvR Bz'eQ D < /x:鸄Kpcg4쇍b2F)Rc =а QSXf!04e`>iVZoEp[>!:/^+Pbqu/]釬  P}$M@!BxCv;/(QN|fm%vkgGU^In1Ep"č[mxjؔmrseA=}Wٵfj{Key 2稩J Ycvvd\1X[ GJoc=E5w9v@o“BxU"ݮ~>z my_o9䮬zL{#LqsbxMMM8 ݋?}ՕBo}2@J2zN;)۔mn֏j_[keb)?ic߯]յѷPnFAS{qMKL,N[Ne>.Q%^%ІnI < UUDWQ.0 KKKE:ߓ%ua@UT^q!V4 /AqhVt 8x4n q}WNt80#4Ë\Sl_ӉV/g#r =6BI\Xr]I(úpؼn!yB9ehv z Ѳ!3gFu:aj{p20;@زFfxv%n'N!l34L08hJt9 #0`\R6;=횃qlVOŇSZ7+d! F˩CfHx csDX'=rIT[eE-gyu໒B"EXX@9,-eH%T>IZ7Y7L,>$ЌKF8>* K2>%c!iѰތm7%k{a!FgI=:4-N28| ppvXwN;?pqO.;;X"#Fy(ak+|y7::γr Ywm KpYmWKu_c%`VZ]sVJ{|f3of7f3L'I &y ]P/Q( :6W lJD|AЍwI0|9RDxuEE~R8Z#։V%A"xLA慂6I[QE< ֨L=)sOٍUFz`'2&Ό~M(_E~v/P(Q`IJvoO~p#EbUqp(<q_n`KTEJN)E,G}[dcEʞ}+x=FkIV5=B%VfF1 ;>t(8R(r!nq.e}IW *B^KlFӔUl *lF!v݈HŻQ+ _h75*dF$Pu̅>UbDIM tWCd G6ddԸ3F,f+$K>%Cq$@$I_/G}r v\A3G@{,A$֍s;aRv \%,e>Z`Q#@EAs)bL0 ćTj(> k"W1# &J<ʽ![Fk5=:ct.:]|6#A]XҪUw\/ɢsǦqhȓ(҈k!ʵG񪱙MsǖHA4e=AxGqe1E.ǑeY> S6mqSNn? TLy<տ kGk3VuS7lv,"j_EC$CRWj8uʹ/" kpY]ڇ a*&SWTQW Hoba.,9ݖ_[ ruƤlbs(n P72|'6Ml𨶷[]=NPتqp&e j6cmb-v6tuGD"[I0׾w $Abh9Kޫ ;maGg5AzXM`U ͉u45C0O/q\3z؍\U=HX@t~o.OP,,V@Q~tX{zD%=)|HDI"ؚ3B,* 7w:W???[mU $/ zDJHA}NzS-$!8dZJiH4<͐pFQMHHln1k>]u*-}Z2nt:`ZSy<:4XpG3͏*֩m'-&rS/zcl5I֭0VO9Ԭv?3 a1:W*szx.S3Da".i;ƹr-sȘpsZfqoY;1f_ :"z]NŕAKO Iw)T';Fr8 *sed܄ ɹ1UyDFNDx٣6 .jޱ `EpZ}}nufNb*ɿs5f:͠/?,N*ooص,LV?|!tGE42ڴO6 Wng|0ai H%Anަ%6P\LM9\O>WW#%e'YALx&{]|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~ lRkRZO} ?Dj`aʋf^`*Y꫟$h֛pfŠ/!/geXba< }락rX&(^_F6~rqX\n% |?nyk`\ 6(@b FFzi {{B͏l2s\2@KEVhCRY2Xla,GgGp1'JAԼ/sLt`jx>-.Afqm{,PLo^f1h;~w'OWW&V*3=>3g3f?3wȩsiEnD@I#v~DK%2 9STܩ7Ǘ#Lr22I8>lzɜisKy7a$SR?h/,nw=vP_ppG(e_W)RzO҃_u ;t?ys%%pt.IsW Yt E" 6!6׈/VI4"~b2\IqnF@|AШbžК4">+lpDFomEİqr#)&-XJ;2(E5y,X{ERyy0ҐB&|'Od&eByVHy&ꦹC`p"hV wh|_[;$17m_bهE}7'o*|U99N5N iYB1zQeH>PaG Pݨ26 "LS.#֓Kw]6GgORigOch9HOeh{B)om wT"#`Tó=^PGHp),\ ̰kPNaE7( +ݠrHH67=i/ 9hUj m@8xZݔ%zLM&%ud"B#Gǹ֝d}7b " ob#LpXEN.iHI 4hXB !V=RamOpg*mjG}qpGv9h/P+a<-ޗimLJ$mC;apE)blx}J&k"Fhe2:u XZPGg$nliS% 4}p*y]L/MJnfgwhn# !|⼪p}өnkb52UQкSa؄AZ\qˊX_[Pq!̝E7&xmcS$E!ң`tKŨ(\WGB  ^Z;QI^[b!b>;`~j# *_2B -xW̎1.@%uIBn|yN?Y t,EmY 2S9Zq9Ng,CZIOs>{JQƃ)|%MwHN?vRz F^kU c:ЯԺVV >~l< } hԏ dbpI9Ęc5:V~LoZ,BM]Up6Rn':R*G]2}eCTڒƚTyYp.($j:X5O649La3I ._֟ mk3^ (WIE $34pg8YlxLxV*gc-e@Fӆ3oE+cN]5ûPED# 6|M(?iQi,Hff5]%W}"> ^T_m|>=!kӸ `î u*@W*xgb~$ [>&) Z 4?xW`+|E+_W'5޸%wnw!yfGBn 滽3fpX57ˎ41!W{a`MP>D$L ''"jN,,<%1EAaSDj(q8VRM[^7CVb,~f@3}Iw#ق 4hwd7DbNjʷ֞z8=gYM,nT9 FL&Ԙ(PN(ַ"Să~4U:x%q`1SL^噐Z峥ԕj.͇ՖU%U[{{M!ʽB9h"ʙ-z'tiI.SjpKW#Hj~wHR?5!ӯ$wZ.(u>p?tnMMd۰?ʹ i,@v܍]$,JIK,6ERFb;^Dd &?}w[ǨSX!l(XG[b9VSmp&Hi.J )Gcä0a0ۮe-nVtH+'5O}j=:~=oV/.RR_ި1IOk<:Wke_]ZK7֕Ӥ # vY2b ƼZtszw.A+O+nյY@ {8$:=!(%Ac;?CKIf7h&}Q hpg{; ]&-C1/;l&9Dhd^Wk|S>&hؓoq^ld8o;^;^pU D>~3 P_3<ޢ[KSXMc;{E?v1wW?y<[o$n~3'L7a#cE$3>*@Յ`?MӺ)r\wiW)斿~NTa/߸ioqޜjxJ\:oߌ 7_Y*a0S}JCH U?i`Zʍ`Qփ Zs>cH|kз&|kҷ|C(qYv+*(@=_ZZ@HOL"MbZ$jnR.EK>ǽyȤ$s6-cRX4u#TdaR%ۇRStN[Z@fCbRZ1l߅a&T: x27t md~p֍:bոꁸ d]:Ôk [t Cj8';`,7e1nLP3\fGki ~]"'N$pOA4HݔB5W9?mf+w,/:{ݘɯW}S~ҡvdJ[_E[^ݕv0˽N Naf4Nxja[޳l|=߲<}$ECGߞɷSNg) /V<]-8.7ڽw4eaVnmn+JɣP]鶴Dm܃};juAU_?t;?Z!mJsż ?|vw޾wNvi l_60]߶_*ӳ?.~nT?zGg'U:>/ |`h0H */1J_olt "Yl?-6?,~ Qsq'7jŷqf$.c%_Ql-`e.Q,ZvbeKݘ|1AGk'Ҏp$b8\js;\h؋:@jl.,``fcx}:O盃﫰T >d 2G6g<G`3#2XܽD`y~_?aY>H͟s'zLc"o¾^080j#K֭ƈ~BA?ǖ'|!$㞾LϟWv3.{eϸ=g\l81OBq1XEH<0t_]04n/4Ő,xS@SS Qتx 1:bE=-hHf޽ Jsj;Sr~sc0#;>}N> dNuls̫ 3!5BcɜH8\ZWOEe0b)БtC<{mF<_=^{YV5"ނ#vcIOqY秾,姸+%f+|*ŝ'z#;Y [>!y(!ds 2F=sK{syp-CpbT+}>C̡"_2 J!ڭgTkgeә{|i7K|m%(iۄM?wK}-Ė.'$ueCyGbۙіg}fd0