#!/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=07bda48fef79b4f0c5564eca45b96cdf # 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 ]$[ϙu%UvWN,WF{vW^V߭6^U+RLEtW݃pM7tu= HY$J]ԪDqjì7w==\L$& 'wKͲ8Դ $cO]xe#cѽ{2q_"`J\w 5 FDt9fVP=2C0Cm,cZ$lFw-B2ĝD< ` LV8!!qˠ%|b>DK3D [f+a&41 `DC,abF@6mÅznKͳ ARH.jD3`a~H]ɘ!@. mx%\Y`&0 b4WNOhN 42Xjyh^74ᙢw22ABi-r|2iWlHz Ӟʃ?Tz"l%h`qEȽ"F]}(3Y1 U$PETKYIW>m+r)|\*\mSTPi0:bvgQ'i#.m% Z 2!Jh6LuͳP(qJM.Xw 6e p4?d&]}#C nb. XV$!e vz- PρÖcB`9mI)6k( HN'ʀlΔBPcSЯERek"Muąb֛-V߿! V Rfs GX)Qr_`6_lbɲ_8"tb.t~FlˠO˄\Nr^ap=%:0DhK]rt$1 @@ u "TLܧ*MPL g(ģ42n I Qq^]Po{$5Rzb 6> "يdH'.PyP%& USwNy7 dA㽒.D4 +C^%a fsy܃\:T$z  H)l?2azMl~9d'ЍbL'ptXolؖ+[6{\rl69Vߨ4pIs _"ZQ!?wݐ%0"n/,/,qkQ5<=`4Di!! |F4DiyMM@ݟ877c<> ܺIšJ<)@$'Lng8Z] o`(/>j--ȣA`MH;)z98>w7 f#b,< >L>s*7` g 9%p'D)5n8=X:(dH,/tY"HePH2\.59 7ڈdw7x猛y@|(Ũ !?MMzmb>󈨧4xm%KÈ#T6_yԦOߠpm;Wk^K&oFÅRT)#/ߺvXg==*~njdְ "@oX?΁5 3`(l`F۷(0L‹@ޓ<~+icxĖ|m_!EZ"1)fL,qFjHF*+t!kP}8TD\`-'+g-,b?$Gȶ YCNQ{u{}H2VU&@짩 D>Y %%,|'WUekk$MVh49Nz>c{Gnzϥ0X"w2i["p\8Fɏ@%T6drLa_\lp2'%"0YNI+*[$EYa.c0iT!\Pct#)Ddd U4jl |+E(&M(sa1ZΞ.88JCg\ku|:h@Ou ꥪdcEdR#sFx:=IGh `~VLX~%gLw~h_M`[ CCp=cJ6<, !njeJ` Ȗ;GVa$5y)2T\%JV'g,5KJĦe`߱Pu%v_XM,[bAq>n#IS*X#M ]ƒY]6[ۑsiCyB-]Tnatp|!c8e7u >{P &fPc蓀zAY CG|CAf8J% 6&( diQp;<@{r?a>;Tf=HYYboqFG 'W4Z?n_Y{xZ}ؼ-?6lؼyc? HT&DI}EԎᠡa]w&O@sV^d4 |!‡@lwR==.d-|×xۻJ}XR̀TPJU "RעŶ\cɝ^?Xd&![s|z +ds 窳)x('Wlu30lCtzv>xMu'4lab)$U8TA*inR[iS? Ϩ9j.4]Z }%vsWvdI S vyBRsSnFjHJ& ӕ@R25{{1&s^}!p[S+uI>OY lR\kQG*#r[wvD1㑍CJ&2zw)جLH&'f鱧%kIw;_Chk~o߆?1͓͓͓͓͓͓{a?YH`ɮ\JiU[kpjdh18M,X'q )Gkd;~xvB\Fd_ JN%7ʐՓs/`+6]$u4_ @S;fkZ}=Hdz)A!n=URYm֨kBa~n }}mMYGG q5$ﮟx!/lo|<5TmT-E*DZ^ ]ű`?|ihڀq˿kQIUh _o'bKZǧ=pa J,ZOtgv⳯'SCla{_WOؓcJbpQ +Vg&nr.]. -s ˜65 "e;s}y}7Qk}/-;9T,FH[ ;HoS"k]dOU0L Ӵ_N]H|fw@!!uIXR!E4~=!wPª?b_FBh>n,n|gAX99#nԹ'`\L6s3L;3L;3N;Cc$AU,PMIH>q$0T 7swOl_ٕ} w_!$D䫔xhZjۄtK`:Rlb5Nc!'vd_w=N>ì_Q js9LLoEb0D\)swG/ U)*g$ ĺCF2O)6of"JsvFDŐ (Y;rZYjWt""&|Uñ:y QK^Kxt/i;8-l$vw.h N'-Շ{ *4d"l U Y@$_ɒ#T5< f ^=1޳ F̸f%VuB8QnlE6G7ta#5}Ç> `D`9YyZy T- Tvv Մ~ȃRb0U)tƝ =*#CMVeďWFAw:M/( /hpSGeEo٦!< B3.Xxes=gJTMH-}G\Mߊ#[]L?;J֛HyMջA`K7j&_BiC}gOAe9j#;hu:AoW˚@~l0En ɀ 1jؗfT&i*̬i|;xRk2t` ˚Cz,{фꛕ44F:2mEQ,2#=JfPFz?>cɼjQ=02T$[>eUw42a5ث6jv0ʾabqypUx"bi)C&nB/H ]/^.6B Iۇ/+*6'X觍QnVT[&Ϸ'݆.A ;7S9u6__b"UnjZEVkHJMC_]g0_4T%w pKYcoc.Qx=s }u­\+DQxzr/+q5dhe^EYL,0h:G\Ĩ(Cdcy"VX ^n#FpJ4T x0//FKRt ߥjEVP7FVnCbl{# Q`pB|dčƍWT7y4g<-GEhCucƠѸ9;  F:oڼl_=x.qŇL9')5lbSh;BlS;^TH-- kYE-jl>;@ײh((MP|8䃤6 !>m$E٠au湾;:2@"! mV -WYJ!&FQ}E*l=/:$rSXMϭ$#Z!%/%CLp\1>5̞hn?x] ItBMĭD<ѧÈDHUu7r\Aa8"OԪH.;Dtpos9x`<+^OaS= (l΄pI> Z5:*B|,A&?X\?Di1uYAm?+ rsH `s& ]9Kgh<6o"j9%ZPDe:}X\g6a^+S! t8%Q3<+ϐ:FxO1$k"t ɏ&dfW:ŧr^?|O*i] J/O6RqUW0aב:RCW*ݓ6%$ KC82u&XiM*| _T'1w: 5{r]rGX7ɗCa!knh\V㼚1p&gP "TAvT'"jND zאd u2Mv;»F:4Yv׸B 7 43ɗI6$i1m~+q4C_P.A٪@W*A_EL dmRtک|Uٳ3 RjJ32tCV&[#Lʻ+onMԡ&`P܊lJXWpPK:{UC9봴߰B9w#sUG;"mwCT{%{fɫIj}ZR*n#R5 $x,*@. CiBf^N,]&Q1[iPT6cJ:Y&ٶmXałf%v}>Sq*Ie("ؐ!MŋbMDbJi08y`n^2lP6pM9boYM GY'4$vKC!]}>KɨD,Ƚnis P1+oH*bb8s%ӬzvmJEWBl MF~eV~SLr{}<vtH@Kb0x+HRBs1Yaa ^okԌج^ݲU&NN+t麶mQ,ǕrrDd6;{?J %p"C/WēFCB)NI$ò,0#L5#*ze7>.Vj!B1zhx['}l$X4B-pv۲a08{cuƢJ;V\qq/4=)О5aBc ];=%NV95Z=,Tr/VQ*PJ7~0(싅 [ے*6ֲ\0eyS+3òU$fw.&+Z ϴ!RiDC$1u ̂V&͛.af8"p4?^U/'+᦭L7C"]f}KP syro/⭜Ij].u Mō̥ƂF'S&EyXc cuwGrs|zɖGG<ŦuڴG1S$+Ϣu4H-;=DJT;/9["Kt1Jk@Im%y`UN`b_pobbQdgO* 7űeX2]ҪQ2پ#![gӘ᲼"zka}GC[0x6MO|ڙnIΆ /uJUQYZ MuWU+im's$7qyWQTe+TķSh{XX'wK'W3˴?ٶ{ӘWG(j@Ӆ0!WUe4nB[ . .է__(Io4]Y*ShS谹R t}c ^Lojq{V LMEt:<94#a†F1m{vt~I‹i[#Zx1E e1.Y<{Llۄ=;!HjX]v4|\LjH٪"$}F-"2m\ܵm[!S|&(a9]}?0ٻ"05AJOKkL;u/{s~oV9)7'_ r:Ƚ@a W:_k县<,PP7:fi"AF"6v> QY٘P\"diad9G_(a\8JM@zBHy 6Pϲf0W-z {̀pb?"˝TxD ݣWIvԆx@Z[l=I\0#K>Xs[1;u6KKɋz(=|r#tTZ~moer_[_}/%8FYJȪ[1esBKɓSDZ^eY? }vUA8?;}0@±74վ N7cT݂'<2Ĵ֖'a"R#P[pw-B' G QNtȦSl{Z MPN-eSa"0hub[y(TsڣCn0yL&REF9-_ߐMht(6e+uE[4ʮMyz3|uӒPzҩ|>vv9 ?=ZxX_Y"YYYYYYYYYYY/<(y5)ZXt\d %1JY~ _<#Bwi٩!l䵃SF킖j9 Pm)SJ1#|ux*D4/ULEc.K)ې wt7._B{YYJ8tPl}zf#aү.ئQw(J.bPtR%,gOl5O =20`Z}*HU<%d9*γq<5&W$f|7^RnQʳa%)"[:""jz8}>ݮ,F )=z:,}gPٙri cp#q"Fp)NiGijMDK-6MR4qrȞ[L ! V$HSV&9/b:SHGQS%i(I{v+C: x_fˣC`ӕImiԔ&ec18E2*m"LM~n&N@`!i`G-5U}ϧ e&qe2de@ccoa~S$iem̈́ ^G( tlȷa2T֞;E'sJ5h 7w[IXBMV1 ΪB^J7S/Ӝ.6&ɶĆV^݄>H;Y+_C5y;C{"0:'EYnܥEᰛM;qOUNfpS9Pw*JM{qHdtҿu{5{QO.qŽNI{ 4M2o nW'LXpG`z~p"!x2k0F,&+5kCb.N{ۅ9Pj)o'EzPP3~SnyK,p% #zppz5SPFtez>ƄY,Cz5Y$[.?ּl H~G5SKd ȼZRA\&]F|ǔזjPNѢ$0%#X f+b{Gjb1?oYP sA#^f&tn(gBcbt.hΙ@څi(|E{'"_f I+׽wY ieEvm"OZ{Tuш?UMk<| tkaR-JnqKxVʳc}IkK|f3f?g3/f?p6tKNf_$g Uⱈ9|B &Ry+;x Mc ߾ pG^{@*}'p1TZQ2PqE}礮*#hlj~ yJ|H]tpy*r缎{R"fO.AJ!ܼMgv6}([mD9E.!;!''"pF]0jvc~":Ox Fϸ}@` Răie7QlOCF~RU^y%iه'iBmg)vUA5l46,ɒBU JI yX;0M~;¹1%\BUsyT]p1+` Q˯Ri(ki=YJVyof|;폲I("+7CմO 5NfvU9UJT5oB"e fqZbZ4c;Ʉq&+gky"XNsf i/ OTWI:lKdV9ko m'$Y1@E)=4DydTY қy ك*4U Yi,jP~NM|1`ykݪ IgJZ}u;/PG`OaNXX΍.˃3U_RIlbs*^(KxM:eQb7O'5=[~O/RZ 3yZt [y t-쵭q t? 1NVh}Kr]88ӱlOaQxˤؽ|z43'L!HF@f:bShu@5%: ۹y9?CyJٛfs\7HjߢeHDf |6vq"ڋY*&t15q?2:cTI`pE|G+0fd47"زkYo' 2yI@MAs:]{G[fP]t2MX NCj&I+Sɵ%v6-k|"(A_^e髓"hlbN4Y 4kZ5=QUt/qzPݎ{/^;7cbOJ! hP{6 QEN֠DW_*|lRNXte!F"cdw žy!4>@GKp+ utlp:"2d]lZ:i\7S) ^F-V} Q+[#En ҄,;G 5_$ I4L??B zg8~E8elYTdÜG^KeMKʱ. 0l[:{bD^Ă2CYI=Sŏh)I={x0Ȃ݀:pHh+ !=xRf8FXE-9<#<&8^;$T {4wG㩓5pWX8сqhSQ]ؘNeƟ{(x|Yu 9:NO ы(?_GۓSx%..z8ͧKH]<&4xy[[ߵdc<{mecճ^}6{f=g3;&3.BlgEWҴ|/] 1Ĭ!f.lV l7r4@Y_tE[훥tܖ (SƧzV//$F}4h§'6jЉ{m}Iaf[ZOʦ $ىbFshsknx >tŇcД/{|A<&//@|f0NZf%)vw%lPf dLE"V FR:[μ`*M5GY>00`1oem_OF،̸b7Uٝm}V;4νw:nkzig 8=5Cpȵc³nL Fh@/j:<Jg>lCx~:of7f3g:o{ΒvWq՚٧fꟐ=nҏ =|VzDg1({y?z#Yf$e; Bٸl]XV_LBk}^|$CQ`@0]pv^آһ`F2E:p#.y5)4EzG- 9LTsfG}` 'R(8񕉋qFxwf85Q!*]uB)ryk.eMZSxױ[]L08TpUtmsHn&A*HS $\2 E \lج٭x~| @i[ ,j%Bτ %5GHȇ| B͑ 5~Kl)^Z܇Ânid}S Ȏi(;c`vx^8;rL}ϧH>B" WA~1nb=GaED́T .f D`JU$P0!fA.dө(fN[H3Rng.@9Ϙ[$fL:`ƥFYuBCx Ysv]YȞ|p~4 k(<& GmPi(p hEie0v9FRdSY!uӃN31Q 8O ROf \H܄fB-&!M>J>r0*_qtC{?ڶ'S 9n7㊫+ڋG~TK[B)4`Gy|'Aq:LQf RSUaJh:C t5: O6>/FտPhp8Jq(E3hfa U$pXV 5A>貜d õTi(/n1mL禫)e]oGzGǗcl26l.yb>!"/3 𚜑=5aJ0 Ŧ4.{%f2(i"8p.kއO6<$̬GAy&A2/. 9n̋^EM #aMF|*=a_>;$FFG'UߍA oe1;Zq i^9G|i;*'0ip{Z9qn7?' c]WK:@3"tDv#)32rL`#vBMQ8<_Φ"=]"V)%IR!͘xi~U#(vX#eSJb1<Lbq䷩>XU>&_`)3jɭU۲r8E$T֣t'JkA2A.YdTb ?\lJz*3mU&,`y"}[6"iѺ äzG|¡!A*E^>SxϤIC;jO(%0Rݞx2sMvn}2194jTd8lfFEϫ&7KZ+̺pY'da6krR Dbc[k1-G%Wy9%GtT7CEkE6XNxF$r`𮮐(Y]Qa֬t`KXn,Wv)by 2ӵl>ϦrKϵ"%NM"1CC<9RKꮼ'n{.8斂iQ2:s7U %5`yGtSpfW=N|kf 'qո(-c)ZGm8SFy}-WIBaV^@3$ГR @41Q,Xx-{fL _dL)m,J:J}yXɘFkiY39e(Twenctgppm^{p%>3g3f?3w]$Fird5Qnퟵ1,w60S7u̷cnESƞ_đv9ݍ(8xU1nK1$ׇ˷KTu^#(FK'_d}Q~߃Wv0U  Iuƒո-jyoeeU{wu^/zy/ڑ Dp•RC%QK_e8ɣ%4/ۣ fJLM(-.=R(*S#\v6wx7kdd(r+'O+w47Ot !_5f`BG*jᣍ(J>k VxgWN6#^+of5th3Kv g4Ɓ fZ` ֻf"#;:K`bET3bVÅZR/Vni; O=윕%N.Pdҽ_/Nl˹6dBt G$d3\0@=zƃN*|"BҖ ķ)D*e[@bl%eIlt߀!m">'hV  ֢Fsogox] hJ{=Vr#,¹xp=[y[g6_6_SE(wsQf[ d{j598dkԷy<7ç2&4;{s.DғcG _*h%joód38vy18WÓNv0&6іs*85%oT*NW5YI79&6$]J<g7ofZ.ab*XWiFXooܠٍE uVqjkHP3: 3Ng s{D1G[ 0f$%?ԦTAZ49`]BeӲ%2rWo54V{w=4ߊLYp'T3U L+7I+ذITja7-엇u\Ֆu_X #yB-ep|uߐ;bA,2xXt\#}-Ν%HD׿L_|znq_( zj\o_`+/fi}2}V8l.eK J'fʼ$uI[{! uwJW@|&Cn^^/ꬿn&PYxp(mvVeS[&13)n[ !#Q!A\NEYQI: &^r  lgDs;GuO-xޔI5;RD]zBf-M0Cn?8Z߶i+}\  D"wDkIp7:KFuZvW6+;Gg'{xUP9댖-bthd K7F;>S;`QD7cc,+5\0nS+o!nmzNŤ2g0 c?߆ݭW7׿]vf%>3{f=g31F."RL Y fY` 2 WT*ɬbܝ*Ƌ7&Ht1/5?ɛ -T0pH vsjI$h&ORXSk)HOnrAa!rCDyިqԆiKwq285FѸKҫKdSh2BuJG÷ q\O쟦@_yMF{{ļ(CV#kqoW:„Ttm OX"%%av+)t I }{UZ,`9c"QiB(TIU".hN46aCyodeDlI.҂<4@ocqo^c-*^5Y7_Ķ%3@][Dp5y$~(֮ץ3?57n'ҷPQM*P%L9IOSB W!!oY1\L)> BOrlÊz,U[j2BqȳȠNuMè|o ̓ y܈e2)D'](FLמ<.⣥B. 5\#]],cS4  p<5(ua3Zw(kfmPXjJ03 |S5^ to(5GxCH{ ΜOX5*Oy: ʤjkH T: B7Q;"}[xVT& p5ggDVʛ{nŁp "0UunxnM͖QDAߢ\O+E;x iv:aNR50ެ._;L -An:\PR_j<-H KkG(_7VR4 L敎dl&>A DA8nvmvk~c0Ľ0:4zXn:Ѯ#4!DI}9Vny =8h\Zu$cL80S169q}T^ol1Djpf8c,*=]'Ϸv-5:ֈ!fB\Bm㮡IʁfN?'HJ 7:Ǡc ֘U?>L};Zal>^"euoEzde>j~.3NipIFfJ+*w&0n๢I\C4>y(-5 -VÌbĸ%6 b7K-2!3b8À$sT:6F i+?;8'Y$8DeWg"w.))/AFd6Zj,?2hk!6=v`Yw/=1ݨ%O@E&ow/TPuFƀPh"%z[tcS32?0{{dM{Ц c~>YL*][<.OQI?w{f9D稪8|.m @]Â;F5Ba5y$q6 h,hYFl>[A欃iqI.4퓏EEeY#%N=nu - (],+B£KᦍL]<8|]wVu&<"g&q-An]HBH(T9.Rb9-NÖ0s#i q9D)m qo|6`R*~+\4@B]Q~yV^Jl#>ߒE&e@F>rrk͈ xKؕ{P-זzZ. .6$Sq<<83hAwJѳᛗJ^oT De"r)][Z eCb=ѷJBL,$ q8c>Ѣ#޻ +/꯮:|lưS uo|x6{=g3le)99 ~Оc?;)6FAh}؛lg!!WnV;еQ>w,m'+KVWެ1ZC{\9c7Xx}go~`qu_k{=z̉7c:׏W;AY{yCw)~'%Km{~Ꮓý#.?ϸQ Ejd9ukwdFɨUD2a Ae@ uS-JK?I _JCTùͤvN*sB%[vq_s9弄v޾k:I&LV7KN?Y;S%RAi` ql1Y?ʫdn1GyO7d ѷ&|kҷ|Qⴝ xsU=8zLJj0juan ;#0fe$~p\ C3Ƃ2CddeՌ mZLTr6ÕRL xe7xUE(̍äJ+Ay}˫Ȭt5jCTv%☂^] HQ{(*CU8v,6qIni:iiג4ķw2 lК֍ǫJٍ5 6 GswWzA0AKrW6i꼻A!gS r~ 9 ]Ny-N}}W7O=jG~;u|INu*_&XU"V'49mswk{ֿ[r7as˟|}<ʷOs6J}?p3(u}QvcE>-vw9K}H*X]Z[Y[h74äDQwF݁ͺe;ur{Uǧ5?Uq?jwJ\8ww7w޸ڍwܸGwڸGw؀PNnKYR.sftJ=->\,$?Mu>]wr w!1]v$HN|a?%яӗ;*:gTiži\{}?t>H”ړVn;J@DNY7r6j.sVBaz.cZ,<[B`Zaޭå$sp%j4vb\/RFrB%чQ~_B3hUL7+ - gUk HT߶w3k^7 2rLNY|f@eVN Z:%ݥ٠ U+xx2b2B-%!!:bc!@_]y!kVsܨe.9a8ny 9YCb'w^n̷X8Д]'8v$q Pg7S_|A;}yyԌЫIjJM%DIӬr%nJ\D4 M(4uHhtb^jg[XegLh&d>yHMk4U~? nv$ '7 =yb9v`  Vi%R+ccHaq E^m[\w51y~n/#%CyHv_M9<@w' -32 6й5d>_4a"7xMBͭslcuTϽҵ2߽9#jGx'o$cL.6Y! | =ikH HAp,IXP dh,S$6xtG@G3qc 6zRƒ;وx G^"X.O} ,Oq z+΢r)^`Ȏ|V/Hݙ R֠\&a9ArAfk~\\Y=K5JLtr cO1𝏯.K|}uDowWOR; ~;/Ç3ϗȆ\t)SmC%0P]Q.^'3v3>>790