#!/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=3ceab56d002d72347bfac2ba50f97867 # 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 ;kWȒN.G&<tجeػ ,#r3۷,c&0{vϮObKUܿ`?߭[v~ᳳ۝}mD,I믏-_3kFӇ8Iլͭ-LR>x~D:knj@w|X IW3ddf g%,pj &~FQ&5v7,7$(\5ǜMyiʇlGw?/h>\A48($8,;"i FA4X`&VD_Ew%eBHDi056|&~򸾀А"΀?TbAa4|j6`="Y<qI :%b4O#esj dAH@ 8*01>B+G(L qĂ2J,#IQz*!%S>@%*_5$?s\vO=Ei-v:m^|9g}vmv=uÅ=uYǜ;[cNپl9s߭Y۽6B38vhN豋E׵2rfۭ:P23ny4O clmXm9=G&Hl{a7xQ&]tVq ZK%ӼH8ý9]es\phjPpNJ\ee k>:HEp6$(Hu#,x!nXa. 1_rWFV*C>gc߻ʊ|bC!*miX[vP1tr6^:0?]DO?qxvww{;;w|6*1T4F7@T|6cv6N/wq$u>@4K0Œb.4 m=D3 d>@8`pMEXJS M/IS$1Hbvl` bcrz'H"ԓfy!M4"%*"`5?@ 5~91UN~Dca%˹ -j\F$g}8땆dbfD2yۈm0J D6|:A 'dQc6wm'@0 &~:c5&iI@Z:@ X^ G,:I@LX'/ '/@ f3Re!+K6,K͖%V@ h1Iы̀ef@쬹 Oͤ;Odθ\/:mј>ehȁ'7 O~UOCל5  }|)݀O Ph9(5ob0clVvR>5nT*?k7~n! 92ZIC>J:0,k ,)$EYmstA;feCmlUNj(qIp=DŽ^f0y=Gr2JԿ*AF Uိgá7,ϋo쟕 s>s4Ftc"9c!kmN׻*T*k4:P3lu~w++a$6ifq ـ' ?m?܅l٘ /!:& $Ǘr:;ׄ]ALFa%  &W⬱qq!B}#SL$N;@lT? 0n2!b+,b{)AEE`W\w,A&d6@ѓXG;HI&{pit9g&z@D@$&yE$aɧ0A[ #XXl”܅D5Pd[/td~KRYtWaژWwrG0M4MثCX0(_DZ&%R0<0J^ &BM`@l>̎iA,᠁ NlHf^Co~ekF&%i0dkh1?pr2N7 4~&d=@Q07vfbL6;*dsn)5BKFsw G+E y#xKڨj !eg:yqRཊ^nc>pd ;Z%aAvLNФ0BF")L2'I2ė>1-5xn/$V+O1z͇k`%7,lNO.<&3ђd$oRA jT`&x.rp1s?J)e=Ą$d<`1`@Ԙ):ZL¦ZFwR-! aqn?O2%GS ,! zAjnʷ~e`4 o~d DmoE#^eVdp 8 #"`L6"YAq+a4,bղrް@DK+&ҌFVO02]7VIK LBͮɇ@Qč݄4xz-#a"I3%A z|SO0XjփlX˜˟'QE3HA|MNϯLdŸSA5'ߟֺ Yݒ1$BXah)kQ7TiCUSSr:<7ӳ,1F25pUϞi=ҽ;-ƪ| he1~v&[\:ZQcBx 51Fs\~*CZe#?UPȠ<ȝR0B`}o f w)U_(͍Q V 29M,MĔ.MQr  &ϽeuS3W77^][]f<|*2,o%D)D.kпT>L^c"bo`@z41dAJ\w-RR`rv7hWTK/EA2QR48v |^ož0H .:CW4 ҂YOsJv3.ېB)I@-uEϥY!ID&jjdlHsMtN 7f_6-i`)ɷZM&%Yёl9sNeI?XoEo$@{d"U2ql>5דM/#!x@3k}^!&j ybطY^>Φ,d[He4׳ny M[gSAcÎ=v`|'Ω{ޮҌl8Wa]J 9Cw;g /(D =٦6ad7K@-YVNAq>,N":o`ٮ.G'p݃x _w}|gOWؼt٧.ۣ́J?,GlN[DHkWt-ֲWRƦDNrGlcV&LtlnA~ YO@ 3,C ː.F+0yxl@\}l-mr猋S*: NseL9ה; ѦեVJFG#ɉ,OȫJk@@hjԷt=_{*Z|ꢱPD l03DW('-UOIjd:Hv ,_jeĔ|d,L[0Q7ZE~!a!#q%ۼaΗV3B!BZU&, /8G%pgm"  4iwk!:҈%i3܎Z|pk*yHR2x|B4#GbX9(,L7ew@Py:T7bWcYd8zF lZ87 TΦu?^EM!sr:xu2]~f*+(DXTP᭠Bp FXb2G% o)U!^=0LtȊ)t)];44%j\,( zl[`|ܝX/棄LCgvMéegvѦ_zYvS3\E$,KwZDTYi ?b5bԩm1tU@okHn4~KI?%w@z2-]?}d|ظXUKGo&9r&w#ˮZes -Uh˳"ۥ?L Тc w$2<9<#)~1QܑqjW{_Ʊ-8JG" $ ~f;;OKh$}R{W$;SN:+.uW'y-Op IuU؇Vw*vT*V! ˲"RO~e_n\Q+#5LTV BRa e(pB%T~߾0waTSۻUzad50</d\IEȴ/hܡkgj::=lhH L8/)ƶ{rZmx/#|#bۆbM&M)$ye>@.?{ 夁$鑩NV3ҧ07m!"J s6)HJ]V lbM< /&{W x%FC7SV QDcr1dc0[鑌}W`Xh2͉HP¹Wه3D~m1lݑFл=[WX}N_N}zWdƞ^9ڕn_.wvX x#ԅ,Y_x45bD/ɠKWSщ:}([w`e2qe3S8@A< ǩEcnۗ0EP#cl`.}z֬}9mm2YH}GcVClx#!1ow"ɾodmler Ʋ*s^e9,F}y; J qp8Vq$4At#haRw62ֈ Ulm{{jܽ&wԔqX1"R/C6!kWڀaK8w 8J-`MVfAfЭL`Vh6O3Ic\okiEgYIy<_gکfӬ_xRfI9 *%UڬzQ'֘*PSjl)jA4,$H`lȇP6UdMCH62{ONη\*H#P?gGoRbZ/`ZHSo@R{΀槨fQ&YFz p+`8`NgxD kD}Cs< -EP r_׾a_`MfC̠AB!{scxmzߩ=Ly9ڍ)gQwQ\DdXPfTC:槺ole7ڦ^R^2^0n|Gt MTp]b|7~wגp(`\dur5Qꚕ\1иpm}-Ip߫e|o;}ڽS<}$a濙]Yހ) <]]D#Xmdt[m4(i.ykxsG,7oX`MPQcȱ 0-5cH(aV;%1 xE k~8t!.FL^1{,},%^}q_Sg𝎴uٓhlSx4;NB\}88%7iZ|v? nG.ѽ^=s®z-2o5}oV_=0LiL{\^=Wc S$r]/"`Ўo Qmp̳6iӃM}m*_{e}c? cPnڏvqLz<Bs535]sA> \[Uly#; _{E +Gw9gŵ[|߹w߹w߯=rT03Vb? 5_U^`LcZO 7zT96}Z5AZ=poG_hЏ}LEPfi-!)hߐ4@urK~39"gϡui FYK[BROՆW# (K:C0h` Tq‹8-0qz.)c҅ _&A_@Sc3X@9p.{b\plu#vAtj쨒pǾ69 J,!B|MI3Un':^D/bJYOЍx mD{չ5ȆFԙ=GTHEƓjow'pTqVJj$C⥤ )vX9;:v#YH Eu'7t Qlj׮|>MmLu%yzui|lceQ\.\h(x}r.0ݯ0rX/aO)0$z&|Ul\(hbh5-ݴ#JF("!%G (pxis Sa/#օl\ZI'TNN|AпF~l'bZmix[qyLO7RUX2!5 i=}N^L==U4ao`(K2p1>sX 0 rn#"DEm9v$S4{bxO75)k<3!j'G~HCrY@u*sL/Jie7YSF54\C1a-j6Ew eaRǻtYu%']F, Bgw#$)CwI KuAaqW!rI封\ c- NiȽ9!Ч s_99-'釁/[j<'(uwA烒CH6Zl arF{%ia_q)hP@ x(s;`qHO،82YBO=Padobf6TC'I$dTO);Z;&p"QAH C#6(dµBZ}J/0O7=pD`<xJY,+b{09d(,̸z;<>qKr8i#fdX_o;qkǶKr{U(RfΧbenjTOcZJɖ 6\dgA2? B/"<ȼ3-!$I !Ѡ&%BNUCе~+lek ܣ8q3B%>$'yu"Eҽ$35"#V#~.{Y⋋}IiTO֔߉#%-n91}MAq+?Q>dŀ YA9CsI f2)etqԧ&dDl="p"(Q9ܠPhz!٢%ŅU2XNTXQe{.^Er Z0s&S셸S%K?&_t.XOewՁ,ӟ Zkzx8VH/hI(tQIHO<:~KzHC3`bZL{/O'\uw7":"9d^ÉOwLv3W?`)!t וr'}PXXe(D 5z #=#?!"ܽ+pE~͔^뇰a(&T0ɓi7۲? G4iil<g3?s.cp:Dël^ՂCYhFw^hְG׺-} y'^]s0+#iZRP* ȕ .EBb)V(@:iޅm ;lur*! ) p]V\qYؚC],WnA4%8]@f!$,;nI~f)ZwzZ[)ӇeՕ>JF%qT^+5pF qR UBU.}[k>r`++5ls},ŸR"Xg2rM,w3;W+UY|yъh)^lfsϗHOL_?L^yWܗ_ҠܸҰ(=# y #D_0-R\a4Duԥ2CT('%蝎B< CUkЌ.gb4d' E,!odJ /$42BpTlۻڔ7*fd U rA 9i6h,jj=6ګ<R9#3 ēE=T^iE&s4ۤN~V+ { {e9jd < Z>$L{13雀H@>zx}}.߮ٮx]k`ZiJP𣃲1wr\8hq؋ϸ܂9F|G 9QUv9so-16wr^>(+-#jud T-%l H6(fw"YHV20Dv6j);#,GOJevWm7U6) ^+?c ,2LວV#tAX F&%5zx3se?؛"Aa$yJ\X%$gv^hRllNd68vE-lQ2æY/ P?׊VCf.zjJGŷdצ߾i'\TWI^#]G6#VϾrV>oc&mU@&r5IY8vI&?Kط^ 8jNK2RpuDss/ӭ8&A9MiuOk]3K8o'J4\kƖJ=\'>\ix)G&IPi1Dz.Hެ.ϱ@;/hg A?uz5xW瓋K mIÍFkZT'FAz[ubc}B庠%Z; JѭA]`6(B!. -:#B,(HV#Γ Gp~ Z >rRjHc7,ݴ!7=&C2b1xc@s.[D \*\0H81`@6\*>kh'Hx)%~6B9X9:53kވK9Ss.4쓏e1 (ؖ)sV|P€>]yO\Gḟ{1OL%KqKϖMFx]'){Oϱ(d9/gbg}~ OϨTm"`=Q*>9א&v ^ŭ^#rΰP+ =Nyh[5>VΪM˗P^`ߠP 4:͍ izH.M=T~EVBZv=(A !gĭ 8n&Zi0E'Q6Obdr8&`:1-MO҉!RJI0Z$9ymѬ[8d`p3k=ER}&aa9 Ze=ˋ_[l ) MA6ZFPqMH&3Pé)!-"bp ?el]rm&1(a \[WGm[(+4X l1 s} f_SkXRk󺥞OAta?ˤ'!Q 3' aH+A9*SB!W|HbQܥu )vpd029L%7ɰƗFR9#P!mB|@Ee*9wL#ۨIN"7H$]';FA,"899JFD.-MPmrsK(߬x`%yMзSAOWZQ/50LDX8#g}A@o[#x}Z`eN.'@}? NKCXS6<<|e"#]pU9:X*f35&v>zr2ɶI5m7zyW-Muպu _ͅ*Lw18̦7їCS$b9 =AH;oԓb[ Ql9 TzգA] s|货=CَLbH ,agHU~iY1F!Op0sþ(2!-|NZ\bwS6'\E~!9X,6&ɚ5IyVQvج )<nI0f|2FM-S6mHf6hESe J vڋ.L؄/=vw$^PgT}iu4a0C nC&𕝤6ªΌ."G[\Zܢ:T3I6m~Ԟtk\$?z_~0զa*rvROZ?&4’m% o۔7&edCLzSx E7oV9xeJ+Nl9+ae{z81U  Rj6$n Z>>)?J$Ւc_^/3sn?-2[LٞIj~|\5[1 Nq xWbo'@&BڈG"\6*kftN;hh|j3;) U΁=-̼t@ހǩIa9`s6#gr?Y-?p H=1^SJ/^ݫON%-)GHBۏV^/Ui !!$xZm*?@̎״`b/vjwj9~sw{3* riwCrzJ'Zxj=t ό煃g^u&~mw*ۃxrwSP9?o ) +a褊f5LN(ZȘ5i䞹e3~'4LxyWEK^_H?CBP㓽׉JueW4Z"v h50j"ꑱ9A`̩"*vktO-A { K/=Uפ󬈰8.**NVˎV^x+ +mk>(+ _p[~G9AlJ ^<#Ϋ%4E鬂Wݳُ&Ơezi8 -174 lwۍ0-bC>5`vɒ (ْa& `g1f})iӍ_inAӂ%t7p &f=;<:> /ZP uJF9a8[ТPI,ό aq=y(j2H L}5b8%9{QN Lf{\x(>Ou 6d1踘9r=Eo %9bm>ЖD~BYNTOi,25 LOFN;T2J&&8$k"Y  ?-V dں}|t5ܮ}d2OhjOhnOhrO`v+V@0+q`TivDdR p:hx!ٚw9%Ż] GHkx3Ex`#B2\M_m~T!K2Qz7<®3ϲ9[~ٔe pQdk=f Ո,Āz]]弬 . 0`RËq3skFWb6j}m)&+ y7tTw̮|@=EWfq:dCbzueH{YyNjXt1F׸d,UCy.ϖ؂﬒7Oc_GdpX QܐV3Bpg}zqz枥 8ޭ̼L)a!w vH v&x H.&(wрw>96')rbB|rq7n.)%(/A@, h%NoMS\R;]LC\CL 'Df/bH+m ӞEQM322/ #q=K/8lᰝ)J`MӞ@8$r ԧ:隑\=q2*{ Ub1B!Qc  @6pOK@|a~pW%1#B=^`n#>uXO7l9DCԀfHL(QBCb|L Fz (3%('9T .6 ϒQ}U~deEE[7ʄfm3B[LC,ݘ!Bh,w㮂E_p."``<V血xq; &uW!_tbkZ|:E7qd~rZ/B}|br詟4rS3~G-x)Dx?˅s^) fݪ wULȘ'nfXXjߟr7| E|p]v6,p8UQ#BhЍ+L3+tHKEZhIx`@FШhԐ .Q?X޽H@AxԸY:"Xh/- AB#(m^]&?.Vz>VzY/?sןg3{̽~^?ϊv+{adYżP07{)q^zWYǃ=˩jhW,ƲS.&eFKFf!Y&4Y68KB?Y CW&7K]ZYRp(,X!^lҠ%97Pt)E)f7+^ sLhvӽ!ПL- 2Uӳ >ϬzkT+g2kV+!A<wuVحËgI9$#L湳Rr ?]zWXH]dCm%<݇G{Tۆ{ьAQs\?s\?s?Qw5d~bq5 tFR4!o9υ0yZŤz[בӯ  1!_K=jԐ"q5`>e`g0\>TC&G%RX`2ʎΐm'R{f:4ڽa'(ha{O鏢a,I0bJe%g٩V0w,{;]ϔ{b%L0FK8a5OxruN\Z DM< 0L;$ U87 -KIM5V xZ='o3[5B f1n%X=6++4ȢYuf/T8TC `_âH$G[ 96ME`4QaقpiHMF=$-VDjypUrg'-^WAH/#ԯ B{F嘹5M7-%fl{= !BGxCx _-'sHpjo"P !"'KPjF6o"[5bq3U!5JuZMȵVluC;&4'SLE*r] f2(;+pٯPrc 8G "Ly%2 Q~ h+]e<7<$0lʠ$ܻO ҡKp՝WOvZ2/k E3!4\zO){`]a#!R3Ʉ`&MQ];IO<%s0Aglψ_ i(F>n6 34#>LR#<=ԙOϸ5Yq %v!ؐ]G |傯}GFkgĖLnc]H4+G3:W63Ua\W92!b\b9TUxѥ$ sp*n0`hKƨ-Rq9~q+Ph/ˣSZR-j^[l2"IHꬾ.Z>Y!c j̐vUHF10 cn*8Q{eHZLO|?cmn72[-A sK%d K&ʭā,X ࿄Pd-9J0^S44cD(Q*" ͉-ͭ\I}Hsx0S:<0>Mұ++ %<fgkTb(4XOU1Ydgsɣ)V5E8놐@sMJ}t̤Rú%c7:MS"{HYaa>1_^aR!6ӌdtmtUh X3= ]GL?Z6#ƆK rj WdB>ʉa&)"0c7!yo,1x7'0M}]݌ALR?CzI.A^)JeC>3&hUVF(fk0ϙ VJ1FVƐ;)g1U!I"X_7;CCA [Rݜ-ZQg.-ۀ_isF㸑Q~I'c] y#MVi9V?E̝/na@JiX3/C?d"K Z-sl(%~"Wր3i~MZ^j-eȶFfLr' uV6Bъfw1i팬u;}/ʰ%dvsx̤2ڨ%VL\M",l5,զIt !a`αB5_ e4v >J'~NC cu321MʎZRR924V3jPvJMΛC;mBk FWC έ,6a&1 Rnݠ݀`f2Y ŤSz^MLb)NBH-F@Gb C F ,3`- eLK<\jQK,GJ._{p4X@&WP 6QbX*QD)[Y'یqkk*eDh0P%I%2C4+A,4Y\ey c9s=v& i.x5$?BA)yGYS&JzJzd蛎e .xf3MU -F/KGȶd:- D2 2Ns+W^NΪs `촠 bS7Ql݅AA/K3Ȃ0ԑQ|$ ZhHcS # ^W*<$wtF0VJ װtjiMӶ19apEb3؜"_fraa[>f#F쥒A׸WD#u:G5؞5R M$M{=j /GK ,l| ,(6. 48 |lr24S1pDYi֡q2 =B|T_Ñ[dl#Ĵ;gU.b,&͚] ٚ7[QK %rZkr)\1#o7-{0[i-+2~nG0-a~d뙐tӳcHqqE]|֞;=syÐTd7[6c]**]D1yF?ibM(bf#4v j5vzT5n۠9Y@kQ u.hxc^( =4)!;} ۂǯl8@];E!ґgFqj7Fw㏛0X$aNš@FR%ERHE"9 5f&xR[C㝤q|Ky%Ga%$L `oW\_`2t zx0ڿ&hYQ˩уgdǰe!8::80<4ԝqUEgJXE5piF6QWyeV|Hl%b.}!ofݎUT&J͔5Z: Jx)Fd3.aMXdۇ+rdpܝ𾓙/ 9rp{Dd3?HY_HA nzm8QN>\(m% p!9F \W_AYhݍKjw_&nS}r]H M7i*"Ε^ZϋWVmnps÷:}k}k7D/pǧ|  t+ %V`Ef^ ; -E,39m0F m SMK,Ί=Ĥb> *GwxeG(|äJlN3.yM# MlѯJjVlPI#jm3ϕӟrFX*S+*t*uTVu]Ŋnp^-ŇSYBjze=Knl$ǎAÈvpTChr{#`8cO{Ȑ<6 tQeS(lh#$Gh Q]*RF)l" 6eaN4hs/U8J@'IҶXC6[!e,6 rQ0GY+cC{c¡ m"؝{x rmegGU^o1c2D_zV~F6lc]actg><ɤnKSIoW_*׻Z$!]&3лRd[ّͮZ;sc}-XO.w9l7 2rDdƳtcţcM&,yempGC<^$ek^~^O_u2W<>L:;)ݬ6|Ebsֽ<5N{[(ww 5bIfёqө` 1|*+@V/kz%kB'߬M5l>nX,U~}M\|Wab$-)J5s&!0 ²&>d3P8x8BŪ@W&Fz,P+\]sK-VZDiKypi)i%5l3fT_Zu5Eٔ ]T&5EmVGۙ*Q#kRX4YLŖ%IR.r9ūJ䒙]s扲@ak(q[%v's$F} XdX"C(vgrעҝ:í&*sjfkkʯkF4VZOY,"C1ݲ,<w`Hq>Ƕ+gFӯq^Y GvktHI _G(am7>1~4c!Ɗb!|P&7g ,͋[7ˡ=Yr9L"_^̤f\J..C+)#B297x9W!10FqrHp]Y >:0wp${r3.0:D(NSFx_;`3-4]&u-ky\v6EEz7#x(Ac+|y7~`4nc ^\-3'3{J4\}>ٳ q֊+x5%?(`p_4}KϞx8X+Q%Wڸ-mu[i\,|(vuxX9~NO\uA}Z- ,\lA/_4 @D ~X-8[iD Iv4 1~66hF )g˨-4 (X]~>?F Yvb,` ]¡`hj[O5nnհ ( R͕(6)v2ME^641bUI'N"2)u4Ff8l?^5)۩]GYdIH1!O1ǸСPZS+7, ,/V hBl9X1 N0=@߰=_ _ʀIoeaظ^BπV{y#u'/42gWͨgLԠwTOʏYn{(]L| ~p)%=0qW7301B.ubo'4d8ZჷonMwqt2؁;m04104 xZw8ز/=$reŋnv~a~f?`̇r-`y`lNu!lV;tT q9@)͠R==h@2/jѰӔB#0 Bcˣz\)-o?tɂ] (*S:A5L?'hcpvP{͌ McIH8\ZW#OEeP' &'YT9jDGN!N} Nq Ͷ1 "Hӝ'x";Y [6!ygN)!٬sKr< ݅G!D8JLnWq cOq]ۏ^Ie>^ MX*}o;^dkT(.d*'m &zpi( g1IJ?b J֑v;poz0