#!/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=44e82e1104f3854387be7e14fd338813 # 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 F855[f~qHkKOQM,\kvRLZeZjݥ=z]S8FԴ<ߵ&+$mGeYe%2u܅W!_,8.wV> Y85 W.%K.,ߧ&Y2ƿ}f>wXmZ$lAW,BSyę4 `V8k db;e @X>DKsZP`!С `\q?4cPij\}Z܋%>XkDn e!>, z@P4$`!6M ǧ b,SM"2-FM-4>y^ Qu{$%gR"HTוF iPWGXVj?p$) |5ɀ}U ޸+/*P@=JVPTXنdpNQgrOV?eFM*wƽ ǣ@2וN-_Iz%{%y44BDVətzvX#"O]$*GJnA&p}X۾j_'%GPg*cU"AI\F厤@aB+mm9 ܟIOh4_e_t64210i0QLr})A%$FQ( *A H*|!;ϵHeP ̺S^njqTP:Oq}/#8"fD׹ φBh|3g-||q5+xԑs6 ,uNѢCU ŢWzڰ^ԕ |,}@ 3!xZbN5ˇ?j\,t74IOQ$o&Mh36|uqxaw|t)+aH~$Q< >jU;u_MP @b ʆ\srt/u"N= ""WpVȃb@H`b @ 8Ǝq+ (O),MiAR;ISxp3s26u)SF",y@

