#!/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 # Check if dkms is installed. dkms --version &> /dev/null || { echo "Package dkms is required. Try to install dkms first." exit 4 } # Check if the kernel module is in use. /sbin/modinfo intel_sgx &> /dev/null && { /sbin/modprobe -r intel_sgx || { echo "$PKG_NAME can't be reinstalled because the kernel module is in use." exit 4 } } DRIVER_INSTALL_PATH=/opt/intel/sgxdriver [[ -x $DRIVER_INSTALL_PATH/uninstall.sh ]] && $DRIVER_INSTALL_PATH/uninstall.sh &> /dev/null 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 '/^intel_sgx$/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=118 # Run /usr/bin/md5sum on the binary payload to get the MD5 check sum. CHKSUM=cd22ecc268aa76f793b27f3368f508cd # 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 if [ ! -f package/dkms.conf ]; then echo "File dkms.conf does not exist." exit 1 fi source scripts/installConfig make install popd ${SGX_PACKAGES_PATH}/${DRIVER_PKG_NAME}/scripts/install.sh rm -fr ${DRIVER_TEMP_FOLDER} trap - EXIT exit 0  B?(2@1$l< XH A>i4")GX@>T(D'hg hh3@4N9k X0Fe R<"$11> 4H✘6G;21:: y|ⰓAcX6h;y8r X* c+ԥ/q> fatiufc P]g: 4@68b=OQ;4sA3Ng;XGcCrL},6YÁm0dczW3{F 83OnwW@3x7,d*;4NkdjǴ Aw:H=4tnA&pYu6k`:ZO;_ GYF qأC1cC {u6 mdHJGs4GI3aYc5P;ЩyGfuQ:{wb@%i( $;E0\-xe}k}ygF f`` 0Guee#ZyĴΙ+p0TfCOi)aO)Tbd8* o+^u:v֬Ɩf C99xQRkųhA p1'!ZEuiZ>F-W+>e^X#` KOncHtaet "Xn|Ɣ】wA͸7|C"F#܄B{'˧A5 /[PD'\|FRk]IP>/zn79f_u^AXe:SNh~ "tO)bhQ&wp g9@ w7D}n2W?j6 /uli hgF t8^A#i' 8Kͺ9Pq E\LӧLdyБy잿AZ0ʶJmA\q .ԥU$^Sʲѵ!CrȺ%nx}bFZf@wVc"s %Fgȭ.\XݤTO$&?*NF>ߔ8i5LwWޠ3%ĵ г~FJoٟp/m&c+my ,U wf:BgsOoΓ\,7SA;^v %kP}&(smy*NR>]G᠒JK;5, %=oKc(*em TsPRFG~BJc#o! {A+[ʇ7_\۫\)`WW!aˆ6B[*7foușTnZD_'X㣡+ j8l̪rIF3z&c7´oُQ cخ-">SwlyKfd]/I{H%o:usױ c 4M8_AFri ں[B kB~bhsxb:u52YoisQx ?w2Hl 5,݌*I!~bPҁoX~^K=&|_~X3O'+n5`w:p6%H@q߸+h2-/g1ԏa D ?7>סͮ=`pt`+Müw!~5q&s$*,J8x{ħs;ȐD(}Wc܌ 2D,_Bi3L?vn^B4D[EWGhcڬK%@1 ,q U5 S ;$苊 T{0 g9.6܀NEVZQ{.Wk Ut6ZK{w.;X`zRG= E8N]6w=QWG,vZf 2ʹ g=eanz5bG:ƙ 0Wy8>(.%18zI,j9U'׮d IR+P)^ޭNLև@%,2;4tiڟ.PVAe5f[5&<[$pK9N&Is[;3s)#q >rޭx+Ӹ^,rЭ`coIr4XxAl?J"јQQ|OY_x9vi\JA_xA*f46uCb juX+[e^_?Ͼzzc`_,\[eկ|C1m`B SNM:#ʠ.n.>Oj瓀b%DÀkXHRkrJ{If'7T33Ne@eg (<= {Jͻ7:k)/lU*A&Fp<@6Apr(`S/Ӹ\*ͻMB0~fm踵,d Sicuأ> oou7T˙\T֥#< 0+ܰ'޵31xwsRiӌ@y _s A(V&YL>"A*C99nT[r+C4G !iEjTuٱ1uek''moj)1Pbl( l6`ovM㷀nKv:&MfTIJcPaqeI.F^s4+Y#^sc۱FCxP-"g429_^:)F8BAq@X q 2+ E0h1+/9d^N`rCmUKm]VXN0;l#uqyN d j<ý `PcB{ Iwt5 t=$K=**l@e[Jg͓ Qؒ(1l*]Ϲ\D_ʹk]Ns)z,L d^Fς($":R6 FLYU%1,AǢOu t,_B7J _ rkmc+fZ0 h:MgQIbqQO4:(^Bj`3bNMk!1G riٚ_Tۣi915̇X?8mpGNM^nm4s,0!$ZvHoUQx; >ĠuKsnW7v a'[AFgg~Whp67\M!)N.͍u`5ő؟%.7#tn̾NGEU+X"e>e]O&8& āQP!C羚',Q+0¾֔SC1$ qP;|N*HF~#_ϝ$ ؐ3p\eĒZ^lXᅠ8swr X OgmQBI Mh+9;(ёV@e;oqeKzɡwh@ԅ ޾5n),6NT gP\Ȱ>BN#M2Xtƽk"ʼZɳ wБo>t;a W;d8 }u+5 @bK/~~NWo^ώv)mO0@c0oV^Dl=gI9ɽHC{E~Hnv_6]2L̛@IHQ>XTg,ˎߐ–]w֡E"/m%|-SE2Ct8xqDQEaƻǻנݽz<p _ i%1PZ)ABVx,=ů*x@K"5vb'-愘AYk81x!nB[Hge! zW2jѦU0`aU,жq5o17}$U \a Ƴm,'M(mYn$E#/2Ӌӗ!hգΉ@XHNA' !JQ= 4tQwf¿hԃ^Fl0(uReЂxpAX#x0vv@'ozvQ)/4oap$':ZUL3GsQt.Evh4N&-Ж?,%h,^Iu伓2Fe#3۾ru޼yvo1ŝ b)jhH l mI@E4? `pCo ka7h&gO?'OzQTMc,@ P'pf?yg`n6-y gt{STdw[R" ĥOtPi=S+GY9+~sq"iHLI  ""gs}?#Z'mMGL'@@CN(L4UCU,%'Q.fաd"",>"O 2aXQ*)F%-ꣷ\Fp1Mյxzy#lt۴mZDר3#~䗹2SW1㉇CF|5l[ ̫0q*){VQHVn=_}|usƋeqI﬘]Pܙ7|!d=ty=۠ٞԧ-d&gcfch9e{VtKF%Is2ɟۚ.i7V ^nxQ &qVǶ-_)Aj SdSٙ憭MkR0m}acthT G0 ,d樬p %#7򵸓W.]dP%VZO튩f?)&GJy_О[~SZH,V1?rv`"00@+F1NEr;:6t;uuzLpyV88E`IFڄAס?bb4HWRND9ĩ*,@=hBp?9pJ$idc~hOFC/pW8qI( t2&/Մ96Mvc[ .rE<pr:?iqLѦͱjƱ5sg=$>^}MiDaɵN@<3nf\~FivL\ 1ә,t A*+U=3b7;cבFq.%$l|a-i!Av,@vȿfpE$~ ub)&n&LN;lXoWֶAr6-(+-hYVeWx>ÛÍ.(U- si?pjR*)o:nnyT<aW.P2f`ZE U8R:YHOdKXǴs?6uUkMu (%c-<S Оk!o(C*z!U'_qt!KT`2R|0oT/Fʓ$#θFZ^n_bM.ת(F,K?LtA^]Z25c14Aէ<ͪ$_:мm=L|xΘ\1OfoX1b쓢Y2Ci֛U=])47@<ȹϋ1FƕwEHmh4m܅T:$Fq}3U<Cchuf){Q&@h˺h~bPf<)+5U5x.NrUӨ96p{qwDBe|]Q.ZqB!(IP r$3baNp͹5G OV&A-7qYfH8ql_PAfiQQP-̯$ꢾf^P H5ĭS6@r"$F2kL5]E3KɤAR!a#Y^yhA4KHtL_IE^d1*.ҷީ ,K_X4A 8Vt9TAOR,ƠY(r-isnw{܊G',Y(xBlHb6fUoK|ItgK.hog̔e<9. .i ;`VnJSU}dpWN_";3C&zmMGP߿%@uFZ6;iqNY$#r0. 2mvn+jV"hE>No0q c0/PX))L=>HxuXɔmFHˊ0otT70\y\C,c .L K^5u-ك>2ő9͚FM q: |R(,g<҄up]W `"ػ&|.¯ȁZ\= /Kf4Pvn`5|ΜBt)ԓh21j-M= \' d.޴еqT=/vUPqLXNK)u;rf?1~=TFp@3+[$c;Mr@Ϭ#EN_C u\ʑ*1G[xٗF-(Yq-RMH0:4I g4׉!J>w|qZ!3 q1IJH%xo}֢WjcpK-"!=>L9.7)ڢ6EJ"闵_8kp~Hӂ{gYJT'}Ɯ$RH];jeϪfg}fznz +hφ~Qc~Q_ƺjU>?¿e HUxqjisc]LKɶttiiƋ[v-=[tgmi;ՒWmi{sukK?>&X!nېV Fi5 Y'GS1cLEuH7QRTa1EK<>{nPm*:Bbv %]QrGcPn]i70]=ݕ*a`RZHꕸ%~? # Q«<~H`g{ރ{NV< ޽FRRRć::=8 ʶкګ6[=.ΖT7PsLǸ..S_D(kA#ffu\bdz.ii}T8~s P|ߥ)LD-T4fy;U5VQ=|.}+ZW^L Zxy̾~Qe(%QCRr$]Nvl0?oDiDSZ;zlt,s>'YNv0 D9GH CKcdM<Ɇ %oGe<84\|; /gAT`H&.L?_Kݶ*BAnx=X(r2B.0Tn1_S( N^#\RffYLF1-$Y@b5D3LS(tz[%_xY%#`vDky.ӑ h,)'(9S fc s=4 ['!|՜,rN|os]3В ߆{A><;ջxmݙ}c1C}UgsN$gsuryc KG] ꣉C1/䗝&cb"Xe,a8 1xMHQ09t#ptKG0"ۣ:+Xs72SkNV S 2kE& GJb>aa(/[I 6lP'b&,gS)tI-Eҗ 1dr[*@/{tV`>rK } ל)gspVBiJ|nS/vJvm1R LȟX븅(^s1.:v39t_#Jɨ@#ns|d93`ҏ cDה~RH4>b (T۫5s?E?,of)AؾV򕅣=vUm WQb,AscZ{DwQ|# 7T\M,̷i-w+b??[b/#p0WRS w U׋;67 QfPb;WXmJAn 1#|b«/RNZ4xYX!{×=rw*rtF|xEtpX-C3TPv(Y³G-rۍFx= .⁉ɑ~cU1\p S;vFIO^e<9orvڑ|hrҌq65%yygzM~N%E6uU+<\A^ٻflN h}%ϐO^D6&qQU<Œ5@"zj؏ÚhQ:N-(T iz|ZJ}& ֐f4O3yĄPᏗy&4uY޸ijS/8h8|s2HPOj;cۯAo< Df^ʲÑ&1J8> 6*gÉ9FYk$`/ɻEw0SE բ8;U"W<"Ą,[4ZnOqþX}ޡ<:\Mgڰ q,+_`d*zq4Il#R\xAtMǍb"3$U*M\Xn'MuVbrW+Xz9, 9k =HE2-e u6L7> [@I~#RrJ_=/*AXMRfN.tUH; 8 xZV%km֖4?. xU#Z(#3KE 锡ܝ4F3f9FT.n\@X[ 5}L ,Cd%_@2{ACTsPaA`PN`PԏGʛhqрGLh4#kvrBm(pDJIdxCIi;SE"öl]"oyR``Bwԋ62 mq]+*bY{ZLb`/gc? h[s0%N4}:;{ڰ^7 ' q:CGxC6;'mzCK6Ow?ڡS'<8Lȹ{"̙.,ڏ1L?Ɍ/fA8-M*؃Vd8iOBQ;HGr)vuM*y,ݤeB_ ݢziTC7_>bڪSnߝAJO:T2%19c-o#xl1o/-QAAtq2;IEgmn=;h?AHf)T8^.q;9Qs'G|l&=~mCk^/ *O&fsI<:g>pw_dFYw?Ǐ ق&l*YG4*n^ހ1˰+8 }::/婋9a1٦R&&H! FoӐ|!V`!Ԑn -5Gߙ>H)L3dP{茻6a{hjjUph_P"w;MP_p՟tߝuf+ `!oSkoBY(@IL_wx"Nb5/``Tl/:ۗK{,KmKSs&冗ҡ(wIC^O#Ьgd/x(Rsy4+Tٗ;DݔdI` s" 5& ;h=!CB0B*px7`80y _ Fx5tZ$p^rUc,d ՛P!`}4

