#!/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=f7797a5de161c9ab9c31812a7550443d # 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 Q\LOO.[:Uj5*_|Vk4ZV=֪գg# +]BywٍOWk">Ct\ݷB9aqG55+15Y! m GȗÞ WeI)鍻rLTѓ/eAMHgRu.}*d#LV8`xdrgkp< s]Yԭ0+K}(^/+\2 JN%}ړp2jWIy: @ W*POg<.p2>UTY9 L4z/w$ Xn[m tLzr_FP( tapyGHGD`z( G(Y&6BuT fA"W1/sߑxdE*dd65:f2TY҈LD>#{90&E x 6+ZK;lyDZ֬PPQG2xԍ[}F Jg$U%l r_ iözbWRT0ҡ1xC&.f7Ĝ"ޖ*&/E?6*A_P0T_!n^+$< Di4-?PSM_xF~$Qyث9FA6S%,%{+*sɩ=<u8 j{B dN+3LE@8` E=QR4X28L Wԥ4JOInD~b@'sVȊ,g" i W`8kD䞍8C0C=s`4IP8KK"'ռL\+#&Wߺ{{El  [, ng=hpO^SCV Wԃ"[_2Ԫ[:N@hhOP"'KT$sҞLfXN@O@ V( Z9`;V+_3`63熸m@0GlϚ,_F*D_! 3 ((Ԧ N]GX~^}J0% :QB2ѐ\5ii֎e2걶z2LGB,t 09]Fo$oߒF Ǚ1 .HkMdTD ;2qCz璦vSAxD- 2g{n4]<"HutOF'񅖧"%ig`ρaj![ŤK[I}eU>r/ߑ8J\5)RG$ȱhlRSҾ&om+0;QM+i55~X!z7uiux4ƚEy.`q+-`cn@3K7/G7SZJk6iݣF KFOX[ԁa v½^slmpX'|y7x"lQɾhW[ڷ$n2ھM aǸɬ?\ݾͺ .b|}xZ44_QlAm 1("b!5o' BsfۍUk5 Nkh53ϻ{u)2wSՌ)ߍiKplŰ^h쁂;(ƥ([ ˧fqNt^fT&$ J ‹}VE edaÃ|]7ȿXYJ/ކͯJ)"K;J!4.2LanM+%Y2'bDíI'Y^eO-"h讽%Z-u-H 2"Ch B1b^()l&%]w 9X/tڢ\54.Xrnz(F R S1Do aCgTLGx<>0u_|/9ZQK/\t*i:,7 f+ /dcR0D0c~ b5G zXa:RQ +(+1ys LҎjY):a[b? 2ߓ63H /,c"k O6M!Ӧwc 6LD-WIq-"-M*X4h$D*\Z1 (-zچ|WYWƗiALkN 5@m/T;W7R|Z@b^Ϡ<e݀ebcO8lJ<5[zڝ+~__________̑"~I=~(8V.Y`QtKQv>)"[۫g/5?pZKx4W3!w $d@OMu^:.]yԎ~Rk8h"kzsTTTqfh׵{/n$pZk mO7\435ÙP1ra CppCW)REfU(=HE ɜ1q~O=gVB '(oyizlQl%PGI|6DG"!28@ }|Dl yIiZb^*'ةPcEƔ&DZsbRްj5Xb^Zk<':}jUt㏻޷yO#!!$T^*{{ɸ/K)p> nFd57D7EnB"F,.1X #ʉ 9Zу^7bxXwdJS1 g=Plu=B֬[̔OqNT/ͬ?8}HZ~0ZY~],~)!dtB{ 7G͌i>m(>ʐ2.?d(+:m =ѻ`*+ܬ1k VHuo~(c7ys!L]jQj_oY=}Fody q[}mϩ<>YRkLbaQ3^άzQn=d)S*KCƼ nS_ l UME9.~Jbb^CQ}K[Q/&$h''ɦ3d-q#TW!E\Zf#J쳓/xd<G_wnw:evESU/[L,Yzy=PFox.nօPZf Ah0>`/# u]Ұﰧzb[3gHjvp `53xAqAꞟ8p3#>] {1y7Ao|Wqpm?xs9tRpI= v^ 5߁ܣ{+J^yAFPeN;|;Sa}_[ؓ,99-W2H =1=d9P'{?B_({STjY} x9Ӛ,KAbI#CtrV hu6)Ƥt"o"0WڋE+&ʀ+]pR 9~)N$(zăWrARw3bjd&V@[) 6|J˾@),g}|U?O|1$x$G@nIR7QP0_Kb<.y 覹 o7݌NkKc޾LD\ۯ L2 06$nT,}&)t#)1'/nLHqJX*$o5l(BwřFQWd;"}pjRopVL0R)dm<7-Tț3ll=z3 ̜O'lORB3 ٹeӦyLtp:o]qNSn?[W \?V8KU$BJI AA{@Jb<ǻv?nggVH:7.1g >svݮZ19QRvk _L:r:0kǿ{IR -t% y'R/l.6/k}JE'D ;$g0lI^Fj@h1xƞ֮n ;3{'ZNU:uYVQ^KA eroSd9 PMN.Lף"L! d ua1h}Wf S!'g aKyyBL]:RQ]b<Nÿa0FIt{鿽$%|m>ܒ} ash5)%P\-_PPj s!rI H@wW\D|DTv5 ³^Kp}4I8P*)-M&k{,(f¢b)(iͪ^QuBB  $=KG HxrGxд-,Ї_lHvKBRN㡺 vC ȔV| KnF6a4.v94ud. ; [nhG X/0j.l탮 GiFn%b4i\YWLFo (!ؤ1P4p +QmHMvfȅWGQRcҥTߌ䦁ʊV )Am؉2ORU.M `*C3< *"=tE}M5 Fȝe5з F.+Hbb$CXo"==GLJu&tD5^k;ʟrv#4zUq41wUml!<ƹ+F@&H>0b,F6U&i*ԬiSSw6aIJZ`N Z!q]ۥel-F㴢YG-`;Ghg=} ^P=W 2%)æTdxF5hIu 0n Xݣ̭r?J|y6X ϗ`BW.@ [)wɱ^2k5 {~I1cVTuϷM)\҂ 8 6۾DѲ>@q߻Zt[HB\bܵH7"~51@Ws]!&HC̈3vz "BQŘ `g>DN"%J#\EY~355/n~B"k+Tq50n,==)TBӣ inP1ܝF*G 3ַ R ERWNÜآNQM0u.5PeY;o^[zOjPы" =4ĵr^Tcx  =sj:e o#5ovPvb11hC=t^xdLMDhC)$&9:5C#c#*b &폰u"3t>s jֱ2,p\т)N7vr×8vs;B{c"Rhl(pʥgksg^f@V=^Z? =X88z-DU,?H~AcՃsr9iHr) \lhg! 5Hݛ{!27 tzo\:!,%KK- p&k+<A3r ,ӲTQAo@1aB\CL$PKj]ZEU%j$FlCUaXtagl!kY7uӹk%s }"S ʭnPxQ:ȐpxZf!ׂ ?4 > de>24 Y @[n<+OӀ$s|fuV E| vWY sVp:%X28#G}\?ISN'0/rU _e֦đ8?534S΄ȝoI}F'U3*2';:n_bӕn'BU8F|:ʲ­^ lk_PĝO ɡ3jBf.9LTh)񓧙pL~N$+{6۠`R!ك6rD4cv $.mHoړTTUq! tC_!U.0Fac7fdxE]¼)Ԓ!p_aZ<ݪw7MoSf8fꭳgŨf:l2$0Nc- \oD|7FLRkb\Zl% #Mz \&„ҚLq H=H1RJ]EQڞd+Wsuj`7;*O4>S$5>/)juWQ[:=`.ԳjFf^AkY̢cw"O!o؆]܁F)IJBN)vA*'Hie("[0MËD^0G<0Q/&\6VWq: :Uy.PQډ»@.LY>K.g r6ڌQ39<=[d44ۑAے+"U=3BWѸ_PTS0^G"N6)C&TDԓ:Q s_ :B r^ɲSXFx.4& =}̳vMd_2KS=’@L=4o}[MhXБbgaa 'Z'}lDX2BbX'"my0x\]q1kw\V SO#)tƋaWBऽV8G8_29jrIu(|aUJ d Wէ_""Foٻg,< ?#NJ*\GU^ˉ u۠6yA޻yq/.K۽pGkr&)Q^ \\j)l4<%2دK:{h{πu(_; $󳿟8Tt@i:\`*h]TeǠtۙ C[ )ʤp:*:b\zyAпL9gu[n9{j&7׮:rPw}5mW3;X[드I2"i?V>&됐i._&*ѤϝKWYdu,sBv˾atitS s KR/r 2=5-w@Ȫo7p r}8b`t,[u/~*9Jhi9>!?:zN-Dt2߂ "%5RhۈE_r0%29._F9AbX]-σЪᖩѮ:^gg[R&v$D):ƙݻuO*^Më)z(S{ooOLۄQ=u,/i:ry1EG&u$Olmv ލ?3ƗP&$ͩ[WͺE-_B0\}(6$S5 pTVwNb9sSGʥ)<ӡ `~cnhm]7#M ,@…p [Lm/(8V]s޺(\cmYWkkZWL)wUuY؄ehn6qmi̕(y` |\RJTd& C{(]FЂX7ݷd߽@{6E4VnЂ`#^jq1ȍQď$`fF$Ȇ|(l4%\9&,eY>EA":{3Q֗Hiڧ>N= 9zj o%dˁO }fl4Vئ 8_XGh]) !,k!6PԵ1ma$og积}*H=/wdZ/aZ7 TϞa n"m$ڈ}=n77B X 9t!S5mFڧ>42N"=aqY3fg/׽a_F;h|枣wCw=lj%I}܊s'G視m =ha}uݝ "d䠨 ϓ,SIN5Ri5li? uN+>w>^8o! OwLS`=藌vkb2gVQhs0]QGwqTZa,L[& ><PDtVL7ju` 2[7?b!tܝ iȠ]Ih)ߺ4#0:/3T*yZj`;強BC}Y6VסtUԵCe gΨ=bg/;q++J \q՞Ɇ,7_0Ywbqnaar SLӁBqCJcu>>W<[|܂W֓N}8] $(>*?3 ?g3/?%:VF׭.{iOjj v6-q ~7c{>"xWG/,yY J hC˂4k F(Y+[ 锑gk]ڐE2 BmCzG-qpM<:`]x Uuf#$Fo{d,{ү#8_6z#G@Ӌj!+$B248]9>5M&Yj*<{Sh)(p`* f7F5 ym$wcA!,dV`& |8/t@I*p»MʷD_vm~_yaj8dt`ѿ[ҪZ8V#q 988ގΏ'qz@*[sJfV sk9rjH'-ﻙ|r:T[q\-=\tبٽxqzP㽃/ Q3e+nm7n*1f42 [8}j*a m0{9ᰠ[hzey/ϙ \|>9n :X hA "9;3cCkLq'ϩq)>!BQ[86!UhIمS7^!ybp>\ # &12@8ec\w~4- N | _ԡܦg=tD`f /C8ZggVqz4ج0 jJ/L Gh*|r^,HQa+\Wkg񸮶or4>=X0#LEY/PEwYH'zxGdljNoHY.@BƽHQ!::\=tަCQ-0tд5 m@E4$&2 Dg Avq2)dct'.T4L߫>Ɲ%t#=XΧl]4kzQF +18u?} (wuNLA XNqzGT;`뼍[/O߭) TA ŝ 9TĹ>2?|i6i(CH,=YİxgX2H|)C j̨d?Y(^_=9|Brr`MUY=24%ppG=2Iͫ[ZRۘ"F(rِ(M} e&?H;=,#F4n2CN &&sx:2>n[0Axl̐9Rnp]!uۨӇRIQTz0mQ(ҮDʜʕ{0i,_U<58*0P~rw"ͫ>\yLҲ >cԑ`׫8# WIA>ݐHѯeo P*szcq̵]iym= T)qprokځ5"+Iqy2z(exr6brL:խMM*\R,;O+VRpsruR'%a]'pPiicpW /]OI;«d 5ܦȨƷؐD GaP>]ț3n\Q%1M @PD dY@X))oō Kzxsxen3:죛Xe> :\bWH8;c͕e6Y~Wu_bghȀV/GJo'\H2>^{2!%kQ.FLd&3ok 5f,m)P-]!-GvLـl]FtT7ʒrb!yt勮y*HUH3:&k(`֬v+TYK9_nemY<φE [89`V.Ji?zK2h 9뭿8| =;]hsJi` oPHyߚ,+Ù]$n;[%}=6[7]8KgɳF_ڜ=\ͤ+y'3Ƴ!% Z݈n*#y笍A*KK)"]WwgGNZƨ־~/,kf?Y,g3h'`gA:Zu=ҟڐq@E1\,Aizl5QI{ݮL e}ͣnYE+nkasi]zmdC]?Jk;XC~1"fWcý/=hlPW=ZvL J ~M R05U kT˴ԂaXh.9FyਫR=ܚ,~ks3۔'`㼘 k!8˯COJ $hm6=9t UцcN iRy"sFMT%zHFڔ 7!J-8IYN1b ik*fM )X) 9Y@鳆5W4^+p< ?%B0jZSYמBAkd[4/'7ghZЉ忊g3vfs$&!\Ķ#@ haZ݌mBjD E;w7?KZV7"~"IT4Ex oN^t"79q$ի4wyEބYң,Ȧ%z&)^l0L9P&l&ި dji 'Cqdnfu5N9;iO{_4M2od^m&,gg^ȵzF*Ԃ?݋|p/&^{BwWv0D#ڱM]U m__}A8H"ba3l$X\fKd Z+xghEw;P@҄?N{ۅ9PZ)o'b{Pլdʨe;qf:PpzeQ7Z]~Yw^2DgH`] ~ԞָN?eEK*?jQ%6d [Kp5`UJ^\ґM3Ujb5!ܬ&Vsd˂ZXX JZ 7[ۻ'9ʊk79hqP2>x2+`p JTa+-!F[v 귓pΛs:=>ݧ Aw朢ͭVWWv FKW .VVLʅ |غ좶ݭs<1\R]^D{=֪ʃ^S$p|7Oe{&ݻ5^CInx96i;Lٓ˳G'E_$ݷ_2_V^݁)X/ן-&H6~fys{ +,cxk>XA!ǷCTQU/OW"b넅sT?<:7NXdtJOї aG$bm\GAI4ҞS_uNn>ON,BU(aPGHW,oP8 ꎣ~{E'|^m|ONpe^#i0&\Vh͹9ڍ'}jx{넯|tퟧi0#1`dtMk3R,AYH;I`vÅCZI>*%B[mvop[̬oSWF1ų-;|zWYuJ ip.+ ȜU|s 8=jR%ĴZ=jbjzHݽYh%sj!0Pj@ma-;^Z{Rwn;έPjQ2:jDBFbVpAR!Im*UAF l$pҥ40 G{iVgɾ Dޅ#)\Ԍe ٳJa8 6J`4vf$0-jdZްjhc/uE-9@\8?.{~OwG*c/Ϋ ɣޢOMF(5ٸ*]lDxJFN X ls~9r@ - H)@RR]ˆ̮6xu ^x«Z C2!m ZyG$gʼnz i GXʘ+QY](97u0Q]fg8hWϠO[bO1}CL* 8|!k8Ԝ^] kGО'ݱe~P*]-FJeH"Q%uzkO a7@ir9#!ۂj>p4{)SJ~s$E@am'.HKLwyKϘGрm|C_hcLb;(LCGt2wOae*X[['RM2*濆J[]w">>֍m9n ֺUfu #+:vDląz[iJ* DT"Z"$&zkuYum[8SxߴWP+T9댖-[!Я &Ƹiq'U"t#=-nXH?ۛqs0.}dy?0?3ߙw;g3ߙWg^n~pώ !1%w8r4z;{u"?Vֶ˃@S J @5),bJV8kXnJ%$Ɯ7ǰXID+8ꍒN=,,A3ѽ\^[BCSo~3 Z3nfk<~j)mJ$r##F }7.*Q ^G*:xk7 n`JYFuG~ZPcY+(RvӔ* '#$d 'wH1JC>jH r/HCg%o8%Qj /M Zf{1_\ ߀(7:me8-4lU)yGl7>QpRyb.V Q9V_+RR| N6ֱAf_e#I .s}l!Xw":e:Β7EHdmg<BR=.z+TdÑ$ꩇC\06nGV#;cI3N̬r+dnX,w$MF/w.Z[w+(ϳ5Ng-qky/Gw/醺TS16JvLDŽb[TK5Ύ5VU2XWQyymv=\ǐAIq6sS6AcJ'gFa/x-[ώ?y40~GׯhM c٣ӌk.yV|ª#5'( -,}0T%]|(K箫]'^4eCi8 Sn5D dF1ՇҝjYʟ,@wPq+{_Pޡܸ,"yYJKɯDT oHA- N,1Yӛe쟻h2zkQ…oHoA>f6fJBBΓE&mS 5*0յk=)O$ZP8HaY*,tr&x8x ٶN8&0'5y 3/ YTf#v ԫŤSw>qZy٨Kr+IMLWcm8h sG@ulWB҂o@#oVWVC波cڋfP[P9N=?7#Tu=%ᐶV*8]dfbCǿm.v޶93%⓮[ JV5rCS+.Qa|g2{/)/DN،wfb1 )v,_: Of p(, Q@:KsT\ }Rf%3 ,V=ee5W Fm!_TpAx! @`"St4H8uy{kM:،58)A"ЧϜȠԕ>`mq^Vx gKK}x[԰uU2כySc#m|^o*hөgQ/}|iciWs%NPh5᱿VQPXv=Jv3{OV<%Eθl~.G̑{w< 6찮7cGb"·h!)fbӂggLxnOW\I ֶȱt*#ͿnD^7%1"/Fg\É$ H $|߸\TwvAGubW(􃁭 vꢗwSDGoFs{,=pdF8|nRf rBD­Rۦkqك=ޙE&+./[T g*M>W&9]\U~:y<Ւ"2ʬ}Gꐅ{ζH1fw, rn3w ORsɜ>VD_s뜪l|QAǧG&,Z(>a?It,rV}=0"K =qa}r1&/ϰHӝXN_& ̔&dꕳvZ$ctx>z04-N&eK*FK:)H({t?'Hg Q)C9kO W-'E$\B3eE, @ R,P*JA/9"RpS ^(A9Za ڣE֐u%ָ)#1èEKd[+1Tܠp'YC+Co{|q`Ghzґ筑ɥ ';):l9/=Uq [A%#_!*277))0'MΜMOȯ?ȃj0M<ƒ0"XKŠD|nxEH;}V]dJ/)ƙ%`H k/V}JCI/G8Şۙb3NQ6H Z*@e|̂p P`plCy B#4c2f 1*@,=SJ-ɧ6 PĄeʨd# G2AlA8so!.;@.`}uB:;U]TяU'3m7ǹL!ŌSP3gQ ,E*D}`b-Ѡn 0^;"6vz-x* @uw*,7DV[ukO@/Tr FLyy X݃"^dE NO+p)yXvA5Cp$3͟glb\7$ycIes A|Y&I9px,NG,)?4NH(-Jr>#8hp`Et|W"Ta !8_oMam>BpRmQtTF^8Z1{ܞL$,uq4Iu(̮{rī >g;1QP|vbd|ZXY;RX!,mсZcOk!WnO2xGP;ݻ;GkXRTA"4ixp7l:`8Zi.'[WK1 [maWVns?U{OAzLZ!}`6+X隞M+IǪ:"{*,+ H(@%4.,k-#E_[d|d:RXP'=۬H7n:0muQrZ.FQ Zl701j?VpqyBo BY\0@nAĘ ݇ާwIbQT:lbT2,dCZ*hZNT-𸼮M"xZp[Ry!6Xլe^ut@":}i^Zj9<Z67g?JN5LZ.,P.w7z epZt||hR-p n2zGpaX\\,.8?ǽ՗Z 88I5""D2tс{rY217a ,6(Oc$Z`wS`a,yUi}HG7흟t #' ǡY5[ݰI{T˹ &Q9+0le?3H\ؘRM>,=\t/.#x8ܙcG*a{ՋN,4}hxyLD!Ql__wʓw;yμ~g^3ߙ7v;$LС "C ܂C2YN.%kJ>95 u I`mE~6$2=NSA&74ц+ eTl(HBFC! x= =Q)JvT\.hVJ*Z{|hUw55w {9㌺h\|4D_$_>uS"VĞGN=͂`dOλ~b|i?ĶiD#-Zčd@` Hw6m҆Q6q^*וC|NQ*>|ӝ\UE*ZiF}GjFECl D$ʡK}ޜ'Ke;doVr?w\_EK0DbrsW,>+q<칇ITsا>3IqϾFnQDB]w0Wh E9sTDݴ'Y୸ N)+n*F]Б2oM~;9\}KGզ,KE5K&>?(/Oi)nkGi['Ў*7D}Ljs.@Xr}]$CUi s0.5|5\އCݺݝ>/s]<~{wzxNp=:='W~{rszxO^N=8=' r KiT.mJ5->\,,2^}]svl )KezqJ/bqQ}wvt{?TmE GsxDxgrwn#:,/^Yn~ܴQzE碟^yyӏN6-1'3Ĉ9.bMdԕ\G]gn9*:W97v]ؗ}nj[?kGJn8:yϻі8ʹӟvڦ&˭AԌaV\[yneQOGԮ2e"hr"uQ\ }ݸGS}]}xLRv _֚!:* -(Zxf1CdyT}7GDekEӧ{噼f~r\):i7}Nid1n b(vG >PaG 8`έ!K"IrD<>V64u$WUF{|0g{BVg'go"v>tvW $˱b,AAVO{hs vAjDž@4wCBa-erHGĈEa+7OqtN2Rι-xIB.zZmg:!jHzDiBٯGu}/rZRT+ ^_s{4.꒻PZ+b[='WVᝫ3& ssdIiل*w5XrFSXP46Ey3~f?g3~f?g3~n10