#!/usr/bin/env bash # # Copyright (C) 2011-2018 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=2f651b01ff99cf12116bc159b34b2849 # 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 \[{sHͧc  vF(d- 1>efU =qqMDAeVե5#w?޻޾{vvLgFV~-c~~Z!pǓU[5a{`V^5g3F! xȃ[4*c7f 9s=`ٝM_#צ 8[`Fw"o]D+8;3ytHb1-dHdЂ`" dE֍N c6C6I4PЩ=9+SQ@%J.HrνRÛͭ5 ӄK =5.w529G fH(h>(La hH0 qρmdgBY` (PO菢;4 ie,\p h|' - PB7;^7A3X#cC]_h|%5Qh5LAHU2V;mi|uC5zEpβF\iek?($C0ti6օT<-J;[mCJ27*f1giة9wnⴹc@N paك$8$g?`<- pĢK@MTmJS1M9(IS$= F39lp#ɶ0H`JF<#fT<'  "{?ys:bh 8C P|e9&"%)\0:Jds/@Q -b"̷#KPM XJ0 srH0vY؈gr;̈tr Stz уF(2s}pD'HǙ01=mv5! p\ojEKvPgow.|_ rd'BH˷+Dy~`,|C,9dse9oH%o͖%oKz|{ L^&eF/3I7g9LL3y%Rg,KXGA1gMBѰ/ِ.g d`mÎXZї/ ; r@iB&a[uȷO~bP`}Mv#-wmgymnW9mO.-@w}>.`RDXuvl3&W3<x`h-0uRI%o9+Fn@I1iy4M*+|ż`G|jH/Ls(gI}S33CFR;9KM1:$+wZo$qdRJuH aR>9Y*v!I91OSN,"™!"gPӂ=JA"5P"9c q.k,\j&h DL9"0yT3R_iR{&@Y<< W}"V\K="JcҚ4Xp2bj7h ' !g2¥=IJ=OxeH 6*Z?ld)_J0 rrVab(>?3?&Ph,]:. bl |>(KE$98{U`hOwZ8bg1xf0YQ+WmJKHā[2 .fxTҦyEɆ|=TyIR]CC2Kj{bR Q:Ƃhf0sI+Jh2jbshu*B٪ VOZr -~rcIyBiPE0vzK.ehTV׳NHKR^>M^6"i]uRpWHyU=5vmM;,e-d"\K2ÚXMzd% :/'QgQ= -C5dS12grBMfࠎna՜AkiοKGXmߤ(Hjn8=f4i[3X\5JIJHp'SG |^7U!/ֲhZF1H b* ʿٗ 3@YPDbc{Z "=˶a2-)'K8LO?9eE;+1F qlSZnT}$mq}" "W_x:H\jV7cw@/HDL|caMZ%8e^'Vқ1} !Q(6VC:6ة;@ BdZD68UP, ̏[92w+>^w^/zV.vq/NObv-ӟˣxspXMpjJeSaM>3*K!sĢ\b>a(pYSٚ3s罹ޥ婩회vE>tW-昩ؐVy{V]!eRCvpmT}nWp0퀵Gsd?Xl̗۳HXeRJa$@%'- v!EF9 $OmڥbmkfPI+k Bb-LX0"ػU ~R,V pYfkkِw{o޾~|||CXBr>a8}g҃=0yuPjMpc|Vwkag? ²/KL4m٫܍;z g1^[c'LYVloB?5 X )rvzd͈) Ȍ|ӻ6~KT̶8޾; Fn2/6ܙN6{SfҤ2R˒*̲.$ѽb%y\% (ȟ)wHvu7,ͼȚ{Z8^O!>.sZ&hd/i\ yxg-3 1>4__iB F4:h7EA[gQg1ݸ?cbخeW6/P/ʼnHꬸqI53'q[QUfXQ5^WÈԕÚxjC*\F]Hh#H᝛ At$Cjc7+3k`bT*揞[_NrT9޺{b)|7UQ[y^/5k6#))o)n/i;#/h7&6_\G s.):n*<2՜Y@{`.2}H~~-xl>S6<۔ qLR (NW{҄ @5Ȱe*Jq`l#a$/(rW:?'˂{b1I+IRܬ҆n&܁0b\[qSɏ<\aQ Wٳ<`YV/z[ 4E V\YQ >:)Uh*b'8g'[r\'Z'h6yڣ):HՐ EYrHkn'u~]'0 n*/Q2h*ϊ+>AjO%@jXU қ%Mɸ JO8yfk1왴|wڌqœ݋vxzqž;`ޗqdOƉGbw0lNWH hf2糿-acOf^+`ԩSΊڴFVo^Ԩ6֣Z^Uk/ma%$q/Xy+ QlMI Y&ud% 6^O=Ic0c9i;t.40U`C@O2\W][2Ȩ<:'s[ΒMr^;^4}_,r/ 6 66&JLoB-ǚXL.Q]KA:_| pd6}?CM[j)Q+GӐ+<0Dq ctU vv3G*3`Iv^FlвZPgAvڽF 7ji`cY ت~ѩBtҖ`o^Ί~H)Cpǖkyl)(l%fNd6[B pբ6L(aӬZw7(C;ԡ=%y5[ %L#Bk*oߴ[.:' xtF蹎# uWĝAa3g)SfMa'2n g5)2v4x8$yu;$Eσ6,B[p3D rb7mM5/>&LWe_|NW\߶_߷bDRrx&5&Դ+\{&I7dF+Bo3v8!DcT1Qh&^ >^"e<#2tMZX_\bL.ӯ0ҡ3/pE#N.IL)NƞخG-*[MqQi"hC[Ѻ@Y?yqQDx 6eX"zeId0h\CԸ3y ib-( )t}BA7`EƴUq=^`F6Ks 8!xێ l^ǝ(E Fw$z?ڽK qnB^[1{{-bm)mD6irl}՜74m=]<'l'쩒evɠ`T5X!"=}4FAΜm_BX?cX1k^coV^KqPc9F̚J++R8c2 ppYjè7*e8=\ #1_4ԍ:OWwQ8yl2 jMǦ9X nj"_{!evj j An4h;)lq 5&"@_C@iD3 􂢜dI )BUcs)w @B{6i-}2C(/cT_̊-uKfeZ0C՝[اڕy8 J+Ð2i0 %M<}ъ.&}{w'JTS;PP @0Q']7Nޚ{KR$Xx??ΣRo6`%^`+DE飷>[rcw[-Wr󿭼X7w]o{^o/%7ۋ³pd.g(Y9.Aj樓p^azl?=$wpb/ఽ[\L/7QF ȟQ4Z6GVw5")MּM,9r_/')6Vɽ-!o!5ܬ͵}}NЉ(:,FgQ%Wؽ@N ¢ l OvwB?gB[c㔉{P=9%A el(^XeG;b@PS`6NBᥳ7#tNjwVT.J VjcFx77ώvmS?~FHDEF8SxzkpP;:n÷[;BM8`O xG ]1m~Y{W! #x詽>bvӽ'4J4F[fь==ؑ{{o` FqG#ŒEB#ѴϏ) G$ZUcCj(n&3DKW Zspa((Zaӌ#:970;t(*Ջ> kv6_#*b ".B2ݨK+m t*64-uSDbO؊Sn~8s8nC?9èQ2˒yhvq&"=I[1\6-O̵5grk2FhZtG~bV-ŁR0/~1!n$aGߐ6S4ﶢNAj{HiɈ/)i^#oGp䌀f2zzkUf'r$S:=љtw"W!JqmrK.T+ȡG&d|}u져͇Wi7C~l~<p0U7B jD^vٓvMKnڤnW8^sZjP{% jUniVAJbAIvS^˃gFg>B4xl}2(~s# *DKXa"N u _ v +7;[)NU"uS77}rFECxL(J ~'}JvO(~2f(Z>ŧ 3f>L2#<=ԙO/ka7x92 PF]%L*; N\ _8bct*%uԪ ?z,D#N'$av,|ov8zfU;3,gMsfk:D܀-#((BqsC-{ F8^dfVr;}05Y}+/;rFrςNjQ;ᚪO h 8vHrˋviqq Q4,RaXmpb p^.sJ6JdۊdJD3S {]R_^&[(6(t`ey6ͫ6(AVXMe;4j@uqݓ&,jHFPx+Fᘳ MA }Glh4>2k+{œ,BLENw;x樢VsA}eAòl T2rV;  ̬O!twV'9l 4PA23ҋzgXBpCKhlU T0o5oqd}&\Xopp3kށ4`ۆ+ wp ]|w7݃cP8ӆfH).}K8 VVVUn(8It,f&i̭Fk2ǃR}54щE*ZFb3Zp=N4L<ȃ ã +Ν:`wfcР`V6|'jVs?䠑xD #DViC`5Ir͇֛͌#1N.ZRͣݭJG|{3  1M'&c6 &:0 Ñr|yb`S2IRUGҵ*죽V&-x #w0KK$nweFs%0a%I>2D2"*t ^EJn;sPqn?(go?A@W dv^yH0L/ryEHlc*Iܕ47]8jkvǔ:&bNѿ7bXMٚl\܎2^.}sxAZ tɴte7ϕs#Kre.bvlyuɓ@${jYM?%5?PkP e E1 c$!"D8Du<8.VYr'pTS.fpMTFbNi`Xz{I ǜ+$XPP]D BZ~'<@ft%StP1*,>ԀixYީԜ #M1{Q N1/aLM&/pKOz֒C3sF' l 醺XѰ'*Ѓ@jMA t|"3a*TrBjyUP$&#W# ~ʷX_wso״F)nZq; 5 D+:v#!2J!*H.b]z̐>cBI1j^*8J6 ˜ucلfT. .4$6hR/}U.AdgqD{lP Lh6ad`21gD:{i]0=`]dU t` S+PAFwPX°4e! o>KKUR]'s7s7f~p ˊ9nr#B7l]/& 6| 6[S \_~c{C~ ܡ@%V ^V(cu;҈IԨ&k`QZKnlmGo}a}?qE|q2P2B;{|82Νo*]mWr%٢'4a ]{m1MfZsgN~,@e| ;qԌU7IQIkj<*nW?fcvL-my'h9ά<q2Drƍ L! ]ik:C ~^5~l.8P+Y /vy\TVDmFk6KӵUm45Umӵ 5m9iVjV9ضEmA9~E׭+QJ S"gU0"ȢҜ˅tpa0ۖ頠uB&2DA ;pKf3V}! Ǒ4CfO)~{}/Hm80a-ت /rbw&XҝcƲ =K|]n4C] 9s0 ,v'fÖ׭8|.F-##)wX&@`F:lv)45|Y?\6/>qкXE0i0BNE2c='/6F770|yNz22s-Z&w%l,S~Gf I~; tm r3:Qǻh']k (q VzLh%#Z5CV!iѰތm7%k{a\@gI=:4IY'Iov >5pDwΠ8;tמvvDz@cH2(ak _*D"IY݀KKe&/9`Ŋqi}On_Wn_Wng>[PeWbkHFZ _jF>zʯMq,=Lk=:3|tǸ_(޸p( 1ZF)@Zaup iUI9̬&K -`#]!PSS\wFJծo0 D$]<)0 xlGdDv7%H!Fʇ%[nOj ئ]dn11+k /W >!9G%;!4f1I8_`R,\x^lMd|3"N<yIUwh8DnG.@1S@?Fʓ+SQt7ϨUDL@xķgek(-A6ލ|=MLjJlLt,})܍a.P%eجV㉐&x. 9dZN4Ko6Ny$l&IÅ[ټpe=q'gbCe1$#*7nk=`sioK6r&0$A˰hC.ĺ@VE~L-'˔FJwy kD!4uVtu(Z~O0QT㻵) -fwķ!4pjJH2X ᧌CIJem|0&+l'%9k4-%6/LWLz8/@3-y\uύ` A-iۮ)a#y9YVH'٣a]6UǨXS34b:w#Wld.qEIȺo ӑT#@a݌mBr@CR\u {@a=őE)2ZTL|.-ͨ(h ۇ+w~5pcү,Sf-N߬x`YU<&[%}+ "YՏV(`ZRM"2mPZ_l%'$\%Β (qĒ*Gnz٩ ZTCdlC{`m6U<~++wmV's;s;60f樜'K)gSfx<9wOS(T_Ŕ1 IVu @Y9EL&%[[r@+z"'>=3(UOOuP5V1 __Y~{ef%~[f1كbrT5{sЌq;UVזӫԸR-*ˢ˥e+(نn{oA ~/հ܎Q'b;x2әYU?TGC!򣧫ZՕhdC=}n}mdKɶ+H;#O㛞;Q,'{Z=Yq1^zs@n}VI4*\Gj/br0]ZE/>&"ݡ,B!!0́`Jt2&DVd95 R!V sSga>a%,Ӟ=Q5k47HQ*V:WIu٩,&;6E6d)C#Nb~-FZP6!٣LP #/Nu}iJmDH6<͘pF}li{&W觏xeP 3lՍ<yi94߫9ŷB=>_.'ߺcOzNf%l>3cz;L?5( Qd]C,w-K){WG}Bf_0 |ũkeи(S#gn/e2iwzKZ}jse!cmcX^'2;Qrg]XuQKEfTWufN'$c5F:͠O0MTް+vԯ,BhdimP |0aij1J(G~ݼOE&=Q%6s(|./)6AGKN-M./7\so:n@WKd쒅r~&UZ;KhYpcAi1pˋ*.r;_\e;4} zt6ols[YDOX?<{-pEx=B>*$0t4]Q9O1Up"yw4x(}!FБC`u,0+r rfv~A agj^[dHRA)Odep=TQwp2;H} F*&^ ob+kꚌ&2MMdnf洿 [땪9*N@?7MF~4uc'"NhفY8)Eד,O Weȶd=wN1z`VDIALr'FjU"e̅Yab~:TDWbtX!.8$_*hE2a-j<f N@x2wAS .ZW$h W6#h~cN֍ΐė7);`ZZ{oaĒVԨwOB`p%- Ɍ5n3pnXHu&w.} cSBzc7)|X$u@D-BX r0ɔF Fu/_b\=pogÞd# rs[b:2!7x]!Ř +X VgqPrG7X 8q+*@S,PV,\ۈ w`E*' y^,sKؑTI!?s6LTu mXˀ_ihcYQt4J#b T4E7gTP>Ț+q&dJOɕS7N@Oo5d]:wtZy Ti4oO!+aаKNxA]$ XK 6b$84 #ʨJ4HL@{qPF'̸CHG@Il8Z-Zgo^3|_&sfY:2O8uP,SJܦ8Vg`D m'0›dPݴ$HpBoD)hr5Ij&OnIZ+F񲦨F0.vhp GG_4+R*% q2|svli+x, t{Zj6E?W0X6oְ=pD|t8A&; 7Nw7nLcɐI!I<A&G問zË0H63MbRN1HsbXktISgk4pnI]x>d%rb eQE {0[YSփzH lf6> ȱGAZHqvA]M7"T;܆īW/8iFIL(|uփhعH/ -f" ]]иmS+QQY -6h),FsFE`,,  ytfA=ӝ#j^aEhQt٠GؼjwZ5 ,0P ,Qk蒢i)QѷDruxR[N8W>ќĚ Ķ­.EvlJ[XEiP yl1^]㞇bz- o,Alx!Myh*CU?sz.|O0Rd0]3.P$XYμm@i1 h Y4JO!H\\onަ3 Cj`m0Q)Oh;'P7jFn(l"љphoCѣaa: ?|ɧ\ks\;ўe=cfT%0Pxs,icOhO-5Ek[).E/~( q}qR/WRasziYa~P9 gLnWBs] R=F`:؊JU\1pţ[VVXԡ~(oM- =Y/j`t:x[{pr \ HTgx aаei?5 (( Ѩ)\A0}G5k r= /Y@5јyv>" ޞoU5lm?cv/VW^$߿'?r#?r#?!9S72B8>Lzik3UWNhk7`~Q6?h?nwPvrCp"74mXURzIo N9 Vltѧ>ͬ_Q;3&]**vх8+6+gB{c;EmY/kKM}# ؍^SEw0}4b#lR{ i8uiE4QEnDcV4HW!4m -vϜj@Pv@UCt<+ 4ס-5rJklQYF bɑc3O 2zK9:J*;Ƒ8:U)‹lE,":ttnѝP#j3|*W'*YU" k W!6m/pcˈx8GTp1&^U%A IkT@U}V要=~ǽ:#KY24b:# l/dPt88"[:Ӫ20fD cAb%V 0.j1OkTopе쒂=6  ,ýݓƖ@IHSc̾]79[A!-K@=(+^$f C xvXj(=DzL3L9ko_waFl`nN};ʒxZLmݮWxm,Ou-hǸӋd&9j^AEןqu4XZLDcQ`CayXp~{ 9b}?Oڢ$ /Ev)iadv#D*rUܶQڦ%m|vrT?K*ϕlaǛMaӴ%_!ܝ0krE1EfSpi-ȫ鵫uФmkF9՗H 47w3Zse-z7N)}1?E~Fd6& r-]MAzݲr`ص.lVnbb|hgRl+|nrCI"y#3o_e&|6QIT fCG^?W7{G(+&Iˆ3I&ǝ$/4r1`d輀8XgKfLc@G=7EU臷Ca2/P|zOKӢ/%1i.|Z۞MG]c?IeK &!\e0d İ|wʦn\pTFIjJX#W2E =OA;O^ɋume}ܼ:%=  ֓9.#15:|hMBl_#o`lzj&k5pqM+G^NxIɻ4&G`"9Wu:}]3gC"~,ԂY CYp 헲.(H b]Up1Y֞* `,뉘Fbw#&K oțS0{Tҏ}L%2P/-hSрmnCPc:ʘ36ŵ3 5*,gKC2h(B˫-I{6RE= T{MVɽb-4̖L)IzS%ھ2= ?&dH R}b2rQט.?A7rٴA L0BJd|j9ҼPMj4+쨤l= 4puAE; 8bQc\ǣD![d25c=%4e~N2Iu ?昘dSh\mHܧE"MP@FAiC+A'3w)CN|ÃC`jEtL J~(HaĈgy&3ªůMkB%^聊:kI{W.]֍5WlI|%Ehf`qKxz\{b(hIULAIN/?<~'N(0{$E>aXL]%h]nBM:y[Hay&p҈/qFQ'Ph裥#cH=}v4"7iIe gL LCi"'֍0CP ]¬ɑV!B/<ؼU!/7]RiBɥdc L/5[یj/J!H, OzBT:",a=6n^x} G$%YsI<*[bĮ2L8e E7qydWoߜp4T0̳`O`pi.ᔉZ vcDq݃cywGrq|zɚ̔j8lϤƨ\1ήA ~񷡼CAʲ/ RyHmTyne0#crcpCr}ؾ8<%Yڛ֌g:|Pݬy5qRm$3M*9O)%ߴVi |l$ȼGBٚxXA4u^mi KZ9CX"Y!+:.j[N}´#$COu\IQȸzLڀr eWo`W~@YGr؈1e!~y&SH-HϨz8S}vBuP IȤud18/!I4H40\plkԼod.*ZlQT; cp e_)T|+(mzyq6LN`$2H|_/K>awPewouJѢ+]~ t+qxG/d $.Y,LsY* u#1h[1g0q SXCE cnhm]O7mLp,@i;S8Tehk].`8d?%P vg]dDw/ҬK1ʪ~SWMѫ,'tbn0mH̥0܂%.pZBO:\hA3x#ZMeSlb%87ƽkSk~i(h,g)gP{-x@ xm qE: q&`͠13#&D^c+Ѥ1~.KlqSoS5(G%m8y3TP~L/|^ Û|tI͉pmQOzZC%Q]av@Ky RK~>`˘ujAY&1jdwlԵj9=|[?pئi@0lzf2 Ө"ڿ0p8@;UtREPY5I9qt_Iz xom/t⿽y<6ΌR?٫׏óSWݮ{ ]V7u~mgo}Ep)Γ UIJ3>*D T }W&NwN1ԁbx4V2*no^ k~IhY(&.i:ca92 ;L[b#'* x'' Y(S1dӵ\4]!Sb&(wՏؾHSBa"5i6Gqƥ" ݻ;aEՓ'9^֮h͢):4"H,g_3&gTYOiʖ(2ugeFK@LҜX "ٰNWSIun6#WOWuҍ|4{<]l|&]$Wmďw篾AK?%,)=>y<?yp1}򘟋Ot>#nxQJ5^B@lnafwMn0n֬jG< d z7Uff-!_w{6*͑H~(K{k1W^?OU :/%şG}CwJJ?7 ?ɠnh!R K0݌D\i*")Y Q ^s?rPX(NR *7߁#Ùj0OG w͋zfRmތjx%蠜hߍfwp,_Z&a\!"*AP;-Ratc!mE֥y%X:/`f1CՂ~Ozӷ&|kҷ|C,q])+(D=HLOL;#u=b$@ja RN7^9>Y顣U$r96UӡWbl[ u#T]aR%ۇZStlN@fTAbPZ^߅}a&NT3 |2rJ5M8x9[w2*>u'L!Iu~y;Ԁ d:*a9Άi:KCtWu9l4[r,2P09ʿ>uZR_HiM' I]{u:`JxH!gzx0ęFpYN~+7# T:*zP,.M8a;}KxNSa [޳Ւa{0e)8şj'x-?rE(Z\>O,ynF|U|Z|AiUnh70U@U@:*SxZ݁`=#:<\*:zOVQOAɁ 1TOAOGO^OIQTOIq }. œݣftR=->L(H:%]/ŭ]]ur wӟס2]6,ӳ ?. 6{'gǛu~uFU}^M3" ԹaS1^sqqfea`!5@wx #\.aq| LuTccw ʌ6&dN>ʀ^]%< 3;& wf:7[)vaA²˽}?OVzMǨn&h_ƃ"?K8҂O< z1jLb< w AEfRxR`9<ܐ='CMuʲ 4a ö^"B,x^v*ټpQ\@)7$}cˣ/q4z+*F9+!B^)S˅HX4Url-o137_;Ov/+?YƜ?̖/-ǘ3ř$O(iY*>0 IB0biCёvC4'O?'O?'ϟY0