nax]_X.B]T?,_XSD0l4nOS.>hV|5@~~%4  toqpf,޹tzp6SYyUć*GyW^ǽmEWdjN7Y$)BpۄX)L.FDJr_V5e(`W j^}Of U }T^Kj&uTuOI/e^%ıP)IgAwUF#i&Aѥ-!]& 0YxyT KX`1nns$ibګ!1\y*ʠ)V-UL#l$i=,ysLJ3fx*Q+۳f6KN| їrr\"o cMmjuG S sG} a*D@ZChrmNפ[;ɨDI*eV3!ecNu ۷,Cqao H-Zy/@v@D92"Î >iq BԎ"XwAEnQB@tpֳn7jx`YdiB!qp@KpF NӴ3 ^K0},@  \brJI}eUM8JgBhj6)e 1n_T 6Н( I#b.5o BsfۍUk5 ^kԟh538λkuVIa4l8^x3C;M9x%;Caq3J '4mhq[h* odmQ0Dc~b5Z@L ѰXA<1.S2#wVNjVc솳XwՇd[s ӕmH Op kֱn\z5DdiS1Ss֖L'qPIۖ זA 'V2I (dŁ҅NR(r|q^@Z[Q6\ʻՌǥbÎ%39%sCl2FDlvH61z &h*tPM  4is !$HL#%&nwh"bRbx.-͘gچ,3g2>-O fJ evR,m{ڑl>}e|C=/ w ;6*9 n0C0Ir wK=rpmkbC/_)}<~vlR_q3G%T^[b;+e|(/.qKQphOP3W`A8T%^L&@V}Zkd"JЮ;g ۓ98< 5. Z㻙bYpvOSJ-r-;&Vژuoǎ}Jyϫf )$-ڝ7?5^+ָOun<שaU-S5.\kY|| w '9"N I* ?~',X-eGNO)p> nFd47D7A GF,1 Saȉ M zӬa| 7VB96/^a.L͉]=‰vsG1q|IwQ)?5կ'"bIM7y~!r555-mC鎔!uD!-Y$DDb\r'"V]ϫh+Kn-O{GGeĞс8cվ2z< ɍ,_ ڞӜ(f >*Kf2QGx ŘWLuG M M:St\?To̫6Ao_7(gcj- $]_wg}&Ʒ[,4r^\ۊz0!A1P&26 De`PI^grpi?(LwƳk'Y_|3oy\O6[%nwwnoU"./3_gI5d,3~db˫nR}Jlg8[!p!Ah0.WJܑŁŪj*iwXSO0%3ڪnb|}aO0f9(n3H݋n#x^os;f'ptޱ_qw/x}G0|Ww'`:P/=h=#< "4w?bG](4|"kg.nNKa^9<L+fޘ~?{ꓽ!;({yLղiOA b5eY*V_%OB ҥkYyB!4EKI4&{r!.\!{; vgJ.({H8rF9RaBI݃g̈Xo l$jakm{}6S_k+B ~%J`n%UyACc|S6K1#4rSUD7mx%L1_%[;Mil7B&%L'm})7| >N#)1'/nLH vJio5l(3"9vD 8P^/ S&6 p?@ýo;|a.oZ83PѲ!H{D 3}>PX==K} ͤOd.AkN2r oy㊳|}csj]skօc.RdxT+b$AGHΆ= qr`<7Ǚo\ngv?}_GU+8!& `>f{N6RE3lvuK+kSg`v@z}Y՞tk9ʲ/eMKh~ i:xdN_2JdT;|s evvӭe䰾W-F V˥`"eroSd9 ̆=l:a;92^ q Y 2k4,^~B|3nK//Yp/ `+{Q*u:J+vc<UY#mw ( @_ЙNQ‡P`&KCn.kf4P^-THl $]s!ͻ'#S׀r3To z/QhbqbݡTKJ# [E ,>EU Y&̀ESޑJUüꄘ %8t,_ý=13x-^X#i9̖&vlA~ Բ9 {## @=Ӈ* AeSZi*l@ۂӀXחIƦ#[va`Ũqt V>mpT4HwD$S&:+jA\$* d !ؤ1P4p +QPZ !,ƤKwM/ֿe*; RX)*7$Rİb,FLz7T S-#~-I5t;0l`àƻ!W5OCsh,Ǜ.-Kfk1u\fR++|K|(ؓ'PМ{ߣyz`Qa9liIFTc X|N*l =ZLJN)a6I/+TK!cSr8i69;ku \Ɛ0$u+MM)҂L58ql}-DѲ>صq߻^t[ĸkM݄oh: Ue΁޵&Kc!QV<3]p3ݡHwbLy D"'7OW% ."ì{jF"k+uF5n4zy!42H *iTC<ȸ->0-U an:+PY|j"A>gBii=Af8Y:G#(p^5zC>Q~%-ؖEYZ k5z\4{i]9{ #~):BU{ +7y#* I:u=6RAm?:$ ^GY|8=Lg *0  ԂcpRwwuUYevN;-V6D; wT髦>Ij}ZR*ԃR5$ $ ]2JRn^e]/?GElgv ;%B; q&\ZZaDuśĔ`8 t[y`Q/&6V"8=<(D`]: 4S#Rw1rr4gC< :M雱Cc,6spJ0 8\ u?;nmN:siA|x$d-*zR'*^1#f,1/oM7uCo­vX߫:I[/kNĵ-kZn9.-䗓  089>;Uɟp"\vnNv̘D㟵bXEFq?ÿ GͰ$JCb3g`vu ycHhhM#8.Mb_VL6p[rpq þ'+XrL%[D/,XG ]O =qvnػgDiGf?=%6O4"f\R1XUB)UH26ޚ-X虰m/bc-Sk723,GAdN"]j ϵ!ОYkODG$qu˸lNv7u\ኄ˱"QUY8S.y'ϣ{17/^ڮoLRWS*\|ѹX13R94pˤc2/tݣ-> uvdw:p$g'gnqtw>f6K,Ӧ>h "Y,ZWc 54oY)Rr=xlMK'1XeQVUMm떮rAD<õb]5X٫'"lpuMql9L CVlf 70n{-oaޜkhHyYX]Da|c$'kզ|Q>wWٶme1YZ -mW'U[{[N)4?ϥR'9*߀^LR;ȪoPq Τaf`RBpY6wC_D/5U\{-*trMC_}Keu[|ms*;`nT1{!2GgϠ_8Sό^A _&8:@3 L d{. fsPrEDK"m褝F}*Gwe2̕KS@A: /"RjbSK%7ˋEPӣ06nCvOjZ^FG\ac6CT\ tDB@N@Qvˁ[˪mg"dV1ˀ^l"z2%(kQO΄M&ݥ>8M.IέQ:oh7isA7ݷd>GC?55F0"nІ` [#) qDlɊح5j#Zd݁meKBsyM.۱ag=*d ڷ>N= )'d!dˁY ԝAi".m:ʝyX`61f gyeP$ȷH'!X316FH4 !}(8=;ys;PA99;zY? s8h?j!*!ހR{^'D &b $o`Nl0Gә l4`s*JoijKkgr'^WhɿbͽGo{h/!j%z89zuxfQ߹nCUwUܶl{g=lnLp$YJȪrXqewBȓSǹӴ:oZ&cO[87)f rXPI5u3#L1(?mwT#FZ7< 6O,/m < މ,nOղ-48eoHBVסtE\ 65Ce_̮v+]B?Qh%km3-gkb~OLZ`tv5jlFZ-}+J #S,91ůHa $(p#?+f,,,,,,,,,0eve+vZ]Dk'ѓ%tI8?#{Ҡ?j7m7+ti |߇%ROf7 Reв{ZrʾwMzp$Jiġ6e è)028SUk LO|N/ H&xA=M nS`3e7f=Rbr.үC_6z#ۋj:`VMVTJkhA3@x(״d]U0UbXP-l@=(俿i#jby^%CoxU{9[Tq1Q .x7NY:Lgmަ{:2B+^oNપMHq7۸/L܌Co7+hx`oǏ`sQ%gp$^5wզ]!;KڱÖZwb߂7nغO8X^eL݋'Go]`/8@D{6)g‡V\%Γo^& BpP+]1"Q2E 7]AlpYFF^|`usօZ)#O'8 O%iggelg܉t2e3>!TC83d.8T&e.A?{:L:4&j=4}/.c~|b̿siq:TG06{ g%MڗNmI=vl#.|& ,$E*d/"{k&CA K\̠ϓA\v ʰAS-oNpxG0enCV?.( r n ) G>2x`jyH {9 5VQFءJmoB h9T$ ߹xF$ͫ>=Ch,ZOhpara70 WB@ ;I1Lژg Ľ~%J"d (ddFwhB:.iDƩv{IꊲK-%bY=8\e29d A!VA*NK*ewi#J '8ZnNVumY*(Jg0eǼ"w?k$6=A fQEؐ4-2$C|2Vf؎m/@o ke߄=Gvƹ ~& e:_Vϗ'zB$]yֵ 2,XMăM_Xbŕg am WJOSdxJOPEq|ΟLnkp^naSé%V:0>$q(Z' ZlU Y[*&K˴ry8#*YR`yg&pgW=N|:13hr f B( *ZJ~Vk]k W)Jd\ n>yrn|[Pq,–)eulR C).JuWwg|?vOzʣu/!,kf?Y,g3h']`A:N[U=ҟڐq@E2\4Fijd5QI{Xf{wڲ۾Q}Sl`;Z8\zY෾>%yyZ:F]}w2h ޤɾ@X:& z`rkfiSlǂn&VtTs (~M}# NwfӣC`/ImiԔebp0eTHUˋz%iMSc !"pikhXsO!]GZ>ͳ~[Boy9:z!d6OErr5*{*|P0 4{Zh6Sawm2 y$*JBc;-HEl8͸&FDPQ>:yd^ku#JJox-8S>X|&LyJvv(IiEupK8`h텸J>UnޥGi7#vè>=躖 }SPΓ7)%N߭ZZiơ8UBkw]W: =鶧3CޮV Z&Y7z s2Hȵz*Ռ?u|p/^n#Vg{gƌ&fm_-? Šv0L$ \V5d Z!+h3LAw;@P0݄>Ig;9PZ)${PլgPe6;qf:C~nauUomdvJeA_[&t9Q{r[*k-h^PW*Oqa,%SWZA5Rʔlbu) EpXl"#YM%0;8µhFnbGg{wv93e9&*GsТvep|0b%VPWd+[xCu.$HzYEӖ8^U@[4/' aGT&S[XTKekXG?Ky~lDI?Vf_g?g3?R?,r#r$~b\50/ nqx|oCd\l잼w;'{t9(0.ST\jmeŻ:<8=gپ.}d"x=U *W..گxnBۯ=D͙:5c.u=prI{U~p-zUM73 >0=(SY}d];Km/ڽsQS&j[%g2IǦ`Z?މm<~pұy}1G6uJw` n돌bfNr?\{ȼ@[CxL 8˱4oeF?^mt#6t|(uL *G 'ͥ6;u >~~x}}wagM%Wv(@zy!ɉyiz[йri7Uwq@$P-(ByrkYO^op:?Z"A5JP(pVJLMZQYzCaQ=Z,̏pۉ`%MCC#}V5z/Ǒ< *$ @h?RR6Ol9*N;WY+W8B*, ϲÖf v%<A3Wuڪt6+,gtRY?4D(Dl> hذu7@gր8x K2,Mgޔo7g_m 7jI?얶}P7֧NΒEN K$x탽`Da^ε#epVJBw|{Ӹ"N,|"Bҗ׷M'$[Ow:AL(8Hjy-$lLFc7Al)Tc\FQ z2鐿 {?>[J F>)X6j>:_?~eOZY{5Y_y0]yIϿO/z3M{޸8O8O~8xhavUaG?7b߲XE?x9@ PPxdO)|GǧcmuЎ餛Xpذ9id<2I 8֒adw衒gTcGeEnΕ~%mxK\[w_;lleu pR=m`|w^83#4|D:xXֽq9- gGH?6+d5f.6eX6=&3vk颳l [D l!7B~u(C.@*AVhXsp:2qFaTgku>W[&cV`C8J{T22h%Ȥ Q&^,'F$C㜨\+H}YA\z`t[!.}kt7KޥZa[ Sr!m %O\fX RQҼ#$%B8ó= ̸f=+ my7RC8T v7M@*8H ݫ\4iO]ͥduNRTN^(VUK4fi&^%yb=]j܅buۤKyDDQ]0:YvV>##FgW9)_'&78 r(Þ@j9)@nf%*y/s<ۭ=OKYX47?~c WvC_䷏ Ouk]*.=A9ܤG>}ZO"@%R-BL]ߡӔtp0d"8qRg9۞h9xNixsleAT6+;Gw'gYU-2Zsm[=C,`NảEAL<ߍqWE_8W"tAǸL6q-.u]v_cw^>kg3{=g_ ] 'PsQ;LӔ2P_q KZEb"IJ5)Ѥ̨v*}[M ?(%p!"ns*{cUި7J:F+.WΫY4j/P|xhZ5N:ϴ)}F܋1)Oe8G)L_OyUxM'(wR߯ojy )lEj+?I=IZC.#5Vx.?Bup>M%֠? fŗZZuxJ^iJȶ ϓ440wbEDFgbWP܄]FIahx||C!I2 mŜ/U5ů[ݦOv7y5i>? A|@XhUyxS)n 4ac+X(:>~3LPЙZ#$s^z9jUstNֶO%~ FX~sd)aƱv}`5!8~UIؠi 6x뼕 >{IiU`ez!73my!:Nӷً]\![D%%;>izI;G s +9@[%Q=GYdEz$z+N\JOR &.oՓ^w7. JTWp 9:)6g'⓳{p37<g'"Hjt7ׯwhC c˞ߛO3噲['VuT8*?[Ub̠4wn~9-OC _6FKܙ[7#ygKn@]`}L勇Eˬt7˽ Z2K{^j-ɳv)]9Dy5CDjJvV>2S=f2 ;>k&We~__cqif#MࡤT``WyU<حuOi=\[]YD swlىN`[Ɖd[uAgy&^LI b,L3~a{^`bRtP8,o *+~IyE|B641ՒdJ x[V>o bJZYװR:KOa#'ܑsUFuP:#\?}V}_<+>K!g~l߰H\HUQ7- ob[OFW%#N菇]*nU{j I,}u2hcj)0bcO@?19xy6u;o[mv[IW9+9%iZe!|+#R0>a+wޅ'Yi2|97Wx6kT-X ㌅Ͱj) PO[3ͱ.)Ms)˫j(|S@%j>_ʯNxi'()MG*^%5Loq#~r}Q E+H+'i~͘hg֥HNe_$ ɳWΚDٚԻÓ'qAӌ䩴(Y]W3"/GYq<3Y({8'ʭAr%sT66N دZG $Ij)yw$d0QUlRpS)AfPc7Gk]׭!$J q GbQ-cFN2 :C>: tZt[#/ɳnӝG̹'fȠ0*&{_2)AZw .iu{y^^0*l>?E.eR@>rskˈ x˘{PזzZrTO3 xOex͡)*ț@L-"uV -A3ZS' q8cm>R ;`kRa;ծյG~,kGBgY,{=E}Ϣe)~}otq]&DsCaՔ" f<=\o*3D_Yh2Ljn*y{NJ`~SZJWs*ѩоᡓWKsjMZ)L/"LSmqRTظMVvꚞH $js*=*^ sRi ۍO^@^휕JTr<=祇/ۧBKGnEQ*=vwu~|{o^|7CJBP*TsR&q=\U;S}(pxvgj秽}8ۉSN>G˳_G;?źk>;zY?,!l3kK(,>3Ć!<5p񂭅7м^_V#xӳCuLロ?^'lx 0gj H;|~dJvctQnU6[tq5R~2"IQ:iK3o]r߹z{9Tf .IbW bdYޤҸr&TJ5!0 h IA(DGdt1Ewk ȵWsSLpYrJGD@0vV~G?jk?~?2_g%`f Yf C|_ ȵ)qU/uMɼJ>~!~H*g 4n c[[1Н3@w  V#"~a?Ny!f gy*r8vG7@RbP%~q2.'S1kHDX8A=VL@I"bp Z]d/n%ڰxO0fg0ˋ> /JE4mJ\ӥ1Ԛ:یUL odK7Lb+Y8|Tla$)"D%ݟaZE|XD|n#zKAk }V]^TKٍ3[Ɓ2 -n%[mCR"1j E $@aďf 6*byPxPq4j-ig;ꚽO K=х<pd7JPorLިn\E& 囑b SȒ|j'r٢<3.9:J5`PQ{RЎCѴka>Ϗ6 aFkXTQU'9m7ǹL%QL04wQ .l+ȓ}`b~Ћ`Ӡɟw_#2^vz/xY ]w0*,DVܛ>מK3Q)?齖){-@nzqD,79^rQж }A{(0P6]P]*3 Pӧ0,a?`xW:H7Oa!vaA rdՈY  fS@TkQdȦc4 |Ed+hp@.PWM rxx}f\>2mA @me">HxD᥽[ )E|,w# a#xCL3 jeḄl1E%$rUFw%A Tw4W޵7Qs$n 9{k+:֨b?[W[a -++7* \e뼟^&p<2̉%oP{ W4bұF" k;(5Op1k(fOJY2`G;MbMJphb(3V>Pgg 1PqT6nd]˦ p˙ 1r#. RL²>2BĕYCe,Mc!хo{v觃{#\#M:h@4KGuj9O kbQsL@ƨ6Xzw:p_Fp4jus/#"F_S%)V B\{QwCJ XaN%kR'ERrhke7Cu_oŀщe2QC]2z )R+1tQua`X"-|B/A.܊уg^ecĐ]֢pZZf(fWvb&E&f>hRLU#I '_kف?h ː2+fܨ,NCh? 1S}300gb~X qeD ZZAF3 L'3ӀFAa<@q懑s5 u]LհI{Ts 멓&Q +Vr8EVe_sAJ6x?A~^psWӏq>bGW kKg^G|x{LDx I/?|~>*?3_{=y}ϼg^3ww2,w:PIộCE8dгKW#B-B':ӊ\?&d~6$8ZN=kGJH&,8C YFՄ`jH,]!ШmF?j$3P*])AEMJ rgG:4ڽa."ׂpt<4m?DOFX%U @1 2펎IMu%]4BhuIkIt(#v3M٨X 1w Yu6闟0vTǭˆVWh.Y:DdkS|(I;jN2E6pbY!V$\ (k Fp${y9l|4 BfY=] !N#r Nvvo׸J9I*obHp1j% U,ge$Dl^ůW.9 _ 6KNjq)\nEyEB]VhH0w;]i37ÄYTdOp??DL.u')R}g}q'4x{{/gPʵ$l2wMUy~ 6? 6ϻ:^R΅*:lX1TraY'kGfbba  7 [VdVs4qrfȝ9ɟ|Ԇ~`~r~).ڂ)6Oo7wr?s{6ژ'07!9G# >vޱ/Ԧ6Ι"2ĭ? XG]`^pTqS9҅>x{!ͷd[l+^TCE$޸r>e1Ꜷu>sO?6KaGV{ɶenF9zHVt Dc;H~JM~N^V(wV}<ܭL?AClzHyElr:hmY[,E$<۲h=: <SCCF=-*B/0VFkoe gshU'03g? yKQxx5~ZMC.hGQ'iuk='EPN]!ěѩE=8%VxR/)< vf:_0p*6`LԥAu|j7ov#,r(lEjtM>FRwIw泽ӳ}|㭷)pe.1]ꏥrY UQjчr7ФU6zӧNrYBRۅ:һEP{ &&6|>ouF~,.èЫa4!y?Ơ dHCǣN_ _Շkkܿ<[.:OW-쐋j-X9֨;p}ovY-#wz.o\C 7sݸswÍsnݿOwvߑ;r'NnݸQ(h XJrtdĠo*ր7+sղoe|TN{Ѻ,wO`ӳx-(LIuv^*ӳK|cӣW';utNS}\DAҏPDْfn;n7#,JY,7sĬ͈*gH$ʳ% 35~7Qp.1n;`;"Gԅ٭8fm n}~/1{r;EmR<9& Ft|=!-Jq6T%Z%p?͕/Zr