#!/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=6b35d716f4d1d280c40f330d006da26e # 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 9tc'N4jFQ'9K}˱=z]SZD#jZZ6ʣIJ\e:«/KwV> Y85 6W.%K.,ߧ&Y2ƿ}C||1۴pHp؂YH3 i2`_Z>qȄ!!v|ˠ<2|&$ &5溵nu!0 `\q?4cPiz\}Z܋%>hDn e!>, z@P4$`!6M ǧ b,SM"2-FC-4>y^ Qu{$%gS"HTוF iWGXV`j?p$) |5ɀ}U ޸+/*P@=JVPTفdpNQgrOV?eFM*wƽ ǣ@2וN-_I*PWru_!"L:g= 'cvQ{  8j>V?cNm_/ғt# q(3Eձ*$HrGRNIo0 I6Ɗ̤'Ui4Uy/A:@gw}dٌ4}D( }ek(\G`F$rJEO ZV2MV@fS)c8 (CE'Js Aa\gKXlcOˆ9w{j͊Ee0u$-KݸgtFPU`l(6lo*u%E)8K8HkbvC̩!cRbr4SENF1uܑW&I J-i=mP>&wo;/L7x r# _`zxhV| =@~~' ^ Aޢz7a,ܹtZ5Yy]ć*GyW^ǽmEWdjAʛN7WY$)BpۄX+n[#y%/2Zg0F-'Ip3 .+{uŸ߆("[RFn6P=i8>{'}l+"FFB힗'ݭ4VK"DnDrQ,"dYS/,b!TCv4ΑG?OEj DlЦs}L+VWrXT+W0Zˣz?Ό˛sCb@4GlϚ٬8F*D_!t /(*FԦ N]GX~ ^aJM@PP!LhHmWIx44{k2XH>U,bqS l̩2x#WLSb8p6~`߾͗l ; BFLaG4nBԎ"XwAEnQB@vp6n7.xaYTiB#qpBKpF NӴ3 ^XK0}l Ԁx-\b%ꤾ€HImuE!WMQ4 J5Ԕ2/Ih[ LNT ZOt?xh:_*,W)K;!4. Lan.M+'Y2'RDíI'Y^eO-"h讽%Z-u-H 2"chB1R^(l&%]w _/tڢ\54.Xrnz$F} R S1Do aCgTJG}x<7u_| (.:4mhq[ȕ aw {1eZ@, 0XAy<9]diGF5cհ g$(ط@+/"Bk:*LwXr?[<%`4POv}0\e&ჃMڶl7-`(P9o{jXn~r #w >6Bg͉wH%xID֔N&:˓TehRd6"DzgF셟vWa,Yk-UXrq.y;5 OV (\Fă^|@v# c!A`(1t oFsii$c=j]Yg]_y 3%~2;)psPH6w_P H]k!Jy?>p400L~% 6[GGFmwﯸvvvvvvvvvv#eÒzTYp*\b2>ӗ8(mb8R4ET(O+wM ~$--5[Z#Q28vVyz≨p>:ҨWt:U_R(IYw&vr7jY ~ČG1u&Fhmipfc3HiVrl%SM?y9LNHL aGB0؇yS? Gny5Xv$GlֶǍ",|x?n?\xrm@JvџYf{d51yQz2nSv٫Єe` &ʛf^jېf&60a9s=IcpᩰH uaB<ۂ?&p/-vyV*sRl~j3jq#,ԩpxDq@AoZ51<,tL2{c% `[`PlM#֬[̔OqNT/VM!$-?G,VNlԾ.@U'0lQ3cDiiOw )KO$ʻIEBO~@.f9Jʥ#7k zBb7Rĺyme?ҭ}訌8S:p^glSFHGiߣ6Y^nYRkLbaQ3^άzQ$)S=KCƼ nS4Nzer6f{TKE6~pbb^Ca}K[Q/&$h7ɦ3d-q#TW!E\ZOV3J컓M/~xb:nvŵwnw~￈"./3Βa7P &w^^us(%ڷN r7b y-3| N{ _WNܑŅź.iwH-WRg$U ]w~0>砸 u/F<^!>JTM{{1{8ޠ=C{3v8X6]|t|:)x䤞;y'@~Att=~}AFPN{`SPO(4|"kg!nNKa^5N R`voLO?ٟ=xދU=>#թuZV>87_Cδ&?*{R k$I!\tm9+Ohd޺TTHsR^^ +&l7 3`w&ܡ8BW ,g#+&t=&Y6VJVІa`ҲF{5D^_l ~D%x*$G@nIrĠa0~ey8]pW-&Ms6M n6k/y7fQQ3Ƽ}<7|(d:i`li Q'XLRF6SbNf_ܘA+\U >R'0kn3&Q3"9vD q¥O}\_=X0HAlMl~X^w\f޴P3PѲ!HGD 3s>PX==K} ͤOd.AkN2uY>Kyo];˷/ַ.s~! qTB"T[ ٰ$Tqu+ngv?ϿϏ R#*m lav;H (-󷿳-ac'swb议N{u{@]=~՝se_ʚ25t(k 0eɨr6$EE[˽ӣx>ZFUxZ. ,xj%IU (f6d! ZEpz\`_mX^ߕYm`(c3q^zq΂~ LL]RV]~bnÿc0zI ww鿿k'%|F-O^n˹1Nf֯(K9̏BUv@ݕ:2:Ѽ{24s !7C6l& 'J%Ѭ?SG |P`maTQՐe XT"9Q5+N _PSOkw'foKk1^4MgZܖRNm4/Z6G{${$Q'xP]!lJ+ME>|-уMX0 H],p}dl:iL[nhG X/oj-l탮Ѷ Gi0K?oO-tKD`;iR)ydy8j@I6Ș@XPM^ EC `<ea կ٨ Q( R*bLtw`Qvi*KrN N"ʨd)* c`GI J!N^}-5܌ȝe5з$ Fw/+8/a}'kn.t@G$ͦk=쟝?mJ 5_{͠f̡]U7h&qKM&$AO1,|0=+c ^j$Tˈߩ|;xR 6 0&qn'EU>2K˒ٜ~eEW/5#R4;=b0 *)4gAhV.|oDXf+ՠ@''65kbu&SF `r˳bx8|jؔ"tMlΰZ]71d̼7oI/fx݊ju|}nG 7 E ΁im_ z3E.vm9skV)!*1XS7jc8!#HU, dqsw1xE ;cxetw(a$=чSU6s0/l1V,c~S(SdcΨ9Q{<^v$:kAAAvV(09k?j0?J7Km_;d&6Fs"3e./ffL-UPˏ/{g$l7Aa~iYڎn[yLԞr _;3Ȱ0X0{EF P[\!c&@3.C[&/6eTlSHhu0euZs1օoinL>lcY|H 1ܲ*՞.v9ÿTePR8Y6{  ŜrZwue<|MEǪ孅JQ+0ߖ.5;P9Z[\Ӏ"?dy_9t(9) HtzskgC 5H]L2MUwp7{SMWٙtkG'.ˈD]HNjB\W m,K$\vV+3h's{9*!4- $iԛ`ʸ`PER865zT.n1U $z?V%D'zlcUnkoeՔüR#T}Ȗ<+˯ v(T+$8/[7uT0XL~G8b-=t̃ے?+#3KJ[[!!Ue!Ŋ|NC+Qgm\%08Qe%.Nau1T[ MxgrDV-_8CuOkOc|f g`gs@+wE+}΄zp܁pc} 0P#nzC>Qz%-ؖEY m5zX4i ]9)#~):BU{ KnWђ7 2gg\dHKѳӽgR(iմt&#uZ]@:8([(\1I@e:,Ai\ *_WgT:ϨW}~NkȝsNVoE*˲v{ːJۜ- kQ;9p&g|4&T̝A,U7"ZN 3%)$^8nym,G`JZH!Ke wsvŜAݯ EEZVDnH *|ESCyktMݐ6eN[Ι; 2Sye$ A~7%2kðQ +oϟ ۏJNSדJm#*HMzU JtI|&k@@-him=W)ջ{7{WWUVl*ӢmvlCrGIjⓤЧ%B=1~8-_ArxHu8 !3 l]&Q5{i|@qT4[n?ȶa{im^"cʬEʻ]oRZȡupEEDTix^AL nNU{FvABha3iau A;* vHޡBy=e=r.u#'Gs6΃䜾;?frxh3Ǜ9 _ gYyMmq@cA= PpԫfTS0^GŽ)ۢrPup_ :Bi^2SFy_Dx^7& =lǁUaL"tI\۴vΨB~99*p1Sӽ=UAF(\cۃS>~s|23&ggQQ/=äQ3,P%XL;!ت]BC:dX(a9#/&p/KuF)Sp)$j{#ܖ\.;+x{5 BדBI]n*0>Qхُ@hu͓#ͱ滙=,Tr/VUPJpU}%/2tGÌf z&l[KXsnhegM Q}9OpW@1smg$0I\2nAKfsc"r28H%yTGNTm(e썋+-A+pG,19Ք (_l*nt.5V̆6z<%2iKm{hOu_*ٝ/gzn*)ݝOyMR36;˴iZ7CH7՘qDBͲ8[19wz\^9[N?jbD~F*Ⱥ\zqNлpolt V(l|\?mrz{[%.ӥ)0Ȑz&2@֍n;792R"@AS0ߟ3Z!_&*aԸϝUm[uLiBv˾a[}itS 6r(ދKo@q/Kc&FLd7fRz3B)Oj!,/*=iڴӐWfQ0Xx;[kTU,zAF:z|mVizrԩRFD/U@w #a9s k_]-σЮᖩ:vζLEz#j?cep=?{}wIëI{zx5AeqZExoc: c~ٵOґOȋ :r5#9tzhhSnҌ-*2}\ܵm[52\}(&S5 <~`|tEƁ1:~#/=ްgsPex_ XSّ,Dss<xppo")[O[BoGGg!2GgϠ_8Sό^A _&8:@3 L d{. fsPrEDK"mhz}*Gwe2̕K@A: /"RjbSK%7ˋEPӣ06CvOjZ^FG\a#6CT\ tDB@N@^vˁ[˪mg"dV1ˀ^h z2%(k^O΄M&ݥ>8M.Iέ^hi7is'kAׯGd@C?55F0"NІ` [#) qDlɊح5j!Zd݃me KBsyM.۱ag=*d ڷ>N= )'x!dˁY ԝAi".m:ʝyX`61f gyeP$ȷH'!X316FH4 !}[/8;?}s;PA:99?~w(%ߤ DTB M>!vOvi=AL@D?QA@!B/ X? s=hhU1Ֆ B52K/>{ݽє95\Ś{މ!p^B.J. g{{'s+w˟⿫ⶕ_f;cg[WG(H*uXv'<9HyA+M{ޘ͋VZ'|pOdb@x t&`:ьAetZ\73dXBvH5:bqPpÓ`c9ʉβT-BcSvY,ģ6bXH3 gi-q' \hЫ'LE vS{+w$v ZmuMiP5ް`C/$Z;U* QQЎ_v6Ӓ&&g-ԍ4OU.fi:PH7nWvpVilǺ=>u˒[Pzѩ${V@KOg?|dkL?L?L?L?L?L?L?L?L?|fg\5hAV=MI]}^BчS3Ҽuv %}C0B'}D-O^),Z^+a ldm~+ *U6 ,_и"g{7GRO F h]v 8ꈛJ3=\ā7btmԃ4h 161#_ֻ}h%%&2/:enw]rn@)讖f`E43QH\zMI;S ڢ  tكQB6Lzّ-u2@J0W>.u@wD |FVmz_y##aj8twѿ+²Z8v#QH 988މϏw6UqGB.[sJg\m rkT9x?lu-Y|&;ˏTc9q>_-lF:^8=~ ??~aB'{a(0=>ܶ*An|z6ѵ `_!)H0 `S/(܃˂42*u.2Btr t]¡HqvVI͏yƝM.3ߎ_=cM5T3@sHjRvcCHɿt1P8IaCP G1GW.;?A~Yu~Cu(Y<]O{΢:6 3(?w}?-ǾOSΤdUJgAZgЭ5+lx\**97yDK^C1a7#0.3Q'V&<'a%_?yPR Po4q/RM_<{u>Fy|1ݷo&~4MO:wtiaYI03~S8VnØ9[ ?Kxz>v .z$EXl4׿:p3NaGٸ666H\GTg98…+g ק4M,PjbL ח.Ð+ >,d!\fkll: XFIRbU.ȁCdډs|PXt ޮx0! T0xV 3O[ n~g}Fd}ۖcF1GaߠANBRB"'f2 ~bUHz <T+eh kt:UGЏs]9?m npA)'P\cʼnK:?eѦ.6,dy? v>CLh0i{g$LҬspڭ1G)nj_KMtHۑ>S6=GH]d>{@h|q-zּJR뉒@(sZH\.DTح5knR,zŞ_{/l2̇kzW~;ʦ% ϺrC"&N-oH@&Aȏ#GB< f۸¥8XRQ11^"H]& a4W Zȣ8 u6W;qⓉhG[%U=6[B9YPWʘz^_Z˽dJaV&O$"P=t@G7Dwۂ _eL)SfÔh-,lLwU?;V֖y?KK?_g3L?i4gE>;utl4],Bg)0J;} cЬAjO:ku]A{݆JC 'B/ =NۡW^Ҥ63Mu؇jeKSUyR$k FUqEV)E?e4pR9yn3 &uj¹:>rH|Jh ؈Eҩ<9JN"@Sϩ=:uzmxO"F 5X,&rD.[kv(OtoLP^%c%IF/r(]jS0N+9#vO9ġ6T9#͚c<2п ӭ{2T5!10hVgUnaәC}KJ6Œ8%Z>% 1r)YC:3V<eEXDDpdB-<7ۻזU|`;Ѻ:)Qֹ^6?w0Շ 4sɱ{G_xg=z=|#;%٣ꡣ/CHl j ~^ ^5MDKm&MR416!uז[34&pNb;|v{&08/&[HG1,kP쓴q]%TxE3D68C~Ih#NB '(s<K)B F]^H+Im85N LfBkYCÚ+~ Q]:ZViz#@˩wձ$k !Ӡy-tQS;bnٓ_E KnaM#QQIX*b=4i6T5"=Վ;雟%ZQ"Tz IT4E}oNnt-,3rSgA͈rVu&"oAl棞qޮҥCqs209i" !wjl4.mt8L Q'8%xjUJdM#tewfmsۅf57| #;nD_dg!ZY78O:/&f^dӎZ]zv3I'=3k`<Ek,/h+4PMl\KV R"6Q4puY M胜t}SsϽNR!L U͚z& (_fc7l&aS:7ٯ/hV/[߆HaTZ l &.gկ>d Ѣnjvx86R2u%TXC*I/LVP[ ņ+2j_oYP scA#\fqt|x{gg$g,ZŷuZԮ F[ j>?9ܵ"<AXl%u oHڹܥ1I/+ryG߫ he$=ld{ j^r} ]g{)Oԏ/?r&kLS?O_&0Sn$@^nkS zE!m; 0}߲wcU M?uޔ>h/ _?hf\[!wNՕys~˼q hpUvuȫGw_xnBۯ=D͘:5c.5=prI{U~=V&Û@je,?}Ԩ٩Y-ђ3@$cs ϶^E?8Xz"u#o:77ʣFn3q;WWެ=6on/,sft /`IQg9VxT+t$Ն/ ļ[t{h3᤹׆y^'ϏO.l)PGHU/o1$ <7913O/mPc+A:WN]+]u//^1 "eEz>P>Tn-0k0":Dky_n:J9&S|[G*[}(8,gP!n;: b|tl58ί"m@Dce,Ey!hTs2z})t=Ͳ,+tvo @`d-t6M9|{&pKni3| uSa},;[Tk7AAw9>߉OM6L>B[f g$dga89+k')"$}}۴@pd{`1BN+m4vȖGe.;ƫY~ͅ m'7{{ծ`n1c{'^M֖KOW_>#_$U`|Z""bjnU`?.5~rb'wbh<ǥ/`HA*窒=Cw}lнW t Ns6?یGF/ qߚ/̓=Tc 7LV͸ïz)kɫ]v_I'3KCfatVne MdwuCoHS4 -/LˍK/tA]˰ӧQD.Y}܂] ph~>~'۱}*t5%oT*NW5v5Qb EW6&0gGG[]5VXB&Σ/Eҋ[-q2לlBf6(4:@„jCePBY IǟjS,--R 3@ Lsd3f0b5rGZnR@KP!׮HF!}'C6AC&Jֹ@yGVIDKƅz 1pG{00|_r4/Ꭶx`H9'KPCL* tx_7Pd 5rY=w59MPKVn ϓR9z[V-=r~xfvx "ar[ t&;rb-nF7Ev9txfQoTm[ I_9B,-N>fM np@> Q=08r Ёt4tKNv/|U^pxZ[;' Mhn_[[}<>>nks<uޫBhr`jr.aEj= ovQHM1u^Zj|LSNyQ;oHPcHl{]< Q+Mϱcfԫ_Qk٬ ݝ)f䧳Wʘj]gm1lg It# :1'1X~7F==\ɲX~0 f{IvUfv-'S?1ɏm(z>Y~kLS{=O_ ] 'PsQ;GLӔ2Phu/wf$M~g 5"1I $jhRjfTOb̭R! J8I79t=1n*o&-L}PXV+^,JpKzmn ]F[(>Izx8xk{=iS&ic(p1jS1諸~Q S97ןWyUxM'(ww}n.\Z([ z@'i ahZƿ UVP6 FZ0Q_jUha*o)U".*Ul>֤C{k\;z-a`S=ړG &ՠWEG<'BcBMdv*&V&%iWBinX,OŹ$MF/wILo#rlNxc9'xe'y/woDef2E[8qws*=I'S ggv`UO n߸J2~|3* Pe^2kڕ:llz؜$OMτȊh#ao^a!-{ |oVd>XgnuΟXՙ=uƉPߢcI To~wusLG AmyJNq4J\z΄4 ; ^gur?{czOs/Zf]}D`_2PVfnImӃLʁ_%*dw"PCPF}r1ː9]LE6]4yĽ(KM]${v#i%JBEnmm st[][^YD swlN`Ɖd[uAg{L0OޙYd!ŸSw麡>qXZUVP| rfvcmЯ(-繏%b٫%_ɔ|C=|jv$@ta3wޅ'Yi<|9l6&Wx6kT-X ㌅Ͱj) PO[3ͱ.)Ms)˫j(|S@%j>_ʯNx.h'()M*\' Lo~#~rsQ E+H+'wD>hIʾ||c9=N'mT?$g7S#'GrduJe8oVW` 9W)$ȓ̓Ql`tbKpRD:Wg"w}lc{JO ʻD@Gu-:4>Ǔ() G=NF-z^b\IP"%㋛B?o$OwfxF2v{*_h,"¨DWrv1UP&%jÝ_Ó*aNX2Ž9bX&7CApS 3kK T0zWgиu!:_hܣ'Vs:;;>=?,TsVG,hhe@/*oxԫ KsnrvuBHpQ0ePR U@0/ f8AS@q:ȨM/\!``d%qI %fRп$ wIFߓqWVEìi,r) x2h[[FV3Xǯ jյ,Փ26 0،&>xzyȟg,>q*]v*'Ϗ7GJ_ף,^ o1\JgK[TlHGe̴kJLp2n6ጵH&5wJW7gNr~oLW6㿗W/+kOV_?:{= k~OQӨi4{'D}/TLx$5 C2!ʘc~ de6ިۏ٤ѯ<~Sџ!jRFarWsTs*]VE*WU,:NSN /ZJSkJazazz.R=]*TU@j QSY%ܥpXV;+JKno0n|"jTZ6>/<>:\*=vcg/Rp 9/QRpӽkmm1-Œ_ /3z;>;;;Nkwv~?󌾝8t3kPZ~3gĆ!<5p󂭄7ɫм^k_VoFg/0dN74 ipU3 D?Ԗ#Pw8b^WJ|}Pl|t*9ۏqI?_ڧXS@z%* R d Hcn {9Gp+цŃ^i0=]]YW]u//c*dnT7%.l]Rkl#V-35V.I0*>Z$WVw%`ؓ9lQUdQ%B0(=yhGZ!ΎhZ XGXYwU5[ kQ(b&Df LZwIIJ71VŰaP{@/;,Ssdd;}yE`dfEKzm kOͥAKx^罖}^a7<8EpP/(hi> =(.V.tA JS0|UnL0EBDd+C`kB0 Πq9ej,}JB) |*(2d1s?|~"~s+hp@/QWM nrxx}f\12mA @me"OxH[ )E|,w# a#CL3 jeḄl0E!$rUFw%A Tw4W7Qs$n 9wk\+: b?[W[a -+K* \e|^%p<2̉%oP{ W4bұF"k;(5Op1k(fOJY2`;MbMJph`(3V>Pgg WqT֫nd]ˆ p˙ 1r#. RLܢ>"BĵYCe, c!хo{v{# M!:h@4KGMjH kbQcD@6Hzw:p_Fp4jusg/""D_P%)VKB\{QwCJ XaN%kR'ERrhke7Cu_oŀщe2QC]2z )R+1tQv`uQP"M|B/A܊ޅg^e#Đ]բCpZZf(fWvl&E&f>hRLU#I '_kف?h ː2+fܨ,NCh? 1S}300gb~X qeD ZZAF3 L'3ӀFAa<@q懑s5 u]LՠNTs 멝&a +Vr8EVe_sAJ6x?A~^psW݋q>bGW kKg^G|x{Dx q/߯>y?^h=z}O^S;m$H[С "C ބK2YJ.%!{uGygiE.`Z2E\r?L-F%@Po ,jBYZ05N$.zh6D4{IT^ (B]&spKV3pHv kAV:"Ks,Ԓ)ǻeZǘvGǤp_HB! _e@}$_o}_lLQgݘp,;W ;NaDK4c O"2Lڵ >i[5PǙ"le8K {‡Qdgl|fyk!86!3u﮹ѥj9ǻJ;7_'}$sW71 $-x8*2mJ"6Wk.9 _ 6KNjq)\nFyEB]ThH0w;]i37ÄYTdOp??EL.5')610{+>RnڷTǝ&ɞh̐;Ays?? MJ)6bS\CSl6n.g"'~P2k1O=an{vC6rb #G=*c_࿩M;ɝ1WEd<^1>,&rXե }dÝZͥo[tUmʶVsI.qA--'M5yvc9m|6~2%ld7 ihJm(_r(fhO`fF6a6Ehciy)k4/;Q +DT*ф!/7.vԺOtCF7S &/$pKs6^Rx@SbybV7u l, ŨjOFXX4r#%2^.}S9~B7I2zF'z$ߙη97ߦ!vHt*?˥Fڃg6\BCHb:qF~ڋAWuZ[[NrYBRہ»e4=W{ &&6x>ouՆ^,.6׭a4!y?zdHCǣK߯.ɗ_N 1 P_^]][Nh_hvλ"\C.n +K+?hocQX:}x=4oح{p{{~f>o\gq3޸wZ> 7}8=_~<ޓs{xOnn8='G\.)`!峝s4}:3,TBR)Qq;e\=݇w60%yL>.~/)vE9n>Ύ_37@$^4e?ʖVΨڈBDЌ[(e}6" 4"-**0̴rF6Lӫb}N;eh[!q;+'7_?ܠ;_bdw& 3P~۠y3 IsMG\pu:BZVt$-%1tK4; ,'ӛX)_6hp0br;y%T=rzCKۡ`e}%p&a$b>Sn-cve7ش^Xaum0cGG`n@ʓ _yq 2:E NAmkH#ib]^_Dπ(a*,:=Щjq5EH TcqVٙ' z<:3Z`8/١ӊq;zL}ݯ_$rJ@JU8Ӌn؜a HA+@W3KX]3t `~kY?O"0݌GO4dV]fw>#-{\Nz1\X ,O fF+:"s2cþ+R2sA ֢;!([b ~̔e_> Gڣ{M*Bsx3rzr% ,>ӾZ1Z{ncc5~@J\rmi|} )j6a,3Vgm.v{C֠=gz?ӟ/D<0