#!/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=cd4a9481ce25fe5f5f1818da98bb3197 # 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 hFNA)#ИE<-eapϏȟȜci̙8L#SMhG?faDaySߥ̉8[h' " o}nk'?fG?bnx> dblkӌ&7,I:L cA.C4yU`Rws5 &,H$#R J,n:AdJk>BIx;x)yRtJEf2ܧш_Cc `Nucbh G\j]vt SKC?9 ).,C?[C,ńRLi:o(K:jo'u(`h-uxs f=ݺuk bX:)2M} `VkJ+h2Pdi@rp2bj!O;$i  8R˺jj50d]/Jԣ 8ip%qyzC665$X MH@fGcS'K3҇(HT`p< d3иD( C;ՠ@ɒ S"DvOaMjMij0uL2TIL?fJ\G%8K!ѩRe?pg)x؍EblԿ*P5qo+^6UCYf,ǖ #:=|QjRkhAp1G!ZEueZ>FW+=>učo\w|D 05"NikH7cnVza?]^}Oy/۝ݽ5owŅ{ABļ{ Bzģ}V=6ECi3rZdT15; Ki@ZOS ᆓ6ܾ nq!sgA?e>y|[3҂""\||6Zk3|f^~4lż80|Hۉv>7>էkqo8<6pVndl&]H7. srbX׸AɖVArʐK54v@Q(Ьm\eP4]R'ś=txShԖ@H]zQQY?%,]U1$G؋[G'vl4e4zeE->zk2G/XoZYbB|p5OϢofjdOP ;Myr^Cr~vXyQ]A\0q5k,u(wjm4e[Ҷ7'_ip(.k&-Tx6Cf5bgM~\w3i~9!ۻFz=P(J9k2ׄiv*壱޳K!<^WXe`L0-y[2RVP1{WhOsHIb jdM d"W~x?xe_wug}jXjF}u8kfoOOϡzs5m(]"pcF]Ie^acSbZ[k!<s|~wF_sžZ +m9o^h[޹<s7Ѿ4^Xry+E\kRh uRhʃ'ສkvAs:4t(L\Y~'54c Ҥ GOWU+ԙZBtzՂrm'xlg/twhvdg@Pm1Utqs`BPC5NB_nOF}d[V\8unZD[O(?lUg܉+n `{>p%H@q߸KxdJ"^H/B$wÐI`l<9~(qOf! H6 !{WOm#C.ZZ@ #fq r )e?dqvpݬ!:::Bfev_*Y``meh4x3VA7 d0/* P  @(4 CTDܹ!l}86Zk달4PˣE:+4´EC +/%' G|nyB^T7a2o#=ۺ;߾D @xz{ :L+ۘ%Gˇ̹kYmNx BOE ^".t#Bo}w~p`i# WP|7Mؿ 4P+9 %=rVʔeCazX&!dpkgC`nvru냡CVɔ*)S}ӂ~3uG[-R*^A&2TAXt+hAxw'G+L|.Г0LlwN\Wǚb vzZ2 ʹ yY4bʲ07oɌ7 *ń둮v.0{6E*Ρz:{I $^K/ZNjuj2xU+Jԏqjow:U /EDg_C Mahֵyv4wr fV?Ms-%T,$慩kR6sӅuC 9Ksrഝ\[QvրgW*:8\Ps^BT"x%8~И"͝GO㲩P2wmB60~f,d Ŵtu(^R <#"4}s P jHPj6RlU^KS[4'#CT>׻ ަΗ?蜎- Ͱ2r)εN0M MP[ oY/'՚W^uNn-wC坱>,Z=-Uy$ۥ fm$RWQ& 1q\M"g餿98ɣvi I|bp!xL'BU_glUTIx֍O&庐!sE^E|# ‰WFI0? ?JŲZ`dFKϺ:+]^eJoQw`w`Ez <#q-UN aW2 Xbd+(?M5k8Ot8AFNL'@DZc߲ CeqH×.dIO` I!8,@j_C>D8Ĝ^F[HfI$0Ce)㈌uqd N-va%|e]t&tgiHtsG8^S MMl;?4YYq Um^!>o [t|XC~gC&&N*_E;{cUQhOKs]C~liw$n,6$hAmZ`!,*} Xh/31ft=$K=**l@')]XB6Oj*@vsGm`KTlt=6οs})JΚb;@sEw9&v̱X],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; >Ġj%9et7jxs`?⓭ R3Lx4Vu':d~iU:7fd@,2X2.'u_DN(TࡈUs_FsQ(a_k)8to{FQ{'O^rO~n#?OfW| l82hbI}/feOvJw_b9,gPK'dz ʶFDqH vdfW%Ќ;G4 ^e:;Z s :0+`zȠ}B;ti-.Ѩ|>JbwՅ4XÚC:/<`gADVt:]5**+Z5lf}׳W?۫a 1 ,-0Gaq3}Me~}E8g#}d,(Ģmbzd2-bZgU6I.c1˘h$6?Vk-,-ZPf.TJäs <{_zRk֛7hOG!{b˾4’ՏmpqLW±CuPJ4[0%-X1",ĀXAX)#% dGww6º4 #C˥r~ZmS٦/ eu#O%#:V XOQtYyfus]5F|~6j$@sghe?뵞bvg4uE˕ީ vn4QeK 507ZMn6vһA5ؽ ŘsiQ=~5gq؆BO 5¤]nm5aFpoHcd4I_dmpmʽ 嶸F[*LYY]n Rb*P.F# .!DPQ`t =_]X{ ؂>{(׻{NST8Q.3C%҃r!hZ<ҳ:t4}^,c( X_h'.FGXй%@{X_EӖ(ơWk.^ J;!ӯ<0޼wcFS"``,vߐ-<;xo{ |=ϴr{3 1j&).(m$wed79Nė}X!-ŻHt CD_ڸK[dm%Lq( +∤yy㫦G^H14 s1^V)nz|a)27Hm=i#w.\^~P==}ۦoak[C?ᶟo|zesm|#goQWk߶w6=˞<(05 aZCO^A_?'0ѽ{> (r !, ¡bn+Ӽ iлRdqV6- Edb5[x8T!j᪷'d0%lg)e>mB@irk&)qdxq^|h,P>9GmwNRB p2:YQa0m ҿ43E`F2*`s؀A"?/ (pаۗT|:)H~ӳÈJyA#x 9y2Rdԝ9ڝsM׀P/so7F'p4iaa.@cJ3To&t1*!_5ͳ3D>)dKQD -EZpgnN4*q^hw VS̶wX {A7?<o]>y jjucjmGhz8+X7c7?>vSico8#ÕO7$`T܂i .|#J]?>ǏUH~ωd]/͏IC:=g">Gx-Hb/@W y<.dY:9lk>C e:j|dm&D6Q'>M6E)۳|g:){]7 [5mp&J;+~/ !Q4.ؖ,ԯځzQ0E6)nnڴg*Ӷ.з8JFMP b>x@PzB@6`ʪ'z Q2Rh*|#_yB OHZ»+kU,%ܮjbrd> 7YQtak#gf*ClQT*C!ٸLo.@YWno$gQ3|YzP`M8 D}*&Ft%TNC“-9h4_9t(fˢB;|1gz'N8 6 .QW5Ǧtl d0m_ࠈg\NN>U|'?P|<)9V82r5ӫt8:( 6VQ x`pސsm+Ow¨TV2 ;؎K:@#f:D>HeżtfP~gź:6ҥ|qdO7%:$( W]ra㾈ǩ˷:ƴ1>%%f͇On\,ބ̈́ig>g-uj8'ua4ЬutMuFKjz_ɴh85)Bxݷv^7Gyv E*+U(ƻ " h *)^v1ǏM]ZSa;'J a Tÿv{e9ZʐE w'}ȠoU W]FȒ9&La%,%#?˲d#Ij3q{צ&|򗿘z2*'RA56A'4]W{tMff m4 |~i6:Ox* 0m'ꗎz>4/r[e` z6ި3&Wq+YV >!h@fAUO(k.+M,rb 2q]RA+wzw!86@o\Lk@i<RC~O+5G S a H;k'}dl۳7F>_ŒVf2BEzwn7dۚ;$?ed5+ƄM; ohSfZpHcN(_/I8afq7<6ѦsSm5Ph>um]Bru7F-Ogk"48$;a@pb5A˩CjDri)oTvA7 ɂ7&=U>!'$$cݣY^k?kEڲ$~ Tn}l|y #ހ \4j$E,%оu_WTg\P;l43JԽFCɌkaĠ\sn m,ӡIЀE|~&N3 '@1SQ6U 0Rl<-* ;D]׌Ur2`K3=c^&=uHPXĘ(C|hx)4H*1lvs"Z=k9 =fvrn3iSߠh5kl36ZXE;U?#>eY˙:BNJ.'P5=*)@%;+E%x΍]|}nv=[% EP7U)]LԆcLꭷ~#l)bX rwϒC4GEå4MT{-W:`Yi>c[˽U`'`"]3`h7DHz'mz#;n)K?dDErAͮmxYJm4'ډ-&"1aF +5eҚ G5I L fx?FGx ÕW%=2I d&˵4l𑥥p)̡h4hz`qNBa?&Jj(U W w- 5s9~EԚ/tWxܐ]l6#t3s3v|KGQkh =:Q(M't ?-y[c2r{\Jѭ3TE [57Yzx$Fm "xfw'/rBGmƠlbUT9RhξT6n@ɒ|G||le7lB^FJ1СN8ΧAN轅FT2@AC䋣Wךiɴ`HI|VF*X;}KvZW;\ji IdR~qN})PrIX{S4@"؟k<8DR^;3$F—ܑPTg-~V5=W?-s U_e]_AS6M3ύJ? /J-W6֕V*Y}5..-mxe߭o@ ENjۼUKbZx`LMK[6^ޢ_kҦ;nKR-Ֆ=\GKn)cb h`s-FŠdzm|L>X[=>_EWl{ً'8(\&> F& NyD^qDzVԟ2X3kv|Fr WzD-(gV"` w{2t 6'̥_p9Bm6YI IY="c(-I{I)4Sz\LD!Ve[Ք/ԯ`d}$vsNK Z5KGDž)տT#x d~vymTokݳ=OS;Q޶5QW,t}j$N, fN?.cn|ybf 5y|ݠ+ڸyqӁ&>9 ޡ뒰 ̓a}ުj[Ep6%'y",E!(Y^IEK_up |Uσu0bfSMK =#5䒧ƠFPݢ n:aLf{+#TêC+q7dKzN[/(~F0ۣWy%!pLѽ7 z#x{xL0VQ-ZG?m c+O _-U,}h;%utzp@mu{[mf$83;EG/A%ƿ uw_7R8Z]}Q!'+y vwۺ3-bjIhl>36vG#b2' ^/;k L&|ǐŬEX*np {A^c'ϑ'kaNA)sGr)3:2`PExGuWB?/ond8έ16da׊^ M$|Hmyk @ P>^a0D l89NH;LX4S钢[/)`;c䆷+-;U1-E /<_ :2*8v*}ޗ7B9)SMW3rg"2ܦogw_HcO)::2c?)q '?QBw*c:\t6,grPG>Q၈)F^rf.85Xѥo-@)쥐 hl :Xj }P9[k~ ~XR惰}-5B+ G{ fڪX>2 2~*3Fto`Yo. ĭ[x6F gYmO&ͦE%ygO3!^ES;wg @``iL0[v׮B%+&/p0=RvJbɊLH1; nUbWgcok߷=՟έNjO.c7A3\~pYz{Yg8eCm/mٻL#Զ;&՜S}J jQ96kngN&B󭷉mDŽ@(e MIȀp }V~^F2!a$-q%5wmTo@, 0 3̠nAwر2d9xkD窻9 m5_"AV?.#=I ݈*o=;<ƅxU' h?\]ʞqFr \'L- dRvnx s[s䅬r{QR5Z I\ m,*cvG.El})ryeIKGmm(Kz zZ s_4m-unS/OM# }]W`)hIU?*UL}R D{Y6HT$@UrM95m6_,F]6o!vNjIPߋ_\ގ탬i?$wǯUW7< 3go#hִ  gdɓ2md,gN>An 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@"zwk؋ÚhQ:N-(T iz|ZJ}& ֐f4O3yĄPWy&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]"oy^R``Bwԋ62 mq]+*bY{ZLb`/gc? h[s0%N4}:;{ڰaY EI8#^坓vwz6W%f͓kv*89:*#'5!r^8sfź c Ənf2㋅YiC@pK<,!.NaPN.Ҧ}\ >cuJa7iC^P4W{,hw6䱏1wgPӆ6LILmX{2j^9?@_ۋ{is|Td0q]L .n,hRsQY}[@'Ox ; .mvλgTDΑ)5[ yoϤ_p Dzʓ'(ayY)مwO2H ?J֑7Ϳ׀7`2,D wߩgky|DX| ydT w4djzb>"5BKwfa8̟!ٟ&:C؞xڬZշ.F'Z]&NG%h'w;fs9ƽtvdx&plDyZ[.(n Pһ(SE@vS*G1gX &)jq0`.Ԝit(]|xRߐA)4 J%"x ,Ezz7"YG34gBè1D qrv8kX5S/u5<$Er3rPNQ)L4NI"7}ִvJ=='ox[nSd~,8'~w<U !2!}VP&uK *V&وDO&ڧхU%E(]e(W#OK"aN)GIK֕&rǶ[+#IUqSpS?^WbF,\c8\!Ԅ6z*SUþx=@E?и[ ^_M> 5n:"N8R[y5HTWXZ·W/|x:&@sSeᑼ-NZ*6P@$#~Ku|6b$2щ%Rv%qfӂ:BdMJ>>B1YnL6РaMw)ʩ}#6#ӝ}6^WC~jwmV w{cP|Ua`|_7B@OFOLFLJB%` %v({`OG&\ "7'ӆ.͔A\x d0)fG:7m*N11z/}1p3^:|3f:7XnNDI$I=<+#1UR}2d!@-n{l;m̍l'#wt'`ty7ma2Ms*; V13H#R ;&xD%YQGq_lbʫ N15BUBⱺ4휝1~sCL s4N,z4pUz;I.Α~7 j@)qWS?ۚ=>ШyRoj#Nq VMxs%?T>'ZFU5K~{pW?zSRP::naZǥ<6}MZc-|[#UAm껧Ն:9m7ky^)|ՎZzp'eu Y}}P`{FmAAkvG PsڟO7A[:)*!hn-̭xYkcH:8n|6k%hU-PLVs;Yi@9;=i{c^ݣ=> 7>`845x 4av[N1l&Q@c-ZQU&s&Lk?=[Jc0~.;lLwE7'Pp]J+>t;l wM]_MMQBt ݂.`?(u/o/H&:6U ulfG.J`Az+I'ÎO1Ĝ-fYOuM'v3&&_xn$/?A<>+SX#Sd[uZp}9&G]6+\EeJ=`5:Ggx(᪤DY&gY* הT+& ʛX!I3ڱЄO1ncw|.|} fVeMhfjB6ay9# :+@ֺ:Gd+5mCsHQUХZiq_t?)E_beEuq^D6[>_%VvcL'^MƜ,Z%<Uނ37"tt.hQ6èibc6YrW9חhB<3mCi OĜ!vbs yK2c"VƆY+RFQJKILXrIӔO2}JmbHe17B+Q}Gwj5uWU[}I ʟ8~mW+~])|uotxW{RA'TD/MUI_)i觟ҕۗ[Nnd9hD 1\K$--f&S ~DS+1 H!MrH"H'{1TPP̐ ɶwϙ~}>Do -7gZA9˽J\@ŒG,Gq2,# L9ԥH$K UVZZ$ +osX|~r]~ց!VGpImxwjb< F}ƛ58O_Fg[[k/6woI=L\|d4FB'O7n~.DưZH|%F\!S&81Zi[B⒡n?XTŒ8xs21-jΌ$>쯑ךCn'AԌ1bm8 e.A&Z+j>C~쎛p{Un+m|z{|BVeۙ .k{|A9t6_߸]>jgCEɩ >/tqY96N'o(0\|T] L *0 G:2dA81A `8J }t-ZT9j uO:QPoa>MR3vO ff2L>RE.Q)Gn[ߎ9y h^~9$ݤ*Jt4(agFkE7}_JTֶs&cU >JZDx%۹fv9axHDGmw?1`im-؆F:o&kUxq@׀7mڦK:idz{9dIIY :lMbvL^]NеRAh"a,|]mt{$F4^(SٖneOHh70 %X--QL9(IlWx<{JxRdT/xH Տ lQrR?5"x/UPVWUT!٠mݦQv4]'힜ǒ)µR z<:+bvXc:!ڝj ZtW!@zi.:Tg_ ~5ֈ&H,ϯSs/,}f}NQ?Zp=dEGIpJu4 bQ:I (LGeX˒g |,8=oaIFo`7t›o aY0_(PdO,FP>^Hw' Kx j㬎Qk>t4boNfmHs-Yn:0Ŵ N6zX\02ۆ 5 YXȢܵ"yMs0 = QB$t#&S?m&xDNi~(A^NV?%z%*HR e6C= >z+֚ètaSY5#$&>*Sr4h3F/3UV\]&EB+􁸉, pǓr4k;[:=a".s~}p=7?K7l,#zd٢E6kc6l@`+Zs<)7&Pg)]n/x.M˭.,HF ظ7cZP4" iv򗯴 ]g-+frxqvt,˒ Yie6U+6ŌO*Jg*Ip8TTԏ2[ŢvFJzሔ_wa͌0EE_uoO;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>kSVMO4?QxE1XEJhɲT"5IF/glNpwHj'& BNbDg)_D g0"6$ D ޢ$S5`!׷bш2Ue< "C9.ƟAR$I#HǙc-ۘv,6@JG *8H߰-4jVj~h9ڝLpm7.s5Fh3+Q%ɒ=5yP!Sս].-K_|_~'nFmrQ}~TGY {x /S64樶WQ^·}~VsUꉗŭ,y•UOUmPƲHSsr%0^iœ!|h^ v xEvTW}/>{]>Žmt'p"%. #lzt3KxR'y؀D>S)>z]hW<B"Ji\M];]ogc^b:,؄=9K!R gm|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' h ;Ό-"x4؁ _Q8EL(2n)]S`苵Rq3sE8%`vžMfU8Qhofcs /du^fy?+Xf|g;pp47B*gf`ZLi4LvR"o-T+u _s~{<ЛxqTN*':7DV339MR^ tJ?m  24$́8Kބi;l',n^O}}3(Q,n!_S>[V Ciew܂m" CH? .~6n'a$NUc?d vFϚ0&pf_ "oՊRݦU؝b( frmr/߳)g^Kno9r߼տ>Bmm ?XHuTID _ |zVlCd쵴zL kPQmk؀˶z­.^_%X*as r4n7BhĀ.'e L,{W;b #TRxy&\+Wuh9F7>_^u/W{:=Ky/g O*f!:PaӠ\B|VXWf kV{u`$/F{|j"]~KmTzRR |bF;JGݢ&á y`Dq'x*FSﭝ\,J. {YriJ{_>okսg+ LȀ:YgB&g- /F#-kSyLYr2&"K!׏j U6`GԈMµ`@E;: >H)`% K1ez򤃭Z[{2bd^B3F,fb2R;3*c<ǠIH-!$  H@krf+SoѺk $DY#'蛤Iv, VEb J[9f7c9cN&]ͦK*ځy-)%n Mݡz16UɼFԻzhɾM' eU4HnOB؃L GRRe \Cx^ݏ{P#Iݹa)M1ݨ{۩  sTl!x(ER{J}Rxn[&p e?0knzz<͔"[;<I|X2{;UyCv^i;8ES=IhPTUꔝEm8y VЯRB[ĽOR49%zc:\6 gmf/'@gBX> n %v\.g>Qw ։L# vHɑJi9~GwhM (XJ_܆ЈmhJ4VI!ѱ#q8F΍(ttUt!ͻ1YNu' s^H:m͸ԼBPzQ s0XÄLmG,.Lm gs `,X!u6ҭ΂. f3L?鷻O#r؝m=s`a|I!M㼣\ϑD5vee5q\U..)EPem`iIR(搱(#5'vQ{qX% R2LOV7QMGK-jٹx)Q c@8IvѕTƠ6ε'8%3ɘ k~hʽN0h?(COE;qD|Ƞ](e7_ IP`KNˆԞ4@9ds"4Ǥԅ%3x>cfcDġQ D"b]rZ{ˆ}dw "4_p5`ҷMWY;B?hxPy%a⌀'Κ2٩neyMܼRX<6 9k'?tkk7Ƴc_Y[D ]e2ij:9vŞG ɾo",:KW 1 ;DpRNTxqKˤh p`zbEۍ#vC6DvD$C8:Q8:@k~EfEK!!tQ^daBC?QKa`8eylCXŏJ?IT1n!$מ RN& ˠW&|=ǜ=-CKmBbIEbGu/.Q׭x8%l&;?ΩK,5Ps:Qڤh^`.XTҧ,㴄"aB?uN1pY3E&}sQyJFyNN\S`NS3%LePջsa".Uh_tpr]n ˘{y@UPǎ \Ş衵^99++#G"gHIE5/Z^0diC`/Ȏ](Ȯ uȉ6\ |J}]7_]C 6 :&N@k(33rU:cXFAZ|H Q%|3dO8fNU>?jŊ/STԈ`X8 p[$\3jҟ{V@aWkO跈&VHY'GDF9̠73  hd9C7""IIb5@lJdYV})3)^S /t;6.au'="L^гBН{@2,nSp ] *t:ܻ2P{EoХń,/"HlmCh?nXrR(:"Wвia +RqiF@=_C h%A;JZBzbgFfG:<^R[Eİ؆hkGE`˪8P~p^*9g x>bcZ]HxAe{nǠN9e I$ JJ*|w2 ᥋Wɮ4ļ`y}?YaHRL̵$]I__|uK<+r?D3â-d__G^sKR]<8H߉;Lᴮyq>7P=JWۊ0kES0R{KߩUУQǨibųUIӝW)ڵً1 v22(m8lB0ei7aΣxT)'s*qFݸBjqDa ]hC3ـ.MPOI'_ g!`Y'n1ȌǾݥ7hF[ڠY'\)rg{|2OgxJvo&F]Wu"C鶗1|̯4_QQ̳Ž>Xu4QZu_Ufl7^]-ϐf "&b a6:QbJMf&͖x:f WusNYQ292GDߊ:I ѻ1I`S9%֣ H,hG>eg+xy:HJks蚂?É[A+W 8eFiځ<`#Dd>\ gvO mڵő6`9Lx*0h X` Xne0HM4;Ia*Tx8x@y񜧩GD `%5 ?tE4EnSXIkUg>(+J#o:b5z]]ⳀF<-D4J`쮅BAYRONV @=Y"P5_~֬Il"s}!}BgZ/h +`C},Yl)đ9f?A9K7ʛNtO(S Y+t^凛hh08-ǜ6Etv 8M~a% %xªĔW(Pr/Kj }-w)t);|sCUI`+>pIt`hT?P,d!͉.F#wMwON{%2_c$v!!ua,+9^+GW°{:^UثT yL {: `m9ᗐx4`E_-.z=bIb<3&9*ૃUC>,N[cʠFYKLjQfWݫFaADE!Ct0 _z}xHx+8EWl7ɂc垤[ Цc 9]6TjYё-f҇DrێiMKzR`&y]N?YoIE^9{wDzQ?AzVԧ%\p]Lީ 3Ca6E)g;}W;'JzUgqmǓ3_%s wPI9p=Jf_<fS= _nw)<7B_܀=>;W xz8F$ !GqLgǮqV*[ob %~޼nH-ߟw){(^'UR/_Lc}$H̦S$Mgh]SSTl\bL#d隍T@N`VL.Ʈ d_QNTcƥ,X"`].~u2~ ^.p`xck^RSL;V?VdX« 20٪}>C ?6'ܶ_b`y}Xi@ GI8kjOzjqhN7L@ܝ:5ԯf7=a? bPBdƀ`C O}Tj:aPy4|3 oa5f]KjV5[A݋\h{sI>;P2۩ ]iGj>D\M҉v%J(BFWzr콲lݸ瞖J8'G´ CLRj$s'O\̉Դ(G% $G$z]q&6T$` 'erbm68LkRҼdx2r9WaZK:̼L_Ts`*:Mz!HRB6!Y;p¶ƝFQ 4leބ^otևmގZ]7j= 7H t^"1' KՂ"oNt+ rZ1Gp+E-Ur4攊oI SU*"r8Ma~(2^te}[U:׳Polя) Vb*gJt㊔p+mSR֕GhyRNF4Fmiik LIwJ.Д2X4qIW#{eul-!\5C.iA o1%Upnh\9Iu#} 2 $c3Ǫ3g/j^%:oQsyԘN"a3G&MC4N5k% Ao~Mxo8;n-jPmyà&Q R|@['9;*$6}ӈ:YLec]G{hfϟ?]?g[z[t&~^u۸!ͭon>]>_ml:v{oz~n;yd.K67Q̤/K__XӺ.77"iGgFNH\v62v6N`waK3leG#C %$9/UPm5Z)R-,_В-ن sP;9}}jgrKn?/voº}aV/ljzaӾoFOJL0Gcnx[7:[u:h<0mIrZ=ɤҵ"m>HwF)<}vu ;(sXF9U@bsq̧N4c"Ii"\&sQ?1[/́Pj-s90w~K :вmcy.+*}l*.nF` kFȂn$˅՝44\ftOlޢI\ wPE;. iw;*,+E6LAPq]-/WhhzӤxCtG`Rz-m+|AMzVh_ 2ζfqZvntu7˜F`s9VѨ˼ڋ?`eZ\4%3#Pz:"C.@Aq kp.!"|Of"?$iU@9?i*B^wFmi|Op\S,ȌdM џj>J@!TT=;UXNĞQCY'6nK4g7շpy<8thwfs74kXYՎZ^b$>֫kZ,1/Y61Lizxiz #,UDLER(]Rްf] \ b.x=,C*m005ҒP7_fǐOqw6nsuz7'3ŏ5y6S/%y/y{_\|0INe*$z Ms눻 1 i[`"9řCƈ6+ixOq7Ogs"t4+&g~辕8@˙`D@-`2wt!(")nW0IcwncHQ'O ed>,8Fga*?Xқ2p{[1kJAų2$2Mw8Mm;vJ`E?:~by~O}NhY0UG q7q[av&i81_$4v$J&@?62?Q>GL!K&Sp0(v 5Xti L92̉A$XzSL*,ɓJE r_'_՜S+vt>d/eڔEX&dL)9q炂RaC0q 1NCyyqOWњĄ46"?RMY,mX(O]%9΄ YҤvAS0Ɯrg?wN}5'>GxdGsTďNMicl0ȴ+! .qPhy8cWL"Z8Y8lnwNwQj% h4 A21\/^#0 c>U^ܙ .{1:v">} ϲl{]E|*5j0733W3~-Ep̆'!hǐ!-+2[ s ZHZ %څµI+hL۹ciͪ0UŐHHe,f&OE،!Lk֊ j%@,t,M>k7d *o|a?O<|`uLW;j<o 'kR"(;>}-7e>qMq{x% ji7Uxڨ).j{vO>4o޶ヽZG{2?_MeڄwWU&^OP{';jk͒W?zSRPPAނ5}QZc-|@-[GqꩪjU==6iYS8zSUЪqO5VB5@CUkOh{FmcBJPO[?aNj0jCIjm| GW=3˳{ڨba:zUSohƛƻn4iveڪRP @'ffoف~V=#0qVsAPRygfSфmŠEH:9c=ZujzJ傞BD˪u64uoe(` xʱ +^JG|k+ż?Ö%]=u^>޾=2=Hߴ/icƯb/ߴKQU#e^vڻ&S?+PTJ6 G^Y]}$iLЮRi ߤI ɴ SK~^|:|6UY ~"nkj~K: AjQVeX\16W$Gϧt+T~x GT'U.ؑӥW:svqm#Aqby>m-C&>P9h:w4J"Ie0>z7SPۭk8<*|[gET7ev(#b&of^DsO3R?W/Χ65=ћFxIe27MxǸ=*ok9(Hy f;& \ Juڎ"n|d "e:Xjl>g Ug w9JS! Ɩ~ldGL;ɏ~}I\IhX[Yr!tqi%i<0.8oyjѩ>SRffp!J$8AO|7HYfAܟEʐD2=:ڛObf' Y#pB?򒕗o+%% *w'qJw?=? z^hʨ_Hئ:,ސ?X-JV2״_*+qCLӧGΐSWVj5>l*Ey/[e xfr|>c}:̘>S[[Cs?s?s?s?s?s>?4a)X