#!/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=f532a1cb6a35781723637f8493a978e6 # 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 ;SJ+&>&`H`+336gwW*!ֲdۯg$d@BRw*AOY>r\෻65nogE^l5/֏D* {^^9kgws=XUe[v^] f~`EYu YCa0|Q\q !9 y`sjr<+c#?5vDcןGdcZ5fx0u,o!ъΛ޺434ĵuigZLu8mv:YZLﲫTvͣmHS1ε (j?$TC {*l%pl6EIf^F^>},q0s: VF"U)tҰp.uC¶iiXpB\me1k?ꈼ`RluSx: nYn:Lmȹ.Et f=yh7˹5@:yspzJ[3 M`)6A01Jfj}2U!YsFY\OlcȒu2C Vq\bN:ߢvm>]{_}Hſ_@y3Xcy.oww\/6@S @(Yl8\vd7O;7`q y1XN-L?@8bBc;NLBb  XcK;tX'S*6)J!ׁ5EF-Oؖ GL~6+`O\݄"9^u>XGPṴ̆1Sh1"d$ sȤ2g\xCBʣ[c0\S @7\r3A ˋ.7*5MYhQTL,ˈ rzl-:EēoV0̰&?lu:u۟$!ǎOԻcHow{[o`obEsWcn1-D D?K8 ʧE]pr%YU!<+GUb!.e¢)PQUwLT&i^4\fjEku.;N08Ip=&X~\rFT˥(ya:^Pt~xq8̞5|2XT߽t%J_*Є]+,RPD֍kMNߎ\f= $ /ܻr 2% dz&مY T ﺎ"QeM6H|T/-C6b gI>n/֌EB#W%JO5!"Y5#d05wCN 5#D) :ZbĪlmx3#RCVk,j 2+`)ʖhon,Zc+>*'e7A2O`=?8-E)^Giy0>~(rM᛿k͙F \Qpw(=P'Vqg",o-G  M?d烾rp64U?5(y9px} ~SUxyf{-[?V UI Jb'YZF\^ =46.c|wHc+`#tpǼD,kFF!C`{DaKbF ,X <J.ShgpY,ɀY9PDY2&W!$REFRlEc%`i2@{+(ViQLDnCk5hmāV#ҍ<`"s g6=!hUk|xu b[[YowABUܹ(E:6<C#UĘeG'6  {Uw1;eNjZ.yZ+ݞUȄ}+$[(&< ţ{YCY粿?|eOsBrŏU"XTqJ>)CKVJca QG3RM *e#=U%ٯоbcJUےodpZ!|X#/C?:,9xEGwۙQ$f" ρ[L0J̊GbC !VL=` a_#k%`hcbB-{ĆI?/ х-^[Fh*u@;Pb3 cLiWlA֭_@Oshږ=O[c]^cgogg?6࿽""E s%s%s%s%s%s%s%RVW1Pk4DδPNpCmKPEha2@d斔_4E3}ӻ4߆g\6MrΖyM"Z] pDWݏX8qw;a,(gDд1( ?FX?ulSy)r,ALoQp"@3#5qr,q0Pb;X@P$skɘFd$8;5Q8QvF_3/BNGZN܆\88 ô]n&kӾ"^?RYXv*+{~k ?(PaB\ ٔz ]uJ.` ]M|vnUh0N:@50U 1aVTSi"`ۈ.@:ieTl:  Bg:dRrfak =]$Lμ;686`أ @0^Yc s0Ml?ghc :ᄔ>D#!k0G4jl:DvR?Nlqe|HiN8%04! kX˦YXO"\O~|f3e& ,Oiz$k$Wait)SxkoN軈mܚ0Cy ZWH_, #%)uXfׂMJ y#`os'lp䟕#2FH i  I0,/M: 2`x3sURG2n%2"D<ȥD)6be 8$4YA˯$e}#tHJq0/'%jv%a4}^"P[*9&{Ȥ~<Pt$m -3E^ ryhJňe0lEa Vt+8`;y"eE)]"*q:#O7*Ⳑ)VSǵϣ|XU~vAd<71% R"Yj,rZTH˅!*s_6O-xϥKE4 EݎRz*2r$.^--*9?%:bޕeO>7p?_fB)ڢx*T*8 xcQ˯W-1SdxPjd1Z!KQv}q׭xq<,FxQ<7݋@/է{"ypj!qcPOoBEy7֊2\!i=%ᓩ53EH-9Ktb{Y9uδ![66e܏/ sجY G5 S}K\b>''#`So]\О&l ֋NaQYRZu/9+^`?1_2giV&F$7g{  y>?r1L|KXZtQY\ʓ#%eA6.u(c cr]m絳 _S9[0tOɰ1ODټ(;we_Ċ,2Sg jqs+(B}80 ]G*ѵXЄY `\]lI3Q  pF.v! zW 0S_8?NKyݰYԲ &*S#(_wl)-2^/%GVLyLT iE+59JFmSKWuw?){4ϗH]}䱛x|s{=sm|?ʼn[$Uc Y4E<#2yzܪeQ#P4b$+y) O׿7x)nE r$85Vk Wbj22,q___G[)Lz[B+g VSr9n{GW!Bte"]GL?Z>'UNh YG4e+h_U㉣"WE}hN`!qd|KJk9\pW+r \=$e,wZC0y;}R`1VVVٖ$[6;cb[ ڄ/VTCASZi6e-mل[ꙙs$ 7izhAްzO;6ßQmi&߇ہ[A?^ƱZUM`)FΉ-ʐmloM/y@Mvj",G;\ Q=]4Fb;}U֚+FR쐢n{zd^2:AVh }uZTL=yhGPGNywwzGhBm;^pҺdy׉=(n5q #([]>? K-%d┓y-@Z{xŎ.'j\u؎΃ŧu :(/g,T[hj.b@cK1\JxιP+ĹhPR} %E~BI))`h̚/l5LHX !V.:Qhk9DUpH4?I-EӱbL f%mL֘~AifZy$<*(9= me (TE0ESl92v8 Qu 3d#Qر٩N aZ%btK4CTDN 704Dl-E(&R;~|DgV4z$&jHVA@MN@3co7MT(23)P͘ qrb(fz0O> 9TdU5)xnJRE֝=PbnC9ßm!CPG eakLis@J',;z;y# }4 a1ŠYCe6b #f\F'C qvLb:doO3JhCK n{U&^p]\.Z8+=bϞAA}~ 89HNZZd:Bݡ$v#i09 [T]KSF k{l8t04 e)byLO d>:9udnEfuN_DȳbLjYS yT6H,@%lϓ4nl_4bUp{¶+hix/ӱ4Ue;-yDJֈdRb4ĸAӸPԖVJ9?(6Be41RnYFG#J8z̕ăћy8DQ"@ sץҁ3fN?MF!S`Cy:dzEb1Ѧ׀/˔+ĵƛ ?& ?R$_ t_ &m#`ꊘb5["'јI`rPQ&ӖQ 6jOFY(MP2)!ӣJ˴:V$j.at xٵvͽ['[#ezҗYd,DR!ZĤa1P T230if;l'U*jv[a7FMbh.ըJ5Q0~%S92Wᤠ}T(T.K܏fFȍF-|yz֠^I9[<*z4vO'~u{1-yhs5uUYA? J*rNt$*/3C8fT:ƚ`Z # !TԒ y~B"x*O +$LSb5La3I .Q#8/q&conȝ'\@PΔ"%BH>gDiH=g8YDІc(!X6fNI5 as]vzv$-3(-^/>R@gvxĸg kBɉ `AwQao:=TJw1A+^_666Z)mjw6kp`;Uh ~ xgb~$ [t:B(y@*Z "C0wfh:'4>Oh|cZq&!]ujv$`Om,=c+Eƒ_/O& wL N+ 0vR!B|y#rkpNX2 g*0\Rk4n#%QBS)`p-Û[^7VbM0QfgIwcقbEtg ahH<'[ = fQjJ g!rLȌ ìFs&Hy~j^wdf22iHښ+2E<(#C&p`SFLHrh~M嬔KaeUIai-UPY-$~˓h;wmj$%L9VqX-9^AR{Ym^DAoWFC*99{'eQ(0{$)DRjSv~l.F|,$0 #mi$ظIk#P׊(q)4b$J0{ikYdeg LӓL Y  A-%C:ǸǽI#1@a^IQxx<8FI5,4fjBG V0}-OzAa2C$a0 *oO7Z6\pEXep~ģ/NܔUfҢyPN| 楛@,K\Wq#ۤuŵ̥Ă%F\-"K{3wl̑8$NSYI<L"5iA CᶨI0Z|Z-Uj!4T] }ΊF]=G;Vs+1>)RK_h\}Yj5I1XEWb~JEêe!Z,gicPE)>>e X#6wչ;Ch|oɀzn nէv襤7`BaTSۻUzqd50Jw% J /B}Ag5{<|{GS5uhԶ4&R *)ǶxQk6a6JM5@1&T4{H=)36+2HY$F<I6bA>pEh镘 ]p++rxg j< 3PE sD9T" jMMD/굆F~񈏂adfp8txS"6!Ԣżs/}aGxݻQY+~9m2YH6&(؊ߒ (ԍt/CZ V6V&Ro,2 .3*儲\L6F UfϭÙ#= nwQJ>H9M<ց8L egL UlmWoͤߗ2+Fb^Ex6< d0l !N"Xi ج5bT t+SH"MLhR?%7ZZ#FVR|׼wY(4^LYrRnNg\R*Xձ}'j4tE/fMZgаVB W#ოBeƠ$RrYVqq~v{PAV9?yU?pԡ>j(B>5Q&%pud 4c%XÉF,wz3#" u^]+ړimqhOOk`$ 7܈\W,,njic<71r}1#dx*tjMe愆'QawhٹrGuœqpH!fuh o&5No"N7W݂O:i f2MilmGFzj,qD" !3 KABrQ2R3wk:IkS1ozZ MQN#ec2uİ fiGQӸB5LBLz{RY0h {b6FtmbKO*2t>%ZEb ^Ж]2`I?IY {v䷧vى]{ f*Z&Uah?ʄFAaטW.r&aЌ{/GvƓac25>?P…> k# ҙ pB_L@A2eg<ƾ7h{VN G=8ط|>OzM8tCn픗pn"K4ǃE*֫nv T9nf (1$|;lW#/Kg\xC|sF?ѥOߛp~<~?Ok߼/;%4crwu񓇺ϳF+S`oGͻar켉 ]D2qK\]>WdUoQ W\7*ȇ DGX+̝^www.Tz_P /S ]dnyn-noV++ 0%koT/epvxHVur_ū`a@֜~O|]ҷ|kѷ6|C(qYv^(*(@Ꮟ=/J_; 0sW``GL@ͼ@Jey縷,BdBv.W\ক{T.m+me8oݸ~U 81%Y=z$ŐV (wam jBi!4N`F{&;!7*u'H!IIHĵo "f\lԞ4P*x_W93ca-.pcY 487Xsǃ!j %vVfkɾ @eySZ.gDp\߼pك'֋ŭA{8rr|Ђjp`@/90Ջ6ׄ|-<9jPR%+Ǐ]zy*U?-(|S`³a֨W:W~i~lDΠ5o{MX@chğ \ð8x@\髽3Zs(aҍo MQqro,,?J.9频7ګz1X݅"r18Պh;MV jǍ!Ơ hԏkm5ȠJ5P4ϵ!< Vk\| ihܒ G0XݿÌ<n^@qׇz*Xh/?l\{8fK4 Cۊ[7SKup%WUs?C?ϵs\?ϵvzKѻ/w0mQj]r "jNT5R6,5f&k{{$MimTO7K^0&&QK;Sjмa@7{ [mZ55]8WG)\>1?iZiJiBAI|ݨyEQ3KؗCvSfW8\lN셍!{Mro eyU/_5Ѡ$[<rV(F[N_b {+œΡ\swݓ#!%)AաJoH .|ؐz] Pdwjې3FBPTlp3kl8/~=N^{Bpk+( ,xAg`Lz^oSxO_>a74:?pCp6h]p"O_Q]81#FЅKaz,_,ѴϷ) Gg8 :lEi(- m;,\+'a`7y\\q$2TZTL#^.z-N).OvN]_6Vlj8X* 0/{4qCYeR`y 1ȘeFf4NnYqGP쬈iҩ-YP( I6y#KHBE݇VYL@J@)2|46bjy)d gޞ<<`&D>a+N=h P8Cty(å(}J.ѻZ.]&ʄu (U]{@d[ۓnZ;s&cs#4SO9]n:6F xzz*+&e\=g!d"99,u27h0*l(^@J av3,͸MXf{u8x/IԀ׾7SL1W0;^63E,4;t`dGbiF׾\w"bvXcq^$a]kl[}^7\f%QI2"Bl"rZ535ƿڜ)3ҶeHKp'N!ϖ5k٢9ߛCLRSI˴" gi`yZIlVO&C6CI%$.qP7dlĐ^ynĆ ;8D"3/@\bRVY&EQ4bncԶ+BGfƦ@.tX;P*u1 L .x7P$km% qL'ڌF8 qӔY-Z_هVvS6D䔬9섭K1RJvf` g3,~'B[m8:ŖGޓΡ=4<3뎕 ?Ѽ7*kqO] W,L+ "&c8V jn-->?;>{S6zdn5>son7s_ZBifhl0fke=&n~g5׎0 '}oVJ//O!lpd< 8|\X * 3z 8'ʉEŌ$N6/i71N4L "`0mZZ'̗IJ1V{$vf-Q\ Fց̉ f\+Sc!猛RE~Сd ]V)PpZb*MYeQx`w-lX2}laY(hvIKQ'{^cF!’Tfzҏ ;IԄd8v);V.7H8qo+r - %@! $u/;{؎r%zXj)[`Bm`Noꧻ|q"5b"4V~2lJ7HY- 9/R x6X"$'FdlU`ϟ` .mNϡp߽Ķ[pV(!jS%-c9 > =Tc/PM E,30q~䕌5[,KKlV䍿YY&J +nWM_)Z{q(GU 2 /FQ\B7I ԝJEM†c,v,BuA XBI^W= .]{]*f36M|PͶb jc7З١x/j'B! k Ɲ7Fe1[ ItJQ ġ8UB>գA9;=ptә%4K2u#mpg0OYaC`vzp*"Ww :KEva$ȟXpr P"^g']Qiƪv+JfBQ DY{,l5=A9 P:Wh34%|m]Dz#`4чESMHI쀲,@IWg9)жSI?r!G}7\U 獜3ڌ KSN>mO~ecцwêV}>t!}СU),K=u\>D9"_95L% /qu8CБ%kKp7\7t26%%ٍIP0PS4g5  SSAߊ"䦶aErLmՈ&U1DV){hOR/~E7$\bg( D!r%p <ǓsvuBvb?δ֍Wns\ǩO흽ݳ:P_nqh**LjR)ɘy{~Oŕo'&B:'"\6*klIyണN.< μ۲PڳƒOԂnC(H4)  p䬜A8!Z~d<)T=jt%qcwpV#[RYzdCa-:̏q kѤO sI˨(a3yŔp,Šg|C)죢 Z1{y0nn|Ȼr[}r|ؔWwOF4Fc]IKhYg'WqZ>0VP,= [|GFFr0[&Pb),i˰RJf< [/vnnW̐ҭO=T܂R%tLCvã3MxЁJ,!Trw|{^DꅂNHHei׊몭9 MR5[7!*@l~Vx1Ja`Q=8cUsx5Kկ h*8N.GxO(La6UTHQq|ٺ8sx2}uxyH/?4 cF LW%c)@5 Fk2lµb L}P,BqAO\楂 3h%f$,2kd̤ʵmKCH'N V\Cmϒ%xBb)dpfkvo;!ȞN?9Meu]uD>(0bN䰭mJw䕌9nC¸wV*eۂgxq䂸aV_)WFYawbs;/ R<˦np8b%>]t6˶N$V.3#titFf!43 %wDC^:PTu_ nP<1T5-hpo\G+ʊFfBxevp1 hAsC;t4P06͈$hpL| 0POz(x. Z7׼Kl^!2w56B;* ~A8Wbq38$(`inI+but86i"`Qh+p$̢(sئ 6#s&9_'& 9 sQL{ :pWЁ0PkG[r{᫢;Ǒê87T]F?]Wq[kP.`+NcF&{zO;-wn#>uXO78; _!$̑Pn"J=^2(@k!(AggJPO{]8`p)QlC:]]Axd,v^*S?kѶ (;;DHMЎx }N aL CA28[9mto$v0+,F0csRGwƦY]{n=sgmP Ka`dfG$Ai%QxYF-|yz s\xMZO:JU6l$%QP+W,NJ{ҝ[у ,A3TW\77^ %4pxU^Wk x~W P lp耹Pu*lXH/R""Ӌl"O7<l 67Pw!2<^{;uzG݈/ӧ!V6e濘]S4:@ o骚ju%!-j#'XOlnݫu)W6y'+vƷ} Yl$G!GPUPe@ar?J $@Dc|sh깛g7`sy2гvI4 \Gױkb5][uhc(P֐aLHTSљ3Lbr 15 B%^̀)s 1R&\l_M>j֎;=57eb>q~xX;*Wg6ׯ^z#u%XI}Ls(TEQ1s#@{E8>Y<4$YfHmc9Q92Y\'dl ø&LkQu vl^ftAEC^(R di۪u+j|vp"׫:"n|Gzp2VO{kVU|j]U=n<dDa"qgk!Vb"ܚmaSt7G֣>L_1{W,VI^a;h&NY*p {b=Ӂ&8Tm\}{2uJ:͈B՘,A?`HYT >eY /Bw]GcM`@ߘ}o7{sEMX-n q޳(&$Ǥ w8~EFNp2S ɬE~Mq_lˁI|5Gm3ԊDŨ,!͜Mqr%>1?*j`&Tcሶr)k+ͨΑWc]D׭E72ⰶDgb oLncڦn&$fk0nx{b< b\plu;xo&}rZn[ `9B2} lz@&a6-xMX Qz'JD$ Pz˚X|Md(&][tk${%X>+FA Q(/AM[ F/\~AJ"3XP(ivG£5k _9ʊgOf塡L܌ 匥"W@'!{v:~rF|%Vmһa݉z7̣M* G"Fb"oW|fCJ^| ³c=PE'nvEr\="=ګגm`ZA z)Fa;[%s/Nބ{@/x$Rle!DψȔMF뫒oFv{ 64PJIFF1HHY#@8 )2-9 .<!eP'7g-a8z&CaE#RYdԏ@]\!^&%X鐙QYd&sP2 pMW}'shKȬ>ҐƘ`M>34f~p OLg5Is3vG =iB]8FA2'|xG_/+T8ZZ |Ќ.D^97CecxA$ls9 rq_}Bz:5U7xSt@>qȦnQDU,LMx-$c\7"h݂~@7b$)("5h|qT7ZyIc.xñLEL33(O8*"Ī bNA[dR]!qa2;L?S?87kg獟>`>vN<"9_BܣJ@M^e:V3m.U[S> "'/=٫w&U+Sadѐb"#^b* 4FyZq3 <<oKe 00-,\>NW{8(r08d88Y55N-`&@Eq튗SºWǻhm1)-7Xx@RIDCUZYMPq&n\t6&*KG({k’P~^?pZUzZ;>ThqxXVt*!)$ia1""roz8Tl̳-/,."0gٗiu,N.4뵽\Fžh.ai-vx'6p 3YO +AR'qa@b@ZcNPLqܠQo8/pqk':=~ ^7C0C:[J#0LF]4ctnLs0 eol,Oo ԓ=0G-w: gLear $0p~iEvuuE%UX↋sL"qo+ n29r%9U[m8w'Vym$ۛ&E!=2K;B~IeҼZwcT %{ C6٘B[< W4v\4VtfP[lQ!MZYao2!a.B@:NغQHGIFpv_C4p+,sS.DIKҮ&E8v%f\l~&1&wzܮSPF/W'S6/OȟfNdrƻHє\'|ٌ0p#E8:@{ D猿 ƎtRb#ڎ2#u38ăIWeEšPzlRs}DS,'jtw=K,XTح%cxn,:Ş .^I1eX}ZeAzhlY/Z;SD%u2;Gޏ+$:ysES" N"(>ĨdqZ&TJ-y`bVʗg)̸d` !yQ@+Ý]t(̄VfJmB+ڰCRZ}[[.ӄ’MUbA&LL R) d l b3t=Up,)9 q4v'iVW=B\&0?qk/x8>O AϿ\iB|>{k}k|^ϤvgŞ^Q}&.bû`Թ.J׿w[n8|yۧ=?mnnm38.nm39-~޶mɹm3-~׶ٶy(y @RVtB3#My(?t6d^)H(R׾á&?z:W]PdkD||~_kGkIЅ(f|0 7khZ$v@>氎)g(.0]Fxq[,ϋv|s V5\ wFV?J`Υ7 ꨸v9tk%8 P(.l?>GA94[990bUQtI7ND"+hԏHTZ_uylU1Vc|$Ep[MvcNӉ@7Αaa$kaM̽`<|=`u3?pu0|?U PxJ cp`2cmπV{u7ꀄθ$PhϯŸ{@g?&NIm[&9&]̲|7SbRjI_Fajf2vɼe\샕@}ĂFF'тDd\wRy5 FnwP;zLcݻ"rT4I @]YnA7ij' l*gʡ nU#-(b?3 L̶5Qqy l1MO! I9Ƣ[!)Wß[(/ž|k⏴G(vU0aL