-}چrЖ9_`E'/Q[W^N'UMacO֮xU\ArpiP@'rOUCe?Cn-D z..5MD.ԸX8>JUo| S!Цv_ai _*2UM1IJGn@8=j@Xuzj.LD'kH'w'wIƗęN Ӓ5) gQ f`2ۈB~;4O+vޥHG(*94khHDOw٘z2[_ Mz>W_+ٯrߵ[)_k_U#卵oQҮq|!*,w &1u]3Q gBH4Ɂ b3eW+Bxo=L NM&y Ep3D KF_L4N) 볙 Di +Qp~!pzE="a &HiL!nbUx߁w Y@HBگrMo6jZfy٪0ʛ}f!IuڬVC0Y]īf~EVǷaZUxu 3ty'fSЄk9Űm3FuT{sPS]{s7kEUmԛX;B0.tl)+Uu]-au)4e{oe+B_UF9ʄRZpۥds_h^kBdo9R4Cxѩu2R" (!>J.^^Q۱9^#> Ѵ]%DIQ- Rr"`c^ŰYgvhzb<@ D)뭷zt?+K̉ڢh%Qth7cb"SJS!$4Z'M')Ih$"qnW*Q]|2bpnguϕќΉ̑~W!O>8K'ɾwhq.k {fۛik^]>-8IPW=1Iƒ&6IeKe3iCL奂5#E+f$< Źl Q&e"g /X0ktËmL>W9eVg q6m+ i0`i>fI0ᤳDD7"R%`Cz2QtfK9 0SrtSpIM?J\X ,];{`B`YF:I>$miUߑG@P kw*v2rJE}?& $7"Xp5ͨ%2o{*s-k31^twAT,88.]c1\KΓ(d"y V6,C(+$;!<l;~:HiLUL<.|H_~~Yy|VFɎꌵŸ!C SLJf3dY]4嗣 لh:N/ʯ T7Zִ R#EUIBhQ|5T$N0}Y~iFI7{]ڔn|[MM3{5sh3 T { P߈ӹG RNACDgʙ_\_ ̴um:<sޣ;k؉M:́I&/mhXGf!WJ)E+ .T$U2!ct &vrNS>]PK)m1!p YG Rߩx]:WJo%+Z$~okǯhl_\J3}+WJP+7Ue&}q|z~r*_KWn_coy ;i98؋(Ĭ?r-L*5LduO4 "4#Z#E{SA 6C1CH:D'fށ?g4.5z+N-ܜ jY ,*:pmI 3N0ɰ22ysKnP"I,]"TEZIgkhD/aASP3s<޶ZP~ଭP.xOx44[$ >٫Q\+Bo4 27e*5i3<WuGL {8(#e&`Ia  Joe_^εm{ {v?╋>`aX)6m6D7ȍ@j% }bݫ3t}Oaz›V \FffʝSB(c13b $d{98IVzz{ܨ~a mEjNIK/rrd23$G*K Ii4m1AGI~P{S>mmQ=F guHu>w?U)]I Dl%KeQ?DUЫ0~o$a̹Eakζ?>}t6:Eg=^Z+d|/M#CI=M<^ӘjZfO(-#;>ni[.Ǔ׵c& l,xmym.\=j;|}~EgCcƏ+z~4owB=NSp;z7'1A6%a}6& x| 0gݭ쯑ךCn'AԌ1bm8 e.A&Z+|7!"&; _W۸sm+lk,1̅37]r^&m,?[[ky|VWb&^S|(9^v96N'o(0\|T] L *0 G:2dA8:n𒦖X [ěOHsV8m~I,o= 0P0]19ld XF` y20Ej5U=(R- +ZeJj$7GE?_hC]!WYrrh;{hm?r)' )jz?Vlȿ;9oh&Q I}KEjXlvS }أ_/Ce~qBlr~l y [xN&0ľlˁ䐥/.Ȃ%rȒ 4B# tVĢP%v="һkЃdD.YXk HdiPBneOHh70 %X--QL9(IlWz<{JxRdT/xH Տ^٢E~kDW^ůBA$ {M h9NT=^]-;9%ũS(܅kKyuކې[<.>ou`iD[m`"em #@lk@!l7EE3k D&d m!a@@ {BHG^ML%e L⇝Q2',?@?~ JJT4@R:mz%}4pW|-75QŠyxQ;`6=N康f3j=6ݰN!/[s]ر\$Q~Gc3BW4Ls,!#`CvO>lօ/m*Sr4h3F/3UV\]&EB+􁸉, pǓr4k[:=a".s~up=7?K7l,#zd٢E6kc6l@`+Zs<)7&Pg)]n/x.M˭.,HF ظ7cZP4" iv򗯴 ]g-+frxqvt,˒ Yie6U+6ŌO*Jg*Ip8TTԏ2[ŢvFJzሔ_wa͌0EE_u_;9"?>>S*6DTIw>|QjJH"AB4 Xߪ0b(NICN,OzM{>ٙ)Yntcw oȫ$bP[/i#0vg)p&J,Y2d齑Ke/ \emܬ9@K+:c+*[4;*+pƋE48+wK obf(ƒ"غY+% MO";۰ܦ0l?WqcVm6RBZꑥro3y+aQ%y Dx>% v-kN;sGN9̡4NIbV7T)s{[ʻ\<|켬q+ MNdnЙk ,ȣD7B-9cGL_2=LFX;ƅ8|gh{lJd & f"@fPJzXZlǾX]4\a6\{(ĜƔN4Lylǒ3cbm36, ݮ}yۣCp.CGjxg{LWGً'Y[ V>kSV sh~8v7X3>3bx>n#\Q<є6s,vL𩨼jV}]1b#w?̧(a+vc^0j*\~^ԗn|ԕveE*j( ._ Wr@!b!t*N8._M. 4ĈTRZaD mIEI<8)k:]u[o@fm2龇MqáCeoa{h|r=Bl9k|8izӮ6?8+$WAKb/C7'%b7mgO2{kI]/dM(6Y E{N192>%cյf<:WژkHhn^Gøѫ4U="L}-, Q* iB6,EeJ{\vC`clUx: Ta4  e0TwE(+i7Z򌓎+Ka(v:VyS+Yr_.[9xaٖL+[3[c'l P(YXC)'66@6)=<3".JШ{]ZU'su(ƟW:V;"vp"- P>=Bw~?6h d'!(qƐ\;ᾤSv̓ZDV',PrOG_u9C_Nfm2cj[ַ?9d:(6zus =;HDvS| }63C$,ie^#SwDྡ?^fRfCj<9Lq_Fy<9eۅtaoVFܟ55JqkeU8lN:cFH0m)P?ӏ2rC{'Y)bo՞4PVrmT\]0jk) ,1>Lҽ4woa|>ѷ}k#M6B'f&%t-3OQAӇ^xWH{םI66N8ӣ#6R, <,ezSIJb7Q RVkz F=5&Iln0:jaJN}417*ݹp #EB}xb$kĢ5@LD83Xc.PfEؖH1~fȸ tM=ԂҢמoyg8e "z!pJ\-}3Sͪ8myq0(^ Vj8v#9hn4oU$/۹DhE)?[DMΗ ${)Y9.+Px7$}2@UN tZoىr5ۭuWgfr۹%w$xdJhmIZiI^`|uڤA&@~Ad*@i*-HYq v)k5&؀OX܆fPX܂C0r}`qDK7A!G4]FmܘyY k}{s VwAx6782T@g@ =H]0zG1B;giil83C_7jwI;jEa)SnӪ@N036s\nWRW=-g={fNFǷ7o[(Mm )vX❊9 pQ~ØHk8/Q{Uo֊xp|螌vSd 1̦_vlv 5jjd<0vҴk\RǨ'Y,9xUD9h+6nhrJ @(ǾݠmPcٖԃTOU%KzK%4A.٭"Sp@|$B;ᘉejG !0`_xd‘J34ľӽk--F+d;c4b,&#>ӡ2s JԈѢB8Tǹ&o2Kй6@O%8rBITj`U$n%cy<;f$hlגW& 7@x?>zCIm]kmNWXOv LJ˝TyN+PvA]EF-=Ȕ}$\.e0\ـe8p!j:I5dڝ; F^э[A0@yih0>gmRԯQ8A/G۪'WeBo] @0ZZ3憌GѹLIiX_q,ã17%SǻS{1dK~]4ճhĎ1EoO_\NYԆnu *,Eܻ.A[|7Õjpffr;d{f)=OzxN3P_B*nG+~x6uaX4"Opon׌Y*J/Fsy61Hl/ mx!߆MAc;R7nӽn܈B8kLWE+N޼ ϝPGn}1k:$F܌H -a<05L {xtDhBp6 :XĤ5Ph#ݪ,`6D~ۑ4b-ݖ3-ϗrޔ?:;ZIT`WVQXU_$8ݟq =X읜&xDI(mj{2R3xHnGUr"Ÿk THXoCU!tЂ^xݻ wu09dl\a]M%n ;Y,Ml\y"!L[?p)8Lf*)j1Ljܛ3FDbO$R!%׬*Gv Be W!}t.霵# _"An*{)fNHQw[!uuSdž1Uh0Я;@Bb|9 ukDj@ zEahss2f($&T$vTGb=}Jws|J-~̖+AiKz r[Pܿ 5׭M% 5O%}ʢaJ>NKH,ͯ 3Z5[$iGq1 d545#YBYT% X;&rZ|\AE7-0) h>쀘Q\u(ɵ!_ ZEo2B|d(|ݑTT?ZEC0Ver욀 \QoŠIވW}u%5T9q`cr4" >29#N;Ys8&m2W=Dh.!{z18pƨ2 QC-V|ȠF X# &!媜$U$&߳ ZC}BE6BzX%>A8"?7t'eahG# }E!~IM\fλzk+ HM{XT"˲K !O}dUpVx۱s5<9ifb2Uņ܃8vpIf9t㟂cpZ7Pӡ+eU_|.M(&&6OdA~EOemB{ɇ6wÒZDlODnXMS7rjF+ Q :H]N=32=p֙'mA*"%'6@[;.[V崜Ĺ R9kLB}B *s.u;5N)#HL"QZ#URqn5 /]|JvU  _vGbbe%J27[z5Y9K&∝m!#(u:[ntӗbvcAIx b6a4vs?DJCp(Pf?Um͂>@%ʿQAF7;^gW[o 7(>jՊ+1HɽKS3LjjŰ:I27F&@7g8βTT)1IŲ%XtnU%d<)9ػyVdum2_Չ^1x~GuF1J@3 ;:"b=DiR}U=#xyw+4n4[:t]+l\9 gEXiI~+@u̅H=G[P%vOT i+ꅂoӅ,X騆˶:X5@-*onq,i˨]Fqk6sĽt"pd:?l>ɥ6wӭGCkpSRsg>YULx>d3"kc_idCpCmXf|J)s27lmqQ..dN/@}M.^=trb%͐*T 5YtB ܚƈ --js/^z>b #IQN\yC2(`♠R#y4zrIoϰԟH۲y흜ˢ6Yxog@B=TV@$?wD>D&UOu4X+"}6_);[I}D@:UL]m]'FN5 ^)52_(7J.O/i'$:FOx?߷xZumЮ-a3UYPA[Sr+AjٞO S‹y0 {_pJ^\pCZDS&˓On񫁢8^2h|8G{5ϙvq &NQP⸫ Έs\ *bKĝ19%_OG_j-tiu?(6wIdn Ě=Ėq" V=iWAQeEiM_#P̶F/1Q2q+K|e6(FilݵT(9Uɪ2h_;K Ϛ5M$}/Th:;$wS%kv݁i~ EÓ'缈0d&vOO /1zO_žv芍S4"Yu,ܓtb{Kt̞a1uۆ*Bb8?oū_+ iItD 1kJ?4R!Q`0~2 \PIvdU>]Q"}Ԡ0̙JI܅U߼9ߜV$(Uq))(X׹xh9G׳ $vǘ/a|-SU<)jC L@'s5GI)X^_?"a60#D:$ZړއZ wgz +qٍF@'jB;'4'Y1(h$NTl ,c›kXhdגZU{1wPb$d8\/~w5v*HqG9xt47A(]mIʯ@e6{,[7mQ0-P3'4s"5- 4ѽ%j 9 qr9m4AWvI U1 IYp2X* Ӛj4/8<017%\FUf֒3o6W$7-)7NeC^c :үMx}8q祺xT&C%d#[7aaV׍Z)G `nk%jA7'vf#Rݕr!."ԑs[{'əw˜~@Nvr ([pUi>7J% tftpnĭR4;ƼW0`r~R 6b`3$d_f-9*9sJEb鋷$)y*JO90?Zys /y*YBYe({يc+_1W |Rq%qE`86`߇))dvJ#""UY gvV(m,qCjd]Ton¦fV-_=継%7C:]t, e΍'S4@X_[Q MGF3S5bLXK2,OAZB8=>I3L2"1^#7 Jƫn',D膂)/vx-& * ~)i0=}O$ΪSFbW{3R̚ GmnhfK܍~kW';No2IuDv{ k f^o~)Q,)TC(5$J{%lChJIL,ȸ$mb򫑎=IJ v6m4 ђv87fۜ$ ɑ|˙cՙ5/NˇĒH79 ևZ]QpR}C>ZxiDl,2wU_ؽ[vgϞ.ƳK=-:I?umܐyVj77.zo6XW=im<2R|NNl(fҗʯ/i`TǛOZ43_'?.ogca;vu;wo}% gg}[шPBE Ft|Kj3o[ } ~NN_}_|Fa晜yR9[n_ؿ ڭ^ش/6?E%&ף17<sx_oUlQN[+ƳIޖ;x$Փ:٘L*])Ctg7jG\2IizhZ $v'wG|D<&!A&¥1l2'@x35:9&ݲq(A =7M}~n{ڠ-f>/J첢Rѧ6*km]V!if4,FN\XI]NunLǟȆ-$>ͥp1 Ջ?\Xs vwrbX"0Yds nϷ0Ʈl~ٸBCӛ&=8$3;:'乃?S*0G糋WGҐ]0f_w ;wPc :;0ŋl 2$80LKP_WN4ߨ7m& l;휁i{:hFWwӸqpkaYo'Cpmuz̫ VE#]298 2?n܏iװ"dF.+2XhS/K]e C"uOl|&g5"HF$vd :nBEUYߣSLIQQ:ubDsvCY} GʃJ)~o:qOKZUk*ƨJch-<^c{eW&HxOq1Req@TZ - ;iB˵i?*9Ss\)- Poqnv IwgWw|2SXgS<2]񒜷uN^B'A>9J=M\!@ې%. (*S}dibF<xC$x6'2IwxH`r[tH; F$ &!*s7O2"vU #+j,>V{1&q%{PxAX<٘]F"jo8ltffmޔ3B;C\u~\)7ַx&>#9gcDƝxnJ{'R9{Wwr'5 /6دsdI]-qI d4ѢsK4l1j;K&z$if ] Ĭ%+׫e#Wu90Id p<8y5v4v؃t1:4+9[yg>T%tmٙ|}PӞoH`ؑ(wPpDdF1E8/DLI%sVjbэ1L02'U:cN1:8 'OjT(_O5,;J}|E{TsN[ekSa1EHQɞ J =ā8=]Gk:HXNt?fԖfKi3J6e=Yt`P>uŲg;L8J+dI/!ԿOQs͟솣9m d\ )%Q+?^8=4 )HST"Ӯx,QB \1 \hZhNdD9;Gqh8|"{Ro0Ttlxsx{eʛ6,3TQqg~.d\f{|ډRD>˂uq9NldGkό\IGxԋg14C;䯨 l-=* h!i5shJd & .1ꎎ5W]F'C")"u#PfX?Irb30Y+>7=HHҝ'7П=ڼ=>zɈ3T |om={y|`uLW;j<o 'kR"(;>}-7e>qMq{x% ji7Uu}QS7]իcM|h߼mFSUe~:m7PJ Oգ HOMdԡOvԪך%UGm~ a[%j8:~kTz:^7:6ZӃjC6N5ۯ7%Yz;Tm+TsA;TD?l_oZ8&L t4Oj{u#6>fϧP ~TCq.83<{!vy٪N[5xfYk՚IvڬaW*5At8mi(6NOj{g^ާi>>Ӟ7>`8%m 7pfiƪ8M[ ZQٱڛk1ެaM,Pa+@4p\..khYUc8lf] M[x: #ryxjÊCן_J1/$ehIc|F殽lO/09=}LϾR7a~y|ث+˪7R%/@TH*.I T$UT &QWVW+bT{7iz2ԹRߥ_`n0N)MUv1-ZwϺs1pou}*5X݈hG2TyPqȓ{[-UЎ} koCWV)#";w:hJx>ŬOn.BZ좨ro(WL6ɑi**+^UID vt|>5sb\$wPܽv^q@ 趖!VVȁjS4];pz\zVȤ2{=ț\II(V ĵnGe}b Wwe>Xܭ"*Q~}7ev(#b&of^DsO3R?W/Χ65=ћFxIe27MxǸ=*ok9(Hy f;& \ Juڎ"n|d "e:Xjl>g Ug w9JS! Ɩ~ldGL;ɏ~}I\IhX[Yr!tqi%i<0.l/Oz {~\A$ЖQБ 95MunYt߽!B[$e֯iMUWnL3+땵|xJf6V ^=Xj_'3O?s?s?s?s?s?֭NX