ࡱ>    n`|mGPNG  IHDR8LhPPLTE111999skkΌ{{911RBBƜ֜ccƄkBBssZZBBBB99BB9999JBJBkcޭsck91Ɯ{ssRJޜZ91ޥ{B1֌ssRkJﭔޜsJ޽絜֔sքZ{J1Ɯ΄Z{絔cJ{cƥZ9経{R1֥sΥƜ{Rƭ{ZΜ޽sƔƭ{{JsBRJ9ƌsJZs޵Ƶk֭cƽ{ޔ))!{{cƌksέsRƭ֭ZsJֽƥƭZkZέRkRƭ{c{9cRZskތƜ{s{{ZJ{{Bs{1ckZƽޭJ{c9JRccs{9k9c{skR{ƌJsJc{cksBJRޜ19B1R{{Rks9R{9JkJc1Bs19R{ck)1cRZcck119{{kkRR{BBk11R{{skcRJcB9RνRBcεRBZs{RJRB9Bֵքk֥֭RΥ{c֥ƔƜskBZZƔsRc{ksRsZsBZk{BRJZBJ׏MbKGD cmPPJCmp0712HsfIDATx^ @u?30xՉ h@Ax{ _1u9Á0:ry:㒥.B&GJQ1MQɕ KSR|sR$^~tm?>>w;Aw p;Aw p;Aw p;)69s;}#Yh̐qG>rNJ} ߟ0v:[Jh$sG`p\P_{9ed0(gq #cSBN[ f_/8th2 )~`]p.eT$0Ӏ;] ?el)<2Ey Kur#B@5ˀy80prUWwn^̺܆ ]M- l%#BVdv [XlO !n]j] ?ڮS YKZne+SRB<4/tq봷ĆICv#fH$t<8BwA/fGB纠y~{ɥ,ąSRRL9#Z.T)ị_]koo?Kۯ]6E cʥB|N82*ʡCh'T=k?!GBIOy+ϟo9u&֩?^~ٳn~žz {kJ%0 Ag.%\E/\mA?7uU<%`4F`SmFh4p)9-OF 9$>yu]iz$xzM%ч2p6e0#2ʐWRsK$;S`ϑSbxf/:nIB) 0Hwd:c]Kxgc5 a~vOgSf>{pAjŒ4Uךvŗ{윿gD؍<[t``ŪN?eL/8%7N Kb5oO;+I6h1'( ࡈ/#p2\'_]睜̼Z<& 4_"菽E&1$tЋΟu{.PcNXSޒl~8m *rrSȐ26 CuMu;9*ASy;jP66u2ٿMXm-K^|ErjVd90(!qI>RlͬY3e;&|=0kC1>'[ٕj.E>[VU~NܥGi6k7=/0)Q"8169 8JK%A*v:k)1Lٝc/(?߷)AI<@O<#_9Nǘb6K6,N]_-"q +xؠ 5ͫZo ֆ|w?`mn_8㣹N{^[56UH(5A!Hh',8']M%FNK1b9 79)9H+2H$g&%-=Vs!x.1bkvn̑Q?iYIdr!v6:^2I>k)J`"ұ}0B谦EE3{]7<~CzA"^~mQSݔnW 쑸-)ƅ ;~VW?K,GU6 JwϬ2CCcXzN퀁0؇~g[ɖ!/]s ae~t; 2XLXηPf94qY9{Ծd:wH V4:һ ˈ%q`j:=K&Rj)`lP"͉?44M˸Yה,i|nkȤOCO 6@TOnz7G1B?}P:3T~X;kݾɆZK;Òz5 TcD&J}Ή;MYf CQ0Śsd#<9@3'nL8ezklOg'DLƹ>;USr92*bOGw!mB65*899A=`*_:pNYPZ/zYY1>.p 1ǥQihk*+~xaaPEOn>1Mv#t%\H%1"yw%fbVݾrvR'+sZ @ xM1$s4%{pҮڌ07] vU6嬰R4;"@ T{z(0ƫyY#a-b\}'/'0QR}":]0Hp%"TyWNl (U;<M5=)c^@ HH"ٞKٕyn$۪9RNnޓ"^U2"XWS(F IȼET53Ԗw΋E`IE57SiAHEx8wA11=˪4KlOImZ IO'm6hk뙳Ӟ[_Tiޓe: ׃w {(! sjrWP'*LT^/7k`߹oEy'|ֺOJpQDjEܷDv\\8Wc[6۞3JҪM'G$FXT̆z0gv&(yg=V[`%˩`|zBG$<޿5}PGU #g<闫dbBmyU#De8 T/?9"#&tw?GғKvH(֓LGRFR=!iUQְE.2<2sbBV#3NWAť%8iOz?|rUۑ r ou?e=`!k[v2qBىvnkŚ@pPOLB_ӵl8N؉$kY ֨K TKDFk 1OBuJus6˕#Ҍl+Y{ό?Ղ=29 ^[v2#" Yzߤ#*1"$uY?{©EK7-o\|YcF?~ZԑwשE/]ܼF)+|1xlbPosbY)ƱBgYƈiox&DVĵlM WՀ=SS}n6{ZVZ~ dþ2MU+-(ô+|oy$jID 9VӒwի.,͂Z W5E>D[g;ҽ][g=SUKݸ&aʥz04KU+Ml&b5ƍSv?\!`7.GᦷG$Y (nHM/(Iϵם|пچu.aS-Egf޴>kؼ&qB{zk|l d|/;1#²~qO⁐?qDhY]jVU[:o@<H2 ^{!`} tr+땶N$iXmy%}jci\Hqtym[AK}K. =òz,踐4km`Oo5kAKtR?$j}4 L<5@ *.Ѵ Lzڶ#%OjXxݥgWMh7eJ-~!1ESI h=:lF7O"f["yԫ~¸Z2^^$t VM GnΘ^ho[yWbRl9ތWإG@.Xc[XRaDѱ2Dkwk^k=1XAN^0Y< ;jlj yC14¡eџJ~9ܶ<ZgMWy+^?4q*k7HS׍HnYlZzxEYJ`OoI,77O1dֳXFN#fUb- i7pv1loLMns:G%e4橲MIL6Vik4'/Bz RɱcߔLYp6u"1@7&B^ٴ^9J?KD[ zZ/}fA!݁1ķ*eKYB. I7~ iѣ, &i"JŜ! h5@UX<|TaEؼPP =|ĉLF?"㐐Оu A 5Cz4&wt2%\ӧ5'$4h_Y{^VVUnM}cUyI?z /$+^Y -򊏎mDHE+wݘo?AGZ>.a U%v9Hǥ[%Ό7c.!& iTH]+q Y=PNTW-',[;,,uX}\we¸m*oQCiᴤ'NdZY{SI9M݇g'%§ŸW+vŌ>AJ09xxz1ayh>!e4*pc55[BUUiA#I m 5Zzomw[9p:N17,L6QU#^y xQTP9xJt,^qCsh™cp}rL7OXbntݿq~\HL4WWbmڿqyIV|&c˩k8?.-*zItg]i ]IrѰf#y &buU3,t!EdC4ח-*09hQt?KU9ɉuh]2M<ULJdzabّ|?]3+(*{W90V.0-byb[)\ g-x9*F9usXA=x;&zc>RbVC8ow+˙myB3nɑCt_1`C;C %_((JlI[~Y.25C@sR =ͯpHX6!,o  [o"a75xgzJFC+&:d2!Z'>nrNI8!2u) .L5`B 43Sqwx2*?zo 5]T #:U,*[znpv@.b tTid$SzC3cW$AF–w59ȃ`s$J)6֐矙1]!YCE?0 fC(UvG|9Gq8q FsXx>)H"2[V]Y*n t5MQvbwQWTj 5'Fٰ 3fh}4\%*Znv,-((XZt[.p='ΰU'5/l8ϫ#km[C2VH! bT$@"aR~I9$p#I%S2i?R~%`jkM!'Zl x2tqTGUʰ#UPA<_jIUJ}n0LI8F/ުhlxbkeez #$)&C 1ڦ*ۨ22}JV ̻de|nqpɮ'w rJd! H8MdQ-0i+XKwVVd0B/晧W:G*GY6wsM^ai#B3xx8d`H""P7PI֕pp}'[*by^opT6KB)%7TrPG/r=` 踫`B@ll,sn6JQf#blujywl_e5y-E˪y;J;ch3gf>97|2і jUZxՃR"){b~8R` c)rM Sd/MpvhA-lRRGNF){FhqUs^i4OAхsCLTW:<(iKN)8 7BVo_E\c+͑aKi5Z}Ѭ9e]TG4Uѓ \ v lj#i4ItU`!~r7 O;[`\ A$-!n:F_,YȄkb +/"_%)m.Ov U.Ab8 3XTaXm^ KzVGtj3F\ .S7,{ oSOUYFy?G O}H(uw9b\~ER]ED ;]#$ .(͒ Y:#c,utIItݼUOR%.RXo~ )呷9 p.x ,u]8Z RS@D'v`Q t֍*Cr2S贴ٶZS N<>R]3B ߒqoQs,?n^c 1ECح:`nNr%4902:ݪș?Ϩ/q dIK_A4s#SL IÒ?79Ls|)Ýsg/-_ ͦwwSةS*Tב3$F({9SB@Q |H8@9ΧZV93?$u[T׉$#H-EG<t:ݽ>|oj Hh m*(݂i3eƙ4({)ɫHgH=BFDRKIk[3J%YfϭJ O͏qZ慧 Xaw+W.u xzksT@IBC]dOzaMdQQòet&$2 lHMHAQZ:6zܼ%3Wށ" ­4뜇jQPbY&<HiK6MB`O~0Zn8WM[kG HmCrw(K %3%_J B*|MYRcZ)Ɏ{k/nLvZʪsM*_6Uͯů cӏS?`GpN_\BȈJ S A:PE?lbqYP]^zV$(c|=(<مŸ"2O=N&׽eҋ`wtQu3]n l% )0s8; _iRKLfJG J=f? I(xxt*iw6,aU~HY!%s )wN>~yu!b:pQ^Iy+?]JMmOÖJavw ()U}]7rq|hR\$?r;@=j(Ysd]rT$[i3dC)= v3\vRq6C' #x23蘌x`s]"=N8j*z+9C ]~ ⸍}\% ہL-Lh#EB<2l= *t@ԨΥ}:ks)KZX5{"!,}lۯ!RdlR 5+w^ucp@hC4%|}(́"uDfY`/9+ PMMj61Ǥ(l-nop FcS5;{,YWZ[i> *{,._Ĵiw%w|ق8OdU HD4PU}So*'oɃ 4+B67*Gr76w|K0*F~wHR-bƛFF?+LE2+|3k .19m|;v񛢂5UUTLtEr++L݉%KP 4#{R& *M*͔Xjg@k9ieu{k؛Y8Hf|e6-q!ózY&iG&;)̃#sn4;)4'#Ha!/W޴Xp8.;}vfOdGClݺ-S!-x/i-Q%C\'G6AV=FFQkk(GoIvWE )] xp|rF]\:Wd=#wX(ޏޯdىjKfWk;t'3sMcockmU 0ɩ'SoP}cۍFJsf'+ع1$ח?'Q+D$|Jrfu YI"窍Q6\GΛA6&XB3%JGb_~wd,9ڙ-2rCq J(}Sos$<d0+Oi!@ ReI;en)-B _O;ˎʠ<GϦxG3%u ?BOq?}&$`%C!\oԜ4C3ߵ/t|6n' Z&0J&fn_Nք7j+^M?4 u9 IfCN N^e:3(+E}N+TÓf، :=)!> "%8)hr(L ~\RXvወu!Sd*uPz^hv_ٟQ~ \\h9qQ`:מn_ Y5w]5ɠPqSz>ǑtB(s̕ևB  x9ڋ8(8sT&0h~zɮv\Щs;̞_;]Ӧ%-Wƍ +T:`gҜ>S곢~$? H)G,@S~NݛzT8ƃEUmw+] 'p4߅î\_Ƽ i3US;ӮKJ=+P]l}ι8*/g'޻e]C}R@ G"PNvNRBDÑ^][) " 8p: WPUjA4sY$J E&+/}! \=Q sݷv}cζ^~{#C.6_SHenZ3}RjniнVX~RBg}ΰLV%X I_sA)JN]HOHNÓ0])^Jdʄdts>;РC:N2_/Ipv?LC'S¬-%V3P2ΜB/ k)+n4=l=MnRV]^_\A?7ٯDiNζxeg]9%&>o/+9#eDoRGCsەC77!,x*1clPq*)]$F3P`YV9vy9,8Ñ62p.xM2T|e=fVu=YwpzwRҕxށ/g&tgڕNأ)8rW[,4Y# <_0WH/4=avuW\tDTQ$|-w5\2þLbíѣt}ŮoS]9f86-Ԁ0xE3LD ъtPg-d!T{F-5!8GL_i=!pBR "?d-c>trELaik҆/$ĿŘϟ:]aaaz$vOOk``ķ8JBj"/4pψvb)6G}"N8}˝W;vTlEDc.ptɈJFNM>$,IE*U钮rدZqUU(q.M7(:nE1JrGZ␹ gN(qNPϢUm4Qtgv:։wl?ވT0,khp1yvE=JWeg:.}̱qdjY) %1٫S\NwJGcWRd~.U\B\`7e!2B~Ο:<0j P.)AZ-"[]4*NLu@-dmFqa?i %"DcUl}q##V?z&tS>AfYdIIgv{y)ɩ?;}JeF1$)+`0JJ<&SY0-K#*v*mסCvA.r@n֭t; 8r}8M@Ta?bQpGY@)?"W_@94%'+1U\g\Qೡ(7G@q '|#'oEAmb>MJ!dI"^R5y^u ۺ: $ol>u:CT^ 6}kW>hqj(FGtoL=[@'ɫ_(N$xZÉ'M?7EX1Gzs.ZW}dG(߰n" ^s|t1OOʦ0Uኰ&SPhJ%.E쉗\[QJ}FQj#,Sz9U,P5!h=}0@ jDRM(KP#}CLQ%^Ȓi "kVso{WdAKu6y@6B> Fp~ p䯭r]JM A[\DA .aNoH9NlV&0qqH-gݐNikS;(csn3p\_WСI0NRX6: rHHxJ~yWT9@}GxEvE,[aÑqi;t]|)5knαGH6!ħ|qJ:k.+7 @XiM gh5" KStt E?6>).@S3B%:(l"+)f a' iF +[!(?2>Gt flHٞ]2Ċ h$Ý3 LVG>{N6(m,hS 3ϰpkYMٲ8rt8d>}m$LB7Y1(+Пb@ŒERmBWo cvDg1ݿ㍒]D+:Vf;6UnZ0fgIE_P} pH")GtX.Bnȟ᷉w;K~áf_]zo_޺eB@efeyN3{lΠˇgI$EN;lo &qv|h)+0֖Ç㙋Wo@Q?`Vq_mq\ݾb-RAfA"D1ԣΐI=q\l93G}V'ľצ_8[W*mRŷ赵KWUgKO :(=SA *r L3J?1K'M"%e}5)zlŵ![O宑P_Ƶͨ )8.c1sO05!CHzʅҞQd(r̐~V` ~ KT$SW+-)˯pLɝop}ҵIG=$8;]SD]1ygiRNPC/*1GJA4o#G/15ƒ.{o_LM:.wbɔ**[q ;{Щ]ڇO+th_jupl,g  1\h/$ Z$l zxsbp48" bX}=Do]0]GB~\'nvA paYJrFxUzJ? W82{6?ܹy˫ÎLÜ%^*O+@]'x89^~Vs$326`0G XT_;EψX QDD[;z(]Xw/}xc:E mF_t6yZVA`?֐+Ȥ"C5?ȔA"AAN Ғ%5B׫ȯ}jČ X9F)_ pk=B 3S3XnXVqZ,j Ԡ0i__M|*8!P 6T&-*`ȯR$<ܬXn(.TWG256(/v ؆Vk475 &]a]U8dG F~Af\Aǁn—#}9#NÅ|x&XNE*iZn7 ~HPx\w8M%E #*,g_\ VE.?i"06VKZT|Z!U)PQ,ؾᐫj#iŤ{;v^S諸 0!谒uҙF% j۶RIQփ(ńv69;lL*n6_֛m/{ .h `bφ_55ʫ`YFPwԄtǀr=$Gg/} }hPce&+ Ye!A%bI(2|*f%{+u& -ny ɼ~(.ʗz8sAΕ"jJҦjUWP2~fYǎkDFOn.;ASĘ_މr4wEFz<y )Hl3gwOĦ>~H)lzlCc \O]P\%0SRǍM{/LN9χItDG}bͻA21tۢ#mʄ  r$x<|ҘE3`i{Z)rߠ~58A dgLT"Ŏe.4d.c+7"(X].'K<qC풆c iac/H6n^=9GǸ,6؞@qwX%ٹ>O>12,̆E:ش`^?:6?M77djl/Bcu Rux8:x8Z]Y˹>Q]/~sYd2FЍ;PYy0&Y1UF8wf%QY|)O}DD]ȟ<e2fg`+Y9 zS2ݶkʋK+6TUe&MhVMKFAiR vXik l rHߐpx 1m;Qa䢀Xduc B.5Ǟ:^b-?.,V|LT/ٴISgdg4$ >`.Jt"`yt#lE5ZkD/gPC]?JՇPC@Fm\v톫aplb" wf8]ֆfCDZE,z7O{*'%@e=NFj{.I0:MV3d||&8o$CTrRh4O9D nJB>Cf.iV_չxjgV/Ӂ2X(r?2 Pp߷ %i>~ "2` jD}zhZu;/6hݬV2e'-.[k |Qpn* `7U9d8uAȥ|`c "|H5'W3\hmҧeLIi~lrTo:2=)7BVbp"W0?@0/K\P75s9XvD󬍽q12,>+z]x3&ʳ ˖Xr58b9QJsߦD~)<Ġ,E| b8㥏m!-V8`yb4m.9UooXmZI-=YK}koqHZk:6ZO>KA ;2+`y75~ƢJ݅w]~/)%w QʯmtTc!PnC٣pJVrF0ax -K%Ti \Ic.9%_8& It)us뗭*J)<+>2=nn+ )~TEi57!qěRcg A+jM^>RGp?7fsVh:s #nz0MD~iZ/rrM8-{PY}b٬ی\kDŽ>An~ڤǘh9jG\6j×U+azSm5xeWa:>?5w6]!"'+$-9ztψ5?ז efӖ7$~5EJsZ7=41\gr[f|ƅóҤ[v,$/ᜈ5+L $`lv_[#6PdDm3dc~ yu= fG O)2&՚J]m)d҇JHߡT bzˣP,garZȠ(rN"#%ovU$EXRΨqtG*ZA ?MyƸaLIOszX t !`*Mx_E1nOF<&!!l2&b$ V(`?2ܤ!+j4HR"gtM 'vd2.\ T#F BʣZַK -bvg<'O??KSK+zLU+8 :Thl۵ F񙡨=.fcl}_>Y?:Y`[ LZ3RgYY;ÇMQH2\ p'ƣ[ϟ#\+ s & ̯ʪV(,EJ[-2xr\]ʈS69XoID*No.9#$׵'S?âϔeو:7,ͥe͊7o*^5%T4~J|eis>9q |&㈭֞9h8AgxoxD*Xx$?6R XA\FۑksPiyHarӺѳy-Tc3Si4dsAC a? vNylV)<'>̩~s|i| ND.)6|[ 䰸Fye`.8m] +RXtސ#$fyLD'b$m_N=kȲ̱Gɥz]~!G 1"Xt|j4`>0v@TЫHqm7 J9ex?tŚ߄s׿PrkiJͺj+<,!cM?<'\wpxÚt諧VxPHP"́ay^i/8n/9El#TGGbm'.&dqx8[ 3Ө}`> /{beŚeqSش Ó9@ݼ6?-b>qxjirj""IŶg#X)/KεH҇Y4.)7LA#xX ;8(rWgNA84{zsOENswj=1tpW3.Ŗ5>R7SsGlrld24.qXӯHlGGIdLAyt'+_ IG>FqL`4Уv`Rr#;tyE!u{*[:ә§ǁMSH^M$0n>['qv:<yrpI'ԅ{rkg*)jʪI&XǨ1T`rWe/=q:f9PPsjgI}BJFuH8Ի4F֙%%щ: U+ueO[Ԡ왓( -ʝXl*8:fu~ơ3#={{."/͖&iCU?(8bϘ:{>Dvaڅ{`2fjN^Ȟ>_ǥ6 ?)WnAuU'p\.J/4T?K,ǡXyD U+6&[^EN#+v.kD)Pl 'N=扯|AF@}֟ep I*Rl0Otޘ}dzuo0L8QHWoNRbrAcS~vb1ZYDѬ?lOHʡ!YwV[[S5Vc 9)I=OlZynnV7m(ӿ]I~85gLN(>ijlCx|oxL<=k0. · ̔΄ ,:2wР˲JN7 hFj_SDeť +7x_UKz67:ybG(IG&g$] %)(]%kVהӥ6;wjɈg$PT_HlR_~ed[bcҼɣW}".aI G?`_ԁ:P&NkheHj(Tm*m$fBZrYqILl_^ճzW)p+|pz{W..)7aG: u":),V_PJwsPm=cu%f///,כIg5 ?AQ hTSa;#aVɁ`юI-*՛Lɳ 45?P#vqftlRel*sfǒ`ᒾG^裇&4Rl5m$դR*{'JnayF~2/S#,})aC{_Mfu9U-dɑ,|N{DFz]%S+CȽתTR;Ql5I=&Ay-Wk9\/<}.Cyl/-ivP8{Pfִ+9*XhŠg'L6\8B6w5CorG‡PIaΒ#Iz7n6c:R8 T<K3 ~܍ېTj @TWgfSeurTo\Bcc:I=w-m֍+]VKzȾgL:$~QC?&p17>wR3z&`9OZ̡&"&JINyt9HepCxNET1h}gIf"%VXma;JjZEAύ1>)1k%p:x k4*ڕߒ47K } ["ܝy9\{.zNގ-&791[nv&n=znKHB:m.<Ÿ h_YS $.GIR]I ?2#YùX]W i4N_r~qq;FEB]e h֦7xA:;pF$G|9BEu,go'[ZsguD5aܟs1˱aꪥԼEko)}S3NQNa^ƿY"!BpX1>=%^B4J(|#K:Mצz6t!΁*}9vi< )W'(*6h~h0Ph``դo~SX,Y9):p<ɵc92}^Y~/2FKj7TWm%㕖E3?:䉢o^lRtv^!BB#h>p;?6GB[hZިӽ[߬ϥ\-HuɳwB%_V67 eg&+(iv5u-5gVk+7?+(~h&;3> HfэPM%<"n1ʺ5Òme"ZLaRi)_NZRReC}biO<9Zm G;ﮋl+g9#ry[sqt試r[r͌+Kc<8 >eh}h֡ *U ^#RY!n~}ߓӕF44xZ2y@"OhMy~4^sDlHk^ur3#FZ/-l,(,,,/?R\~~[|$#qjbb||n轞>EGCo@obܱ+֎RZ(U ^a(Y{QT;[oK:eǬd0&voYxdvEk҇;%jN&OpUFjQ$&` }ZIeAupM+ǩ8g Du"R U>sXk#+}YL=E# +nD˗OFf !2V;tAKr#m 7hQq8 ӲRqބ{5t+9ava8wo8_h2::#_2,HXvkP`S{y~e:AJ\b&6=9+"kFy$B$knSǩBH`HN/.xKn.\!y[0J*נ̡~'q`W1{2ʚr􃣡V*)9ʚ`d/80h6e-[]V֋FfzZN9D„m2Ψa>Q|XUPobspJ̾UC4Udg-iW~8|qֵ̔ʽ3C[ ΁o[)[/nS߉PK!p?SmFD$k'LT!4kυ%|E109F99M/1͝н?j[0W̢H1b-cRn0;ag340m1}|t $_a =Z[LZ=0M-6%i,maWNLl rN(Z]T\:S %!@Qf?ܑf5E(Ћfiq=^eAk Q_Tsbk@=z!@ ĒD%Ez l(>P#ߺBO@E.\Zə|o2[ ju>{t6UT+̏hsXv-85"(j.#?)`2iR4JlHi˨ruu|>! X&fm?q[uxL{X'Y& V$*AHuبaJvnA $kaq;\ݦN[$'DBwΝ;7?1E&]lEd?9V} :a+Ni5! 7?Dvj\N籯#AeغN@ºDR )W~6+9ѐ;cC=aFz3DuxuM~AAb Voqhn05Aݙ;w| =l%Ч|pj>+W{C3 Jr0֒RwcYulxԆ>=­OR _*}1B{͞59mTN7X6"nc=V_oܩGŶI*U]zр߱"־H~ h(y+ @ =]Ga%JkP`dFAq-AIZ RIU(9/љ+ZZ"S֟캊z~ѣ5, ovڍuN]{d1/v )IڨpC>nE􆭃p]dh'.oшjA ƹ4|:Ȗ8UU7~$h4R=4RGCk17ydj_;w)YvݎF3hhۉۻ'cմ/9yk NJ[ktYnyu!ؖ#jee3۰^!ʭΞ af(PGhżN;[=Ry)eF !ߏ<ΰuH0MC^c8,d KŁLNt;!B%c!c/hʻah{)-$X%ۗ8uʜ Ƀ0I쳧N8gѣgC!!4 gŔwDJp#RwGy`8G4M7W(]upu4saI5O kSPOqPkȌXAD[tA۶LXUZfB>x]pX¸!Oզ<"T[aم$ka1AmECÁ! ;> ;n=Z[Z6n+w|XvX9X+p`KK!شen!8bbBb&/[%/+p'^zi6l({JۺĚE!>DG%z{k!f ϗ`@=h8/ٰrWTBZ&F\=wKeTץf*k_"ѩ !X^!27;f >+N370J)OQf_{߇8uۇ궳[مtiQ7}ibɨ~0]H?w+ 7lO!ѐtrCxg}O9 XPYV)p7sI h$KAiA[ԍ4KEdUGmA4~gxO^8\4Cmwq?q|g_^>t#dܿXiH PZNܓ1i2՜j=YxќӤ#VAﭨ;T0 ]w)s|G8[4 QfaYD H';V0Lim@B`4JT4+MxtdLupn%];l?53 ~sORUHPJאEpǰ-lRQV+}rx,B+0;Q,YNK3r aF=E{m¬Z~È0fY4g-Bun1!c0хjЌL c1Z)1|YlWLШQY/YYs!97 /*w-C7A.!4! ,L ~B?=qd!7Z7hY.$b#(.O]Z'"_1" ; & dVVf̹3qa rH~Ş݊51󋞜>絵k3y^$bCUuhD,E#6t:D8"%B*CD?rc`XwA6HU<âQ;CZfVkcvjBEE'Ja8@'WL3ۜz߅ˇfZtO{B2ϲ CA*9-ވ0.e!(3B#uP%v݂_ϒ׊&GDEMKd@aUMJ~u.Hۖ>lʽ붾^udpX͚r%4}z}q2֐MGr!x3Or B4/Y巚>vEscu_Rɳi %]%ؗоyկT /?%ۊvN}Id|qOp(}Ah(]VU YF, C}mʥ `J\v "&=cɅ07tڴ1 ȉF~/ǝ_8r9@][8" l)uLTiΝ9ST}w?mqb8סdEq[֮YfMҵUK߉+ה{˖ٰ.Bm7 MM ٕ8q[=B۹>sS?G[/r4hSޗG^jflʨ(>?[GQZWUK:`Mu͙=G .9eҮeQ>k֮q-v؎̈늫*q#n_J"H< tp<2h4)L94tz,榶X kƆ>Mpv7C1ӦE``(He{Fħ;\cĸ1Om:܄M<>Mt,^{0b+x&yнL>,>>yBƔ)S&8rmbc5X.ͣCqb+ _ rf4 PFӰ, #޷[ÞhAmÂ[O+YSOFŮVU.?/n9mY]Si54.hcַhW7ozYU9>~I8Q#|hYVnO&ݒi6B>TW* FHrEhI7~V4NaiV -]_|rD0}dvY"tafZZ( %5Ur [_/޴Е9>>d+/8P q<$ G3")1WJ3/UFN -b2(,1KERE&EX%]U-(\[]VcD6f?4_ǏEɏ)s#bD&44l\zqڥ\Kĸ'`{+DkmhἍ}t"BIKLN#`#Q88'/9~R% ;Iho"Ht4hC((QA&.#,TVzi]sdkc}3RG\z-Uk iÒ;ji x%!EDLjp$7#5.ƍ2UwVn]ﯘpKZ.Q=E01tsSQ 2Q]E` YHK˫+ʊ%K~|y񲲲MUk滬');Z8@!#_<P'F%.;t7vba &f5XC@9*lph3!C.Z~UOHMLq#q3jP rp?#eػ|٦#L,*lGJSrM52_=OL7fn ] h 2 ç5ucQ%(P\lǒ0eoDq#GFOO6lXRRbFF'.[VYU^Xr QëlNʻPWGF*&oVHsU %@Mrv3{>Q[E5k1Q| к.,`'` &ְާ{4DqJ÷n3#r%ZUJWrKF8yH3^vl0-pHmAW񐸈+{]-9x:;$+M(ִ +&qcdu ZAM#`'OHg}[xuq *|h;l}w0+LJ>8ppR4 f[}Wpd\C/ai>8Wd) Kkp,e#>h:):m(aqm@N >ؾP=LZL2cC gτ=2"P =Gl>^Nq ,qDoSZ(yʝo9e%Z.>(7ڨ6/JT^` :: ܞ-53``^|i>| Z<;," dzzBT k&: IRZd <_M{f԰ΒkHзH{ɿojukVD0_U*, y1l7X>o)2i:}FppטӧO_v+,*xv#,4k8av+bSҰ 1Q=˪{m ~P}&j@Ci6C8[q׃ȩ3Zn&ǠbAv C_b)) MPmѠ\B@m F,RDq>EQA28!HӸLz`ƍ\560zF{=t2ޗEZW(38=-h1> 6+d[̧1PGBV+g(m4*L7MDf)e>;5ycA:|Ps_?΂i{nh;."n$[Oر>ٌ)J1K\3𧀀lN1?ocD-^'7nL#?_'f(9q.^%׌nE \C^r 0߄14d.6E Y7pz6~sہ6pF|DT>bOX ]׾+ȶq#a)>U3-R¥&(;$E4+Yڌ.$L]r\l1@-\ZUDՒn37> Dc1.ϒ8tt=GFdH}]pNlu0M}pt iF8UiA0HKKt]$ɡ !aVl L-) ﲍD(i9wGor4?ҥ 0R0nB0J| hӹ oKQfŨt/{p;Oy8U$N)ĜQ2Ҵ6KG5M@t]&$5dL03-6:nXη)>Ԇ_}%7&/,qDfFCV,~-\^@%$VYe_PB4oQ.'yZhMB6z&PݣOÊvzm3{Ⱦ"PH;/3"ۆ a[)6FV/| 7;d8Eȕ VS>\$fl ͖siQ*`ޝB )f]Bz"ݮdL-Q l2^aeаLlNvƓH Mkv1C-,n 10)A˜%MN~-[ưq\2~J !T @WN+iIobJ`4|\)P)rٸhAUj#5=T $DvJFo-OkDu롥;%(yNijb(3),aE1dž{Pk?nX5Y/h9 Gntk=ȉ|vᱯ,A<%ٚ@v|۟8Ư3l(.5c(^x5g_3"-$ qS;؟J$b oWAWϷYWRVN²K?}_k;$"> r,0`/~~t[N_QY;n\e|;ޠ}]NJuhps|oq 9h=u, Cɠx%" ;-wKH"+?۽h{·ԜD?b_EdWj8`itƷy3/n5]lࡎ5޸ު-x 8ufB3Z' i׷Tk`sps~}EM5~߾-;BG wrj=τ">/7gʼnrˋف9g-*36Fj񙌈aIq˹5{m[y9?= sn+ф|현W?6a&(<=? 3Ϲ`W>(sk9qݼv#{c"R#sw p;Aw p;Aw p;Aw p;Aw AHJIENDB`@=Ůf+AWlm_( 0"xY lE~׻ށk m!P-eo?)(% VC"& 6hÜ~Ɵ- aQ29n?Z\4ty)߼DѧC|kKM)NMj{&簇y;"N&~n#{;ʍLw ӽ.g yxrfz|kG|~S0_| u3~J-qOVBPCހzics 8v%ňw7_mnCVPlL8d!Q ݿ(ϼ=0Zr,9feNeؼ3خd(ͺaj Vvf3\~~& al}uxKR‹K[OR." /S;ߕ GI"ل|'uGF\|ͳd]?]l}hXdRy^ٟ nZOhu}roy#_^񎞳,6Xa9: yݍb^S,Vnd{g? ka<듟DQ"xh} =_/%i](~s@Bu6Ο6Yې6?g2ʉLVUUs35`crOzn41ۓŊ1ddV~U|䧰KG)6皌D"TI BrKZwA^^>pk;.\CTףHLf١w2..ȋq-G 9m(0^Lj7`׊is՞wMP*xiEiCkDZ "1#}Dj Dk(,RZA @mgޛww\%&]1s7'ȵV'@`48`]PܶQ3}|O6##pjΕJp 34BX~f VtwVM!x a C~gq@i|P}k+|iP SP'±<iw0p9r:Ϳg8Y_5P)x4fDⵒJʕT=?oB7!֥{ώC]cn>zڨ FWv K!]spw"̱ͭExs2]gVl$vyCWJY@eAg(_L DNAm?fDysz/Qn_r\WYj8@,*hԼr]Y̽Px/{sU~ZMfhakiU+"#U[^3,}r8(&Ǎ/S_XGuܨP\'69!Lh8jXRĒ^.8WX:E|xz1OÞ;RF2U5Ԏ_.w'2}f5:A3. ϼД=n_63-[@zހ hG~rO`_k{kx4G.C} h}G uK{=; 0;}z^`ON^dT lsv_`%/ƶFm!N݄!&9Zr|](` W*#Z`>R`]!>bEG Q|ᣦD>b1b8A|ts< OS8zGoS2xՒPB .?ϏGٽU1Ye <܆]SrU&w5QmUj+T[݇jO5_H6ƚj*DT[oarVk+ujҮz"ÛT:iÛrR>@ "b P]Jq CE֋ s3|)7o'? l@=`.Zng\/s`IIv w ]xSJA}h Q:QLjVUn{Nh;̡Z;: rI-\Rs B*TiUXA<`w^y o<,w>ganwjԃۮy ~oק+@y<6eބoec[A9pP@=7԰񂼌Pb_)d ~;d FGzxڵV}hU]#93͙i AJj$MKIDzÐjp- r ~J R %( *,_DÈuf`*yo[`xx) dC@>B$`G]C搹 KG9A)SbgKULDMDn3֑'2QCѐ1KKWn!Z0 + f3&\n#{o(mcȦG*!cH>U6P =p䘠-5_FP:Ա}}_汌+s\?/>ʍGq ?&l̋qysZ57dZTN^KVw@.?$vc8G$S|6Sx{}؉. l>}O_dϧ/_"}GeMQUU|uݐXC& kA?lV{k)oX|ޑTc Ο/kV2C4B%uJȔݡZSJ2h %%1)9Fƣ)تl|ԻJZZ^4ZTdp{뾺cLXu(!졺y8{^V^mh.ՠ iEG}&C™5Ӆ nſ2jO'χCrl<.mcu:$U&֖ߎ s돭זz#{R~x{)B,|z,esFYULa;@d=1]ΎAAkP.z(R|'W(% /I |f~>Fw.foc&HN <}h;[-Ǣb6wS[qr#DE3&Y(푥}PGy{ 0(D#y{{ﯙJsJ<>[4͓oG;pC澈Y}䏿_GV-4og rRyNKd@=D2C\Pa?` C  , xڵV]lTUݿR(tVv[R,DZ[HjUHjbldCm@MkL}ĤO6&%nHLL4TCE Fi;gٛΞ3sߙs 2Z zzx1 ]FHg'P 8%oh٠df F u)[FB>gyȺ D7kNo9nrmݧ;VmTiI߻{(? 75zgHE>]g#D_S^LsUq\3/JDf䩝?[~yOTk q3()п}d%kGtPGxqjktA/Tij)GR #xOa/QG'<W zo`nz5>{ SfR/܍Vu:VD6z:Bٟ+ pwqw狗)d$/Ez%٢!pkY|:oǀ~'Hi3}XK f~ C( @=M7qo b`dd4 B /xYklTUsﶻ,F+l-wPSRE1jLDBVi?0`&k4GM0C7VQ3ٞ.t)E=ܙ{s3gf})H@ 82VQ{uy?K4|Q,etqhT28u֤1ϼd=SNG1֣m_xܩik²zb8=)1y# C{y s8vҜG';Gn^Z]J}-؟S̟apQah=z!})Ӽ۱?qeS\V.)rCSQzm@̆mVHKѐ-:=X(32pٺ U P)1s 'K"\T03N8[qEo̕V_?>^ggg2~dSy;@zVs骤ĺd<ku@( zO DPt,ޖ?x[_hOoǑS5c;S3?/%m48q7jo MdO;X;x#ϷF7+%`>7ݦ)mxr>WhGPʜCRjḫ?VZZjgY{8XHYu֙R*2,cX,^`pg*XGVs~, mv]ѐu7|wZX[;cdS83[oW ½g- kl^͑6fi8hC'3;LvwHjwDz{yLH-^gfL=j9H_ś+҂Y? f_IeYV}];h1t]$cwy-ŅE#~i9AO!^z5[sT3wރYGUeAeAudR9r/pI@b@Sދ؈똟ҙ*Q~J ހbS5ɜDu2P()ЋOAnw٣%Re (IJ:qnzgQBzZt)/)7dJso%aa;qvB[#ӖS#eipuWuTFmcyXH:aaTEneXLhiY.gE}D7`|31m@\<¯g# ڧ 1s[ۆT&;޶,z/8R- M<܁6H+7}nq, ܩˏΙQ[w׭ ]X>4̋7EZ#?8=2B1^yOT+  !=荧 =͏a}?wvϻͰwcYlp7)݂Δurbq]q;xs7f[Oq"WqItiMlD WnH"Džy%³%s^x'O?IgFxZ'wgvxJ੃oݖ*_8~m+:dGsBRE-eEQC !(num_=IiCvrt `9"@=et~k-("FI$ EJ xڍS/CQ>G)hJUahBͻD HGC۳X, bhXLd4ZN߹M'rϽ{w߱ (!`6>FmY(sz,N{ny ~%[\Épnv@ߛP.%$u"Ja?A첯1-I ҏmy ,GsQ~Tw*YU=u$ZN\rW񏁒Kr^p-h6hOKN]״"NMG>f[1ꭘyy;o~Qs;+_/Uv]%jy>a_ ,Zc>t4va 4]#_c R(,v&HɆ;-ñsfv_(|F N|"T^'n/\(A n4ܘ ِ\9*Qʵ\c~F)t~?s-}`7_)m. sתo>E928ސCHb 8`/U)H%P9e$N`? ,N^`W?uqߺ큿_'uhxݹ{p׿Yq#%mha·|C<~~G|sNOܥ1|hzXTuvw8i<Sx@ո31{|B'1r{},L\H`g)rӏpLi1gr yMg柟;;.jߎIjW0EڷwE7>K,͌41OeLZƬKdwQ[ؖ{V$Y{VG+T raOF <&.TJ ?cެ;'MXtzOm 7iJ۲r˧7&UOw{ !mfi~?^ a\fg97 1 @=ڂj{Д(0  1RF NxڵV]lEb`c'!&M$T.jzq † ""@A&""0R̟h#TD(H "H!xlB /-ЪB<8ff@㙝ٝvn'm+DAxl;pWk] PjH:TRĂc޸D]Dnb$P[vpI"qˇ&wP{ȇ,sfVlQJDٙ;osʿrhkDÍ&Cv/\ Z3ܜ ɐXKhЅFcKKjOskYuk)~Yr~A;Ξ|NOCVb=zk=z]::u0=Ìl:a Ic6<hhƹ]&/n;I,>ǧ&qM%s73F&~Ι}u4䬟bđK'EKe3W^5OH×sҵor9:3yԅb2?OwQ;-1N$ Y{6KV9{ܜ jq4?s]Uc5&{jl]BBEkZ#NlMBv?~r,n+I> 77XKw({Sjxj=72,@=uZKY4q@HOxY}lTU?7Nֶ,b-e-K7oB.`(q!h7K݊fDH_ FQw.ifY%~D:޽3w+ ћ9{9smX+;U?y89& phC}*,eXgcEqbs*6Ů4k [nh4 !CdiS}qdWa%K:xvh9q{m PFqc3oۤpvdQ";Ygg%ɜeKB'-u$H)O~ʃ4>z !ʓmI'R~қy_qTFb#T?fn^wb4֚kQz~h[s? m8/muG{5@X̲G<Η0p>u>]z7}%"ޗE~q]ƖEv4i5nq[Ffc̵}/R~lE9=uB<8]9p/;PXC(7jܕݓzLw7;[&%|>{g4~_Ḳyw뢊/®~cGEYObѢzi=yk-ky{m|,qlb[+yތ`T`|{axtvZb-ZDiтj6'U](>t]gnHIv%;UR]w)|8 U{f47`߫^QɊ(%HmJ%ϭ}3LK3gx9{+~5 +3ͥ}{,lWi\TOrnssq.ؒa+S,:uKvr2TO"ʉ;ٕz7Sszyo|<`O>uE3aLSx*]⩂'Ofr"S\2 J=](  l 3 xY lU>wf^{[-K[ >ҲM)FS, ŠƮI;릺TL_/QOC0ֈ 7.dW]kF7t'YҚU@ L|@p Xgڔ+ǽgHW5 Kc'![5׽+AuNufJ-H(?urgpht/K|zO mFޟmb(Vo+8EFHe[q<9o|Wj<}Y_g|z@+qJyo(vlњHk EbǐqϠ!]ɢ5*\.:S`& ]pO|(G%/k+8S ~l~+ o0q[w=OG+ cFy cZy#gϺ*n< !\\nn(4 /AT/_k+Z&q^|8:!;OQy oR8 w_1?qrj޳i_{mLUzLѰ@|˾95㍅0uR,~ 'n7Y?&~}gՈFi/>whHOqS]GɨCI[%2Yֺsۢ6jK*p& 0s o6f 9(hDlYm2Γ0s9@j$=}%.66-; |">ʃԦ@VwJhZh,m+ٝuyv=_};`N;Ug(ջzvN +?ImUe'lXwܢ IJ.WXb4io sއ ;f;~)&MHx2ޘ49$lwmxNΫV@[^newHm׾LuJ^㽘0<ĺ/28 n0ҋl$ݪQ Ug3֪K_ODΤ6h %clY"poc+ 6*+毯\dA{8YVϐe-E0BqdpV(_)aQ]̱5@[d4쪢Tɶh]W-S={ڢ2c;yKKϭ骊E[E  LdIUBpDS*WMdž |VȸyTչ2SOscdqgJΏ|ĕ85-aC/@g.zo2پ/}3VmVo7UvWٻE 7jEdYLEtעx.t췎{/Ob?BdVЁ﯅]d{`!:S3* SWScD  p( xcdd``gd``ca ff``L\@,&RFf Kdի 4Hbb8#؆L`] {*+KRsPPMC$~&@vXL09&fYy4;tHXeH` dq3{\(5? ߰0'%7 HqMIhd7VgF3j$nJ2BTf%l0뛨G\!BM 벅 &kȘMLѵʲR4&s7o^!ƛDHǤ>٩ut>)OgZT,)1\K5ݓGjv][ֱmL2քe5'kÎ;|50)ȝܟ5P#ov܌mڇ-co]-H٩{{y"7_ py3'8ot(O?A= ^.@;8ݏA׶h>^>}4RtfIyrHS~1A$R+D˥.]Z-zi[ujJ\!º3+[ P(֔L`֑X8g+o\xǘ/XfՕzL]tS1ا#KQD]v 3^߯Sh+b5j#%ꓫ9MkqKXoNnw^#\餤{d-Dz/T?t"q9ՏZPz{)ՏIT?S NƅC|%S`r=h׃v=~@c4Fۗ.'q)j:dIyIm̭z]Jg{ʌirJByu^E0'zÙd'P(lFe,aH2n UOMm.KXƦ:j75dhS\hf-(e&$3v?,7Qx h[N @ O1; ٓ ks65^kj3Z8slj,ɩk'\p~mruS8ܿ7;uZpE p6m?r)Z"LV!qE2xjJ-dwM̝Ø;{>t3܆DV !^YjSz*5ĪD$)toHI~z%? K^>4-lBpgJvC,/Eyf|fA={2ljw6: !*,ځџ^E15>~';kka$>X İ' xF%jϔHB“'F͛'MQiIfd2-!|Oe eb"YDh\T"QA`FDʠH]ww}Ѕy{޽yg^(~?Y0\ @mC8 vwږ #0b氅\p,@# a*KP"иo W  N GCMfaWl9c(4wW@;NO1(mh8Ĉ`O.3GFǤ >UeZn!p;4CqCNgғ暸B(יǚ5wjG)[h 5 Ϸj"MKa3}sI2Ԛ f c cy8n8 ͟]|\\7qє6*R*:Ɠnz1!i#B'ACЋPʔrelȕl-FjöKٻ!OByh5 $9ȃ[GPdc EMEjZ("e8`+Z]7Py6628jxÙe%OfLzM mmNl1ھ*F VPZ"?F/Wl;~cG:aB =.9_Uj[M9_cLzٺR Sz)| ߄7GE yCkO{]kLU{J:Ԁ>7@wG7*'=!S7rp5;+s[~DYI 390@=7^Յ УP  v KxX}lE;rm|kAreoi Z )Z K&("` рQ"6&|*`4HiECvnnq|{o,H$[6&|2> ;,beNƔ_ Dtm!*1HiHn4Q E9IJ ~KΗ4}" w1}Õ9up٭Ha]r-09]Ed"2BNNmBO٣krPG&9~(*i>I k^qBif#<b;%lHV B,sX =xH6\ΫH RĐDz r) EmlT~)+R~aC `:>KPH90۔fc V#|a 8ZX3f>;gJ L?j`u5#q\=\^VXV"_vnJqʱ 8;zCz{suEĺ9URo5OzmZ'f:6ٯ促 [oA^kbxwѢއ:8^"%-5S0;Szpόa~O(Jgȥa:xOCPV p&OA(2Cs0N0$3<"&X2 qѵg~Uxo(A0}zjuqtOaLb)IIRlXzj`T(?HLM wZ0ޱ$hk [R{$6M"|NJ ^nn;mMp~9{ǰҤ̫uӮ.VjG,!'FX\Q| |!wfv{/!Vh~pp䆗,gX$[:x Ic=F=aS[bkU+5EHl?eEv 1+֡;ⴵXOfc::I'mJ#[6bcD ݡP::H?^]rlu+};|b j#kȣZGICRXj6-IP+ T!/[尟I߷!uTuTPH'#N d+.6UT#tߦ,~ ;QĊ0"ω] lJtL~13Fx3< G<0<7 SݏxbxF%܌'$li"G㚩exvqˆ6spxsObx 7qē +ҳ&&t> gf1}H~Vҥz% =?׽`|{e"Ʒ+.@=ӠKqȏVK)$?3 ZxڝTMhQ6MҒR+ki5H-<!J *5{ A$D^EOSiy;iK+~v͛7i~ڶ]CO@uD?v$Avgdgh˫zVrvB52n!9"OC#dĶ);rh%w~ԋF`Un5uSqȀX',̭7͐ujv"f Eo?j2$:N8v?ZN%%11^I>Hqd/:jĮ5($ş6$.(*Tr1P/{D].2m"ڹs)h QêooT}خ}Ζ]Č޹s{mǻN󨡭#_~Mo-8];oTa139?P:s9 }?L6۾NXC\a*qv! r#G 5HLǿFhPǃ=39/0L{#y8ekzeI%-š^r{ʾ 63qӕ{)K|!mX^&vxÓK\SRqKFݽ>uL+n..1|RϠFoڦfF\ne>(1sc{cb̈́Y 8@=" Rk(kҥcb6f b -D x[}PT?e?X>6iU+:+AK@FjMDM1hK3ƏQjjM5ďI`bRN&6~hjNfܞ}X%`y{;w˻,J#[\kLs / x`$Y"hKa(!!Lb˨QقJw.+Y h*@Z' ,$H6MeD'4`!oGU~#U}1zstSl [Ixvc]#ՍvǚjGwŨh:\lbcMjD}-XqLJZ}LSAvL~,C <Gc^FyiW>t/c"ؿ4W  ~rC 'Q dpX| <ѭ:n˗Ss%W=떠i #t2%iUO. V}'\~#%A0u35&U嫕_8!:1-o>%[Q` L@g#D-7bG{$>=@}Ypc~G&p{(][v~8V6KgyȢEvҳVߚjt[%)qJqJ$Nqr!/ 7+qrJ$NqR'/b'IRqrSm]^{:^{ƽs;'''׾ q[O Fp}}O'O~ROty  ='%O>'Wu~oA c3[{7YLtxӤr۲9ON=﷠φ_uFqeql2O|/|OQ(x.v3?Ń ҕ).̛fwe4+]7W? P޴ PUn<+bi\"`.iuX~šunMvv1 KѥEU'&BX ]qVKxl`'Ux_Vg^V ٶe}'sSviԀsѫ9@ݚ0:S1:0ZڼMe5)sy}nS_Zynmke\*Lc m>`8uN6qGw X+-W+ąXM\G"ӯӯ3S7I7Fz5OȱuW%sF??< ?'[?uJnkL0dCW`a AO#b,X?C^ႀYQ+!_(Mc "/Τ`C97$Cʊ\샦fQʤ'ƙ'`N+ ?R\\!MAW)GyQ%khؖr1>#|F;O#<<<&dF|gI<%Qij9d'$qL8&FıY\#h 5YRMLF<M7~CGmA!,Nݻ B쇉elX63k_Grsfic޴sl=lј3I::7un:l=@FkN5գMX6+X׋ ~ yJpWKMS0~ExI7'~jkO4e xz_^bC$u/A1AK\IwL^b^y;j s(W >*C:Zᬐ-^e" `@vwmzms絶!ϗ((g&D;x&D;jXg,!vR+Y,$VZ PgFv_8ʇ&D{Nx6=:9d'$E+!,FE%zy;[ۃ| mer~4>6Ҿ,gl_GVęT,V1۲m4 N߭Ys2? @LN?!ń/gzďw_`3+R$ 9V,=\FsR:m/_y3s@= j Hנ7p($ T y* xkPT;.e (htCZgwwG 2 imG4 N/Bu ԐVja$3u*~$3@F1u:1hDC=g9\Xp w{qe% oY^Kر`  1exi;f2Ü]L -`9#;P:Ek)zW񵙚 ,޷!< iܩ)AZq3i‰6t2/8 cȺFaexiӏGx bf]'sLm-Z>k?Ѩݩ#=i!}p8T'5R;50_kl=RgW!pSsگl}㶮wߟmמ;#_ܒB})ϵkp}­"my3<7p'+K<ۑA'%X|\8O|Aնh:^-Pm8AT')jF*wa j!6n |#EǼOlLw:A_=gi P 2 fz}6 &$cd\ ̔n]KF;=?c?"{_Spg-.ED<7ɓ+AZ?>_w80$~B=VYʮz(ެC##)#x3<ŕVeH:+B |>EC8qV WA-g=G(z:ևO!=(w. c> #rcFpLA}=IdI'bOgI{D[.p(&lV#M;2&P%s !)Th}%f7C=0w8|޶dlKm}+6Vt'C1d%{>o 8wr|%Asǹ/ 鯆$}8sG-2U'ZE .,w\"Z73\Yz'ԫ}ң,W v*7(B_G#Ǫ[-M #w2xx ?w`4if=VSpH$9L$y_d'FqXKOv3F]؝ c H=:1 SB'%Ʒx"#W3r(cVg+Ob]1M#ua5])G a˙S2 y>h-: E^\δr_/.mذ<ۏ1~Jݗs`<=E| >!H_`Ù=ytNt :&0 QvOn@|.(LK LA;J,%T ר>t?zs=@oX~= ҝ7j/UU-lXga `-SR-#:qZG@  ^0/ M2G#MYy@ܿϚu^Y)$kQc㔢ͨPa-KVS?;c&ekG5ms؛p%]Qԫbqߣ 0-F$z-Omf٬ {ι"mTˀƷ$JzȢ%1 ߀N[D#kAr   | Ƶ#tÕZlĘ&rn@Y:HKg5Q5dXQCODkЗZy>Ao-=}%wUS{<{|k'k|Ef qY" Zxs|6q+ . ĞGguW>oęn/>oc9%JYv@5MjT'AOjR {%`)ȗ'fkf™fJX[ 4'FJ+@]ĵ %zJS%[ëU:? ^gS}m|Gys2] gc!;UERq{~|^ش^5\Vw|6 #a)1/G ^ʵSZ*4t%lI[ir*c84UIn\*y#ۗ/O#v[\cVrc/ݙŗr]lOU֒kUe1V_Rl u=^;>,=ˍ{;?9p'ܮqO.Ns󮢫fg$0Uzzlry-.sk|ިlH9)NP"y;i#Q:B8O;fLҷcwr>s|܍;]?scm6>M4S|̑\8G.ȅmQ׃@=[@mkE 95h;sxڽV]HQ>wM4McGqS~0Rli/$$= H TPOK !ӹ3ge ߞs=ssfvEH}!`?~Í{6ag"6Pf:r7x ֆ ȶKMwqdm\^ 9@.J;(rsȸrqAEi<ԫ-O/C\F{!$ɯ$.| k]E?/Pf*bq_0r9fM.Z;g)s%T%Kv8< O~D6" 5u QMմ^jˠRb=mBy:EX`5@PFmLjb%/I1iŤ%_g{2S YT,y*¾xTعPP( *.f}E-p`*Xݵ-[t%^WR&GFֈ7Qw|t3kG1IGq|ẋՙ2; uV=Ac,sIw(G@= ($\q!V=5]Z x\}pTWo~}M  %nM$2HKS >+!Ȏ} Bhu:Xfʈ8VVZJ)`G9ݷl2;ܛwW 4-4z!'|$Qyg;Pq4,%OqLYZ-ЌŌZmVaNކ{V#?d} }O\puP(Eю&Pn:A cwwwf={,?x [l}~l[ ̖ݜvꎘ͟ ~͟G-BGH-)J5W%K~qnaπyd(LJ:DIWgRL4pV\r %]͢*gX݅jIWϻ USՃ`Kג߯VҼH_E:+qςokZmxM4K!^`4K~j׵Nub!_Ͱ]8VRUgB= !%ߞGL)@%-e1IW_BXRX*JX,)9? |S .~rZ1HIWs)ՆsQ2bF/IjIW1nʿtZj9ۉCX7׃ρ߹iq]/PJCe#~~J:!p_\y?PQ4J4eoϒ?uJe>$]º)l[{tӑtcfR%]]I>oϫ\`즤)Ys  .~ \}2b.bԿ f,?׸ )j҄~O,K?ՔPӡ>rK(j6%H,~7t[\3H1uS~lՒIWtCY:orT n7)"e^ K}Xŏ;}k%]uSw n35Ӓ8(DU! n,) IW1n?q:i^$CIW(-\l`>{k=3U|W|[=w(Ix>0<_kkI"s} R$o|9X/XO|Z8yX=Ea]HzˑDbat.P Tcޖr-&MuO <u#u"/<#:DD^66ԗv~ ?? 0Vq*u1pzd#{g ɍX;1f?x'x5&rx[o~ȶ jux{Q/:p'c9{Ťhm84x7f5Xs kkl` ڜ~ڜ6'-X+bgW֞$l[ڀپG1vЕ#Gc5 fEZkab`+2<$G.I呃jvf!CV׏϶mu <gS gۏ`϶dÿRax{(m` SCk GtNPk` z^*ÿ;z3h<~jƘL [{r+سkN]?0Kԏ{)K^ʯ22S ޯ7" 5 cͩ܀^7V M֔jsj97x%i%x^?4`-َk0mDrhPrqocX ,1,:no$ԵmXa 8,koA}7,}o~c@)'.umأz=&hk/kE}!ٸ?֕c?:X`;ߢ͖{8skw-k^E'7V?.&:[w.0F9cBlc_YN(6fՖ9qv&W 58"FI=U !bd /~y%Y1HvpQr;g"}16PcUoAoAlF ŋ9Nɞ7>ϗda 獖+9v7;f{}-|\sd1|}։儌 #4*W2k}=L2y@=P<䉑Ug7ߠ]J IxXoL[U?:0>cX!(A32#03af#a>$&ȗDm&$?!$l3{^{iZR7X9;~ hGH7TyW+S%@: 09̷t`#J5 .W+0 m\oVxb/\bf7X˯6 R@j7?d}kQWZtbMo#6G@PЅ 0 N9w< v@EN##R|fhq'm/0 ^T+٦Q6Pz ?,vaa0Zʢe_) ;x|75(w1s֡1:#Rv|5>^|Q:0XlzI pr:7<zbv%.=1VNDsӉYtXZo1xrvoLx5Ҝȇ ϲ_yGU!O!3RR`r~ıq|q˂!5-Gk-d rye<݆ ]p_2_P(%v#sq4#/|YJ\JTS6 %vA85Fl?s J njqGTkvuj*|j>幭NƝjD;X}苵O-9n<kۏ=WfhfG@2nfj`R`l5Z]ΨYwm|#BFsӮ#|o4Gs A}8/(|Vx 8Gks/_͹Я\tLVjV i;NBuiѬjKqtGec^Oƾg>4R{Iɲ&Ɠ⺸1Ӝ}j|/k-7fK˄G ˂GMx1q0w/~,x#k̪˄GQjC`]96)lj,~W{6vG%n75׃ַ?<B@=1N$-ywUD|%120N}aXNdkM> ʧ=laEyV#g^;pU!6s4cŪaGFӪufyy|KtݭB/׊M#s}i9iZ(z<&m\xXq^{^ds'5T3S͎X@T:jawZo3a3xlK|ڈa,B;}q|YC@=hkW^^ WN~$ Jy ݇xڽVYhAͮDzƸ79AEWHbϠЈaEj,Пr}:o#[@nz`{=} _b[O良M4s.| qNnxoeԸd?ahؒV:}g ]y`1ofeq67]]K,Fl-ȥ^WQ<{{0#]G??⣄GI|3``> >*r|@GOGΣrAo9{U&ݫ|Zj@yAlCod;Z;yHyI/{}wiBݣg{[}L\z (DDNfX{ nBbB$,^qA: 8^%K0^*b$UC`( JAR:hDL_d : L6&&w;9YEQ ArQ `!܅ӋFm#,O,gj|:t FApCF*Py ē!Ɂ2?!#fi*ꞻSvŶiBcmi&U$ʺ[;8TC. qk-0ӯy N@7= MrlSr~ ]ZIkwBOCM1ō|x /s<y?)uO ǃL 1O;3<ùg}ڽ m\ӷ䚿HqxMQa9?X=YU30Ճ'DϹe<[gUD/aߪ&T!ǝ546 dи}hY#Ks&+T; j>MayP䷣M{fx!Y K \ț y!O>#mCX}3^>xLe,J<6F#k/c|z,k/~g21*u eZ̈́]k;M:"U15Lm 湩V+bzoI 4浫ilN# ~s4bȧ:7flkuRjHu-ƛB!ݪn~]>!AJ/,#B͗W!TGG3|8h}޽yT]Srp9ᨤḙkɎ/*ZQ{/Z9 !Ort Gy#u #ue|LBJJ`~fӿ1c['d{Ok+y=mëWsl1٢kfU/p_cb,sܽ{DW Z0={_xX !EaߢoX9/aX sbؗ ?!XwD~Տ;ckYr1beCrTG:0ׄbz:u{5F\}}_ح~akA{K>pmJ,mI|oNMW 7z#Vb[ XU,60alpgo͂cn)^dS?ܸv#q</uD) 52\OtvM}zpq3[ޝtf/1lmaΩi_*= c[L]!ıs19 EM3aL!Ԇ8Yº拄 q^T*x62GX{<4 Mb9?(e Ĺ|o'KUѺ tKt'؁ Bc6d7m((}2|>^^_y]㝇zucn٬C1b! Ѯ(m1G3rc1Fb,sCEȏ{`~9ś}^{q*,šxš^xq*HUǮqlVc`mJq&^5_8֓jUr_c!}Fgz߄;X;$H{& [=H{\g3!-GdGtiv+ڟ2Gcuʄ~?^Dxo+[!i wd6^UIHFv@th?&mu$oMs$mJa˝0ӐuƂeUW+zuMcC~mXC$o̎I) c g32 s`-T?3[g>CRL'b5Q?2~lBj.Ǧ';RGoCƏM #b?G<cSWA@Wq?6զ 8b?GdL?6u$mNsh='ii0 1Lt5~`.Ǧeus:b?G̉2;؁?"2~l:`d#E{? ?6=5 g vO=F/h62PKzCő*2Uq5ו}U\uej+s_Ws]W\W*nSi65 Ǡ=Ra.U|šx6šɄR^eyq*Tš8t?š=Y/]#R-`=0ƑWد5fYYц=ѳ̞NK\םyY/\Lox9%pcex']޽R^`a }(.I \/rpR^`a.+R^`a>oR^`axWG]F)/0MbX'4^{B ǻ#CWb +}!7)WzV}}!SxkXoX4dnz봑R눾,U?j<1JېX?@wMK,+ cXhWؒ(X4nOjzp c \Wm}wkZZܻ'q瓾6krr`kpvx[vT f^ }oqjsL Θr?"*vlOSW}r%'A;-~,;p*V߾a/6qG|}˸}!}YxEUx7ߗK uFi$JRH1{ܹO3oH*ܷw\ZwV;cDΑ@Ue}rLX>?F/n)Y/Del'R,,_*'9c}~9bWb_]me8cJY^Nr]"b-o+uzSp.qhc:θ @ybu L[<0=go [J?4. .oNq,& _kcI6$Ws6MYR}y1\ΛYW%b}ѕ1Fr/[$@=aXCVbq` HhxY lTU>7'm?P~j\h7ڙ7bukI5U@A67dm1Tc%" h4ƿ&]w.9;sx4xy{y`% _UOft`]hSv;C tQe\>=}AHQIxNi2b>*:ɱ> { t8aaǚ/jXpAcI%8|&WGדn /mEfƑUv c,)1Wn0nqH}*Zq쓣F !%F=X/:(mBL]o94W1o~m9~euP6 R;LAH!!pZMs->evY5v7"KLvpy{+O2N1ΐ֌z Âs g9? b-OOAp[j[D<qxnjy:[@RD|{v=Q&Y>P^U0E90Y^+퍹Xgkg}SiK3`zRSNEPvGyIPq:a~ S,cJq)XOqڧ*LqwC4QD)NS=8Me.NQ;ю;~qW@=p̔j)(nL;ugE_㍌2n6;Zw\Ic_[~2iZ=m=|3qƒNZa-܈h?&zIᮝ|*Ewj!G Nd[LOUv}|09LQ*7ֶ.SYuMZVƏMJ/n˭#)C z;$qNeɲuG{bPxܴG<Γ0s>X|7Hsx]Goghڼh$ulo;f? MʥE9e?1a@qKt!"5`N.]t9tx҈g%ixFW!j0qUk'qx2ҶdTiHG|T]w>w5~y#qbZ Ai3TdDbRe乵o$si)#5gyŜݧFJ:LsiHn57st17UnW!%473G87>?k1[St͊!߯Ƽ.08_RdF#H.ʤ3{DzjB!e<"in.<.IxLu'MCM;.IxT3-MxVr~Ρtw3Ci|o~~U{GQfwx$L*򽍏8uF:|M̗'b F>'ERӹ@>$v%$`o; poc _ 7t2dQ@=uE_'8??= A0U xڽKQǿ-RfhJIE?1+2,|D~h[A0>AJE=H/KA,CiCII9s϶4kK{x=~ܻ{("d~Dڷ `ohMt[]>޸aNMb2MWQl3y b{^rKt6'4y23Ձ,d&|dhp烏w.Qc-?/:ܚzBFCMՑ\IWIPA+)^N:S!ш~!>8!RukpL)TJ_y)tqZKʗT~#őx0}k%6]bWMS9RS֭)Bo hEYM#llcM s7\U>4~t@'4mIJO{u?\4^dvĹw{?hmNo8ťUviayQ3_XI59ٛd'exT}dLhHZ$82-b=fdOe̶ض;EVѱկg̗sjr/ϭ>UQ\+vፑGɣhs#(E<6&+BV *"WOJo|Uq (g-`Hwvcf$s[j15ſ>vgv53v>',2vg5 VN1E=`ʼnG@xp,v-< a܊6-FQ#bQ)-o2ݜWk[hav-.PC~^@=[B Qh3ͳ kX .)xڕSkQ^̦D"Qf-"J[7Rx(jC%@E<A"'xEAЃłFZJ Iwrqcfgfgތ0EĈNA~s8SE0`9#m`t HL+ŸBrW{̍yq`~7Zv ΐ$<;J}C9?v6$F{Zo{MHC@RoEøKI Rez+I?7ew_?,m*}N&1_Y!$'l];eoڛs{'堜y:!|J|8yXdolݛ-D_lQOeDgRv@c?dp^6ڻjڭr\b.;?4.?at@=(]j-SZ&AwW0U xڽKhYj8yNPHju$yFɢ$YiD(FDžA q\*duB DQЅRst[T2Mf/O=uwϽeh%8 ΒBM<_7 x3(~2w~Wb0 WnP\ y;8&|*ί͟,?dV`ܟgHsȾ3?X>ub>kl[K"'~ [x Yq?UFo-);uyU (ih.ǬzW*oRiJ>^e%{g6i"z[OT'³,Or&!m94t̨WZiF#hG UN%pi$17)ǚhoQbsQ<]>!⻱~\civog5n > Q} Bo{:WP ıfv!Vl$9ǹ~x.Um+O59{ Oa5=X4'[efʺ?9R.k3j.扟/~F&l^w6YTyKe 0ZSlceN\۩ԱVZ"{*ȹnR/$RRcUzxGȃG0E@{x y NjG7YQxǏ-l}1MILK(vs ߿p:<@#nG "6#Y̱pܴe0pFL= 1ԽoCך| kF:>{@u5tXGoLeؼx- OIR(e$)e/39]xQ8)g_T9凓9-Qġ,| vv~̅ @#܆ymkGJ(JꗟFAQAjdAa8Z;!CRnkMm_St= F .u9bZӶaK?WS7Q+6s neމzԃ̕]μTꇪK罆fk$.AmnV(ic20zv5b]NU/wė'Hui ,r}s #^Gc Fy 8ij*b9gϭµkq֞1n^^tLKrY O t9|n|}hTZƴŸO:j?РZ`ǐZ -a-r'!Vr^ܘi,}rV˿ldn6Ç̶*ßy6 5y^!R/e+h(T_6rǩF\GdhK&/PR}T_฽Ue}- B':\1էw-.Go|$aOLİ'"Xx'DzXo٢_ճ5,ŦŦ&}[yO;I@= 3mnܧʝ; %\6=5]Z x[{lݽwcbp z<SS\k 4bTJeҸ5VK*8hԦHDmB <$ T555۝{`C7|7Sc$I$cXXZWSƖysyc cg_آ5FmtVa&QçYIS.xTy2arV5\le'esQDBMx9L/$^PX%T7">GnCn{Yel'M%U4me:sf?rEE&k!IS^QvOk25=1ašu[ݤwǭ({P"%ʼnu#㱣d)m:^r; ?Qe/Wsz9Бs'DQFSܫ9Ac`u8@8|98:+eb5{̗ܟP/;rڻsz9БQ"r2rr%^CoM<,z<غu]8yR@rIS]tH8Bsf!tޮ.N=RL*"'˟y_~G =鏗k к-Ga 俫eU]zv}n.ۋv;tG]v}jCIG~(?χnqr3uMi$R<@FK1dG>hb[`J˜hJw*?׈-Wk{J F Ҧ .y86.ys̟jfxz Rw١X9 RΘүK3C]F t?݊şORjt?4?e^#ZQ;e\T-D݂?WsL,݂?KDw;eT,KiQ!7Up?=?wH2@ӯX+L&rX &]gSiι(<1UI\sY,ht?v+?IvƔ]J)iT$Ԩt?$Azp̟O5 G4p?U$;gu)i|O&Ôd@sYiS>e܁.?U$D wUp"dL9L4%٩ $YO d @*Cx6uXzW=Xώ5UcoTSvy$N]+lJb$归;vy$N]+lJb$归;$\ 898|v貽mC1]_e{on.۟7v}\]_ e{_n.Wv?g,:( y_~Qr1\> ea݃#!FZ{j uK{$4fLN h6 Bݜ7 [!}g3qa+WeVwfܿ-ܓL\ >ntgV&j;Ką4 [!9p/*;j&E0Z/+v\a6B\oB|mn sy <ďs<(lcʾ6-l1XK-m[Q bi_,ՇRvz-_& 35ن+ԃ ۘ,gL|aso6qֱUcPe h(=a+-fK*x8RdlC}:)_fސV#b H.۩zÖ)EQ Zg{V)kᜋx0V;<Q29n5͒9{x$:*wھQ=?^^y-̩Q6mgJgk>R?B(ϴt&ݸD1>Uzٯl2-> [ġ:f^~%GG;`}CGt"yT_g2MM[9M~,%|y䃓E;Qrg y(ĵpgQ{L)c̝`&w`+_H+-hy*;fWUpe2ŵE8aҒ88~1WM;?r/?ߨoBcLђpB@=[q2 g4&G1uMH~A|c͘i E0H_E hBjh2 vArΝw}߻s9s`>3B}Mf<-U ,!#*hn0/@ݚAtn!m3r3mH`h-|JTL7 vbFl?A ">a myhuhǶ}`s(kVL({V![ykCqܖQ ;euH>v5״)AL3rrG ^q4=ʞαu5%.-5K-G?a[ \Rӊc7X/_hZܕ}&_4JZ^Y[rXڐG]D"Z4':O/}9i6: /dC~l?"5l ߴ_O] #}S~m ̠lTww,Ln3@gc6۳lNzQQftl]!%c:y׬ŁXL^#A=;E)cae-A݊_ŗ{C{Og]>k*ϔdX:d|F+QKC~ gjλaX"[=wλ|jቲ,<{Ssoo->@=!ږAթvNN#$ Jy ݇xڽVYhAͮDzƸ&&&1ĞA1D"ŏ(/0B@D!?1DuEXvk($6șv4w(@gjXu `,b$+<u?B7=ǡA͈{Z/5=G?O-] ߴ 0!{ _Ѯ?l17mGP$yxCpO~\e b=3p%I:_._(:ZkyoZB #)lS5x 5ސ.sGflnn/2Kv4rs]m;+S K3wAw v d-F xZTThz UK;#cq&39|V:J-#ljuh"<E}, c%T t(=/dNEӇX, zXܗ\]\}3=r zI]"{,guA+|bH;Sw:?U>>^8R߁t3vSiǪ|s?`OðvkB1j[u ԷmsSq[nec!6sd S?w?Q|LrcB|L=TN-=osY[`н~+(48KКfv]%ؓ~8bxvzך62%SqrEan.6*&q3b> 9Λ<.˩J> Mz/gG){ȳ7h&W /aa)_BRRr8S[# qJ}pq#9-+(bO>l' ~D(~t^$sq_u{$/|i {P}\ڪ0i?~(rkܘQ^s)jb+E>[Dk[X>j*xCje;q@\YuīO2\}Lxk|-;rrRsP%?-;^\݌뿧5#Zd']|rG|9q_Y?7{|%eO\DRH(ހB($|ߧϪ҇c_a]s>*>r=Bs睋se]j1 [H-tZf"'tQhsqt|+mՂ+Z@B;~E|~Ve[;~]n26r>|4ȇ?o=O|41wࣩD>o0ӥy⣅-%-Gue>}֗ک|N3a/$EISɎcv/=۩l@Itb<|+A-u$g"YЇ]m.$+h\՗n&b+ͼ~U/ܖzmUzH]@=SL"k'wQ,b=5]Zpx]}p]>.I%% (2¤|tPh>0@ŪCfU@@N[* P;V Q0BV˴3rV@<ᄏ]|Ps̾<~*1T1SXxinpa{Aq=[ovC_ 0%RJǦ_ NLĎ TbL|WK$x|ci;o%=6Q?T=.c1T]aT뭺qW W޿3ync>3ƪ۸ucJUn7xy[[Ze\v>S]+CЈ"a] C/1?@n`mO%~#^=پrrDvؗk5oNO#cЏ~&_o6\8wn>ʝm$ٶ{۝xҏݓ.C}[cq_:Q"buNko?p>9 '/LNj02$˿]1;:rh8ja'4D8/h1C_yCFa %? |nXt_1g= 8)u^ıMτ |BEhD,a_#^8u[r^\ ^-_Aa1o8cǿp8h/rzGfq'tD ,.\D;(!Ÿ9"sDlL9MŸJ5Km0J,`່Wr@9 mӂ??r,0tPgO d" ΡŸ3OӤ0&N7[?[{6Fo 'ʲ Eb??jsr%h9? /Eah1y6N:-sH%=$O@q? Oa!ln$iR'{6Ʈ]?1Cc (c͟?3 ;,W:;rF#Oq}6VoCo -rbg*f-?&"A?7!E?Ea_ZP7+PDQZGD?퍍?!?2Ks̲s\9j:HC:rv}&MVr@9NoD8egjɟ̈́?ȝ P%O$`9ROSu8sxC$rD|lg?1* @و*?k7mp N4垗[9@md9z'Om8Zȵ3xHSVIr96%#?S~m&P"CpWf֣zŸAZZa8z)^Wx29+VKCGar N~2ةCGaZ$r@sOyISfCp?%!~=NSڪD9 é_DA#*8 ]p\~]K3P \So s?qގD Eo㟧!7e1;8cȇjbu;C f(?FSs/uᏜ[rԯ?x3HGC? A2$iz9A'?o ws@9L1T-r86O=Oa^\Bf?u#ϜzG~,F= Âe<2; }Fj,yn#6:bͧ>>NK^ƻԨΕYsgNʬ3jĹsAc(|`_bJ~@cڛvlS{mF^۱M8Gئx;}GNސo6W۱M;8ݭ'2n/1T#x!müʵ*l.o+S%?q:`ysFbh$}>7D[g}%sbX>&o>\:sJQ2\Ip},ZJM7^wH2aƛpۭo5CjRЯ|o^fq(.}ea/ELƊ[l" sv-l(E7韅yncaMۢ%ﰑCsW--d3} O"v bg§"p=,da@ D~mqlZḍ7^Mh'~KC:·Fu_pf*VMj,~VDvZwCr;OǘU=8Ƭ8Ƭ0mֹptw>0\[[UQ*u]CzWcM:92RxKa.\6l^PARVW5z5æ @Ct2ڃZzZԃ~6 p]unfx%8/COZKkc_Ld>}ZZdn:Zwi;.-$Zwf0oq/]({Lݷ #-r"vszL=ґ~_Ju_+p]g^kM{ou\({'dމoKW~9`Xyb=W^{@ٱ0!YqkȴL~k.0 qx3$ c 32hqkovM$v·bt<~GoS>J*I9^v|x}/Y:X3PlY=hk-]_~c>4Dz|vfR-%=inY9ͼ~)/l\ܐx/nXi}M$h/0[U;D76$ :a0di@4ɣS(1$^|>jtMST[@e~cV}ap"dHԗ=)y8)yJίn3qa_bdq fs/,x T݀(~ě G) M=>Ȼ?B,U9*jpJX,YTN9NM3k@j~Q?*^M%߰oXׯ5θVu(+z6R7+D΅#vϖ9Yԧ rkiΨ:%$xe/v[(ڴҗᢿΘA"~(G5uȶpc XR*WɸVú\w|/]n27bZ<*,xT扇*U/@xT37e:OsE_-.Gp6냞6AOFh|6c;8jV}f6656[NDa@=Z-%P`1ᛚK+U` 9 O d F (xڵV]h\Eo4wgS 4nI71($mmRZlѨ)桱e[UMJCAk-RȋA  %`AC{gvgQSI39sΙ3W8F+J`T v=@svd^!E?Iv" Kp5 @L\pIVRC!)V'JeQgSNц˳F-N( ;(v!xi.W*%6WPx}x6R5(G;0%d)=?ג%t_R在/k(CjPc+͵e\AKJ7ǭe&棖}so~]|a=j}7>'F{0rϐ뫸rqsfpD=QD}Qv΅) YX^܎XuN?z u=/\ؖ=ɮOR[NLVݡě+?7VjagmK}$Oﭥ۬ll/ub &@!Bz)o'(ju} y3K3G ڼCX'BBZZΗV|Y];e7s+0>.9XHw9\buPޖgX.'ƞrOz6MQ^$?T9KHi/>Uǫ?x~;#Ϗzt{.: Zg:A.?{O_=ݧkFA՛Ё[w?7=cs73F W*c@=&&%õRnbTMd ZixWh[u{I[j LD qNQa(3ng4>]ŁP:7~X-XAE V7)lPww/yy.p}{ ؍ȣƓ w6wcIML;~q hG# PARjFOVD.cfMz4b4w^^ȫ8&JuA>u#/hGoEjCy'`],F:Ƶ{pxb>{H&۟!nG[øFwEc_dn1qD(?0a6\|O#79+6;W{]USbJ"(L)FRL51>#ľژX~R`xu[=-\3Q*M(XMz_ӵh lz Ҝw!Y|0+~(=XOpE;Ÿ |ƿu_Q&ڣႍƗ*ZT492M!gѡkBޢ)ut7DH=h.t#<^[] B4׉fLXv*t !//lU@/̿M֩?\8W_&éjTC1{Mۡqe =仨 HluOu8m[cS;~S,X3XvWm~^A'X15wM3#BnDۄ g)+Tm_5RoF~F?ӈCKQ_A>?7} {z>p^~ -IR@+ŋtimR- \nrڶלߍH](w6:\z\;=/D߀-}QB@=v>Ⲙ!5hJ IxڽWolSU?+jU؂̖-n{}cK CM1#d?  %,&i\QI1?‚3;m7垞s x ;,UmĆsFgb~[zU.SpwϱL%xsJ?9ϬP'fYQe'Y|rG|9q_מQd ~>+5$Bc8ȶqF}Iq>c$_fN^6 @-hߕ eB)[8WߤތEPRJ@t[ RS)L(q8J7#F~3_Dw=dsc:͸8lD>]I[9G9$8 BõJKW~p ˤkFt sOmlCmߥ5v2[h _/z~G%B]vm<xЩ}sl(s5s=-W~eZù. FчK}OAGﷶm{>f.k/k;u~wپ#)SDqY)n|(S7`HisZ@9:S]HQ{W2]g>~wb>)GU|t]g>05ǽ%XS&i8lA|E|yxI/ 3}u318(>Agw?瘧ﱢ,b kn}¬]jIe=VG^ꩶAT[==VN$7 멶j>j3T[o6Zw>k+u:CmҬ4:ՑPZ)ѡ5:;)ߝPA`Jkq0/,ny={+RnWOE@=@u8m ddsiZixڵW]lU>3;ӭ,MC`,͊Wәe54KBh@+Yݨ0 &H@%ᅇZ >ih1 4KCЖϹsfvV7s9wf؍mu׎?Alx @&t`)S8JD ݵ)h0B ǩAve۸ ;M8t:- &K/Ƌs\j-<\JP^m?eCGhl< ̞?!Y$/:ۤm8A1!aeXqQ-27fbT\F]ˆ:^4v'%&kKr]̙4sRT~lq;Ky@-(qm5'?QU`Tn^Qr{0['ZJRݏ!sWXK}%?[dbZjM50׈ }Ro/ioB8ߛA3F"tCU+i.=v'9#{)r ) a#ћ\m謓5r4_:I,+ŽD?8bx8CjG Ք0>pʜO3(:u'WK3(Gmx 3+_Jwzxށ7qϮw@YB\)d6υy]_y]q_Z9FQwn/ϧAyt"o,tq[#xqx>7݃K'GA]k^0 -Y׃ j_nNgiwH5>ۀʒ?]FwZil5Wi7u.*|{@ogӔ\n7Guڌ:ZN\'uOqԆM37S:;a!SmWjt >@^Fl9ʋ}6^yp,3ttrogYܖr,*+@=rD X"7 JJ S @xڽV_HSa?ݜRKgEF,Lz+#aA=HE( !"# zEzD QD *DRsr9;ν3V *w` q,DU8HYsTu-X!bW<9GP@Wt*sg_Jкy C"`+bEġݜ93*"h׼i盇Tl)Qhd+Ә{~† )"6 nڵKG\X|f9 N?Fas 4'jX"`l{$ch6%~gAgj}>Q@)=qӧ95iNM3 K6:"v}:z21ٮ<\q=m>t+qsitR\ncJB)ցes:b- ѠNg䖴缰8+uչ$ˉ !p qSjb|:$sƹ/^8=DO=aN=a K ̵D}I5?F &}pGT:AT{gٸx睳IlGpM6^mADfԯs+FCBDzdzA|B+{Gv i!}yVcKk;Zó;Ͼmg=a6|TG`\L|f <0AeN`l˓0_XZ]|oso/Uڋ",+1?@= 7ߋh ⦦,9!8"dsiP} xڽZ xT>8 1͒$Fi#li AEH.j ~A(V^bF" X*Tzl w8s̜9, $:/`] #RN}*Q 눒H\T"Q;?PIV?ޜ+hnl'bGjWu7 Dٝ $?֧&ATwe>> 6'#4Fzێ$ڔjqNy ހO4MvFSR +`]MUi|Q|-f/ֱ7y6 =BȘG:τP;I`nN)D93EO&~ 7p}ݐ JU>s_` y!)9@BoV1Í1P(gP Up\Q Q n^X%1֋  K uSw ./ #Yiql:s.6'i8-đl)Nn<+fg&G`,9IB?[7wp2q h%h58n TEX!%r<OF)񇈘=7^i8p N'F\6|Z-|F<5b3krR=r$h:clhgG/aθ::ne3v~o62wI^jwL"2ޙD5qoq^'tWy}D:/p??NOPNCsF#]cddraп*ͽvXu_Klxy^Ż.7X966A?Aw]WF2&]JI3`;ҙ)zF[,'*3"+l&ω"+u:'gԧ/_ѥ1ڊ:U۞S{9}ƵT2wzsml4ϯ[+%vET]ypC(sr%W\pm` 6/&+:[|NkkE>3~^Sm 7I-" [8$@Ǘضx?m.;bs*VR-"^\-WUͮN/wR}8/MѰaߒC3ejӚr%XҜeJ};k!1\p͏i:bKĹm&[8E+,1qNO S{HR{7=Z7wXL4@vߤXՅ3;;/zrL"S$dj\4B1Lxr*>Z{㒢uQBu6]cdbVxʳ J-VaClk 5aO!L,bBRcw!h mWXn[p'T1 +$'߽Usowc9W{d_jR[ڮP!K}Q=o:tQ=pN6myK#D dγ/{Wҹ6:|fZESEJʞ?F[e|..ǸD( }m]rG\wQ~4>3@׻a\s-9GEzZr| T݈K7GilDVu ׽tEam^qPq:wx)X/ţT3\u-k?KiJk3{öXMM3gx:e+* v\N&o4fCj>:Fl 1dO#YR|#hkzBU+n=4ir 9<˥ ba8TtqV<1~?_?r.7xtӸq'k>y.=Av:Y`{ČuKQe3=$۟$0Zʐ uo_3~f&W3 \;bj\S΋?U|AnY/qJ@ILD1G' GkC!Qro_9%a\||TH2oU]9<ݗ2׭@T@Ke9Es~\P?&Q- E}&=&s;߁ήKnK9+ C.3Υw>[<(`6&Yd>j|>rs^}؋!U;\U䒸zz7:z%1/Z3\ ϒX1\뷕 bj,\ jѭ@=w~~dQ> JJ S ExڽV_Haoo\&Zzp"6ݣ?%=VUԃٽ-$qR>YaDA/H> QD`D\3}\qA:0w<䥍%A7S@ݞ{ (&NT@e{ =`؂Z" 5WP< 'v7b*ddVa /Qu *@%Z0G ϡ>S%>$eP9 lVoSh/^TjV3\x|s{~%n-g&?>VK=z" ?u%-<4@=|#56ȑΫ ] R JxڵVMlUƻNBV1qHbbh*.jNC0PE.mT,a Pm#(P~ʡR. qBPJqD,vyWO̼y7;oD .`>&c)|= fwMNhCG| [ $CB4HD6 [ Ar7]N3U:N׿&m|'r#d2"څ=؍ b2O<G/ط0Gt/h՝xF\3Ͼ x.o.˓\3݌@M6C] ' 'uwbxz{~,9=7|6=k-MH.ߞ-gr1NLn(9ɴVUYpEYyǴzX 5mncuJ\k.d純ύ>8=Azɳ˱â1. #y78gAMxQW*e,:r ZZVV [u/ܘ7EyToW͞{_T`-ÿ?Yiר?Z Y&uLg sxGf8=fs |)=w`qk|(eyXaɦs4w.fF%p׿(՘+-#EB wg3ėKMWbѢx C(*X)XOTӥ´{;C)mnnM~xdF}7V}%j33'Ha.ޡ<>TS죍^hug6˭ZѿC-]@=(UEr+}qo<>dvx;XG3;cA56,bs(bE5K0 l4Ac.(YuIwݙ9m̙3;#Ƣk8ω%:fm¨5B0B*tYكe$QDj#}9B3)+/ԺMeA\Pi| Wp u)!#1 O9nre짳.˫:c<.Z^owgp:ss>\\s*S{7T׏ :^`PZ_7=Wp: ۩|z3hmՋdj`{d${G!HQSb.>%>)G1o^a&oCyrr RC}0j+C2"7$GiɷvJ5Բƀ7j̖ X֊oE:mD+5;/e,8q7KaЫTvJȕC:u6B1^ӆʩ9ӯmM\+IO9BQ74!;Ԛ9rݝ;tEM\tsmѶivt|lѐ61'pT]ڠFI[7}ĺP/z“ {=h^:@8e5xwAgsZn7ov2&̘dl7n_6.їttNOFAh9hhsC /t?X g7k`C0`,3mrp<Fva`v&%!*:!G[?'%˖BtRjFYsFtc̭t 4f8JCl$:+8%atWd8M:]"w|Fol>>C|7,oh!m6 Gn>>'e? Wƚpdo8Ru"JMΜ}zsS$iMNMaq=盈~D;0`<8J };Dki8W#q ӧ.pg<< l`ڪ b\ߞoGrexX kGx?E{Sj<9{l;FtPÔK坴p r uVA0J|+ !'`ܯ'Kasfb490y(Ե~.Zط| >[|9ޘm'4 !>aT%Mѩn)9Np$OcaOH&wΆy !<6^&.;KKBh3 <2mG> ׽=32݆X<99~0*ֶNh5M'7Y"$nIkyϫr$gf=a"L ۡ3<챋H.|y\^Zү0C%j% fQ`R;:Ûl*hd\4TMEAS.#ڧI{ V<Ӷϣ0ueXP>T#! |,C|.ӖE+ Wßn7'o1)k?'a %Jsrk0hE(8#+cY0j'k'"1mz~+[ CYt~^O\ ^|+$o5WYL y7KN :^T=z˰a_$ \ |>0vXޖnm &C!j):ղ|yvb!ye۵Q39[e_e5n=۲l FC/s^()\u޻cБNcqNuRQy+ua/o+~gφt?h:J9ZiZaӌ_询35yP|^;P%}}O)lGh"/A4+LEUD-8Q+F4GbM&qBz|Hӣ'h1QOG[Lk\:䏓P>p&:sn."P%aiN u& fTCͤ/ Z{#s/,0gvXs(df'(|gh .c ev0qCiO3< #<CӬ{0om_|ʂ..{9Q]@BӤk*Dx&L|%(G8Eb&dTX`]DŽoPucFzz#P[WTKYafh!x.(DAB&wݏt9˄m]D P3Y_i r&#{i(!K) Ukҽ%@%t(TֳY$B_l8+H,6H#QX t1ј&h݊d""?`2k1l.1zd.%/j"s+NhySyDpAZb[ v!x4瑾؟hб#m+'Tѥiαf\X@xLgsa/.c( d&Lz'ptӍh6egE,4oITN$[#D)7M{I_,">&hsMu3?zIz%R09,ij9*R9!}|)i4ܔ\3I:həIZ~هJN$DyV !{ )$cK*lL`|2FmKa$Q0 M#`& zW "hJ Ę"IsҔX{v7%uh$%:M262[# [dryfR\*,8HE:D+t#=,Xcg-.CKi+A^E6 'IF}Dv6+.: hw' F3A ,E ]a}2=*_d>/aFoqy3ȄCϤ$,:Ε;VQLH;^kk뎛;x̎MGz0p&e98R䆈4CQI)kՓaR:I4.C˥(*\`֧ł>3I uX5y]tG,^EB+ʼn(ūX#&6b+L|a5 4gY ǭvz@ZdQYP12J9K`pφgq^{q^{q^{q^oﲚn r`˯eR-yMcR<[jϡ 3YT5?qm ^iz9u!>6Qp΢̩(wjYV0w@_tt5]&')kj Fyg-ARc""den>0A|gfuuKgf[Ox`9 'nh1T)[~ RcyP九ڪmnhDžc?|OsnLNIцrhZ9?`?|yyyyz^1>;R11|s]<ſs}pm\-DIY)>"ϥ[%62F[~}-uop濰X5|7$FE1/ ?R^Xh/T3 uKm_3FUȿ:YBXh_C-ۂAB󢥺RԼ|y0=~8ۣ8±vDx41ZFL)Fyum -4xog1n3]3Q]/z1q]?_:TC%*o˱=N]V3an"E|lswMc֪<8mxa.g悺v')~V縩cЖ:+/iZ΋89tY`/ZkE/33/|"_>g**)jp "R&`! >Z5P튭sh4$=5]`Zy xZ}l}{kw1{T AԜʨmҋj5 1EUɪ THP5RSH`ENAN3-ŠH) 1%IZٛlKT٧ޛ$#Dy1!JM$D7\<$U Qd\%|h+CSvQ $Hk:6m%a $~e~؏i_iZZ{%"@{I\]-޵MBn۬ګ~?|# \uI|!LԆH?C sigNQa%D~R梥f?Gn&# ~G_oQDQgqwLq1^U"WJ2ih͊E4]rjcF8/̱}a58 c+T)+R8vSMcc8 <_tFd({zz2h8c?;KLG*e<2o|Mg~R#qpka_6Uj82X{86DRF{MѴz*2Q4+Ӫnќh" iDK&bj2Xyjh)Mv ZY6,ZςH(W"hiա/+bhiա/+VQBadUTPXYh*C_(W,m@Eu J6:3z0gGRa*QBa UWT:$Ud*QB*nS T]Du I.T:jDus=3S1}bX $SPqEn2V1 rd *eFK2 CrVU Kt*(eJPB,`S *\eJPBKL *@_p)A U0%}L4eI7f1 k&e,L+> e,L+$FsK9R0Ͽ2el%"KY/"}Z,LoF%0iuH}8I2"KS4[d`:BY0}tal%c,/;MD y3)HWEX]wmH(֮*ת Vh¯U9I*~ʱP¯U9BM*NJ_r즔kUDښQ]{>?owXQcbj78!9!^1 1 `:yErkUiJC*>YE?&[i'C^H|aU;ء- `ۢ8Fރ n[g6>(>Zwo8h} {1%Va0,lJZ[s̔Un~z`7zk!e4-z]-~ mWMۯ,};?!zbz__*3k.rD/K$CG+_ζuj l;~औ|L$|z(ФnI&ry5.cD0֟r1Xxt ba:r!f9vT]*v&c%Aq6 LѤz:}9B']B|>/ϔ]X8 oXm2r]*.3꣕6 ,(kP6l{U H#f0u"4gDf`9gWSgć(4ùL><+G ӮćpZ&-0kZI>q?f> p/oC|5g'!;`\6^[813Y ՞Ƕ_9EW@=}^CCqƟY fQ osHxZ l~{w{>b'qj;69Tb{&868Rڸ$)uFN¥ 9UKHBLZ7c HmPTZ`;s7ޜkr훝}{ߝڽ @_:cY? +`WZtHf1@/wԟBȲ$[]M.@0 E-i܊l$9m-+ LmZZ,_2xBMY.ͨ-XKXdHuBA@A;>- w2,+`aQ<W-dOgh4`9Tݼx_77*Da^W+5aYňC:a \O&헱|za`c-H jqtث=E=ȇNTw}9t9s+,Sd¹{Nޙ&@=TOzWb{Pƥnюs}Dcс@6`Khn _]#M7 y5C>*eZtX{4 ,'Tw[5ܴ>,lv29 dqYsc86@8F^?`lן,AϿc!G O> R\})b=EkZqfdw0iOwNt2w{~I)VuZfeO:}?DY-a~iD>x`#|IMѱjPQcoxë&7Μ޿d֚&׶cuU>Ao-:_vu`I.9g hj]]Wcwz0?5ddQk$xڎ^' ux29{tŶEI(=3ˇCMtˍuמˏחwB2x?8[YYyyUȣ=F(dy<py9,Os y,/`}|VGc[lo=@e'Uz0>lzn~Nn|da̶"1\ tLGτ礖’a45)}P$BT3:J];]#pov©Hڑ<瓹{wf7R w-1׎z?xFqsƟ4=™:X~!Z-s,OZXWJ5y˙#i?CBZ Kaۗ(W"ހ׉}w9& ~16y9+6XxE*7%=}GyѦD7)3%~|ʰ )훪oXrEa.B/o2E4hi,.+yz-p:]qHcW[H=Ԛ+_dH-КAߦʧ9B_ PP i;UukYݫSpJVa iS<#+>e?3Jn+O&|>\.g0~5\ Ϣ4lc~;r"D-w7[_ S}\(l6hzھቯ94,VpF`jo-Q5"-ږIQHa /$n}#M,v$W,h]̬K5ʉyٟOC<(Ux1<# 9S,3Y<TBSc,<&pg4a3yu+ɼZZoq\k#rժu*ʴYH-Cߦb^u}?Px?;-[Sg<l*$SO;T98)vՓ8'<&pgz;xЊaA{:#\LKg<>v\9zm0XOҹ6d0?{l ULn?;,HxJwQ1_0 | ٽS3#Wݷf#Ztglڎ! ߩ0AEJCY C,#fGL8cD!~tfDLb"۬վqι{9{}r 7:~*%:!Z&c-њ;45A>R[ԅ?ZYx,j u5B0 `]V)\[& POq]v3#딠*[Xp&BY]P +G@v}*Kdbx; `Xw&;k6'kJ:[yx-ocl)z57>;A!E,\bKL7|>0 [/8C 2'"9>rG5lN|t(>{"6qrPc ?JI;Kغ䘡h?O+@{$Q\fvM6I%M+MseT"y,gWYxkTwutt'Bg-qPkZ5MX(bhMql{ BѶz{•vXFLSf*G]Ƥ##s&FDoqR}{˦y?b&~ ϯaO>㉂7R7ZN_JY{s}oT^ .Sh@is^>!>/JUN6Ա>&ܖVkZ{L-> s;6x~%p"{ѭM'6(ߏ;^?m?$W@=P,妔HmxWoLUwWw@K#4WP4 t?6b Qj`$Rͅ\Q54&ژV1KI$MʇֶIC :705}̾7;ٙoDt4Uk0kͨL^.#Kl+tHHhnC9IKt[(nR#NHe{brڐrY]dg9ud;Dw|! j8-@E8kј4sIً Jλ>sMx(7\+jCyONsk K;:qbuy[{WL| \Ha 8CκzP@i3ٞoN<Zs 7Hܟu4xW#'ZSrhx:MG}p,C~"2ۗ.X9\4sRtaxR8Me1kz8Lb93H@Z *qvnڊRYWU= (oӵL&B#U\Ecz41/ŭi{(Wqs$S˳2DȄz GWFw˱xeor4\7|3w֦ܳ)hު c,cvzNW׀U~Kh@rZKRL \e1]%K\Զqs8y'q݈#nq3)r<Zpx:."I]L[c;z'Ŭ-zDH)qJg@HW4'kVWa MXȯ`Sϙ[{x4GdOZMYIq,b4ཇ m5eKq%} M=4HӻEEq`|0>tE7-lzeȪh+н=7Θay8D^*nFZx}ih+SɼDx %'\`lVQs5o,~ɐdsv| @nzo?ב֧R^?ħ:UN<.7)>@=M']XWo,P  E#$$xڵV]lTU{]vʢY 1&w˺R"4<@6OR~bc <II%@LO%@D6gw33g̜sED0ѵVp&B-I&"e^V!hh[jq<{CZ\`3@[k9a X%vsBNaCEBb澒u"uYȡ:Ͷ @޻e{ {S;-}x6T!ѧЏ2&[csd<{Q~h8m?׼&"6BXE4"l˿}٫uGCJ7grӫNQm:G̊KOL_z}}fyӧ"EzVa))ڂf/Ig)]Ѳ^e/>]QuS ԑ) !%yrSA=Z :Y5Tٛ^:ya9M 1L+^s51h:hGۋ+N>t*ev+ =j?KoTjyU+C"_sIf SqYpc~a`xQ~ROF=7h.u1O-۽lJtަAѳ+췤-ClOlF̉Lt-bɲnU;ՑD!x18?octObut~8|yUxGAnajn:ru<2;V!xfx=~is/W`{3n/ÆyEݓU_g]FK;`_ђKn~;@Ki~ ({z+d kjv6ޑBo@=Gj:?H[nd`o t xڵW}lTE}w.ZJCrcؖwg[AJlr M(E mƼFjc *D[ C glLZD1yon吂ay;ogvvf_^Dgx h>yV1@,eQe0qKҡh# yC-{pt"Z-4<0oLJEhCaCm9fc@'%H4K__'jXa.(¶l>%y~Ĥ?='ײT7VG9ejul; ='ƾFOXF}ϸ\ z_ h.yhWӸCzJٞc)c=cUs.Vr0[8huV.*O>)6Z"rW +" Q5 5$bS,s9Uy~.#]t=z<1̘y(7-TT|\GWFF¿4T4~$\(mcX'[# a|D"~!qCT8p$wԩ_@"JoUs]wi(oD3E`$_{ 4}(NqI2kPZ@?PO{;a#2[4덫EI8ʣK^?үK\<_r%I={xi?m|;Ĝ̜RmL%mqFUc.Ctè|"߮ǼcsⴜZYysU&2*q[~yItU@k%Mb{Z)FI1k QZIMcL0۩uL9? l;8g LL)8=>ޫ1ˎ3f˩H+2>a QۃO؇s,n4U_ B!P fBG7(]>G.ڧ0٨9~ Q5GZIb4r26  ҌRto³?p0)pɇkhkgp2E)pG ,67[G!NGa|0d>(Vs2s9~觖\ ՘\lzeoIm@={WVSuA< 95h;gxڽV_HSa?ncY \Y؂.l*Fs!fЇ "BB/y )zXI" E"$:\w7n!8sΟw$8*G GHh& qB.j]`(Aubb 9(m=n?+a͸𕱥BVqf5`*O!oi~Bk9]by2v&eM+QU Q:gMJ"~IKl9 {^8Zzg=x0%IO#*Es`>zxɽy;G|4JlUS5Y&|ۈa=X vh>Mړ3H`HACoPA):$%k@W1iE^Ddګ`ͧt}*>}.]tè|E"ߡGks⸜X^ysU~2 [~CyI`Z+iu|^GW>գ☏XL_OڡԻDjqq.5/c꘏q$`1mSF{5q"f){Y{TfKtMb ۃOsI['|ӯ5kWk{9 û`Q8l hnc}vq !i%|k&&u[VS%GZIa4Ro hF)whHZO“C>F|d3y|dўu|\#-`|X'> k~AS'!; [o,;1YW ž_MB@=ope aO`)* 95h;jxڽV_HSa?t+TdY,\iYzPAC!Z *BB/yYAKу%K, Q뜻sX1 =p<~? 8G QM78pqR|2C 0Bubb3)^f=nFVšqa%Rpf-`2O!o)~BkmW9O&c8+ugMB K!ޕ =! ZϧM~l=*{X鹀q^ '{`, ǏG5z*>zxɽպb8G|tJxU̓5YF}ۀfݫX!>M( fj°BCoHB):,bէ )+ʘXQaQ>y,G!COاP/ Ek'#23+)U*%G;oE'BƿI%/BhW9 V*66Ch}ZC=-"pXOX N Mo"2Z`1uKhoeg'͓),?/ŁfDDe;&H^t|ɟK1RgQiE5s7u9glZo/N{᝿w6{rMns0?W|Nbf55u+N~ 'j:ߏVh&21 ЌRbdo?f>$uў5|&Ñ$-0oZO>\̇+I|?XqJ e䂻[Xvp-Tc|-=LoH@=YfoY=Dĸ 95h;lxڽV_Ha; cͫL<0 o/ T O1C!ͺ$B8@!H$baEKу%CqZhffc )t`nf}'Pe= &$!+~ Wdl '$Vޱ.T /!8};ųǭg%[ d gKR9&g t6z F{#S̏RЮ{Zt5oV^;F[k|R֣A:%^"f5ײY|[a=X vl3}!GMfjA0L7^2KOzW^yU/^=O }jЧjS5kjEwho,ƀĤ8,g6!'p2|% P 9/ĹI+~C_1 اjԓR9钢6'Dh:o"צi=F۴#>:.1[GC ?ŅYZQTͩHs/%}W݃O{퓨EWrƺr'!x C{/*-&^pA5a֠nD-BGZH`4Rg iF)w+hRoςό'e‡s|0:c‡k|4´e%pge#3#g|0G"!?p] 7nlZZdC-{:vsE@=!j6V:_Hgb\  )jxV]HTA>s쪹n=,BxWW-22a)"}(ꡕ ^z{0@{'{ǺsgfxYK!ss|3 (/=Q~0DoGi> .w #2氅\p2@+ e:QG=q!416t(x _^ faWmyc(4wopN/0G(mh8Ĉ`_[Nc:s-!!yqEviLƑkpsP ;muLk2 |ߢ _gޝ1xla7Pءx4%.%yQkk $pv%J#..4nzyc.2ESx@ح+kKE sԅif;S4fZ\ZI4v$j8}}lu/jeQt'z!i#B'ACKP**elȕlFjö[ٛ $Z r+)svݑ9#>8r|Ѵ Gp.vxL|7-fLB=7_ܘ p8;q2;\ӯCE[0{kY{w/ m{U_c7G*J{CVmwO պ\w,у(['( 'D"ˠfJmK)1+,i?[W}/ i=7M|cʼ[|Y]|=`7ׅTdbJ H_CxCt{tr|ғL_N=u3w]ɹG1P= λ>IDϕ0 腛ӭi@=1/&"B x Z F xڵWoL[U?ƀF #1Ce^A+bVQe1QLc0&uK.6/9la?y綷ʟ79=s޹+Ho8=rUuFz:4)}䶴 oj6Q9@R mL (!e韘mLld[g:`1=}HԹ/%ךaBFfCHl8a_cNtrC8#GPVv༄Lt'QX1. 2RzksS8aٮbb"bQhׄ-9;3re5 (ݦTA8n1*Ik٪uBzz)xa Op|NX,~F,c*L0|^qrִ20:fEqA{?]>Alr^ XwjYD')|Xqd-Wi'Vci_1[l}^SQ8Gm줈)rQ`tC΃WDw|!삋.tkdstEDmy[,F& ռ@0*nu#X#ba>䣐Oc[c )I4D GPb$oؤoV-!dC"M(-O~XE3j;ù~Æ[C(DeLťuiy͒7vF1$y~wliz|pz\Z4xX[S~z~e|ט}O{QҞc/-U_嗩?GfizVkݫj]:ccrmX+muӉg <ߏ|g붧~^K/eMs\zsš-P\_ B7R:lЯu'+t9=;ѯޭQ]9#zBaϞO̝ܣZ} AW)3e)M46nrCn_[AsNWΈn nN"Չ*ko-c'ԵAs!O>)}|t:bj+{LqɽBLy"Sb"ycvoe KfDH!mMHɱrۤ'gf={\Xޕky?;nΩnGA96.ɕ7U~`(  $  gM Visio  Visio.Drawing.110.Microsoft Visio DrawingkO Visio  Visio.Drawing.110.Microsoft Visio Drawingt Visio  Visio.Drawing.110.Microsoft Visio Drawingu Visio  Visio.Drawing.110.Microsoft Visio Drawing Visio  Visio.Drawing.110.Microsoft Visio Drawing Visio  Visio.Drawing.110.Microsoft Visio Drawing Visio  Visio.Drawing.110.Microsoft Visio Drawing Visio  Visio.Drawing.110.Microsoft Visio Drawing@ Visio  Visio.Drawing.110.Microsoft Visio DrawingA Visio  Visio.Drawing.110.Microsoft Visio DrawingC Visio  Visio.Drawing.110.Microsoft Visio DrawingE Visio  Visio.Drawing.110.Microsoft Visio DrawingX Visio  Visio.Drawing.110.Microsoft Visio DrawingJ Visio  Visio.Drawing.110.Microsoft Visio DrawingP Visio  Visio.Drawing.110.Microsoft Visio DrawingR Visio  Visio.Drawing.110.Microsoft Visio DrawingU Visio  Visio.Drawing.110.Microsoft Visio DrawingV Visio  Visio.Drawing.110.Microsoft Visio Drawingd  Visio  Visio.Drawing.110.Microsoft Visio Drawinge  Visio  Visio.Drawing.110.Microsoft Visio Drawingf Visio  Visio.Drawing.110.Microsoft Visio Drawingg Visio  Visio.Drawing.110.Microsoft Visio Drawingh Visio  Visio.Drawing.110.Microsoft Visio Drawingi Visio  Visio.Drawing.110.Microsoft Visio Drawingj Visio  Visio.Drawing.110.Microsoft Visio Drawingk Visio  Visio.Drawing.110.Microsoft Visio Drawingl Visio  Visio.Drawing.110.Microsoft Visio Drawingm Visio  Visio.Drawing.110.Microsoft Visio Drawingn Visio  Visio.Drawing.110.Microsoft Visio Drawingo Visio  Visio.Drawing.110.Microsoft Visio Drawingr Visio  Visio.Drawing.110.Microsoft Visio Drawingw Visio  Visio.Drawing.110.Microsoft Visio Drawing Visio  Visio.Drawing.110.Microsoft Visio Drawing Visio  Visio.Drawing.110.Microsoft Visio Drawing Visio  Visio.Drawing.110.Microsoft Visio Drawing Visio  Visio.Drawing.110.Microsoft Visio Drawing  Visio  Visio.Drawing.110.Microsoft Visio Drawing! Visio  Visio.Drawing.110.Microsoft Visio Drawing0 j Visio  Visio.Drawing.110.Microsoft Visio Drawing  Visio  Visio.Drawing.110.Microsoft Visio Drawing  Visio  Visio.Drawing.110.Microsoft Visio Drawing  Visio  Visio.Drawing.110.Microsoft Visio Drawing  Visio  Visio.Drawing.110.Microsoft Visio Drawing  Visio  Visio.Drawing.110.Microsoft Visio Drawing  Visio  Visio.Drawing.110.Microsoft Visio Drawing/  Visio  Visio.Drawing.110.Microsoft Visio Drawing0  Visio  Visio.Drawing.110.Microsoft Visio Drawing3  Visio  Visio.Drawing.110.Microsoft Visio Drawing4  Visio  Visio.Drawing.110.Microsoft Visio Drawing8  Visio  Visio.Drawing.110.Microsoft Visio Drawing  Visio  Visio.Drawing.110.Microsoft Visio Drawing  Visio  Visio.Drawing.110.Microsoft Visio Drawing  Visio  Visio.Drawing.110.Microsoft Visio Drawing  Visio  Visio.Drawing.110.Microsoft Visio Drawing  Visio  Visio.Drawing.110.Microsoft Visio Drawing  Visio  Visio.Drawing.110.Microsoft Visio Drawing/ 0DArialNew RomanllXg0DArial NarrowanllXg0" DTimes New RomanllXg0@ .  @n?" dd@  @@`` h` t^  )  X     ) 'X  20+1=M<0/01121=>01@<A7ER   W Yg[-\!] ' uI y8}  + % L(1 #3 P '5:.>   -$0 L  )   &) Y=),## !$)%(')*-+,--. 85 ;<.9?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[8b$`|mG"$Ůf+AWlm_""$2k)هƊLɡ74 "$`.Zng\/s"$7԰񂼌Pb_)d$"$2C\Pa?Lg"$7qo b`ddU"$et~k-("FI"$/u: #6TN"$ڂj{Д(0 "$uZKY4q"$?;IPh>J=] 2$S3* SWScB"$&qN[LzmI"$VTKw hr C$"$7^Յ У"$ӠKqȏVK)$$"$Rk(kҥcb* "$j Hנ7p $"$4E]$&j2! L$"$[@mkE"$($\q!  "$<䉑Ug7ߠ]X"$N$-ywUDⲘ!5ht$"$@u8m$"$D X"7z_"$7ߋh ⦦,9! ٘$$"$|ZWB̳eBK"$\~u5#Fgs$"$˦hM_JmQ$"$~~dQ>#"$#56ȑΫ$$$$"$UEr+}qo0&$$2$>Z5P튭sh4 V$$$$"$b$큘@ԑKN $$$$$$"$}^CCqƟY"$t0Q^kYKl$"$Zl STxT"$P,妔"$']XWo,P U"$j:?H[ndO"$Hذ WS/i+"$~l-`EDc"${WVSuA<d"$ope aO`)* "$YfoY=D $$"$!j6V:_HgbO "$/&"B9 0AA`33@w0C ʚ;ʚ;g4ddk 0(ppp@ <4dddd8A10l4g <4BdBd8c20l80___PPT10 ?8- $ 2006 Vimal ReddyO  =x fVimal Reddy Sailashri Parthasarathy Eric Rotenberg64  6  Transient Fault ToleranceTransient faults Temporary hardware faults Worsening with shrinking technology Soft errors Noise Prominent solution: Redundant Multithreading Full program duplication Complete fault tolerance High overheads>-A>  -A Full Redundant Execution6 !Partial Redundant Threading (PRT)Only partially duplicate a program Shorter the redundant thread, lesser the overhead Approach taken to create partial thread affects fault tolerance\Conventional PRT]Conventional PRT^Prediction-based PRT _Prediction-based PRT `Prediction-based PRT aPrediction-based PRT NRelaxing checking constraintsbRelaxing checking constraints PRT SpectrumSlipstream Overview Slipstream Overview Slipstream Overview Slipstream Overview !Confident BranchConfident BranchConfident Dead WriteConfident Dead WriteConfident Silent Write/StoreConfident Silent Write/StoreConfident Silent Write/StoreConfident Silent Write/Store1#Slipstream Fault Detection CoverageWe showed confident predictions detect faults Additional coverage = Correctly predicted confident instr. + Their backward slices Mispredictions vulnerable, but rare in Slipstream Mispredictions + backward slices = only 0.1% instr...ZZ.,cye&Fault Coverage: Detection vs. RecoverySlipstream Fault Recoveryc i  j "k $Indirect Check of Silent Write/Store"Direct Check of Silent Write/Store+#Novel Framework to Analyze CoverageEach instr. considered  candidate faulty Coverage = # of instr. checked before committal to arch. statei@i,0*- t lC Clarification!Results: Microarchitecture modelsVBreakdown of InstructionsBreakdown of Instructions/Fault Coverage 0#Slipstream Performance (SMT 8-wide) oF'Performance Impact of Enhanced Recovery((  qH ConclusionsConfident predictions can replace duplication Slipstream case study : Redundant thread reduced by up to 57% while retaining near-100% coverage Prediction-based PRT offers a new avenue for efficient fault tolerant computing@.aP.` P/HNOPRSu !#%&'()*+,-./01234567 8!9":#;$<%=&>'?(@)A*B+C,D4  0` 33` Sf3f` 33g` f` www3PP` ZXdbmo` \ғ3y`Ӣ` 3f3ff` 3f3FKf` hk]wwwfܹ` ff>>\`Y{ff` R>&- {p_/̴>?" dd@$|?" dd@   " @ ` n?" dd@   @@``PR    @ ` ` p>>   (    60  `}  T Click to edit Master title style! !  0˒  `  RClick to edit Master text styles Second level Third level Fourth level Fifth level!     S  0t     \*  0 ^ `  Z*  <pGpG3c"$`?+n wNC STATE UNIVERSITYH0 G G   0  @ ASPLOS-XII  H  0޽h ? 33___PPT10i.+D=' = @B + Default Design0 zr@ (    0V P   V P*    0V    V R*  d  c $ ?  V  0 V  0 V RClick to edit Master text styles Second level Third level Fourth level Fifth level!     S  6@&V _P  V P*    6 +V _  V R*  H  0޽h ? 3380___PPT10.%.-&0 =5  (    6Є `  mUnderstanding Prediction-Based Partial Redundant Threading for Low-Overhead, High-Coverage Fault Tolerancenn  <xӄ P`      `Ԅxaxa1 ? @  VDept. of Electrical & Computer Engineering North Carolina State University Raleigh, NCWPW^  C 6ASEALcommercial" j    `لxaxa1 ?P @P  Architecture Modeling Infrastructure Group Intel Corporation Hudson, MA$NP LH  0޽h ? 33___PPT10i.Pb+D=' = @B +} 0 0 $(   r  S ]V `}  V r  S \^V ` V H  0޽h ? 33___PPT10i.C|+D=' = @B +% (0   W0< (  0~ 0 s *8iV `}  V  .0 0sV p ,$ 0 T$Full duplication 100% fault coverage%% 70 TA& ? V 90  `A[ ?"`@I  V ?0 0A?P`Y ,$@0l `  G0` ,$@0N   B0 0 ZB C0 s *DԔ0PZB D0 s *DԔP0`B E0 0DԔ  F0 <yV`?2 5fault H0 0A?G ,$@0z `  I0 f `  ,$@0N   J0 0 ZB K0 s *DԔ0PZB L0 s *DԔP0`B M0 0DԔ  N0 <V`?2 5fault O0 0A?` `i,$@ 0 Q0 0A? ,$@0 T0 0A ? ,$D0 U0 0A ?N,$D 0 V0 6o"` ,$D0 W0 6o"` ,$@ 0H 0 0޽h ? 33D TIMING(|7.9|5.9|2.6|1.2|2.5___PPT10u.޳ Zu$+@D' = @B D' = @BA?%,( < +O%,( < +D' =%(D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*G0%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*H0%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*?0%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*T0%(D4' =%(D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*V0%(D' =%(D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*I0%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*Q0%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*O0%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*U0%(D' =%(Df' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*W0%(D' =4@BBBB%(D' =1:Bhidden*o3>+B#style.visibility<*V0%(DA' =%(D' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*.0%(+8+0+.00 + )0 0(  x  c $V `}  V x  c $DV ` V H  0޽h ? 33___PPT10i.C|+D=' = @B +! *0 5 - 0 KP  (  Pz `  P f `  ,$@0N   P 0 ZB P s *DԔ0PZB P s *DԔP0`B P 0DԔ  P <ܱV`?2 5fault P 0A?` `i,$@0 P 0A? ,$@0 P BܵV `}  V   P 6A\?@ 0,$@0>l k  9Pk  ,$@0` 7P 0A^?E k ZB 8P s *DjJ  :P 0A?  ,$@0 P  `A  ?"` V ?P 0A_?b ,$D0 BP 6o"`p  ,$D 0H P 0޽h ? 336 TIMING|4.6|10.6|3.4N___PPT10..޳ Zu$+G?)D' = @B D' = @BA?%,( < +O%,( < +D' =%(D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*:P%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*9P%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<* P%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*?P%(D' =%(D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*P%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*P%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*P%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*+B#style.visibility<*BP%(+w) +0 g _ 'h (  hz `  h ` ,$@0N   h 0 ZB h s *DԔ0PZB h s *DԔP0`B h 0DԔ   h <8V`?2 5fault  h 0A?G ,$D0 h 0A? ,$D0 h B8V `}  V ^ h 6A_?b F k  h k  ` h 0A^?E k ZB h s *DjJ X h 0A?   h 0A`? ,$@0 h 0A? p ,$@0 h 0tV  @ ,$ 0 rBArbitrary duplication Non-duplicated portions lose fault coverage CC  h 0A ?@0 ,$@0 $h  `A  ?"` VX %h 0A\?@ 0l &h 6o"`p   'h BVo"`0 P ,$D 0 : H h 0޽h ? 338 TIMING|2.9|8.8|2|1.4p___PPT10P.޳ Zu$+eoD' V= @B Do' = @BA?%,( < +O%,( < +D' =%(%(Dh' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*h%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<* h%(D' =%(Dh' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*h%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*h%(D<' =%(D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*h%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<* h%(D6' =4@BBBB%()@D' =?B70, 0; .2, .5; .8, .5; 1, 0-g6B fade*<3<*hD' =0l9 BBBB*<3<*h)?D6' =4@BBBB%()@D' =?B70, 0; .2, .5; .8, .5; 1, 0-g6B fade*<3<* hD' =0l9 BBBB*<3<* h)?DA' =%(D' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*'h%(Di' =%(D' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*h%(D' =4@BBBB%(D' =1:Bhidden*o3>+B#style.visibility<*h%(D' =4@BBBB%(D' =1:Bhidden*o3>+B#style.visibility<* h%(D' =4@BBBB%(D' =1:Bhidden*o3>+B#style.visibility<*h%(D' =4@BBBB%(D' =1:Bhidden*o3>+B#style.visibility<*h%(+p+0+h0 ++0+'h0 +' ,0  ~ 0l (  l  l BV `}  V F k  l k  ` l 0A^?E k ZB l s *DjJ X l 0A?   l 0Aa?[ ,$@0 l 0A ?Y M ,$@0 l  `A  ?"` V "l 6V  @,$0 IConfident prediction of A #l 6eV \ ,$ 0 h8Freq. Case: Correct prediction (e.g., 99.9% of the time)99X $l 0A\?@ 0X %l 0A_?b  'l 6o"`p  ,$D 0z `  (l  `  ,$@0N   )l 0 ZB *l s *DԔ0PZB +l s *DԔP0`B ,l 0DԔ  -l <Xe`?2 5fault .l 0A? ,$@0 /l 0A? `,$@ 0 0l 0A ?p,$D 0H l 0޽h ? 33> TIMING"|2.8|16.6|1.9|1.8o___PPT10O.޳ Zu$+;Y D' = @B Dn' = @BA?%,( < +O%,( < +D@ ' =%(D ' =%(Dy' =4@BBB B%()))D' =-6B+checkerboard(across)*<3<*lD' =1:Bhidden*o3>+B#style.visibility<*l%(Dy' =4@BBB B%()))D' =-6B+checkerboard(across)*<3<*lD' =1:Bhidden*o3>+B#style.visibility<*l%(D{' =4@BBB B%()))D' =1:Bvisible*o3>+B#style.visibility<*l%(D' =-6B+checkerboard(across)*<3<*lD{' =4@BBB B%()))D' =1:Bvisible*o3>+B#style.visibility<*l%(D' =-6B+checkerboard(across)*<3<*lD' =A@BBB B0B%()))D' =1:Bvisible*o3>+B#style.visibility<*"l%(D' =-6B+checkerboard(across)*<3<*"lD' =%(D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*(l%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*.l%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*/l%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*0l%(D4' =%(D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*'l%(DA' =%(D' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*#l%(+p+0+"l0 ++0+#l0 +B -0   "t. (  tz `  t ` ,$@0N   t 0 ZB t s *DԔ0PZB t s *DԔP0`B t 0DԔ  t <%e`?2 5fault  t B'e `}  e X t 0Aa?[ X t 0A ?Y M  t  `A  ?"` e t 0A? i ,$@0 t 0A?P`Y ,$@0 t 0A ?0  ,$D0X t 0A\?@ 0X t 0A_?b  t 6o"` ,$@0l  t 6o"`p   !t 6.e  @ IConfident prediction of A "t 63eV \  h8Freq. Case: Correct prediction (e.g., 99.9% of the time)99H t 0޽h ? 33L $ TIMING|5.8 ___PPT10 .޳ Zu$+nwD ' = @B D ' = @BA?%,( < +O%,( < +D' =%(%(D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*t%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*t%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*t%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*t%(D' =%(Df' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*t%(D' =4@BBBB%(D' =1:Bhidden*o3>+B#style.visibility<* t%(+ .0   xD (  xz `  x ` ,$@0N   x 0 ZB x s *DԔ0PZB x s *DԔP0`B x 0DԔ  x < Ie`?2 5fault  x BJe `}  e X  x 0Aa?[ X  x 0A ?Y M  x 6T!e  @ IConfident prediction of A x 6QeV \ ,$0 h8Rare case: Incorrect prediction (e.g., 0.1% of the time)99 x  `A  ?"` e x 0A? i ,$@0 x 0A`? ,$@0 x 0A ?0 ` ,$@0 x 0A? p i ,$D0X x 0A\?@ 0X x 0A_?b l x 6o"`p   x BpZeo"`` ,$D 0 : H x 0޽h ? 33, TIMING|2.7|5.8\___PPT10<.޳ Zu$+D' ce= @B D[' = @BA?%,( < +O%,( < +D' =%(%(Du' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*x%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*x%(DT ' =%(D ' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*x%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*x%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*x%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*x%(D6' =4@BBBB%()@D' =?B70, 0; .2, .5; .8, .5; 1, 0-g6B fade*<3<*xD' =0l9 BBBB*<3<*x)?D6' =4@BBBB%()@D' =?B70, 0; .2, .5; .8, .5; 1, 0-g6B fade*<3<*xD' =0l9 BBBB*<3<*x)?DA' =%(D' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*x%(+p+0+x0 ++0+x0 + /0   |(  |  | B(je `}  e X  | 0Aa?[ X  | 0A ?Y M  |  `A  ?"` e+ | 0|se   Confident predictions are good proxies for redundant execution Predictions break thread inter-dependence Near-100% fault coverage.\X | 0A\?@ 0X | 0A_?b l | 6o"` H | 0޽h ? 33___PPT10i.޳ Zu$+D=' = @B +  00 p W1(  ~  s * eM  e  0  fA k?AA ?"`f m k e  <A g? ?"``p` g = 0e ,$0 - S(p) and T(p) are removable,8 ,  P ` J 0A?, ` L 0A?) U t8 @   Q P n M 0A?"`@ 0   O"  `A  ?"`K   el W 6o"` H  0޽h ? 33 & TIMING |15.6___PPT10.C|+H[DO' = @B D ' = @BA?%,( < +O%,( < +DA' =%(D' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*=%(+8+0+=0 +;S 10  $2 o(  ~  s *eM  e  0 # lA @? ?"`f m @ e  <A A? ?"``p` A  0e  - S(p) and T(p) are removable,  0e   j6 Such removal can shorten partial thread significantly7-7F ,    `  0A?, `   0A?) U l   6A?"` X  0A?   <A+ C??'08 C$D0  <A) E?? ` 8 E$@0  0`e* 0 ,$0 X$ But, no predictions to replace them%-%   # U,$@ 0ZB  s *DԔ0PZB  s *DԔP0`B  0DԔ   Be0P,$ 0 5fault  0A?  ,$@ 0   0A? e ,$@0 ! 0A ?@ @@ ,$D0 " 6o"``  ,$@0 # 6o"` ,$@!02 $ B8eԔ"`` ` ,$@0 : Jl 00  '0@` ,$D 0ZB % s *DԔ0 lB & <DԔ 0  ( 6o"`  ,$@0   )# p,$@0ZB * s *DԔ0PZB + s *DԔP0`B , 0DԔ  - <Ⱥe0 ,$0 5fault 1 0A? `i ,$D0 2 0A?`,$D0H  0޽h ? 33=p TIMINGT|6.6|5.3|5.2|4.3|2.1|4|2.2|0.5|0.5|0.4|0.3t=___PPT10T=.C|+lD;' = @B D;' = @BA?%,( < +O%,( < +DA' =%(D' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =%(D|' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*"%(D' =4@BBBB%(D' =1:Bhidden*o3>+B#style.visibility<*#%(D' =4@BBBB%(D' =1:Bhidden*o3>+B#style.visibility<*%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*%(DY' =%(D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*$%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*'%(Dd' =%(D ' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =A@BBBB0B%(D' =1:Bhidden*o3>+B#style.visibility<*$%(D' =%(Dh' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*1%(D' =%(Dh' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<* %(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*!%(D' =%(Df' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*(%(D' =4@BBBB%(D' =1:Bhidden*o3>+B#style.visibility<*"%(D,' =%(D' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*-%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*)%(D' =4@BBBB%(D' =1:Bhidden*o3>+B#style.visibility<*%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =A@BBBB0B%(D' =1:Bhidden*o3>+B#style.visibility<*%(D' =4@BBBB%(D' =1:Bhidden*o3>+B#style.visibility<*%(D' =4@BBBB%(D' =1:Bhidden*o3>+B#style.visibility<*%(D' =4@BBBB%(D' =1:Bhidden*o3>+B#style.visibility<*!%(D' =4@BBBB%(D' =1:Bhidden*o3>+B#style.visibility<* %(D' =4@BBBB%(D' =1:Bhidden*o3>+B#style.visibility<*1%(D' =%(Dh' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*2%(D' =%(Dh' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<* %(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*!%(D' =%(Df' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*#%(D' =4@BBBB%(D' =1:Bhidden*o3>+B#style.visibility<*(%(+P+0+0 ++0+0 ++0+0 ++0+$0 ++0+$0 ++0+-0 +  20 9(  ~  s *e `  e  0 ZA$ ?AA ?@Pp   e  0e p,$0 MCase study: PRT on Slipstream  6xe2 0  $M. Gomaa T. N. Vijaykumar ISCA 2005( @ %,     6eA p  ?Z. Purser K. Sundermoorthy E. Rotenberg MICRO 2000 ASPLOS 2000( @@ &  6e9   aN. Wang S. J. Patel DSN 2004( @ H  0޽h ? 33 & TIMING |48.9___PPT10.޳ Zu$+]%DO' = @B D ' = @BA?%,( < +O%,( < +DA' =%(D' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*%(+8+0+0 +02 30 +=  (  ~  s *xtp `@  t   Hx t8c"` >A Sl 0a  ;0a ,$D0  <Pt  > Delay Buffer A@ 0a  80a T P@0  # 0 t   68c"`P@t   68c"`P`t   68c"`P`t   68c"`Pt   68c"`Pt  68c"`Pt  68c"`P0 2T    # ` ` ZB  s *D3Ԕ  lB  <D3Ԕ    6t"` a  OBranch + Value outcomesE3z  @  0,$D02T  @ # x@ZB  s *D3Ԕy@ylB  <D3Ԕ @@  <Pt"` S @verifyE3 ' < t"` bp DSMT ProcessorC2 ( <@%t3"`  `,$D0 TVerified Architectural StateE3vl    9  ,$D0ZB  s *D3Ԕ101  <@)t3"`}  @R-stream G3ZB + s *D3Ԕ 0` lB , <D3Ԕ `  2 ) B-t3"` @`,$D0 VUnverified Architectural StateE3l @`  =@` ,$D0`B  0D3ԔQ 0Q   B2t3"`@~  @A-stream G3`B * 0D3ԔP `` rB - BD3Ԕ`` `  l 0  2` ,$D0 . <T/t3"` 0  :  / <+B#style.visibility<*=%(D4' =%(D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*9%(D4' =%(D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*;%(D4' =%(D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*%(DA' =%(D' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*(%(DA' =%(D' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*)%(D4' =%(D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*2%(D4' =%(D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*<%(D' =%(D4' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*4%(DC' =A@BBBB0B%()D' =?B70, 0; .2, .5; .8, .5; 1, 0-g6B fade*<3<*4D' =0l9 BBBB*<3<*4)?++0+(0 ++0+)0 ++0+40 ++0+40 +% 40 2;(  ~  s *Wtp `@  t   Hat8c"` >A ;F 0a   0a   <dt  > Delay Buffer A+N 0a   0a T P@0  # 0 t  68c"`P@t   68c"`P`t   68c"`P`t   68c"`Pt   68c"`Pt   68c"`Pt  68c"`P0 2T    # ` ` ZB  s *D3Ԕ  lB  <D3Ԕ    6kt"` a  OBranch + Value outcomesE3RF  @  02T  @ # x@ZB  s *D3Ԕy@ylB  <D3Ԕ @@  <Hqt"` S @verifyE32  <+B#style.visibility<*9%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*;%(DA' =%(D' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*7%(D4' =%(D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*2%(+p+0+70 ++0+;0 + 50 24(  ~  s *tp `@  t   Ht8c"` >A ;F 0a   0a   <\t  > Delay Buffer A+N 0a   0a T P@0  # 0 t  68c"`P@t   68c"`P`t   68c"`P`t   68c"`Pt   68c"`Pt   68c"`Pt  68c"`P0 2T    # ` ` ZB  s *D3Ԕ  lB  <D3Ԕ    6t"` a  OBranch + Value outcomesE3RF  @  02T  @ # x@ZB  s *D3Ԕy@ylB  <D3Ԕ @@  <t"` S @verifyE32  <t3"`  ` TVerified Architectural StateE3PF       ZB  s *D3Ԕ101  <t3"`}  @R-stream G3ZB  s *D3Ԕ 0` lB  <D3Ԕ ` RB  s *D3Ԕ0Q Q   <`t3"`@~  @A-stream G32   <t3"` @` VUnverified Architectural StateE3XB ! 0D3ԔP `` dB " <D3Ԕ` `` 6F ? g  # ? g T   $# ? & t % 68c"`$  & 6t"`t  JSlipstream ComponentsA2T  0 '  '#  g ZB (B s *D3Ԕ 0 lB ) <D3Ԕ ' RF @@  *  2T u@  +# @ ZB , s *D3Ԕ{@{lB - <D3Ԕu@ @ . <t"`d@  @removeE3 0 <t"` bp DSMT ProcessorC 1 <tGH  P TPredictions act as proxies0@ @( 2 <A ;F 0a   0a   <x  > Delay Buffer A+N 0a   0a T P@0  # 0 t  68c"`P@t   68c"`P`t   68c"`P`t   68c"`Pt   68c"`Pt   68c"`Pt  68c"`P0 2T    # ` ` ZB  s *D3Ԕ  lB  <D3Ԕ    6 x"` a  OBranch + Value outcomesE3RF  @  02T  @ # x@ZB  s *D3Ԕy@ylB  <D3Ԕ @@  <x"` S @verifyE32  <Lx3"`  ` TVerified Architectural StateE3PF       ZB  s *D3Ԕ101  <x3"`}  @R-stream G3ZB  s *D3Ԕ 0` lB  <D3Ԕ ` XB  0D3Ԕ0Q Q    Bxx3"`@~  @A-stream G32 ! Bp#x3"` @` VUnverified Architectural StateE3^B " 6D3ԔP `` jB # BD3Ԕ` `` 6F ? g  $ ? g T   %# ? & t & 68c"`$  ' 64)x"`t  JSlipstream ComponentsA2T  0 '  (#  g ZB )B s *D3Ԕ 0 lB * <D3Ԕ ' RF @@  +  2T u@  ,# @ ZB - s *D3Ԕ{@{lB . <D3Ԕu@ @ / </x"`d@  @removeE3M 1 <x3xG_HG<  ` m Confident branches Confident dead writes Confident silent writes Slices whose leaves are any of the aboveXn1@  EEAKE 2 <;x"` bp DSMT ProcessorC 3 <?xGH  P TPredictions act as proxies0@ @( 5 < DxGaH   R Detect predictable instructions Predict based on repeated detection (confidence)N!1@ 21 !E2E 6 < KxP 7  =monitor3H  0޽h ??0135 33___PPT10i.޳ Zu$+D=' = @B +<# 0 U M PQ (  ~  s * Wx  x  % <AB ??"`  8 $D 0 & <A ??`0 8 $D0 ' <A* ??"`{  8 $@ 0 * <Yx p  ,$0 b$Correct Branch Prediction (Taken)"% 7 <[xQ~ ^ ?Main (R-stream) 8 <h^xQ7 ^ BPartial (A-stream) : <A 0 ??`0 8 0 $@0 @ <gxP j p ,$ 0 ? (Not Taken) 3R B s *A P    F#  ,$@0ZB G s *DԔ0PZB H s *DԔP0`B I 0DԔ l p Mp,$@0ZB J s *DԔpZB KB s *DԔp`B L 0DԔ@p N <PTxpO,$0 5faultf Q 0A9?"`? R H  0޽h ? 33: TIMING|11.9|7.9|4.6|2E___PPT10%.޳ Zu$+ūmDQ' = @B D ' = @BA?%,( < +O%,( < +D' =%(Da' =%(Dy' =4@BBB B%()))D' =-6B+checkerboard(across)*<3<*QD' =1:Bhidden*o3>+B#style.visibility<*Q%(D' =A@BBB B0B%()))D' =1:Bvisible*o3>+B#style.visibility<**%(D' =-6B+checkerboard(across)*<3<**Dq' =%(D' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*N%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*M%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*:%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*F%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*&%(DA' =%(D' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*@%(D' =%(Dh' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*'%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*%%(++0+*0 ++0+@0 ++0+N0 +u 0 S K  (  ~  s *Xx  x x  <A  ??`0     <$xQ~ ^ ?Main (R-stream)  <xQ7 ^ BPartial (A-stream)x   <A  ??`0      <$xP j p  ? (Not Taken) 3R   s *A P L   #  ZB  s *DԔ0PZB  s *DԔP0`B  0DԔ zF p  pZB  s *DԔpZB B s *DԔp`B  0DԔ@p  <`xpO 5fault  <x)V p  h*Incorrect Branch Prediction (Not Taken)"+ 3  0A5?0 0 ,$@0  0A ? P ,$@0H  0޽h ? 33 $ TIMING|5.7 ___PPT10v .޳ Zu$++iDJ ' = @B D ' = @BA?%,( < +O%,( < +D<' =%(D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*%(D6' =4@BBBB%()@D' =?B70, 0; .2, .5; .8, .5; 1, 0-g6B fade*<3<*D' =0l9 BBBB*<3<*)?D6' =4@BBBB%()@D' =?B70, 0; .2, .5; .8, .5; 1, 0-g6B fade*<3<*D' =0l9 BBBB*<3<*)?+- 0   %G (    <A  ??`0 8  $D0  <hxQ~ ^ ?Main (R-stream)  <̴xQ7 ^ BPartial (A-stream)   <A  ??`0 8  $@0   #  ,$@0ZB  s *DԔ0PZB  s *DԔP0`B  0DԔ z p  p,$@0ZB  s *DԔpZB B s *DԔp`B  0DԔ@p  <xpO,$0 5faultf  0A?"` S   0Aj? @ ,$D 0  0tx@q ,$0 WCorrect Prediction (Dead)"f # 0A4?"`? R  % HLx   x H  0޽h ? 336 TIMING|11.9|9.6|6.2___PPT10.޳ Zu$+K~D' = @B D' = @BA?%,( < +O%,( < +DY' =%(D' =%(DI' =4@BBB B%(D' =-6B+checkerboard(across)*<3<*#D' =1:Bhidden*o3>+B#style.visibility<*#%(DX' =A@BBB B0B%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =-6B+checkerboard(across)*<3<*Dq' =%(D' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<* %(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*%(D4' =%(D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*%(+p+0+0 ++0+0 +# 0  | ( (  x  <A  ??`0     <pxQ~ ^ ?Main (R-stream)  <xQ7 ^ BPartial (A-stream)x  <A  ??`0   L   #  ZB   s *DԔ0PZB   s *DԔP0`B   0DԔ zF p   pZB   s *DԔpZB B s *DԔp`B  0DԔ@p  <xpO 5faultf  0A?"` S   <xjD  EIncorrect Prediction  <x (p  > (Not Dead)  3  s *A&  @,$@0  0xp  ,$0 5?$3  0A.?p @ ,$D0  0Ai?; ,$@0   0A5? 0 0 ,$@ 0 ! 0A ?  ,$@0 # Hxx   x  ( s *A/"` J :,$D0H  0޽h ? 338 TIMING|6|2.5|5.1|4.2___PPT10.޳ Zu$+DH' x= @B D' = @BA?%,( < +O%,( < +D' =%(Dh' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*(%(D' =%(Du' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*%(DY' =%(D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =4@BBBB%()?)?Dq' =.97 BBBBBKM 0.00434 0.07264 L 0.00434 0.23919 *3>*B ppt_xB ppt_y=@0BBAApBBBY=<*D<' =%(D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*!%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<* %(D6' =4@BBBB%()D' =?B70, 0; .2, .5; .8, .5; 1, 0-g6B fade*<3<* D' =0l9 BBBB*<3<* )?D6' =4@BBBB%()D' =?B70, 0; .2, .5; .8, .5; 1, 0-g6B fade*<3<*!D' =0l9 BBBB*<3<*!)?+8+0+0 +  0 `X(0 q(  ( ( < Q~ ^ ?Main (R-stream) ( <(Q7 ^ BPartial (A-stream) ( HL    f ( 0A,?"` S  1( Ho"`@ 0  872f F( 0A1?"`? R  G( Bo"`@ 0` 0  872X O( 0A=? @ uf P( 0AF?"` sdB R( <DԔB 2 dB S( <DԔC 3 dB U( <DԔ0  dB V( <DԔ*   W( < @  672 X( < $ 0 @  672H ( 0޽h ? 33___PPT10i.޳ Zu$+D=' = @B +  !0 g(    <1Q~ ^ ?Main (R-stream)  <6Q7 ^ BPartial (A-stream)  H :    f  0A,?"` S   B;o"`@ 0  73f   0A1?"`? R    B?o"`@ 0` 0  73X   0A=? @ uf   0AF?"` sdB   <DԔB 2 dB  <DԔC 3 dB  <DԔ0  dB  <DԔ*    <E u @  53  <I @  53H  0޽h ? 33___PPT10i.޳ Zu$+D=' = @B +< #0 @"(G(    <`WQ~ ^ ?Main (R-stream)  <\Q7 ^ BPartial (A-stream)  H|_    f  0A,?"` S   B`o"`@ 0  7Vf   0A1?"`? R    Beo"`@ 0` 0  @ X   0A=? @ uf   0AF?"` sdB   <DԔB 2 dB  <DԔC 3 dB  <DԔ0  dB  <DԔ*    <j @  5V  <x) @  5V  0q@ `, ,$0 YCorrect Prediction (Silent)"    #  ,$D0ZB  s *DԔ0PZB  s *DԔP0`B  0DԔ z p  p,$@0ZB  s *DԔpZB B s *DԔp`B  0DԔ@p  <,y_,$0 5fault ! <} 7 ,$ 0 5X3 " <H PY`  5V # <  PYW ,$ 0 5X3 $ 0A.? {,$@ 0 % 0A.? ; ,$@ 0 & 0A.?  K,$D0 ' <AB / ??"` 08 / $D0 ( <A* 0 ??"` )8 0 $@0H  0޽h ? 33(N TIMING2|5.8|10.1|3.9|1.3|1.3|5.7O(___PPT10/(.޳ Zu$+D&' = @B Dn&' = @BA?%,( < +O%,( < +D ' =%(D ' =%(DI' =4@BBB B%(D' =-6B+checkerboard(across)*<3<* D' =1:Bhidden*o3>+B#style.visibility<* %(DV' =A@BBB B0B%(D' =-6B+checkerboard(across)*<3<*D' =1:Bhidden*o3>+B#style.visibility<*%(DI' =4@BBB B%(D' =-6B+checkerboard(across)*<3<*D' =1:Bhidden*o3>+B#style.visibility<*%(DX' =A@BBB B0B%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =-6B+checkerboard(across)*<3<*DY' =%(D' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*%(D~' =%(D&' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*$%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*%%(DV' =A@BBB B0B%(D' =-6B+checkerboard(across)*<3<*D' =1:Bhidden*o3>+B#style.visibility<*%(DX' =A@BBB B0B%(D' =1:Bvisible*o3>+B#style.visibility<*!%(D' =-6B+checkerboard(across)*<3<*!D' =%(DR' =%(DX' =A@BBB B0B%(D' =1:Bvisible*o3>+B#style.visibility<*#%(D' =-6B+checkerboard(across)*<3<*#DI' =4@BBB B%(D' =-6B+checkerboard(across)*<3<*!D' =1:Bhidden*o3>+B#style.visibility<*!%(DI' =4@BBB B%(D' =-6B+checkerboard(across)*<3<*"D' =1:Bhidden*o3>+B#style.visibility<*"%(D4' =%(D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*&%(D' =%(Dh' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*(%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*'%(+P+0+0 ++0+0 ++0+0 ++0+0 ++0+!0 ++0+#0 + %0 |&(    <XQ~ ^ ?Main (R-stream)  <ܯQ7 ^ BPartial (A-stream)  Hd    f  0A,?"` S   Bo"`@ 0  ;stale3  Bo"`@ 0` 0  @ X   0A=? @ uf   0AF?"` sdB   <DԔB 2 dB   <DԔ0  dB  <DԔ*    0@ `,  `"Incorrect Prediction (Not Silent)"# 3L   #  ZB  s *DԔ0PZB  s *DԔP0`B  0DԔ zF p  pZB  s *DԔpZB B s *DԔp`B  0DԔ@p  <`Ȅ_ 5fault  <8̄ OXW  5X3X  0A.? {X  0A.? ; X   0A.?  K # 0A5? 0 0 %,$@0 $ 0A ? ,$@0X % 0A.? @ KH  0޽h ? 33 $ TIMING|8.5 ___PPT10v .޳ Zu$+!ĤDJ ' = @B D ' = @BA?%,( < +O%,( < +D<' =%(D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*$%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*#%(D6' =4@BBBB%()D' =?B70, 0; .2, .5; .8, .5; 1, 0-g6B fade*<3<*#D' =0l9 BBBB*<3<*#)?D6' =4@BBBB%()D' =?B70, 0; .2, .5; .8, .5; 1, 0-g6B fade*<3<*$D' =0l9 BBBB*<3<*$)?+ 0   x(  x~ x s *ք` `0    x c $ބP  ` <$0   x 0X 0 ` ,$0 {)Hence, non-duplicated instr. well covered** x 0 p 0@,$0 h4Slipstream has high fault detection coverage (99.9%)55$  x 0  `,$0 .Prior research: Only duplicated instr. covered/  H x 0޽h ? 330< TIMING |18.6|5.6|21|3.8___PPT10.޳ Zu$+CD' = @B Ds' = @BA?%,( < +O%,( < +DA' =%(D' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<* x%(D ' =%(D' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*x.%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*x.%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*x%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*x%(DA' =%(D' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*x%(D' =%(D' =%(DT' =A@BBB B0B%(D' =1:Bvisible*o3>+B#style.visibility<*x%(D' =-6B'blinds(horizontal)*<3<*x++0+x0 ++0+x0 ++0+x0 ++0+ x0 + 70  t<(  t~ t s *   ~ t 0   ~Detection Coverage Represents ability to detect faults Slipstream: 99.9% of instr. Recovery Coverage Ability to rollback to  golden state on fault detection Slipstream s recovery coverage?b@YSXLoH t 0޽h ? 33___PPT10i.C|+D=' = @B +  80   *c (  ~  s *'M    0 # lA ? ?"`r m    <A ? ?"`d ` l   [@,$D0ZB  s *DԔ0PZB  s *DԔP0`B  0DԔ   <\C"?,$0 5fault  <.C"?0 pAw ,$0 8detected   < 2C"? Z ,$0 Z*Flawed Rollback (Conventional Slipstream)++  <,7C"?,$0 @Correct RollbackB  6D| @ ,$D0B  0D|@,$D 0 # 0A? ,$@0X ' 0A?D X * 0A?& ` H  0޽h ? 33> TIMING"|5.8|3.5|4.8|14.1___PPT10f.C|+vڱDZ' = @B D' = @BA?%,( < +O%,( < +D' =%(Du' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =%(Du' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*#%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =%(Du' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =%(Du' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*%(++0+0 ++0+0 ++0+0 ++0+0 +f 0 PH +O(     0OC"?` ` DReorder Buffer (ROB) 8    0 t  6jJ"` t  6jJ"` pt  6jJ"`p ` t  6jJ"`` P t  6jJ"`P @ t  6jJ"`@ 0 t  6jJ"`0 t  6jJ"`    ## ~` P ,$@0ZB $ s *DԔ0PZB % s *DԔP0`B & 0DԔ  ' <PXC"?Y} ,$0 5fault X8   =&  `B  0D|` `  ( <t\  4headXB ) 0D| P P N  * <l` \  Ecommit to arch. state , B\f3"` ,$@0 : X8 Oz HOz`B " 0D| . <iOz 4tail 30  fA X?AA ?"`  X  5 BAb J? ?"`  J 6 BAe P? ?"` 8 P$@0 7 BAc R? ?"` 8 R$@0 8 BAf U? ?"`j ~8 U$@0l  T  ;` ,$@0h / s *A"`@R  9 BAe V? ?"` @MT  V` : 0A?p50 8l :@   F ,$D0ZB C s *DjJ@@  ZB E s *DjJ:A   I <dq3 $  ,$0 5Flush  J <u# $ ,$0 7Restart  L 0 z   ,$0 IArch. State Corrupted3 M <}0a MBase Slipstream Recovery2 N B3o"`` p,$D#0 >3  O <C"?`@,$0 8detected H  0޽h ? 33LV TIMING:|10|2.9|5.5|1|1.5|2.7|2.7|5.2L___PPT10bL.C|+WD^I' = @B DI' = @BA?%,( < +O%,( < +DY' =%(D' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*'%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*#%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*F%(Df' =%(D' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*,%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*;%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*O%(D' =%(Dq' =%(D' =A@BBBB0B%(D' =1:Bhidden*o3>+B#style.visibility<*'%(D' =4@BBBB%(D' =1:Bhidden*o3>+B#style.visibility<*#%(D ' =%(D; ' =%(D' =4@BBBB%()?)?DP' =.7 BBBBBQM -0.00399 -0.0384 L -0.00399 -0.07171 *3>*B ppt_xB ppt_y=0BBAA<*=D' =4@BB*BB%()?)?D&' =.7 BBBBB+M 0 0 L 0 0.3331 E*3>*B ppt_xB ppt_y=0BB<*3DE' =4@BBB B%(D' =-6B'blinds(horizontal)*<3<*3D' =1:Bhidden*o3>+B#style.visibility<*3%(D' =4@BB*BB%()?)?D&' =.7 BBBBB+M 0 0 L 0 0.3331 E*3>*B ppt_xB ppt_y=0BB<*FDE' =4@BBB B%(D' =-6B'blinds(horizontal)*<3<*FD' =1:Bhidden*o3>+B#style.visibility<*F%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*L%(D' =%(D' =%(D%' =4@BBBB%()?)?Dy' =.A7 BBBBBSM -0.00399 -0.07171 L -0.00399 -0.12653 *3>*B ppt_xB ppt_y=@0BBAApBBB<*=D' =4@BB*BB%()?)?D&' =.7 BBBBB+M 0 0 L 0 0.3331 E*3>*B ppt_xB ppt_y=0BB<*5DE' =4@BBB B%(D' =-6B'blinds(horizontal)*<3<*5D' =1:Bhidden*o3>+B#style.visibility<*5%(D`' =%(D' =%(D+' =4@BBBB%()?)?D' =.G7 BBBBBYM 1.38889E-6 1.42031E-6 L -0.00122 0.17465 *3>*B ppt_xB ppt_y=@0BBAApBBa 6B=<*HDE' =4@BBB B%(D' =-6B'blinds(horizontal)*<3<*8D' =1:Bhidden*o3>+B#style.visibility<*8%(DE' =4@BBB B%(D' =-6B'blinds(horizontal)*<3<*7D' =1:Bhidden*o3>+B#style.visibility<*7%(DE' =4@BBB B%(D' =-6B'blinds(horizontal)*<3<*6D' =1:Bhidden*o3>+B#style.visibility<*6%(DR' =A@BBB B0B%(D' =-6B'blinds(horizontal)*<3<*,D' =1:Bhidden*o3>+B#style.visibility<*,%(DE' =4@BBB B%(D' =-6B'blinds(horizontal)*<3<*;D' =1:Bhidden*o3>+B#style.visibility<*;%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*I%(DV' =A@BBB B0B%(D' =-6B+checkerboard(across)*<3<*OD' =1:Bhidden*o3>+B#style.visibility<*O%(D' =%(D' =%(D ' =4@BBBB%()?)?D`' =.(7 BBBBBaM -1.38889E-6 0.15545 L -1.38889E-6 3.70113E-7 *3>*B ppt_xB ppt_y=0BBAA<*HDw' =4@BBB B%()))D' =1:Bvisible*o3>+B#style.visibility<*8%(D' =-6B'blinds(horizontal)*<3<*8Dw' =4@BBB B%()))D' =1:Bvisible*o3>+B#style.visibility<*7%(D' =-6B'blinds(horizontal)*<3<*7Dw' =4@BBB B%()))D' =1:Bvisible*o3>+B#style.visibility<*6%(D' =-6B'blinds(horizontal)*<3<*6D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*J%(D' =A@BBBB0B%(D' =1:Bhidden*o3>+B#style.visibility<*I%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*L%(D' =%(DG' =%(DV' =A@BBB B0B%(D' =-6B+checkerboard(across)*<3<*JD' =1:Bhidden*o3>+B#style.visibility<*J%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*N%(++0+'0 ++0+'0 ++0+,0 ++0+,0 ++0+I0 ++0+I0 ++0+J0 ++0+J0 ++0+L0 ++0+L0 ++0+N0 ++0+O0 ++0+O0 +L 90 ld )4(    0$C"?` ` DReorder Buffer (ROB).F     0 t  6jJ"` t  6jJ"` pt  6jJ"`p ` t  6jJ"`` P t  6jJ"`P @ t   6jJ"`@ 0 t   6jJ"`0 t   6jJ"` fF    &  `B  0D|` `   <H  4headXB  0D| P P N   < \  Ecommit to arch. state  <Ï3"` ,$@0 : fF Oz  Oz`B  0D|  <0ǏOz 4tail 0 # lA d? ?"` H d$D0   BAb e? ?"` 8 e$@0  BAe f? ?"` 8 f$@0  BAc g? ?"` 8 g$@0  BAf h? ?"`j ~8 h$@0z  T   ` ,$@0h   s *A"`@R  ! BAe i? ?"` @MT  i` " 0A?p50  & <Ώ ,$0 AFlush to ROB head  ' <ӏ  ,$0 7Restart L   *# ~` P ZB + s *DԔ0PZB , s *DԔP0`B - 0DԔ  . <؏C"?Y}  5fault F :@   /  ZB 0 s *DjJ@@  ZB 1 s *DjJ:A   2 0 ݏ0 T REnhancement: ROB-head Recovery 4 <C"?`@,$0 8detected H  0޽h ? 33 54 TIMING|6.4|7.4|2.44___PPT104.C|+1D2' = @B Dx2' = @BA?%,( < +O%,( < +Df' =%(D' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*4%(D' =%(DW' =%(D' =4@BBBB%()?)?DL' =.7 BBBBBMM -0.00122 0.0303 L -0.00122 0.30789 *3>*B ppt_xB ppt_y=0BBAA<*DE' =4@BBB B%(D' =-6B'blinds(horizontal)*<3<*D' =1:Bhidden*o3>+B#style.visibility<*%(DE' =4@BBB B%(D' =-6B'blinds(horizontal)*<3<*D' =1:Bhidden*o3>+B#style.visibility<*%(DE' =4@BBB B%(D' =-6B'blinds(horizontal)*<3<*D' =1:Bhidden*o3>+B#style.visibility<*%(DE' =4@BBB B%(D' =-6B'blinds(horizontal)*<3<*D' =1:Bhidden*o3>+B#style.visibility<*%(DE' =4@BBB B%(D' =-6B'blinds(horizontal)*<3<*D' =1:Bhidden*o3>+B#style.visibility<*%(DE' =4@BBB B%(D' =-6B'blinds(horizontal)*<3<*/D' =1:Bhidden*o3>+B#style.visibility<*/%(D' =A@BBBB0B%(D' =1:Bhidden*o3>+B#style.visibility<*%(D' =4@BBBB%(D' =1:Bhidden*o3>+B#style.visibility<*%(D' =4@BBBB%(D' =1:Bhidden*o3>+B#style.visibility<**%(D' =A@BBBB0B%(D' =1:Bhidden*o3>+B#style.visibility<*.%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*&%(DV' =A@BBB B0B%(D' =-6B+checkerboard(across)*<3<*4D' =1:Bhidden*o3>+B#style.visibility<*4%(D' =%(D2' =%(D' =A@BBBB0B%(D' =1:Bhidden*o3>+B#style.visibility<*&%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*'%(D' =4@BBBB%()?)?Ds' =.;7 BBBBBMM -0.00122 0.30789 L -0.00122 0.0192 *3>*B ppt_xB ppt_y=@0BBAApBBB<*DG' =4@BBB B%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =-6B'blinds(horizontal)*<3<*DG' =4@BBB B%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =-6B'blinds(horizontal)*<3<*DG' =4@BBB B%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =-6B'blinds(horizontal)*<3<*DG' =4@BBB B%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =-6B'blinds(horizontal)*<3<*DG' =4@BBB B%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =-6B'blinds(horizontal)*<3<*++0+0 ++0+0 ++0+&0 ++0+&0 ++0+'0 ++0+.0 ++0+40 ++0+40 +N :0 0(+-(    0C"?` ` DReorder Buffer (ROB).F     0 t  6jJ"` t  6jJ"` pt  6jJ"`p ` t  6jJ"`` P t  6jJ"`P @ t   6jJ"`@ 0 t   6jJ"`0 t   6jJ"` fF     &  `B   0D|` `   <   4headXB  0D| P P N   <H \  Ecommit to arch. state  <3"` ,$@ 0 : fF Oz  Oz`B  0D|  <Oz 4tail 0 # lA  ? ?"`     BAb  ? ?"`     BAe  ? ?"`     BAc  ? ?"`     BAf  ? ?"`j ~  z  T   ` ,$@ 0h  s *A"`@R   BAe  ? ?"` @MT   `  0A?p50   <h  @ ,$0 AFlush to ROB head L    # ~` P ZB ! s *DԔ0PZB " s *DԔP0`B # 0DԔ  $ <&C"?Y}  5fault F :@   %  ZB & s *DjJ@@  ZB ' s *DjJ:A   ( 0+0 T REnhancement: ROB-head Recovery * </C"?`@,$ 0 8detected  + 03 0 0 ,$ 0 IArch. State Corrupted3 , 060 ` ],$0 Limited rollback distance: R-stream retires quickly  accelerated by leading A-stream.;=2 - B93o"`  ,$D0 >3 H  0޽h ? 33X5D TIMING(|2.2|3.9|2.2|6.3|3.95___PPT104.C|+D2' V= @B D{2' = @BA?%,( < +O%,( < +D' =%(D' =%(D' =4@BB*BB%()?)?D(' =.7 BBBBB-M 0 0 L 0 0.33333 E*3>*B ppt_xB ppt_y=0BB<*D' =4@BB*BB%()?)?D(' =.7 BBBBB-M 0 0 L 0 0.33333 E*3>*B ppt_xB ppt_y=0BB<*%DI' =4@BBB B%(D' =-6B+checkerboard(across)*<3<*D' =1:Bhidden*o3>+B#style.visibility<*%(DI' =4@BBB B%(D' =-6B+checkerboard(across)*<3<*%D' =1:Bhidden*o3>+B#style.visibility<*%%(D' =4@BBBB%(D' =1:Bhidden*o3>+B#style.visibility<* %(D' =A@BBBB0B%(D' =1:Bhidden*o3>+B#style.visibility<*$%(D#' =4@BBBB%()?)?Dw' =.?7 BBBBBQM -0.00087 -0.0155 L -0.00087 -0.05995 *3>*B ppt_xB ppt_y=@0BBAApBBBa <* D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*+%(Df' =%(D' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<**%(D' =%(Dk' =%(D-' =4@BBBB%()?)?D' =.I7 BBBBB[M 1.38889E-6 -2.59259E-6 L -0.00122 0.24144 *3>*B ppt_xB ppt_y=@0BBAApBBa 6B=<*DE' =4@BBB B%(D' =-6B'blinds(horizontal)*<3<*D' =1:Bhidden*o3>+B#style.visibility<*%(DE' =4@BBB B%(D' =-6B'blinds(horizontal)*<3<*D' =1:Bhidden*o3>+B#style.visibility<*%(DE' =4@BBB B%(D' =-6B'blinds(horizontal)*<3<*D' =1:Bhidden*o3>+B#style.visibility<*%(DE' =4@BBB B%(D' =-6B'blinds(horizontal)*<3<*D' =1:Bhidden*o3>+B#style.visibility<*%(DE' =4@BBB B%(D' =-6B'blinds(horizontal)*<3<*D' =1:Bhidden*o3>+B#style.visibility<*%(DE' =4@BBB B%(D' =-6B'blinds(horizontal)*<3<*%D' =1:Bhidden*o3>+B#style.visibility<*%%(D' =A@BBBB0B%(D' =1:Bhidden*o3>+B#style.visibility<*%(D' =4@BBBB%(D' =1:Bhidden*o3>+B#style.visibility<*%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*%(DV' =A@BBB B0B%(D' =-6B+checkerboard(across)*<3<**D' =1:Bhidden*o3>+B#style.visibility<**%(DA' =%(D' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*-%(DA' =%(D' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*,%(++0+0 ++0+0 ++0+0 ++0+$0 ++0+*0 ++0+*0 ++0++0 ++0+,0 ++0+-0 +\ ;0 f^ -9(    00jC"?` ` DReorder Buffer (ROB).F     0 t  6jJ"` t  6jJ"` pt  6jJ"`p ` t  6jJ"`` P t  6jJ"`P @ t   6jJ"`@ 0 t   6jJ"`0 t   6jJ"` fF     &  `B   0D|` `   <pq  4headXB  0D| P P N   <Hu \  Ecommit to arch. state  <${3"` L,$@0 : fF Oz  O `B  0D|  <XyOz 4tail 0 # lA j? ?"` H j$@ 0   BAb k? ?"` 8 k$D 0  BAe l? ?"`j ~8 l$@ 0  BAc m? ?"`X l8 m$D0  BAf n? ?"`6 J8 n$@0z  T   , p,$@0h  s *A"`@R   BAe o? ?"` @MT  o`  0A?p50  ) 0<0 a Y%Enhancement: ROB occupancy management&& + BAT r? ?"` 8 r$D0 , BAd w? ?"` 8 w$@08   /0PZB - s *Do@ @ZB . s *Do00RB 0 s *D0RB 1 s *DoB 2 s *D0,$@0 3 <@  ThresholdB 4 s *D0",$@0B 5 s *D0,$@ 0 6 0ԙ 0 ,$0 j*Delay in retirement, hence performance hit++B 7 NDԔ2 ,$@0 8 < z,$0 KIncreased rollback distance 9 <C"? @g,$0 8detected H  0޽h ? 33AR TIMING6|7|10.2|8.4|2.7|3.5|1.6|6.8yA___PPT10YA.C|+I.DM@' = @B D@' = @BA?%,( < +O%,( < +DX ' =%(D ' =%(D' =4@BBBB%()?)?Db' =.*7 BBBBBcM -4.72222E-6 1.89683E-6 L -4.72222E-6 -0.08883 *3>*B ppt_xB ppt_y=0BBAA<*Du' =4@BBB B%()))D' =-6B'blinds(horizontal)*<3<*0D' =1:Bhidden*o3>+B#style.visibility<*0%(Dw' =4@BBB B%()))D' =1:Bvisible*o3>+B#style.visibility<*2%(D' =-6B'blinds(horizontal)*<3<*2DG' =4@BBB B%(D' =1:Bvisible*o3>+B#style.visibility<*,%(D' =-6B'blinds(horizontal)*<3<*,DG' =4@BBB B%(D' =1:Bvisible*o3>+B#style.visibility<*+%(D' =-6B'blinds(horizontal)*<3<*+D ' =%(DO ' =%(D ' =4@BBBB%()?)?D^' =.&7 BBBBB_M -4.72222E-6 -0.08882 L -4.72222E-6 -0.22206 *3>*B ppt_xB ppt_y=0BBAA<*DG' =4@BBB B%(D' =1:Bvisible*o3>+B#style.visibility<*4%(D' =-6B'blinds(horizontal)*<3<*4DG' =4@BBB B%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =-6B'blinds(horizontal)*<3<*DG' =4@BBB B%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =-6B'blinds(horizontal)*<3<*D ' =%(Dl ' =%(D'' =4@BBBB%()?)?D{' =.C7 BBBBBUM 1.38889E-6 -0.22207 L -0.00122 -0.3486 *3>*B ppt_xB ppt_y=@0BBAApBBa 6B`΁<*DG' =4@BBB B%(D' =1:Bvisible*o3>+B#style.visibility<*5%(D' =-6B'blinds(horizontal)*<3<*5DG' =4@BBB B%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =-6B'blinds(horizontal)*<3<*DG' =4@BBB B%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =-6B'blinds(horizontal)*<3<*D ' =%(DR ' =%(D7' =4@BBBB%()?)?D' =.S7 BBBBBeM -3.33333E-6 -1.91765E-6 L -3.33333E-6 -0.05991 *3>*B ppt_xB ppt_y=@0BBAApBBBX<* D' =4@BB*BB%()?)?D&' =.7 BBBBB+M 0 0 L 0 0.3331 E*3>*B ppt_xB ppt_y=0BB<*,DE' =4@BBB B%(D' =-6B'blinds(horizontal)*<3<*,D' =1:Bhidden*o3>+B#style.visibility<*,%(DE' =4@BBB B%(D' =-6B'blinds(horizontal)*<3<*5D' =1:Bhidden*o3>+B#style.visibility<*5%(DG' =4@BBB B%(D' =1:Bvisible*o3>+B#style.visibility<*4%(D' =-6B'blinds(horizontal)*<3<*4D' =%(D~' =%(D' =4@BBBB%()?)?DP' =.7 BBBBBQM -0.00122 -0.3486 L -0.00122 -0.41522 *3>*B ppt_xB ppt_y=0BBAA<*DG' =4@BBB B%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =-6B'blinds(horizontal)*<3<*D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*5%(DG' =4@BBB B%(D' =1:Bvisible*o3>+B#style.visibility<*5%(D' =-6B'blinds(horizontal)*<3<*5D' =%(D3' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*7%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*8%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*9%(DA' =%(D' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*6%(++0+0 ++0+60 ++0+80 ++0+90 + O <0  3=j(    0$ǜC"?` ` DReorder Buffer (ROB).F     0 t  6jJ"` t  6jJ"` pt  6jJ"`p ` t  6jJ"`` P t  6jJ"`P @ t   6jJ"`@ 0 t   6jJ"`0 t   6jJ"` fF     &  `B   0D|` `   <Μ  4headXB  0D| P P N   <8Ҝ \  Ecommit to arch. state  <ל3"` ,$@ 0 : fF Oz  Oz`B  0D|  < ۜOz 4tail 0 # lA ? ?"`     BAb ? ?"`    BAe ? ?"`    BAc ? ?"`    BAf ? ?"`j ~ z  T   ` ,$D 0h  s *A"`@R   BAe ? ?"` @MT  `  0A?p50    !# ~` P ,$@0ZB " s *DԔ0PZB # s *DԔP0`B $ 0DԔ  % <C"?Y} ,$0 5fault Fz :@   &  ,$D0ZB ' s *DjJ@@  ZB ( s *DjJ:A   ) 00 T OEnhancement: History Buffer8   @  4L 0 |z 1 <jJ"`  8 z 2 <jJ"` 8  z 3 <jJ"`  @  5 0C"?` `  >History BufferfF   6 `B 7 0D|` `  8 <L  4headfF Oz 9 p`B : 0D| ; <Oz 4tail < < `|G ,$0 < Undo changes  = 0~`PP,$0 7Performance friendly: R-stream mispredictions are rare88  H  0޽h ? 332V TIMING:|16.6|2.2|6.3|2.8|2.6|5.4|4.9h2___PPT10H2.C|+WD0' = @B D0' = @BA?%,( < +O%,( < +DY' =%(D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*!%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*%%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*&%(D ' =%(DA ' =%(D' =4@BB*BB%()?)?D&' =.7 BBBBB+M 0 0 L 0 0.3331 E*3>*B ppt_xB ppt_y=0BB<*D' =4@BB*BB%()?)?D&' =.7 BBBBB+M 0 0 L 0 0.3331 E*3>*B ppt_xB ppt_y=0BB<*&D' =A@BBBB0B%(D' =1:Bhidden*o3>+B#style.visibility<*%%(D' =4@BBBB%(D' =1:Bhidden*o3>+B#style.visibility<*!%(D' =4@BBBB%()?)?DR' =.7 BBBBBSM -0.00399 -0.03771 L -0.00399 -0.07102 *3>*B ppt_xB ppt_y=0BBAA<* D' =4@BBBB%()?)?Db' =.*7 BBBBBcM -5.55556E-6 1.89683E-6 L -5.55556E-6 -0.02221 *3>*B ppt_xB ppt_y=0BBAA<*9D' =%(Du' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =%(D' =%(DE' =4@BBB B%(D' =-6B'blinds(horizontal)*<3<*D' =1:Bhidden*o3>+B#style.visibility<*%(DE' =4@BBB B%(D' =-6B'blinds(horizontal)*<3<*D' =1:Bhidden*o3>+B#style.visibility<*%(DE' =4@BBB B%(D' =-6B'blinds(horizontal)*<3<*D' =1:Bhidden*o3>+B#style.visibility<*%(DE' =4@BBB B%(D' =-6B'blinds(horizontal)*<3<*D' =1:Bhidden*o3>+B#style.visibility<*%(D' =A@BBBB0B%(D' =1:Bhidden*o3>+B#style.visibility<*%(D' =4@BBBB%(D' =1:Bhidden*o3>+B#style.visibility<*%(D' =4@BBBB%()?)?DL' =.7 BBBBBMM -0.00955 0.0303 L -0.00955 0.23016 *3>*B ppt_xB ppt_y=0BBAA<*DA' =%(D' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*<%(DP' =%(D' =%(D' =4@BBBB%()?)?DZ' =."7 BBBBB[M -5.55556E-6 -0.02221 L -5.55556E-6 0.0111 *3>*B ppt_xB ppt_y=0BBAA<*9DE' =4@BBB B%(D' =-6B'blinds(horizontal)*<3<*&D' =1:Bhidden*o3>+B#style.visibility<*&%(DE' =4@BBB B%(D' =-6B'blinds(horizontal)*<3<*D' =1:Bhidden*o3>+B#style.visibility<*%(DA' =%(D' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*=%(+P+0+0 ++0+0 ++0+%0 ++0+%0 ++0+<0 ++0+=0 +5 &0 L D , (    <"Q~ ^ ?Main (R-stream)  <'Q7 ^ BPartial (A-stream)  H*    f  0A,?"` S   B,o"`@ 0  7V  Bh1o"`@ 0` 0  @ X   0A=? @ uf   0AF?"` sdB   <DԔB 2 dB   <DԔ0  dB  <DԔ*    0p5$ `  YCorrect Prediction (Silent)" L   #  ZB  s *DԔ0PZB  s *DԔP0`B  0DԔ   <,<_ 5faultX  0A.? ; X   0A.?  K ! <AB 3 ??"` P% 3  " <A* 4 ??"` ) 4  ' <XA 7@W  5X3 ( <E  | MBase Slipstream RecoveryXB )@ 0D  H  0޽h ? 33___PPT10i.޳ Zu$+D=' = @B +;3 '0 ph#,(    <RQ~ ^ ?Main (R-stream)  <WQ7 ^ BPartial (A-stream)  HY    f  0A,?"` S   B@\o"`@ 0  7V  B`o"`@ 0` 0  @ X  0A=? @ uf   0AF?"` sdB   <DԔB 2 dB   <DԔ0  dB   <DԔ*     0 Direct Check  # < ,$ 0 MBase Slipstream RecoveryB $@ 0D@ @,$@ 0 * 0AG?0 Q6,$D 0 + <슡`L,$0 LNeed Enhanced RecoveryB ,@ 0D P,$D0H  0޽h ? 33s: TIMING|2.3|8.7|15|6.5)___PPT10 .޳ Zu$+fDU' = @B D' = @BA?%,( < +O%,( < +D' =%(D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =%(D3' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*"%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<**%(D' =%(Du' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*$%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*#%(D' =%(D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*+%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*,%(++0+ ++0+0 ++0+0 ++0+0 ++0+"0 ++0+#0 ++0++0 +7 0 p`f(  `~ ` s *$`P}   x ` c $ `p  ( ` 0ĵ 0 ,$0 8Mispredicted instr. and backward slices marked unchecked9@9$ 'H ` 0޽h ? 33 & TIMING |27.7___PPT10.޳ Zu$+PQFDO' = @B D ' = @BA?%,( < +O%,( < +DA' =%(D' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*`%(+8+0+`0 +_? 0 fh (  h ;h <Ρi ' ,$0 : Prior Work  r ,$@0B Ah@ BD>7 ,$@0B Ch BD> ,$@0B Gh BD> ,$@0B Hh BD>  ,$@0B Ih@ BD>+y ,$@0B Jh BD>Ep ,$@0B Oh <D>.E u ,$@02 Sh 6 "`pE ,$@ 0 Th <ۡ6g,$ 0 8Checkers  2 Uh 6 "`  ,$@0 Vh <@ ],$0 < Non-checkers   Xh 0`0  ECoverage Analysis  Zh 0A8?` 0` ,$@0 ]h 0A8?` ` ,$@0 ^h 0A8?g  g ,$@0 _h 0A;? #` ,$@0 `h 0A>?` p d ,$@0 ch 0AA?M,$@0 dh 0AD?B ,$@0 eh 0AD?# l,$D0 fh 0AL?n t ,$D 0H h 0޽h ? 33r.> TIMING"|4.3|19.3|8.3|8.5$.___PPT10..޳ Zu$+vhD,' = @B DC,' = @BA?%,( < +O%,( < +Db ' =%(D ' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*Zh%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*]h%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*^h%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*;h%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*+B#style.visibility<*_h%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*`h%(D' =4@BBBB%())))?D' =1:Bvisible*o3>+B#style.visibility<*fh%(D' =%(D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*Sh%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*Th%(D' =A@BBBB0B%(D' =1:Bhidden*o3>+B#style.visibility<*;h%(D' =A@BBBB0B%(D' =1:Bhidden*o3>+B#style.visibility<*+B#style.visibility<*@h%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*Ah%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*Ch%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*Gh%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*Hh%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*Oh%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*Ih%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*Jh%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*ch%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*dh%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*eh%(DY' =%(D' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*Vh%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*Uh%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*eh%(+P+0+;h0 ++0+;h0 ++0+3    <hv p,$ 0 ;Masked? " 6o"`U@,$@0 # 6o"`p ,$@0 $ 0 0  ECoverage Analysis RB ) s *D)@ * <$0pP BRollback point - 6o"`p ,$D0 . 63o"`p ,$D0dB 6@ <D>r dB 7@ <D>7 dB 8 <D> dB : <D> dB ; <D>  dB <@ <D>+y dB = <D>Ep dB > <D>.E u X ? 0A8?` 0` X @ 0A8?` ` X A 0A8?g  g X B 0A;? #` X C 0A>?` p d X E 0AA?MX F 0AD?B X G 0AD?# l H 6o"`~N ,$@ 0 I <p0v p,$ 0 ;Masked?X K 0AL?n t H  0޽h ? 33; TIMINGf|13.2|5.4|14.3|19.2|7.9|3.2|11.8|7.7|6.2|11.4|5.6|6V;___PPT106;.޳ Zu$+M|DJ9' == @B D9' = @BA?%,( < +O%,( < +D4' =%(D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*%(D4' =%(D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*%(DA' =%(D' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =%(Df' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =4@BBBB%(D' =1:Bhidden*o3>+B#style.visibility<*%(DW' =%(D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =4@BBBB%(D' =1:Bhidden*o3>+B#style.visibility<*%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<* %(D' =%(Du' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*H%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*I%(D5' =%(D' =%(D' =4@BBBB%(D' =1:Bhidden*o3>+B#style.visibility<*%(D' =A@BBBB0B%(D' =1:Bhidden*o3>+B#style.visibility<*%(D' =A@BBBB0B%(D' =1:Bhidden*o3>+B#style.visibility<*I%(D' =4@BBBB%(D' =1:Bhidden*o3>+B#style.visibility<*%(D' =4@BBBB%(D' =1:Bhidden*o3>+B#style.visibility<*H%(D' =4@BBBB%(D' =1:Bhidden*o3>+B#style.visibility<*%(D' =4@BBBB%(D' =1:Bhidden*o3>+B#style.visibility<*%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*"%(D' =4@BBBB%(D' =1:Bhidden*o3>+B#style.visibility<*H%(D' =A@BBBB0B%(D' =1:Bhidden*o3>+B#style.visibility<* %(D' =%(Ds' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*#%(D' =A@BBBB0B%(D' =1:Bhidden*o3>+B#style.visibility<*%(D3' =%(D' =%(D/' =4@BBBB%()?)?D' =.K7 BBBBB]M -3.33333E-6 -2.01249E-7 L -0.00416 0.21096 *3>*B ppt_xB ppt_y=@0BBAApBBB=<*)D8' =A@BBBB0B%()?)?D' =.G7 BBBBBYM 1.38889E-6 -3.60167E-6 L 0.00087 0.18876 *3>*B ppt_xB ppt_y=@0BBAApBBa 9BI=<**D' =4@BBBB%(D' =1:Bhidden*o3>+B#style.visibility<*"%(D' =4@BBBB%(D' =1:Bhidden*o3>+B#style.visibility<*#%(D' =%(Df' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*"%(D' =4@BBBB%(D' =1:Bhidden*o3>+B#style.visibility<*#%(D4' =%(D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*-%(D4' =%(D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*.%(++0+0 ++0+0 ++0+0 ++0+ 0 ++0+ 0 +