#!/usr/bin/env bash # # Copyright (C) 2011-2021 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=4830c086db9780d515b4b786a4ad67d4 # 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 ԏN'{jv6ZKX#k~85S~t5ov`|?wٍO^׈btqap s@=RȚR|ךI@bIJ\e=:+/CwV> Y85 6W.%K.,ߧ&Y2ƿ}C||1۴pHp؂/YH3 i2`_Z>qȄ!!v|ˠe<2|&$ &5:lne!0 `\q?4cPiz\}Z܋%hDn e!>, z@=P4$`!6M ǧ  12n.ϙ_$+#ޒhd0BsѼlnhY,KE%j|^;#wGI?8T..GCHFCl<U/0vuID0ʪJC\ C7RdL^;(2rp/I\%=T#5l JO jitŎ@JİS'6q1!tbbR4c NF!ea/#M͓@ə[Izx( |L<+/SpkՎw翟q588:=5jU=y{՜m`9pm: }~!G?/?Hrs|_??lwmsp=׫Zj7G]g\r@F*40|@tb99S;NAmVyCm0丈2\hYt 0 @0 rO,zu% ?=Qh4e99IS+f dlR%NInD~c{m`Y]P1]D=16uAZ"]=ijF$;g#Α 5P;0˃ t$V8KS@ N-{=yNΔ66[&Q`<@C2Wf4ߗ.'HϘI'əIΚis@4ysf;ߟ84O9Gu=E/ irwCT4otcIc LSwF `Cv(4Tn$a̚B 4%&P]M]jZ04xA{~|xiM=܉Tn.:<¯/{ۊr-+ ]'7nZw7HR…7 )V h:6iY -,y: &V35s232. PT*%?<{F$#R\jL><p8KТ])\daA)^5BմR%s2+@9ܚt%MZ/n[EmR+@np!b+>.Dc!(+湒2F"YuѐB-UC%GG9? l>I܍aip3*gJNfإ.n*i:,7 fV&"2߹6`a3\, z'P pbW^Wcw!ոRڏWic7RX}x@ƾ5{2]OFt8cfi-Xofx!)ztn 9QkUf>8hܤmkKӢ #<$cBsY'`9]_j>D0/P f-S(.|hr剃%J'sig){Cn6Bg͉ %XS:,Pw%?+Ef." 4 ?M`_c da7oĒ}2 C\3TL?Y&O@_/%l܃ 7GФ1 m0t '𢥾oF;)%ҌI@)nqm2{qv+K Nak8 .g ?gi Վd+y)k-qP1gЇvU:NW[#&6xpMAwW(z吏hmU[ߟq/ip=\[;jZ]ϸv]wWwBԿ_RWUz7V9qQnN_SU%b0T5UW;g5;sZKȖ+0M.@bNZ9r% ˹+I} KaNT9 :#^:6>g I98 ˠ7x5é*$ZiZYRبJ^jy acŭ)1en8V:q ;?V%,f/i10Dܿy xZ9ֹp7 j|wid`)OrIE%ߧ|Oa/wbVXr~RJ#YhHZqsIqCkZa]-h~[MnB8ari?E^7{Xߧ31H3=cX^Md7ծ f.L|\=5‰v}G1qǼIwQ+ n$Hh=j;#= "" -w c3>`Qdi1lܯ$=x*P0T'ρ/?GُIejݭOݧ}3?ך}`)b}X$.]'4EZݺXIcR ^~+MآߕdwvgLC)q~ '>YH=GWJ~ARw3bjd:V@[) 6|FTSr\?_ۂ2 [R8= _jf1FNDF<| 覹 om6k_x+757kO 0;`u'H!IIzS5/´L&Y1Igi'/VOp9se%i:I;ţ|CD.PN'F{u 8@χ 1?M25XpY^tJ|B'W<可j)ʢ{onw?9!2 {UTS[,u8)E:/R>=>5_k?A7dן=O?_\so7?VQڽf zԩR^{ц~9ZFOU܈[0 '}﯀YT\v2!(9$ojj;xW==ץ`UarM$H`-j4bFRjhICs,0:`/Xn̴+fR5?syCgL/8G{ ~Lh&]BݖiG>xGg͂*m%~pGKN QeeA%x ?<]taN 61eLxh;"wC6E8^8P* f%mv^۩#>(oaxd3D6|#7ʚyE)1KJ`0#X}sG!x#k(wtM3kJ8Ȣ [dI(~gIn U(FCDeZ)*@W$x `4Qhl#2vM6 s  z٩* pS)t7}T }3T0{~] D8_֡Vdy8kH3`2~cA97љuV(hJ8&&ΞQ"z7!?*_4 a=$]=i@E n(]S@PTQ;Rf X2QTK43 ϣ  JQ r9j _<#Zj89>;V DEKM{QBȖ烷oNB>&Rshst|X=RC`p@D51jBF3kgO՝=Q@*+G3=g~MFq j<ѽ80Enq?ŀ >j0P JX$ӔˈR^ޔ} T.&͋)OC0Ԗ#[TҶ %Cs>'.+ʸJM/孠 N--Z/g| ^Rg0+AT x>ʷXXN*VnβlEY~窘?Խ0r[ 2X&Z:sבO炽.FQp 4,>X$~(@]}T%5}#mgNAf I\ZxEi=d#xp(]W\ISg ɍo18ovx!dӅ6W1)ҢahF9n픬GQ` `î"uZS:=06%*H}LRS3DGk] _=_=_ZzXQ`M -kwrKϘ~%HJѡ$kn ٬ədbtu4Yp@c8riZE A,'"jN23 D"m>t+,*q`mSu5j!# MXZ>Zab^\ H`[̒JW$RT C]eFeq L@pҭP"K@?\4hwd7DbNjʯ֞z8=@X-pH7񷆾rLW˙`M1`V}")d (ַ"Să~4*x|aQE )a$e>ܫ<Rk@@uRztw[%*):IT=蠅٩>oU$.-)dABXnjImKDȆj &֟2rQJ.?GE ~6O3‚xo(yeȎͪg68m!PʎB- ap+Bfd,SЇ>Gǂ3EbXD? ;X2]CELrL/MkuC_ ƖoU|/o*c'm^qt]60!jز4]N_$TtgoZE8i H.-Z hHPwsrSǧsð,j#R&qH$Ub+_}MI#o I: cDADNel$cE8"} nK\0ω;iay&͢k2XC3MO2-'1 nغ)f@D)CvG0yr9U|7łPhJ9\ٞ00㭘  SڒJ6ְ\ЭeY+3b> pw,kcO/40I%̂jij 2p8d_ %, r"vu+%ax1petwNfN,yLEȴ/hݡfkg*f.q!(0@|f702<^Ԫ O4~^N:·_1 F(*E7oM5f`oj$ꁼ` B*;F[/Qߴ()ۤ U;+-w~G[og5߼&4p?0޻"a/1"+=%ma_+y%yM5@1&L&>q~1S`]G2n$s]azw̆34's A 'kQyKZAzHnI^aY9Tޯ.=s`+Nv.wvX x#ԅ,Y_x45bD/KWSю]([w`e2v 8@A< ǩE!jnSݰ /}aGؘ]z(έY׫r5d }X Q'P |N|he+7U5%!*/ e0 ށ? Uf͂Ù#= (%tADu.¸Y8o P͆F@ W5)QONM #B1/"N5 f ?U 'KJ`fs(zgkBy(qqV6 VK uN3! \-ƀ2R(-%G mjokgw\*H#EH:֛&=`b Dd b%;QoH;: vOm=>im)5{2I/c׾a4ſ95\zNo_p3.*,ՓpљFDi??)Z2XaW )#] O%dU٭C9IiFGX Zq b6[qaU8 \أ:477L'ӛѫ{nA '4e2Mi ֖#PalK1mMc1B dFa %ZU* x-be6ԍoOD.fSHun6#1ا:Z[kƺrT!z.KFvAaXTNc7EF5_6_7˃mzY_[<Ɠ_/ym%G);2?Y,tDJ*?5C䬥~`HJjĠRa' A&i=G O<M`S`3XC.)18 1#8_6%&Ӌj:`V[ 5VTww߂&hLPi1ɺd*gJOqv茲 ]FrcΖSWSkM6*E.9Gp]u02wo'TuZuWzM`uƎͫH^|m&?fs6AbpX[v#Dzx$c z&|Tt hZ0 ]y@ﰅO1H0QH7tK#r70)BߪZI#NN|NV`'_(8[+cI"o5F>m- o.ۄwsȂ 9/ A]i3nSm1]P^7qv(O$de]9&>Y z0Kn#,A']d6)֤L9Qa,:[@It*cM{O끢ۋy~{Q teC56ӷ5L4ATe¤z}ӓ7tYFnv*Jx|#WE,lkhwŜ5^~@Q+W6m\Gձ$&-uFgpF,7] 1JJMN_2L?/=XLm_tB<[nsK%CI8iⲍlLsi_G6H Bqb؇muF:}61?0CJ Hc-5֗&=D,Q_ż ϟ9{%Y&J 0Y^_lfcU#6m,#ɌRb4Tɀòdډ񳺥|ȱHpx0!<`4yB)8=+G]k!IKپ _[f)}]"쏨">%).ܑ^3~bqW!)rAE\2 Lv Z59I.d̺gAad:IOP8l(ϯd% a骸D{]mA *IUXFfSڴUf͎zxw,ҿ'` 0 ۺ$/1yxDBzuk\yq"dЭdGb_L_Sd"|JO_1ByPGcmPnR]X^ ,Ƅq85Dl={,oQ9,Gs-/q_4rcP^Ux)ˡ+*`kϥN_SL-=K+?\e%LlZZ;S%uF:E>ySE%ˎ#EBl7rxrc=7l o__ڨZѸY9 8ݫ>nh֠KG?+u4ѠnC#F܂y> ?{}ImXeaĒplȁU4'Ȉ%A21hpES^JN0: J6U>DŽsv+}"F)qabD'~[D)ߝNH_E:U { PhP%0XUfx'TKVR"6Ph:uNin\8]9א;,fn2(2RzY@Jy6ʾ̮BK8e|m7T񡒃 Ĉ=PPa z4LPsP!K:X9/5K#iYT$1rzW- &Ǎ{MB!DM|[,.V ->KeҬ\DDpS}]cD7;{{(GM^|\6~5R:.^ +S{x8xvI5pW$*كġr5B;s*MdVܽjdK76* ޯ{ Fv/әSDMR4K961 I`-)|bB)-a2Z*BgQt LcU#DsD6Xьx? 5ҢX .᧌26Rh&$UںǨa(+ wk"bM{ H.g$q2*@ 3-gHJ:3Bx9<:)$:4'٣8K8?C3(?!1 b?f3$E$d%l'#cP!6mLr@EYwZwǟEf'DH(t7i:1?7tOƶ1 gើDz?u|v>:JF-\/%oqYeN+߬xaB|Ӯӕm޺xc\Dfx)#[" 7M )EzZWǶB)&a;Rd)vn<<|e³.{I,MSN;T=6x{FLvc}FCj`cU\`h̅=U bDIM tT{CMWS`܅ 5wް+#Ѭ|}GHV YVM\=+\3Ӟ Y%hĺ6,Xΰ!09?8+i#K`8Ha_ /?y"M㲟r*I7 Iִ要?$Gf0-Ԓl\c FQeMG~)sѤ-Peɘ> S6SNn?Lp*'U=jeAp,&{C&mMaUUC ԡZGo`Lg~mo*IfK{3d%RrP1_/n=s+NB*W^[+}]v/.>갣 w(\  GgrėҬ 9-Q_@0CݹnZ21ŷu׾Be؏C.Z62?D~Q,"*ϛN.if+/旑6 i"fmdcMK`>!yJgoPQy le|(n|EL=tUx+6b'xqu4{_%+S&8,k` ^_nzi0 -74 l{Ӊ0mbC>5`vɒ (Ó38!WQ #-l7|nҭW=-Ds *&\,CɄ{Gǧ'^6L*-CRdw@766%iC'I"$2)f#o9O7\| d3,WMG" WRVK'6*j);AZxR h@fE'.٫7 {O+0f)Eioj8``ՓUi_]Ulv񢾴ҏ?H s%DǹEMP>l0<>R wcAu@hwF"z/B:i'<  l| ^B5ſ'jdU!&8$k"4c~%FJLwO9-}d24Y,Mnf(ũ zP ti``Zƅ=/ڻCwA[˰˗A/,Y}H=;ͺXUU 0-WϵUa1;g,1VzH\T*;]8P`#ԤW[]@M(49{&(9%Y3kE(e쫉pù.u,--R  @ Ls`g3f0bqAI-A{jWo71XA(wsC-ϒ%rRDהı"L$q_%l̴ EtjiYYk2cJ}/7pc%_΀(f)i C8wE\}F>toNAa+dtcg46+̳ljNzlISDrl>3bwvMwjDjb@@J^Vh0t?%DIxPeu=+ Ń1fkƾ6uUqWiq5:㨏}J22(K%H ؂v:Dd\Bbߑ(Iublv~uXH>]|1jK acpě#28,(oai>V%B}1pGg{qzg 8my7RC8@LB RB<7.е#.R:JXm~"'/d׫!GNw&"^%y ~Cj<5dh )qE]-{F6pOt=e]"gq/K vJ(=pq@8L@ t5b)9ٹ=q2vvO.bBr~ K=o җy|!a~pWy1#B=t#tOD(M'5 J!kYC $h G:S_|L/xAF6ccɨӾ* Wve3tvr%'!AU4kbΨ dFh:>g0F\]`E pxLC5v-LJ3{)6<)>Ak+c<_1?tO:ן???r#?r#?rG"9 P92(^,#LLS(%|ǡX\IH^0 %"=د?UwHJ[EJeQNP=e eb˚>6DlPRLB?V(22˪(3ӗMɸ⃛kc8wB i]&ja8p!JS!˰~^ cӛO0xC ^W: ʝV;5 fyъh)H^nfK/Hjyz5rf+5}WZ)| `5 l$iJHIa,J.U x UHS#I:>Dgb .sPO1_ՠ;]? קXG׼jbs,"WqPՠS%QPa=dU\[DBS.+,K*%۲r{{XemG7aZUlG̜f+;- Jcxh喗^Bq`5 +#P=ʒ-K a['\%u2] tB"3ӊz7:e JI>D-c b>W=uq.8[c\![D%;>48hzIXIY+9ċ-2q3 +2+Pȭ.9SA:ggr$G-qd`i2XӮ(292}Qxj_POT &=~pxbn]z8PsyLgn LU(qЖ(DoA sۭ.fP@.ۨ3-OIt4K\zQr7v8$ƤNTO=`ݜEK ׋NEI%<4~)k/Cd.NOE<\فGЋBZ=ӹΪH&MDj 8\Mfȕ=s36 Oކڲt ωگ`n;=<-R3WAK\e,H6('-cLCoi/^'HG <  J2F!Wemd6K;ֹtHd<ø|,ډ 1nLt%JD'msh-JÙ.CKI\Asz2epƳޏvokraZԂRy8Xa4%5 5=QطWӨ:A)ɫb(+=O(|)}3='x/()(\E [R͈Un<ʺH ~ڈmSfMa2ta@u‚(+A R-9Jͬn11O .0>wϪ2D٨}[ip«g\9tFKMݽLx`j'\/Ƅ>Hܥe)Y9Zmp,Nåvi|$g4M4︉-߼^F-ڧz1-jQĎEv9BԩHެ./@'_; D A;"/zU{Zi5LV\2<ƎNQnKڭ<ln'&( /Fz&\fl&bNp:)7X4N fwq m?zS\K2<` `V yҚ(~^q ξ cz|& RC:%.W i8&Ϟ48Snze!K+&co1f+?5+ P"ݳOܘʵg0lֶ1BlZZ`Y*M4I:ͨ73DM2tz Ix|O*i9gʫӝh&矵q=EjȐEBoID~];n<Ix*Zczx(}o4ŸF!dM=4\uYfYH^Wɑ$ȓ̓RleB ڠ?<l>F?4`{MT<8ƁmQu܉"i3Ө t^K90@ݠQx;S:Mt.4=L՛C6o6Q0ƺ7D}P`O,65 F%؂o*CH,U\?$üm8s#@0xzF&̫hM0/dWR!`#؁T@sq0jfּg*`_h* mb.4쑏eIO-uZ휞~Z{./JL8JL£ZpƱirF #493YR麡v!y !cs9 NÖN q;D"q@@7wp>dR*~nk)w @B;w6iި>ټ(/we_̊o,2Sg jqr+͈+( eeWJt-_I0%`XpH34duEC9.:7G#)QO! k2_1r1]0xH o6`%a4⌕Hb O9uʩ%竺\'IΕk=?<Ɠk?fƓayemٍxO!~G}ȣ>Qyԇ<aQb ;CԠl'D-`x׋ *'Κ~xLv>T ׯXR0kRBAk9ɝ=Mitۨ,,4m5UNNSjMԗdN5*[j?EY^a %{4n/ =+%TB]lV5;5A 5;AQ([Nb {+?&sDI .LuՐ[_s`{Œ;^i/ې}mCjhۍX0xV^xb?}}v쨳l?à$a#ܮ )]#^"BZF)Z\ EGӞS:H67)3$c\-+myB7na8X+@[[/AFCqR) QP7(G왴:qzV=fm5.&H0poͱ.c ysHdA@`Xu(zG4&Gi.PS+;XFGt>+X%Y%w9nb*,hBTW @enzPJW*KHIt ju #Z% Š,SN_Z r (U+o¹,9IG@=0>6[˹1֟Og?E:Q}P0%>zu|j_0)tDz<~O7-[\|QYS|N*>^w"850@1_%q}혾xš"W]xq{ 6&F wf9G[ ix8Ez˲B{qb3Vz'q-ۅW!4L#=35pW+ؠ ZxInᒶd;B*a&)v j<K:b,X/n&zKNrcÝgH%pG Q rÄ/~kޕ̊`P:,9_a`a}Q#yx7ˇ8@OJb PЈ$hZ֌沿ґ8KUCvd FԻ0|'OTۯpu <73@" "6*ENaLD!+~hކC /^cqī g9a#CL$:GKT8#yJ<:@ke"P%BO2F\EV(58Z\M|ZJ YJ1iO G8G LgK; epa!hLU.QfܷlCYq Hkܫqb4!:ėlψsBٷ(M ow2LEo[+HDHfDĉ5dscj<HdO I2 2`_h*rfŋmfb`,25W}Jּ9 T_!nG53[MeQ+tŜʖيn{_{08F~3!Hς LܢnΝE eGud,Y,ǒxlttŬߺq ea.* &Vzum4>lN7º ox, sfp΁$Uww"OߞP#)a-qM3(D:lK ,0q蒢I)QчZIr:CP#db6{(̱֓^x'V"14Qv?(Rr|ш^;p*zaB(3a e%8>>ԩܘ^3'p(bVzj)W~l%&Fdc;Z2HnC3eM2VPx:cš w fܨ1(w,~f\/xzf4%0plBd$RTъ*9wf~X8EGP sp,pfXXé.2b2S5n'VܥG46%(Z騒/ #5Ha!'QN!ϋ!+P-%݅o㣒5|Z>HcR?`?%Wk'L3&ucu%xO~G{}^G{}d{}Db x>q \}H5zso{jH}ƺFyKш, Z2qa\2yG GnB!L8:2 iԘtZehGŞ~B"^!2TUh P2Nu,C.DǴڲО7퐁?>jf!pd_@<>I얌Yߵ]vB@DE.L2[5B f1nXo=6 Wn'055Iuf/܄s~{<(L犤a-MOxdTi-xǩ"M85KRi ϟT K8I {m-T<08QÛn2'D3|v͝.̗W+0|9Uªߤ~)?DRa{5/:ʔ;Uj8+PY鿶?U8䀘b[mR؎LfLrUvS)xcSa]*{9;KY_/gAIvSCfyJJP݁Ḱ04ylG$eRҴ̯ ͔Vq~ h,}m0)̝P\SB^(uӽT}*eщgzD,3iod?Ƃ(B6*I*1D-F8*i#hnoQ-В-#PVMmЄC϶'٧)vj_X2NXk2:oRГ0.c#}XL<^lW?2vx Q'$}hƭnNV0 $4^.k J6i4mp\4ĒM`2hm֣ĭ 1d -iփР"`*$1@a'Ѷ} D1l/|<_u+쿖__GƓmrx]B\. Y 611٩tOtGxYo4*Կ(tWB?W*b{υ628xAw{8V|mZ`*k,)Q(| ޻iFLlf]p],BlnWj@],gTjmT;98/!T޾Zd")CѤ2P4_,4 vݿ B: a]3\^w q?^JB .5n,|_s5.i] AJ= ۽P \kN=oYT˫9[Y^?zf3#sR?ǜ_-%8'8_R\=P_qX]c<9k?r?7l1OGyw>T{]rqY^XYZY;p:QxחT;L*)cAn./܀S 7z_n~.8|]>Ӈty@.O\>qry@>.OBXDS8(k'g$hi|4S. ݿu/v.>.ܫ';g?mCaJW}Yߢɻ!"ՎߟV*&[(3^d`b#Z[Hb-6~Ĭ[5w:HIv+*-`Jaݭ mՙ'by†?+?@D{쿕)l~, \#+_@y&mb硝1Ig>F} INWEH tD-4Ԑ1hvXNN_aex,{UC_:."K©)Z+ٗBz 3O, gk`3C8xºb 뮯_όbGhN@ _? 3:NI-/8G@t1 Wxv;Q%=0AoFT1".4qbo'4d8ZfM𫷔onM6߯@\m@ 4v ?EDN;?1046n0:#'?N۳V$|!&/_VC~!?42w&٣201)KSpxraws8~ T e"r$@S2Nv4+ 6й5`>?Dݐ#Pd3KkX3UɌ yÑ>±9Ӹ R 418;(LoǽfF(LcɜH8\BZOOEePvҞ)БftC<{MF["_^{QV5"ނ#vcIOp ,''&f+<ŝz-";Y1[1!yg(!ŢsK$bV깟:S3SxR1_G)vM*.a<"cQ +ҿg«\/e=_#db{f4S<9}Jڷ0, [o^Vb Ib7d jёvrҐ????????pb