ࡱ>  `!2fc̦4흕;e$42x `TEoV"[@;{ąE e Y$i!F\XftyQTPqv;@}BK[UNs9uNսhM,"F#-"{gN=3z|SuY@{mgo'qf35I gQEJvs>$'-Eturzs!49-nel[`1V)S3ן4 iѴK{xr'Ӥ\qfBrEMwzuWs@M9J|giս[ۙ]SqJlg,.8${Ӫb/*-괖WH<%Yngs˚l( 194HJb&+5:kjO VGR)aMJL 1fڒ] sfnuHvA3 8+ 8֩2st0Ss橡TX~/jǟ5D}: w|ӂ#77tGjfFY\tV(t.e]_$ 6LB894MIfx)#"uڭyyo ⬁`>dd54}BN只%Cd0ͼ2܈5C2, >܈eFJBP ,J =Π kۙ둑q",k'+>iyK2{quYٝ]9ZDIdtgڝ#JX嶃Onqw.:9K]E5jK-j'v;L]# ENg3Sn ! nW冥SYv e&zUjX;%a;F nUZ*VYIa(P)dFakh\+wGVvP6W-(_rZ]NtbI\| yN~Q~zqj}h5SSrT 䧫9*ϚvW@y.[UehU 弫ĩO_I*NBc7놟P@0%"yۍo =&z3.bVs\RII.t'lD"A[qQ䀐:ԝ]fRJAj* ?B>o ێ$G)ت8Jft5n,![E@+礣/8-HJ0PVIC?jS Hidޫйpg{r~[9[cbй0Kl| V.̫E/ٞZ<(IÙ$Qk]^Bec QNw`c] K?Θڼ*0'/+S1pX\&N<[`!ST9ͷOl-laK옟sKt5Wꔖ)RGWI}u:]a 75(o~7'N˞ݝ[2qqe~3OϏ?}Ay =[Z|[ǩ/>qVO1qdkJxm՚1 5h%ť9B>\X[lGc?sm1?gCkq&pb)3ly)33ٔƙb !Dnl+9՞dl-%Ž$HNTUԴ4kBZJ2{f\ff\ CI/.{iv ) ?a9j& #|E WF\Vhɩ sp&VN vd܂y^Hw.5|vzك4).Ξb&SS%q4xFe2(G2:TTn-((ifԔ0i9amA@ T@s&&T`vmJK FVmiPPm)~GJZ50&sdu&lA9d{50&sšۤFN?ysH$`a#INGVqX)!rHKp]ܵ&$QB=X%8nWrg$;n-P'wvTYXdأFp%&)!dAb4c--LRc/?ng{)F>MeB1uEEO~:uI<W{N SQ9Hn#~0MB\sd7 ;P2v[J̈́d\]׊#tMԉ]+0wdcvI~v( |&54*DaOgvD$r[ɂky_ɽbM &y 1ouuMHR L(gkB() ǯP.J>չH(jRk5 0mG;@>2ԶM2^[%VŌKdRm#>4,m+kEm7kw#@cӐv ޣ}y@2 u𬅷}kY_w_c ;} њ.?'+ Cg40Ĭs |{rg/%OOOkȻ%3ryE kU Vo(HRFx~yA %w'÷l^eLοH̿.gg>)߉FrGw#D_ b/ǍPzf ؋WD4zkz&^h[mFLN#:ra"?6bMGی"6Ҿ˸ z%o [UYmDEV" 롭7Duk4t w>l]7v~vƬ{I^}9nzDk\L7͑ۍQF.=FO}F:m2ԈM]U+ U+Y¸[_ȍ`HRʚF*۞zs:3B v%EG+6U"=ƵВ|5@L5]nXL ^s"߄oB3Lro?D~m1hq9;<E&Ɛ$0tϏ(H{ s1yo"4f@LČ `=*!{-xq^=I'MQM5G5 (2=wїz(=3OxJ(?4zR-& JcR[ԨUƌƃaVs{,jx;=㉨[dnHԧe>c Q o!uLwBcb6;б 0 Dm[еvX kDZU!c=6(/w|<џߘg^o^BTWWdq7#cc+! ~q%:#cȸUQ2^[%V~rV#n2uʱ h3~*:yבUTi==|0Fv7f{AƬ7=sOF$0+H+ۍV;ˣwF1џFjk8TƧ0͈D.*̿*WnqK_|+ZEoFS,z+k͑gFfn g{=ȵm`ޟFFV%Xa W`q;yywoRzwn;|[&zU`r~>wcO=_A,0ԇ sbTωi }C_XMT㉨F^0E).c\qA^ 1͡7ci.lc85C㴘|Y\pQ㒘`=x۰ƬhS3ΌbzduYW8\ .e|y[_Ffk䷎ n*l/їuI&tsm6ga1[ѽ8LL,d 28f'oG6Yj32t2`/ǍuFzCۏޯ;p仴k/j#5dFZq_~msȝ~h5]a{Í5L q1^ M_oEFz'F }F}[/1T1w,6Q#xȴ<}qe2ȣm3}ۑ!;LߠaI=GjvY6 f8_/iiXb|M-[|-,xRhkg8󬱊 喳|[NM}ᕖ(_k"|m-6AzKw\r)s|YZ\K\K \5s,V}BKpsX.cr%k%iәg]{Ӊs`{%hGXMiJ_Cš_܌OnA{Lbݛw}6~yIp FSǯ>qY`37_Q,ԿOf1k c+!It=Kݟ*s{L'?g~5 a|!濇`},?ucX?9ȫ@XOƓ{a dbk{Ke)c,zH)hngОmk/TZ/L3,s?ogYcyJ?˲X?ݲKS@eDߣ0 :X̲5 g2> 9̟߹˺s0 ú1rU אfh/ˉ}+bjM&mw;G{]Ϫ%- 7ߗs2t7^A'?UwcXb SoH% ϗ̟\&{hThdow7V}.tLs&/|x7N|d~G={gAL!A׽hlxhf&D4^ ųˉ2" OJLe ~W x7hb~5|kF%ѨdĆ<[y<} < 0ոw$"QN`[K{]#e{s؉,vlF2ݙpvk.diG2.>raV{+X+1AM˥ME VK+Uwt1N|y xN$gE l:w=-L}H &6ٓfn&݁:iГ},UW*Aw[ {]}7Mt7 lr_Cy +9 IxNFОq:K?=>KO:6_~.л1+|J~C݄[M xge zr ?+x*?k oSru*5wV;e";#%h=-y+qb&|SMbn<|Hq^EɢOKNDwqb w,xf~1;ELf{Ibkv. .}R>s]^6gf%T;O${)%"t.]@۽K@|%rgH\o''F)7 $ wyyGv?B׻H.=fu+Oodqwu$~7Ǯ36qo}]jMCnf%WD9q QjNN#JfbC; /~ /z^<Evİ&Gz߀Okup rR/"W_,>[of~>Olԟ}L|?*s [u#cJ@gSA~0o1}4eb ޘ{(1G/o1^<z>y 4jT,,1Y.Q#ab>D8u_hЇ^^(nŧݨ7.ԀA]S]YKE艏{w 0 EMpeà9YKm@?ƷC|OzPzvގ8y&ݬ)!׌^Gl#4bLl!W^Jl/$˳tb_Fl[3YbؒX^DL/W6mO!^:}B"Kfc};bz5\ B[wk ӊ+i!툭%~濟Epjiy!aTO?U?W1v Xދ"1D Suz8ĚωWX'5$k%BB?=y?IKE29>+৓>9=$IINc4%ԇ&0V8M.dAWҾ];PW|~dL{Ӣ@TCkZ}3۴3Y䟭gm d#|2o?77 h- C;Mz3S;}^) f\]`EWhq'" :v~7qr%n3,|o=!w 8\]qbb\ȾN;j'Y/Ճg\?D頋ø=72֏w 2  ľxc== /(惡>Dӝ Mmsh -xz!p1TO au;O7w L+ST<5=sυ>΅g6~?5)xvxvvD|?ўLԧ,0=>.٬}]1 SSvTtM3؝Gحsq왇]q>50x4 x 1v O`gO!VJScK/%nd]uk\kȊwȎɔ*vZ쮕x_ҾUvK}";%vȆ³";V+{wkj`o_̽AOƯٱL\dkױd-ƫhiwC[`лoZ/rz-I<7rVi;i7\=:pks Kt⤾s^i~^ mQ/c~t57n3;E`|hC݂@XT=zL/ ~'Z`}jIN~~}@Op .;2>hDqh=FGDhL!S=E͸/~_!݉;tiwCGf=:7dmWԙruʩ;S6lu= {!x] m ϰOcR|)9󔬆\;"^z/?.Ɍ'3?N{8)%Q5S!1S`12KRJo]M9p쑐y;m!60^gU_ź*;a zug!jC)9[ΰ/iA gM>;9öBٰ-#[Yc'v +>D&>g>2> !gfά`;9wa8q}h{/g>k?C؏_~ `| Sr =pls{ΰCa8r~|Y l:Ϊ5dHl/%萘 P4jzlY#g#as6g&ί`;.pKbgrm -a[3l2wsAB5V/Orzbf-r!׏B{^v η{:}?;fg N#?wD޷_C5_rR|nR<ԠkHw ">/B$+[Fω8~mSM"c"֣|xog9YsIN|2b~nV-n[6g ;S"vOgCo;dc|~ė!ף 6v7tl.Zf-ە[ 4*imv-;NKޣCi^Ւٚ;uYZ+p 9y1[W$t"R>ّ5߉W;fM4% !ώ+OkAF+P#3N`!<JE!b[b[%f8<x|Ug^^Q⊺ςKy#( "BHyHHb"&MJQ ŮkkokCAJ}{gP\]~~993wU,ENEq)] 4W9k)Jڴ֥[ڻ["SA klxS'm򆂶󩊃ѦJoz!#GMͩRm_8_^ ]iShoݡ(˧Ͳm̨(Os6=FJ*AJOU)Wa~GL{xyumiE4sb#k~~2n9~wŃCÓzHhVRU=6nV6xDIv=zdSU)v r 03ǟ_P$=!)5¼Q|ϝ|*dk-م,)Vw.,dTeq_C6;r=2L[ƃˏaPV^\Rs|K.1&F9qcu"1f?>'\kJ; .okHjVfYY0m&,beH2{ŚkbZ53E{a|yӕfJEr־V1/SI1d1/{s٥y:7j[& _Y򩡨lun־S[-j½y q).,ϕ̑# ~KPĆ JGW,cpvipa!E#Bvļ{tB v ₗ\vh%{lr,|dԅk f+՝6s&<Ҍ#UR#"dY+^Yw|(+.,k+./1lߤeBHZ$Ym5$MC>*'l--SNALN9VNDl2YhF@]s+څgq;ZR̨ڰyNm1!XLٶpQ V7V}G՘ǘx24 P979U&6?[ۼp𞏽S\r~mH(o]?עS8۩m)켂aedatd;pT22۵;{0zd%#ÎCW#+V^'kp}ljȹ|Y Gq" 酤 7LJM4@vaNM$'9iydGvqdbvO)fL v;9A6se#= skU*FJ])>S#utZ%O&wJc[93z d3lf trs`t-{?ob3TfĎ pR!cv| 6Bw Ggs 3 oe%cW0(l،7/Q p_2HR҇ J ʋG4ոH q-<33'29WlIЗsu.q9ʌ5|ϓYaw~kcoeֹP;[_NEyMHҴ2լe3aJM)}~ ݌m͛`|I5?TSܼ'Job"SDdOw\po|p-ϖ*3y,-k|F1}D[ddlbjbz[A,lR}Pi )dؗ&D-%X@LVkfBffB¯'n_BvK͚G#8VÇAt1^99$0.-"Z]"ֿfq'ru 15-Uϛ~NEeJs ƷfKwN=u./(?jɲ_(ɴ$;ɓ*Hhi.K1 s=uh=&a| 70!7&a$n԰0!7&aILOOrbIGl:$L7ɞФnO&Rz0ݤxx=crK U1$|ObA? Y$˘|mxifV餦Y)5mI"HK`ޖ)0- I,,ia L &b!%0-LiF,$)0-I) I,,ia L OZ$B0EbԝK"lu𥧥- ² K`Y$EY$E,LevErI,(3K?lFFz|icғLFT۵fLic,l!%0-LiD,$)0-}md! K`Zӂ #YX9$),\a;7'=R),,"IQI[$'B)ϛhUN]k>xZxR AF%0-R|~`! K`Z"k)0-|-e! K`ZBYXX( I,,ia ,(ԈERjERj㍲x#o{yMZD#ĔJGErI,(^K?.^;v[דbO=;y $_ïXM/УJ6d}ȾIz/M^x2TO5RIP=Hq zS^T!5Rwb[)y*ͼǰͧUr>GySM 3& 5iiq>yITך䴈SHr$ԊHz;r8YiF}Ԥ4J*' Ct;D!gF&551IO}HAɓ8#3 p+˟s.*->"Q$x?͗;؟1ԍC1+I>A&%ӛioEC )^ g@VhɗY7lj\U^/frd䚟Y$?5Jzfv07Dݺ(KE+Iw7eH&5K/ai朘"!)5{Ӕ4o^IiR"'qTI%'W4_ ;"A=Q:ςN&;#(p"1W%-Vy*S%z$ԘH&k*$?zi~7KoHC>";dB>!{)+)Ə?ifJ[~?mGZe`g Q׈o/8UZ !\א|*>;NwNwDּ'z\MK!2JqX+t*5U&J$8q7VeSBq:+'36Z3OLB|NUIVr8ݿwF)qfU\uS :[ RgT1D,D:M#GCU;.u[ {`9X NM݄fWunnNQ8z0[y 3Oy϶Yg!6mOͶbmi[#/ۖWlku!^Omgs m6Y|Kw=~?A b{A# ~~!G XmN=_"ԶAe[o=|$[>Ɵ?ì s:=C k_?&S:}U kf!7z}H1F0k 'nc\# w/mD}hk-g}b$ 7c_)">]dgk_}߂?zξ݇ub=П ; ? Uc#gRGVQ+9Pq{G,=/gZ5TPY+恹lL11]LsL'8fY^=DgX g xбL,v< 8".f9v{xc۱EձAX8z)>$11 Lv>A#|9֣'o7g|zџnvn1xO}{$[DQ@ Es-4oJΕW,n9+k gR͎Zõ\p-5]E-lQ5C*& \ERq9c}U#1u5W4u-E34RGM?SG ]ĕ22}. B_:\#,.v=f>7@jY`nqkӱzggR/jyU~KVS!~`u|qmqMB0G%OG>Et n0̻1/Y|1ySŠɢ ~((YۉXz+kb&1&~U&o~~v!yor~2['?.nnhnB> Qssc8~ӱ,7y"G|Ǒ{}iL~u6 Cw)\F,Ww%]wyXN~%p]H>w:d %rIc2vStfw /BEs!s?:籎w&t'#,F~z?Ώ^31pZb)YO T8[jpC_$9:y?QW#p)iujh|ш6VDS}EzH!^%h ݖ8'k'uL;CA) vdwݢzPNjVĻ:?E21ǽ7Vv>.]:q eYGu` $Al 6Udt .ER.͵ԓډ=&:<.{O b"&_c@,+=?D1FLDLm1EdQLd1Y1OLDL1adXLd11#&y1jҴ߅~[߶5n!5DvM4ifwHNMRk!x7T_| @? mi'*wt VxVuo\~.7X8V5E Nm/U؍ ܤ`U}Rm9Z*ʕJJ t:YѸWwƿ!o "_Z7`%gCw19TvRG6qdOv|<09 c[K~'[_[/[>ϽMƗ4gm[y:zנ \,P_fhSA/B^> [zV龨Suv0W}-JRUg:.Ҟ"NKxQ`mcUNCۃ;!5r|@+qb!4ND/2ƋD,<.of=T|*oMZRXm6kWjljہ8Sjk%x+sb6Xb$ki![_k o T+:÷+o+*`#ˠ?Yo5sDVb>Vتn`xN"iD""!o׫ ZMEAU騿\ܠt2}Ro`\ ˔]wD^v>]o(-t/u9=I+7*=Mjfd | 1ls_aUw:}@"QJW*^!.RxW(z]yj#;AV(B[hڣJ@ۤThPoTT}x58Y2V dr$xKBǍ\ mJ=TD}37ТZʻ%%eOM>ן6eq2K/S^~wh_kρW/הO7{-ῢ@ MzɫZ m6x|&Ck:wNnݺI[j`5ZT&+ˠ`.,m2]{XJ$dlQN_ 6)l"= ,^Uخֶ lҪslmeR e((d20/ڻXXX2!q73a\K E&1 aaaJ7Rp(չ=fE]F{ViMgiCiI҉XQjA_E4^V ʟнTɸz+-ȟTk+>1%zr&֑}Q[*d7 4j2z26[D\-P.+ؓ7ח mR_ Zm?̳JiZRؗՐ}Y5^u_=Ӟbg?pK˨Th#$AÿybՎ8u$պ[UUS~<|7)+Ts}4$gLs^iQl $gϑk-@?|x<ޡ|ئ3Uy7-'6+S&^Fi,x5rہ ^|D |@-GMIm;++ǰ߄ύ|;UxGYO=> 6s% s;ف5<󿠼x ^:7yYd;َ62|VgO9li`dg>YKfAO#{x{];X>C$QE㨜{dT}гϡ3̥ja;JjSK ltὦz}{+5;ͧ0&={{'7QY<|0{~."C%R2WJ&Jmd=; !vFLwMd7\/YzTD>sbEK﹉5`mXgW}=}3t=ؕgS&'q3}mȃ.' '/J2VyQ5B|7k\$},)Ľ#ZŽ-2v KGnB0ct2D>Vqq̑)ow"߇~=;`ص>?_ Xcȵ9Yqjp` ?z1C?*.(F7: W7XwAz*`C< =h.n"96\lP3W;xkܹ,a,._r˰+ž?_u~4X]e _BŭOك%j_ /Gz |*^fpS/Xs/R:ĝO#v!4@#@ &jDM~QþOm+{Qv:`gk}ğ+";ؿNpcVԵ/`AB|^ B-xENbz@}ֲ+ܫʽڂq85.EP9QSj!N?v,{-kkq3_|tԜhREI@`C{]pni@P V40ߊt{Hz@"Hb չ?Fųd`>Q%Y~d&2ѕvd5~Tbm؛mKS[D&Z?eNwAb0{,Of2tA7.N'z@Gdw;'nd;~d?Րzё=IRJJd.2q&9璙 T21LMF>L݇np'K`w;vG^f"U 5vtƾ`ރy?s;oE1#?ӄ7! |,R  h@V.B"VH43?`gW;;jW8 .q|qAp,0߁Qq㠸۱[Lp|'f9 Aj?58pc7Q#8Q+8QusExaq@?7+2Ч Czw ;ؾ[載kؼ^a4v`ݡ@ۙZh6t9g`SFW9/^0Gp.gwcwNAqs8Q1ϩO 5`mu笃:A7jrNM44pX4pW9+? ssν̹OB^=isύt t~+#:9]J&t/2t3:q(rd#cyD1~tя%7_w t gyhwל{];h0zrg]pnVƾ(#C |+ |$nww˵DBvgXp r"j7n2<;8ODAX& .[-u:Bg\pE7NWBOdLpV7OSt,26X [l-:e_-v{o by`6YLd3ЛL,l  s9~>b7puZ*a:R*o!8̄JwDNe~KMӪ9zA̡O_,ѮrQ4%[[\rEr%rEreN 58UonEVb&6b[kIԉʳsf;";gbrR[9W9ܢr]^kvkV5U5~/D bK\˵]#讇Iq)ccFRC+SWSvL-Ke%\VطnZSߚuZ6C֛[k'yoͩAK.5ПzL韠:'cQ%YDVJ 'pZb -Šs[ȣfg,`,g/9} 笴zgQq>SmsUCΟۏO܃͏{ Wj>Gs?^jݑ*oTz몡7] /w9AP<|s688Tp.|s3!8弰sn7{ߋ>?s{9fo9|ݜe~A۸\ A`-5ܓ.&#27Ķh瞝zc|4> ?y:ͱsg|ݿ%ʽA/dR17d+J.d8H|9#g"=\Kdv=A/ 9guYѿDHC ne %g1dr;Q>~p8eI+EC fO棗7Q ~ykǹ R@PǕ(@]ʏ8;\iǻRt˧;\]cȪsDJWsӒ{ ݷJnIs]rӷ@'0, mmڭo'^cdvu]w`%3v~^yz+K@t~>zgt;2vnCow#s7X_271DW@rR+C"C달7c/oD'lf?u#t/ߌ^_bח~_7rչ/U>coAC?K[u~>0Y5~z\k>k^Ļ$slFo>g`3 L^A1l|C +猽3F:FΛ9co3#׀rt\8>B:|~p\p?Rt1q`d>z|cպ_F"`a ϵO. <;sx&/RV{H䌽HmZ?M>K^~J~ 跈;<ޥBߣbߣ:IxאB|ix;n̻ZgoAu{L]WtΟ)ψDK"/2 YE|,;BCdh?v{ȸ ;ߠ5_'wkOY^d9ȵWts)~rvWoBwrWp~[8=[;h+j(]x?1 ?<*9o;3Y"/w^ ߋz^SV DG>1y8&g jGsr\lw_U-S˫oX>XRE9+Q lgY?\5JQG{: w|R˷B0gFזtŻCUUEvTtV&_6_6OVf$m#ԎdFYvyc,"m[u22Ǻ|`e{Y<Gڂ'8\F :r:g^Eܸ)e;~bW.p㦖 ^H`'-;7+-WaoyqȀdpegԎ %uizkrJN6ζv{G[gTӦ](ynO;[Nv6h֏Nv{嶶No ̼۠,W;kJ2m]9~LwvWfN=fsĶ9`N8ޕpetwg嶳Ύ d;ݕŝejZ6L>WV{sVZ8D!=1;#3{tgv6ڬBk MVRغegtqfrrjj=yFEQvoշ =-3;Sr9.tbnTHEEgY3YfX3e5oJ#tigK9㚔ilU+C, iy~Bw纬F{l5#BNBx|-W7lOx4Ox{JwҚ?52'\|\)?+\-L?N͝>=T̼~ wJΠ,K3Xͫ/mVmoi99;0#'әJӗ@~J4MRA$V%74n g}8y|8Jd˕.W˫9c\2r,,vSx4OF7Ck(1xg-LR\٣CAEa5ݽWWj˗a,@./,y-݃|divy2l)>bf=XUt1iRXF tbOe'g@[~ PwIAK-~dy>%{ytH[2t-r5kM皵 _(dYvY[y>亳23Z2yy.٦qyDz2 ~bIX]qA!sJv񿀱/1a8G~NwSR#ΕrH ?#RԾEފ%K*,Jt%)C/ %w͚lm9T]V7\HFsyrU*<;Y!VM6 pūR'`$?hBy^b :2qYpR6y{k%/Syǥ>un,[s?veT;F1\a89d <l2̢6v 9k̡M ]N_6y\~+lIUٲzؽSoٿa//{_`B>/$(Vql[Y PeyTf *rN:r`'dI =U$*mw%)}T HIdۼޫ+Jr7w~/t{]XEϕsdpLȗ`˅(%=-O w(L 9 4Fg^A߁ ]XsI%pAds?I'޴lɫՉS|ygƒ̀Vxx0g=>gbkEn-Kk,_Aٓ\Ɛ@r瞛i~f3rWLr22eg 7K9S7,qOu{|~Sn[Z*đ{}o3Ҭ[e9wαKre֚mgWI{mg+[^^c/ŕn+}w;hT^)/Cc;Y !xgcE{Xoiۚ#mS#oKQVْXL|#fqxGI'hQIΠ׼4Gc?z1>;ADEc;c}:ˉt,ǙDLG9lcAs$'TGb-y`Tm2v&ىF|60NqOJbKJNj`=vE{Q)|v:)NtX Y6a (U&]Y6ΥP68 |N^Y3\]tRT>:еEJ7-/3`/NQQ[#1Qj튎θݖLr8 EY}|kQ$WyUebqe|Kk ,m11rFS#BWX UY!@qU=) J=6Q%6^EZ|^- R-&Oz=${L@5OXz|'؀`M1 e7䝠,ۜ1>_9\MG@5iOX|&GY)L3)L5&^M1qMYQr35F鉕E(Llf$ȞW*`vɕ*GXΔ(G(&!+㮨8*p>ŕpS(rdLt7bU`_2K`1FxrKTf),+%|*RRXD8{BRLߒNĄ-U"R%M#g3rKTfcBQWD^t񤟵9]&&Gqq{*)o)!Yb_K{rKTb,&G1sKTbD-9[!18Y[spQ 'ID&)qJΡ>!&( .]@ў};zoxWQ-ۺeORyYvs9L8GBLQg_|i z' kзD $βq.UbUV<$sZnfg;eQ|/iycȉI2rKQ-wD{HB/7AŕckN_M/NNkcxw^;u:clY>?#3r8g܅B-&_A)vy\( $+T:[Lޯbo`$?Yɖuq'-3呼GuZaQUg/'umO9sEO~4k/pE.H ?S.)7gFJKp_j3yʆ8wUT -jr|=ѥLx'-x5^o UwLYD<3*Z߼[=`&ZbRQgّbCfth2.^:¿fo`nVw]`Խ7ۣޥ#[lv=Rr]6m ng#ۈ|6[|55@AD+]> ?<3 O)`,QռՀE}_,!%_@ϥA>|FN#k]98ψfmr /5oB7֡Mgz،=b -1[3&'F71CB]`+"̯o8t rkVB3"lFؽ5[f3p;VMh%6"E&x6bд6vsȝG:{vBkj3= rKGh͛Mȃ/<䞛ϢI޻hG2A'Cpn9FL~Ȧ]N R7ȦA~3} [vO`Cl^&toMb}$iIMðUaUMð ռ y[qs`j^ЋC{D^CVSe=l bfBsb:sJZszA0ܰ|m2m6 vŽÎ35=SbSȅ77lg0'Yߜxmgz+#:߂Κܗ;a<=pM<xsa5_A_A6ƭd2F2x=ZCM ;dkdka[A/d~a Ub=HJl#S7a5̽K67yj::_'ߠ ɚަB˺@!T{{;:ľ.ozgJxp~IXWW:zkׄ1넗ÏW7O OAkaVE _ZטQיu Yu;.w^4y}} vC‹-fYq\׿U f^Zs*D|55@Dijvp3}93{xͭdD $Cʸ5Nc^#x'؉J A2UV[]7݃f AN x "tnBFx وMg n_AD2DT K"6. #/م߁CggJhjwռ>뫇 hqlQb֏8nWG0z$ͨ;Ь 7Dl7o-M7Ee|UDYۄ Zo։X z4d(by+!#>!Pl6aMYw#А|#v7z^ "b[b?8A;̺ybYzc kߏ}#KWMǑII5}933Ix^:Owރ/XXmcBn%S4Au` scqԇ,I&KN!]ԦJV BCJ;<LK~G.e.ttQw5E-ʠ&QR=v3/un<<5,<(^Y џQdd?ȼ8jL^ } 2iNe>E-,\AF>KxU%2Q)2e_Bx ~?>9xϬ;ߒ_яw__OGby-{y|=D!럐_~{觘/\.E[~7KwϟW!床U|ka3k*2F|N'hKaN ڼo&F7o+qͭ5_$D%~fK挛D1o!rvzнB5mK-7g|Ro-JU-m⩗ūn=՗Wa-kfh((_Mh+>%j6 &)FGy'~I2Rtmܡ6+LJA+E1[(gUjH--| NhF[O=m&0NގurXw{bwG~?zz UZ>I{/O쓉w LNG4O3ػ"%؏$VTb?G?K{{iow h4DcPà2 G 7uTb; eCX`08~$?$r$V$$$NbB+chc{a-F4֋71ĭV [M$㐈a|xD0f1|ϾN46NF)!ڂD!:Ά.3Q1~l2:Oq}ՐY:38!z'TF7=?w Sȝb?;̷͑k|s@_KFZjNo셒d%PhCUZ!J #LiM 7۸ VZ JSܸYii4T(1 tdzw&qǨ6FIFGQ D({] i;BGA7l&؋aodpmc|ׇo@]_̷͑k|s@_K#s }c|4!M}3Ղط$w4px$b߁wįwӻ}'b G'rH n}"'N"-}b/mn#:3 = 72}f =)vCgg$X`ޚ𵀿9r͑ok跃X^M łhnuA0~>x>a~Oï#i .td NG[*F#@П!=BGЙnzpF؛k/ YCGbۡf%|-o\s䛣Z5 ֲWn烪uky)V׭bT};AM1LSb"}p-ҫIg_ߋJ2GB^Կ_ paq0XxKlC ~R,Gv96_3\vms/gcllϳȗ E-)~FH̡/1YKHާN5_ozSeLPrG+n AGw*S|2cЖ2LCYWVʳȮB*-hsMuiv sO`)ve9288 z;ȵgYw;eSryg"&w ,^uK|o#n/ w}k0~?zỾ/7lf3C ̥c6s)>x̯'@Пqڃ=]Y@;q ̻ͺro#K'r}Gִ=ZS5 3=T`-T5 [ C=` 1rtB\;r}? sR#/J)|L`aNlE;b zmXFgZu>i߹h8ڏc{T}&>Ne|☶_`з0_&7j_~kbhG,J{ }'{R@6Oh_3Vhr]GnwbmӾ[ݢ}L{ Q$_u>=\ǴZG!!}u>Z=|߹vjMHklК)k{ZK]9A7l[5A nSeG ͉Nna5#6۸5֐onh7!ۍ,|ܺs;$nv&ј$* g$NsF=F~s w:_*WpߒHƍ&P[Ƶlr}%7(N+>0is$~P 4:2%69pSC&t$rHl֤~̵-]'2NnNnDshΖ)ׇ^k BzjC}peVߕο4>gRwr^!.(de{/Jyjz95>d9>dٿu˳{+Wat ~KH$݂W*럇2o/""29U9b]:utquAV='zKUBuѫ zUy~*çd*_rEr%Z_5!l>% _rEr%/YXsB @~ɕ 8{⯋ٳ/..Ȳ?^/˯D?DN*_rEr%n zUy~A/th*!%W$W"W$WVR_x{A_ \\ɗdWDNՂWx篋ך5k...Ȳ?^/{*d(P_iAE7W%W՞ӡ}fcAB~]`_W(7^mm\++Ƃ_Xm3g\T~]e_v?|_o}N͂wɕhd+ǫk&'_d*_ugƝ,/"IdWxx8)!/UKHDHtD޾jm DC|M[,\o׀+ Ac7ۂa<A ,1V\!j;ԣ_ߔD߃"!5m+f<+fa1sT k-,RVyx<"!sߵ[Ľb1X""X&g࢟m<)&|cnLx Q̏cLD~Oc\<G]e#F.o{W{5m=iN٘"`fԦf6G9-mLkdiM`&XakcuXlԗMRY_&3b/8LZXI>1b7DgBx 3Q8?!C`>S7vP;tإ=[׳%O@’/[o#[G[x o *c"dJ+ѳr4\F$ tD2A;U">V1:qxBL$ofbGg'/U|}(, KLdN+Kb:#1 Lui:׳y%R@'^넇:ămf+BH4>v .C,{>E~BCDcV~` ?E$Ƃhh!_412FN6->BaޮCnHq'=UteQ dagZ:<'k2vxӈJ| ؐw S]3:0NN퍯d"/R+h.s;mT{T|=!Ԗo y;ZVT\K!bu^mEhƈSX-< mL,rOo̝UazGn-"THE#rSigj-F\u/?bX=-6n; 1>D\hK1|w\{,GX!j[ >ҦZآMCTN&b=\O 7M⸍vحq!~xWX{;Q1uxOo-x{C `xgx[zfg:W|ȳcb88>93cAnlszttV'W$ggm#[x|qƏEDp!_ΘOs)G?y>v>+<O?_1E/5CCzس9]79}<0P0payH'GF/YM{=|DO!ӈ42N&p.YD=6憒C`"wȎ`|C;fn|@s&ϳA.:FR{RPѽ֜s Pp6 Q ]2DjiWO~yp^MVꓕC$d{F-癲}]U\㓪O.Otjr&w.rݤ3ok kD[5Jk,t=CҾqp|K_T-~TU+MV W~jGzZw "t]ԯJ |>f|zuwkkP3jTVOSAGtT/~v ,5\$NQ:IPAwӥ!~U/#H<ÿ^|S:ad40xB~u}(OU?RY稟N@}G5<~el0u:Κ#@OcC~&0# f },r_/*]}7.b*^fYx.[ܣx{|ȮήgL#S4:=$s<xڣ-a<z=I/D~>f1̀g&;q9`>t1;Q8y>dO'x%GɀE`ɸΚsK?T󣁯ʲJSd_"J[IhAuMePxXְֲezWi/KN}vd+dëxv5xM }2` -;mv[u?dߡ+d  ;{,'Z ^oߦuW·`-TR=noi|zuT[ih۫1\u]|H SCT'D7X- 4wjnh9j6y:;A 'ĝu;靈|n5 FtfJM=L==ޭ=wVi \0Sחӯ'_ڎ3~rNc-eIx":wpf-&* |0l3I$g{ޗ~r>\wuGɾztopmU_3nދ7C9yMuNL:G}i!Oi]E.~IH]hiw.:6 4Ɠ{DБ\%[[wTTUTUTxZ;ֳckVO'PWg1^x?YDU{ ,\l賨3= T9G8l?s=F} K8j)x,4sy^;/E1KWue?c-)s,3m:D|%r9`:.K< yX<0Hչ<s <|yK܋ʋB0sx}%<+hf9$sO³^jYUd3$!sΙ:aorgZqm 93h'g.dwqHH]'iqmCVm ی6G]ΰw{ %[^ Z3$5$gǜ-'8gqv8wp}nxwQwQwr^s`3"ΰ"tg䶡k6cg og=zִshgR!gFΰ"Ϊ`+Pv3$'9NhƱ1ή(v%aG_kU4 + ;rs$gIΰ9Np*G!zosNs.I|@_0(G9$J]VMڬ4 ;:gDgX!zΰM96pm +v];V6sq![gίmCj]' _ׁoPO^/_nu>gͻ9WGwx;"8:Iso}{N?<<=v`+2/)qh%̕Z6OVR]ڐڍb~Hv]q횐:!'+A 9)!ǴT8 o&J& ȐGn=zЮ)BfoӮ }VUЯW0A/f(|%Z-p:zkrչ5EJA뷫 :;zG~'m'ᓼչLy-QLQmmt>MmOVyj:,0Զp>T]Om߫67z.]z@UCIj>UZzZ;uV-݃qȎ.j6D_]^n0n 6ZӒBM;q.H'MtlյIg}aDEb_/W]¿79.'wQka}xEv~,^ + H HdiU!.rU+˯xE "JŭMwYվx g a*+yj֪YC,YTB`!=F.k#q,, %f8=x|g6[bXׂ lBR"]C4DPQQ"(D>+bAQݹwfssιg );šP_3ptշ]̞zjߡ24.K%B[l9|bcқj6s>lhΐBjQξ‘JbzK3(Eq>->j\{LyHR %=үrM}r-}f9^^jY\Y\X@?uc债_mܽ[V/(ػdHoskP>Go3|XɨҜ>qNyv/7ę/ȫ\Ђb Ivnn'捁"grQ0͵+xD9$SWXPZ91Na{a4Vqƨc\R_"SWQ6ˆ8gpXXrF>ԉp9XsQ8_Ȋ+8ۚ|5^ֿ%QVbfVXtJد%N3.gYaAdf%Z Johb;bosTBVΜ:j%8C}N\gtR_0cZH;Hl2-Qh؅ondы0'2 3`XQS\^S rxsi̗W!3#MW_+A>d5|W:/,#$:;6s7$4nIK()kѧ[F+}I晴W85GOAEsdnEAgNnnod&ϣJY{˃,)˩1Jܧ\7 |d&4 g2 F1~B\eeĶ(`/_+WV_Y!vα2U'K$/ӧ)CNܡe9cL(!gU^ a %š;) 嵹RheC ސpSCyܻ*1;|IS#ƹ`N!>C܄D<ǧƖ3pshU@RGT c)%e4%>zޮ s+>6e%t~d_^IIMoKYSZK <p>{d ݽ71s͚gcv]0a<\E9}*c8)>_q\F:G TZB2مvNY~M'ÖIDF&PTSpr6q;v&vҞ:ʴ3poG\r s%4sd$ݳT>ĸł"3f P :^\28dG{9dž)`yKaAZz(.x 9c^¹OfG2GL]`ıJn4l#M/q2Qu(5"BZZuV)χ‚+%>9LHݓ D=QA V{]<9>[>eL Δ#D_n++)I%7Ъةx%uϊ K礱fGK*xRD0;҇<0sy+갉Ȏlr^ND,Ut“ޙY3zƼW>yÊF5V ?dXx\OMs=G:dž!]u86&Iarx,Q቎hQ]fQGӣȌҀ:CtrTXNrNq8=yeS"s9i#z1^-˷;,'`Dy1*YX6&t>(,( s v ]hJWI,r._VqQHBz!$4Ns9=.a+ 9]X`gI=rQpEǙ䨘13&a;ޝa9Բmei Bb*@yB _#utZ%O&w*9U3z 'F،hY`W6J[VqP;2Ѳ* Ώ9e%XaSq$pU$s]^rc"o_x!>˃u|oe> dWdhsɣ~ qM<33+21W=UWax,T v=N M_Ɨϑ)8",| COQ|oo:eELRHp~4>Y oťF0r[R'ecKyrN2}MiΣ+|q9l9WԱ{\g~ }"_wwNɼ&$`iXj 0/}~ =m͝I6>Tq8S^' ҝә$JwG=Q.9oŢ?x?5>/?QLEcI\OWqO%9RU2>GMwFOMI?Y ]%F٧,W&u{vL833G4lVBew~?MÇa`g aWlo.U: &BӐ|5>ŕ':vNtDljzBQK' 2*++U(J$qWeQBq:+'#6f*dث=;ǫ;6s'oQ.̐>&ԅ"_/|b:[ Sg4QN27Yf =^.nSg q:<$TS tV[bb?E pa煜u X|/!_)nTW 6!89ǰQB,fc?u'ҬGUˍb%ڞ\֨b95ɉy1<ǣl, k+%bڲ\,oYw-{E}C<,3kj`_F2T`3S3U|#O Oce(y\)Y9eXgy^Ɵ\JqiN}6#Ut}m/ZXfmbeIw~?AJb{AC~ 懨 8`Y-~FZb?ۡ!oYo9|cY+_y%z΃+u쥖0v_?Xomnc=PZڗ5D:h}A4ԱLSDez\e&? {G;cuȴ٢ub&YĴux- tm%rsD.̳>|Y+:quGz[׋];!˴>/]Krq%+EuA]:e/m,f99s,(۲fZɁŶ;byyY͕FB\1̵'+3m34ɶbm Dۃaqm۶,lB?d{D#G"}esg.٧)7d1VEc:_qؾXXK/E;3^)Tj}-։j])vW`O[*vۗ ֽo0>>;o7gß|&zП}OO1Q˱PvuE= Q1M4pLg9ŅPWQWWPWsEsC`HOs9uԌ::jJ]X#.v8ghx&t=d 9}>vp|8۱ W"/EKYgc澈u:Yyn6띃K5[U5-;[mG:IUsEF|:!qeh?G|?Yб仩1Ld/`b?[C⧉0~(!f匣o"7}+5~x <o9b\J16~F_:B#0r1,%qvE}E1V@?ưQ=un6s3_w`w"H~".w{d; w>Џs \J~y.%%Qr. w4"rcv3,%yB/" :'2΂Kboǩ7[ c&&ןxJ6T':D'NUx@'\Q[@Q_ |)iv&jh2bx-KV$׈Z ı#L\CDWbU-e`4&:w]"S$VLw1x!O.<.UDn ?y&z0֑+ڰΖ#/G0_M~J1{6R{,Zm/zmE_诶Ֆz0\Cf Q Q7dE5q=1ļz~࿏Y?яZ@p= ?y.z9̑v<g`}tBoӰALt< DLƁXwcd 1Y1YCLDL1daLd11DL&DLF1dDL$DLI~LĤ11CLDL:N1NĤSdbo9Z]ZJTljRKPӴڪ[6N;kMvv1BM֚IKuiIjBA+ݞ8v$k֕XwU3Ag^/dNZufkmw+5?Z2pcGyKUC:%h ~&L2֬#Mk:[t 5?u5m=;@giרgksyZo|pOmuj=-[GrL۽q cd%1Y1YILVDLf1dvLd$11ILFDLIvL$dDL"&WDL"&WDLZ1ĤEL2brYL2brYL\brnL\brndbȩ:ug36HPkj 5PGj;r@S!8#p1B=5\=%R$H!^ȀnO;ĵZ/ЕXwU k褺Ԥ@hK[iI $IwY@Ο\y/v]O%h ~&L2v l:A*B{Z>sw!dq@,R}T%_?PAߟV9ꯌ@O}W1WD:qj `M~n{L7@,7COJdzLd:11) &1bR1FLDLn1db1I&&1 1 1Ӊ1Ӊ1(1(1bD;P94FMc&&ןxW寫cGeuWxJLPWV~]Y_ZwM}`we u[esJUeee J@t{ؑxv&]* ,I;3Smw+?$z9rDΣZ^Rxt-Ak3ga+۰Ζ#/G?{t5]6swV+U%{7\uKeSOkp0׫Uf[oVR@uߨ~_uCe:W룾:k]:{2Y>39̑~>qu# TXowƜۘTS)信yZghu[+Ŷ-^oTs)~ٷ*ʨ#{KE7@? Eî_WGcFr*R[7jCvmF _WIcFr;tKWkر73~ b ~W]~7z-#9>7U䟬ORs{o{#^o`?l݌"WLuu~PYuqV5)s/qn mKO:z$bUsupUc"S<*}z5}EuYx֏0fC_ k/yA 1nANQ%㹬@t}EvVt1Q9@/Qv;R`ɱS @^KTۦ'y]jok7Q-Rk7y-Q"Op1}`2Rq -f)=l*qEܯtsbN,V2˔L _Tz>brxؽtVxGɂ%֣V'V+*Z/+׃ /1R<2ws( &l"{L\ }ب4+{Glo:u 6SKćPqsς?[ʙu[ 89%ꋚm !mSqWmz|U{LR{B٢-S>מU>ӞW6k/:Vʷse=v'}krۃjYǡK#j E2x XL6%EDtxlɇ=\ߣ'{Q㉊l[N@r"-Qxg]R*(pSie[)/*V:^/(S4lg`3 ` -<,vQ`%X6x2P{H~gj+() J?G'QIlR)A{εo \%o{+7 t 6(Y*@&h~z@2z/3PRuykAZǶ=L~"=gK-ܭg*JMJ\]AɆh <D>SU~?+E)+Y6*An2#ۍm;=[7*_`#G?@O=Ky d=vkF޿Z_Q<x?/Uv}G-`#男,|$_6V{Q /q/U'WkwX[ ;sy>?~>7֏~SUc鹖$xtMT߬J4&Gǔ\#aeT&kFI_@n ~C(yt bu 㟥J ;L%^҆КʿqҖ=ێ۞=܉|{'0|zPz :rg}e ?ctw]wB#]C>y!=jnm2M"nrۜ^N.׋,3m]bY8Fn)2ܞBnO%]rX\C79Dr!: w&rz!=lD^sI.A_ u'gLTVT^YF9PB9XLr ÊV ʡ9ʙ̈́~Ǖ}+?b]Mϕb'Y҈ O7")KHT\QDg~/Dz{+Jђ1 :~rz۸E-s} Eon}Aod~'䝰~G:`m\X :s-8588ȍ z+Gc k1a_>\g'i8!2ǐ jƝ!zgKˠW rʰ/ŏWx3sW%Rqρo7[owₛo0Ż2~kr}|:^C9Z/x`Ajmwfp?UK\b`wFRrV!VMf :V?ueEj'{ Xav!:`g؁>dw]Bvpk)[ oFo|`#)A9ֆ3@]}ֱ*ܫʽZq85.EPق-@MkttU٬OV5_ό sD;*h}^ iBP )BNc A7yH^I@YP3n%j@MXO %*yD<== #ݹ@2haіaMcog/ubOueoe~쵁 ۺKYw!֟0Z_u֟5d@OnNz@gb'd drՐzsБ=IRFʬX{x20LIF&idh}ds\A 3t 21LMC>L݃]pOaw3vcaf7P[>JgS-vk9G%Ivsf5yz=cYڟ9v v`xmreq;<"gup5x ϑg?=qyѨgNFC%wN|I̿Xŗ쟯7wtv/o>ȃ~I9;:q ?}`?8] ?\CO>4r}[ɼ~އ=`=ȱ_;fǬ4#͈:):~u8=8Xԭ].E:FqoSzGmg5η5 -茳;l?ɶ]bmXIO!ʦO NwIM N δg\BrxDbxض_~$3?;2-dk[&@F~O};Ml_cT:l4p{;yZ ֦S{Beln~f{Fs@=OoGj?,TO}8ǾC4f ߃cWkv{tkϴ 6gݠ\ })|9-{@4hb? .N^+3QymMMmeole):+nd% /\mAyD2瓱|@Hd%_/t W0! _#_s$;`4H?^Vξ('E:vr_Nq}\K$ofcόna <1c&Mfン%b|"0x,^ O'>FZl٭\%8n66:lo&'fwY9dڃ`x ޓȞFٳǰ]{zy~|{F^ea?Ϝ#v X:gssO˹ǧ'܋T\p/ T*p2(c?ÇWߛ9T5ruPiLK@x ymd,U"{{4 WBTLdfb'&R'Փ{w*b_.6m8ltݾ(^Q:n x(pp8n;;'"=ǴYs87?`s,9( ?o4O߆έ82k@<Q`>?Пwz:=O&a?IQw4rbǢx$pcVu3 f87 g9CS$p;MvKbWYAcD\~681 4^r_?{<= C_JM5Stb/}yyn6D-jG:Dc,YdӃhw`;2цiI\IS!T@:YmAv[Vd Y+}5>TL_ݩn]ڃ lN[t2 3ڝʽfM}Y[ٟu"r?,vB7*3;=c[VTוѓϒv扑( !%t&wl"62r;nNkOa}#=J+BJ-zKR*03;)wSNfL'; 3nn< FC WTHnQ1}'=S&,~z9g9Y-D83҇?甯8l go8HH_ۂ-͜i6a 2pFmmkrGzor879k+g_8|q{#o8|ù`+gsWKsFyS7rvM}ƹ maMۈ_pFGo>|)svϜos9 _ޚ:cﹷ7;c'slO}Ϝoad l}߅(u%ʝmAkފ,Dޒ$-Zxsk@r-rا~:N@Y;j3*YD:˱>O5AD2aKD}V^)f{(N6e^~dls/Oa[흴39H~j;I^[; 4E~vWh)=$s\}Y:.q\P1h.nHKt4\+ t.ʹASRG/.Np.Hd$ 3voGv6Z8kW;:j=PWGgctkGvt12nCv2R2W>d|7efZ/p5Ict3񕁼-m+~m@vZt/G+M&gyvaP)b-Q8z[5cNz՝1 k-n-Zc,6˘TSB +mO~C Е.ṿ#ͣ#ͧ 8҉pܧs:f0NOt܅Dt;IwvnMOwv8C"Ǎq=-1c7 t*U HhMt֛x0Y`qܯ%+][S={{LS{1 z٬^c]^lf3L>S=ܙsx|v\z+yK"ؒ$ki:*N *.:nZbfkɀDt&w3<3Cx~I5RD$s@>ƞTHTgE"lܪC\t p-'cӏOk^g2b1Op=̡7p-geFGv7Dh)=$r^JRI[Nž@ AF^ΛT[T[T[دqU[CEJEW2X,gggy^9cYO-0>#p*!/ };ېߊmߎݝ '$/Dr9*+C90Tǻ1D%PuYb=Mlond洛2@Eoo }Fkͪ8V<' ZWn/"&S."MhV{&Am-z % ]%j{]_%8%=`!7BHL%ή)d ze7e7x g+Q.싥:7`['KtBTh_M{Iy;˔sz}zݞ=ǙaՅ0"] :ڧ.}RSzKё>໶ O5)-*R>IX7uԈ72 }d 1dggINV pmizp|h.DgϾQ7K*Z_q?,T8.{͆2r%+Y،!T?}sqtԼW["gƸ\chjXDŽ6B /Θtvt-? cQ:U5S<șuddzL稜<剞OpD{}&G8"#}4#1'%+#9ds_t-v )(ֹ礬>ȓxtI -./(pf;K>UZMuyqI'딵LuZ6}͚֘1P#bJKgF55T;-!!!>j:{¸|kr(7'O5;|#P+ԧfdf6 ?b-pddg5P+'{):3'xҩ '|J"| ϼ}}c'w\]N. /HaIQF^qnF3¸R㩎p"gVbFT3/Vگhζ:ͯ l`tv hڼygĒv^i=;vv:zAŭڠSlPsq6΂b}N~^sGkpDDiRR~qμNg3k~^Iq;G`RS,._Jy$3 `gnnDG܌n;)R;XwB0VZIQ뒗9 SԊMQ͍GXyɡmZ#býcm9y9Jӑ_,RE,m/_жFOn~)=5/dx"g1TkxB(7b1}m k* G[ߺmÏyEEv\FIQ$_{1mEWKo9J_j5)΢Y5n,5DEFQF(uTQd_DAEH~LuL~N2 ޗ) 6o޶9CqPP(cU7̂\6r8bu:F7`c9%YI%&W~Xr3Y\ Fc(_=b[𗕟_l3&QPcfDPSGe%PS?5g/&rTjhy&Va74H?{Rx:K󸌱NC5@әͫj>C&p6(ye ܲTk3oc(hQpp@ph۵[:JF$XR\#|3B#9EXKY<:(QNyvԼ4L#\+RP0Y^x pΰ.zXn9 !׌7U5h*Nj:J&8?7'#;ĩţ^Y݆MM'Fjr+ijˎ./2QYŤ_{r?9͙YEj)vPgG~*fjO"]7)46|T[$-8S_܉PP@e&0Os~Za&;юre21閪zWr: w"aψ {V:p%dS7Ʊ KzyK߮}$ֹ R*s1T #L;21tw?e)|F3,2p` ș4LڛNyZ1pg>~IeT (l=5*vM͞5wrmKn~IEgsR gZ"+ȓrFda1/b`xf]}%p@*^?WR,#K]hKE^+N<[3Z?`|s"qF$4F g-PNg`QO~8k.6^sesd>CeV &|r;^QD߭zoP=ut0xO>-1w{{\x+#`K?};D8TLS<wv*t-w1N#Tg =;dACCZy|4S@3C_|#oiZDOhg+ޏb눋"Pw8"ب(H(YkI?y?~\-+Ci4eGo,gYN3糜fgPcVxhc (Vxn5">ѧ_hc" GG:bb 1!=D;z '4,Pz _G@qKi$> #B}0-ʴzYWdqJӹH txx?+MGrg;9e1Ϛ>ou햚3$'/"Ј(B^QH+xS2)yoJ1)?q?^Ǹ ^?Q q(71 e ^7ƽߍW𺉉 vD@L OP?Ï򔗛^GA#ln(G/s~JY.Pc1VBT`!юH"aH1q'-*~ "&$ĔRdltW}rJc<㊴;N` h*!:.! n+-MdLTBlZSjT=C>)sc-+xE&g\N"UhRA+t|l*29s`+%eBEq*0(%&<.!*%L4DFx{tVk˞0 :׆E#XcrF#;cx26&.*(aQYlmGF!Şq<6a{jXQTdGRF'-'ewcy?RM-%je:nJqu}ή/.ƗM/4T+ܷ滵m~wO8w xV;6Jo'7\"3u+a}|W{ʔJL?r*R2V_6QksʪPLTF*3%?-R[@ݪYw&e)[Q3OM#8]pvNɧ!Ӑᕠ&q}bO5≐C!K␥GGE/^,n|WVvݳȨ^U/^ Y%_ yLJ^P O2O2Wn GC6s݂uznPOCUY!WZ~:~=~6 \D^C߫!6d%m/5_oA w@B久 Ͽ;!_Bg|kUsl\/%u ~NwϽz~s=_zJjߟ'='x^48<G{x={~/W;{~~z( Cq~q݃V/_yKռX eu}ym+ 6F|Ƽ@63/ךGr < ^t&uJ[دYkMYͫj^Id-kvנl ƴ7jgcb_A 2|`EYj;}FK2-Aqh9;~eڳv,ee%eeyDְ< u,䥖+YWXqGm,dc-u 2r̓񖹲ݲ3׮ݨcً):Ų\OYȞewZlY'Xޒ X(ZVK?Ʋ$,`Y2krWړ^2yv%vy&Ǎ/n!.R;~P;: tY:~pC.b9ZN߉;~'g"N[/EpXs LÐ7~U[#]6ch/#v.yH暁"o> sh_@rnb&nOSg sy/ֹ=uj&oSwߨߩߩfr <| ˿Zʍuؽzl/s}9* ֕D]j]r-uiHm$^Gku|`EYj e2|jj? _ȻbԵޘKžT #Q /65w˺W=H}":m˧ {P2@krަQ)G&eʤ}C 9leBmkЈV|dRyez,wKlw ӝf榙O4e9 辶iwuB fMS=W/dw)a[iLMMsN\<;˴'#LOM`,9w A[2}Ien;]/t5Bw{ ɘ#/ }*-6k[{ڇb Di_5;w8">֎GjxLl4&śOb&LohZm:iviv]V|vwiuM{Z}NP{)#^bnT|JW]ɴ=ku0}fMoz߀F7g?֮45nWњP7-M9|^7kr,SvԸ=v?<x߶~ A_c6Mo oMka^[oQ^ yr}#[6b ? ?:og]S2v^^Sw סw̤Y 𛍟l͆L̀pCs o % >c{c^SwCiOz o@o=ۈ&l6UOf_ofS#a{ W tEv ]O`y-\/]\k Ժ#VQ{k u'5|_lw}(vm_>K]q/G]{~qn¬6m58aҶڜjk[EMNcյ-Bh*G`+v 6NhЭ} #}')Ƿ5y|>AD>;:GG=F4uO)L,aUiӷKM{\C\8fN}6:'Zڜjsͩ&'脦 '~'jVl:~j,9N죮Z}񭫺iF`''uï[y?9tu56t5n׮/\zxmڂ(Xq{~:oxh 1 m43DWTk@S쮅صV @=Xb+<ېG+@ִ? g/Eg Iە:%ow}5 CI7~7?/0~@xM)L_@wzcok*!=tky TF v^%|!~vڳI(K#ʹ+e??Pf@^IJ¬۶\(ך6/:d0BN{Pa~]l[mɽڀ 뜳u|%&&:~T_6ag'1u2̯s7zx~yĢ+:k ;@l}u_9g_zPa~sV1񿎯3g:~T_663l Pa~sV!_W%CKK߀ 뜳ίy oPa~sVucî+:b#_oͯKEeEoaVPa~sV!_Wk;K~u_9g_3c>l@WuYaW+vV 05ua~GO7+:׬~KV43,l7Pa~kVagX)05?dgȴy}e_&=<u 1EHA&RKf)U.$q,}3D?9S Dg^S\(Ґ{Й#;- dl0 0߅`"D,w-qn>Fˆ(hXs v 7"{/ܥs4{Xa`v0]|L;ݓnt{hc蹰wLUz fc VD6FX k/=S< `c%]I%^TE_uy߈nM*lҿa .) s4,y3kwΤ* eŌ|0/;; tF-ޡTR!ћͨt2:ґy ODoUk+UIq~^t7_&XڣO*~<&ںD{&~Ht/{&()]"zk2vD$ 0"Y`{)X)s?+ZK+_DebB.5l_%W}5~_y` Kčցkyc~6A<1b6 ]@^W^`!y/W%hYb6BdkDJ@6\2EwVijݙ5?݉ĜMf`.PT g?Z[$b0d=f~8kPևA\Ӑޛz{g_H-õU5< pq(n#-ܶA3nm}jy  O\ԃKrNm3#-QpM6@8ܶ N[m3W#7^^}؍ȳ1y\ okx>N^V.]s5ChIBw"]w mD&asеH|Z.N+╾C =C[>Y˙tNCOU^gT~.Q^ܼ[>n)WghY!\`92|Ĭu+[fy'/͡/̵=/\󑹁Fw[ܿF_y|B|TfNEߥrEWfl1`ngz-hW0?ɭp/8{ރw&^יk_x E#a-x,8 wwN. G;nMR}y<<'&nivAK5 Cpw¥ N8:jYni(͖"A& r« , =,u= <10fii Z 7k,zF ob VK^g:K5?N'DXb'Kv1rbWFԪR3Y7 "NFt rT|'әQ#-;e> ȥO* O KcAr!* .K@,rj1L0{{9A)߉P|'NF|BֹŰy =D~ƲG>g//PaE" J* ?AW %`1/d[7_Ow|lD/;YwvXjz3οb9 .Oko0_ޠk0U{އ0 ۘgS'̇n 6ck_gcmfm!V kǤC|`Z!8qYh< ݰ=pyǩ v+a%/fMhoJi?okapUyuۡp#uɺ[vݭ;e*C֣2z\Z<í=ì%C퀬 B^&-"u* 0VkL`&Mɰ ?=8*`8 tٝvwI&@{+qbk )Lk/.3̂̆bfFF"g>ldLlF(9@M R8N\f;˩3~&K (yȹp4xOYHX/`,L`cb3~6c![gr6繋Y6sN ijxlfy0sxѬmmu請N=O!$J雊4c|u_ߕgkճm/heBUlOe2Q̔|p.Mَߧ&|qX/8;Źs6o2||ʽJQW\"Fhlalm4aBQ ځ~µ+7M{iv{_5}zC5=];ayl5 G#ݶNЀ%s#>;jm#M.QEin| \@n v W} m=nwO6|Te}氏3Frp)r]_>Xe5 =EgNOt{h j{w|uӚۓ>$i;i?W_8mBNioN;|W;rK{5aaF0{ C6ۖq9y^CmD яةe^sg^nB^CyZp r3گ9ͱW.Ի#l$$\{FC@HŒ@2ܓr=Nxտ&SxFN%c`3 (ha&F@'tGE_ ##/vA7lb:"w:i7&(M%p*ylߗgIad4%3#MrqUբ*%?6c=L4F # *N, 3s!w2f3ngTfMcMA!8FXtra02sy̘Bfx;Y2,fl@NFLF ft[SJ)DQfA!%m2 3ocfܫZx}ol/kl3Ae?/sxsvT^ۣi'Kev}GC؋cSBNsx`)q뒱.WiOjig _` jvWe_a|t"ܫ s]Bv܋&}{ק}+\ݢ;6ݮ7K^wyxGr+ԏ'=VìY} w 8>V=zy;.wc=ۉoGgkvVoXeeʺ1ǀ'IoCmzpٚ5FC#;&4 7Z{*̉B2J:Dp@٭zݬSxXzm`; el׺ͽ'xMH@gbV==tOV/]_;T22d3_F2_FӗaN`io?i`. C  g^2R_X6*?-#@]-un6{npM@@Mwuu[~6| zm7uD~x}$1[F5km^ ѿg^6l{!eg/ײpӞ׳ߌNtՉ#CGZ{{vUp{hp\~#n F{/ht(h%|魱 C7 0bٻޠHc/^6l0{@]=[s|ۈ{{a{UޗTJ9ҰI%~_rOGOUW,l{!eC b/>)m {V@4B;R@_Џ},;,8iYWl0K ?f0Lg̗̗0r9dn3h\F凢7 @ϼLe~21W2ZLxQ}Uy )q*8 sTE**xoo170R70:72z727b&} #uW2xi{ #F3FUz-){Xyw~˾U+V'_dEofL5ߣ[/>/vw.w־m50}#οf?b>_![ܫtŚ{s7{ۣa N۫8Џ![ҭ+PjE!N,sbYWQ9?>YyΎs|ss $'8>yu `.wv;}38CNY9w28/Nا[t=>xw ߩGL]gs:iLӛ&ȍo;a.XqV~[xs*b>yTWYWo&Zj jyVo,VidwYbYs+oV([/Fe`, LM4>5b~}6PSO0pY"ܯ_/jJ5ÕoWFe`- BUg_j*a~7QY%{uEirH6#o4`!~7xB5V?ׄe7L7x|Tg{`AaYA$t*J1&Y F  4zkA)*" 9{V3[ĂBA3o>39&`=F84.2EkMfOgz{d\َ>h(3WVgF7Wg6f&Z|P@~iM',/MCџ]f6Mh Y&iڟ" i2]Z)Rh"~!wYbBޢ|9:曭)Q oGaWi"d?꾱oԸ[O ;׳hPgsdBج1J#=N\ gL鐢Qq%lϰ"gR37/L= 'zd(sƥ|F9] M31!pU]=ʆx% w~'x@N~^qαF;=9CrxHar+Ս.-+*.: B>e\sq#˖#Zxu*Z9~d.:?}՘*/T䌷jG%l7fl6Y= =0 XE ˱ΒB ΄`CJgp"( ?G"cɭ|sss+s]V ]~Nlg\t/7oa>F1J>#W>T߰ - ?ܰ" a@##`XV.,wy±B.ԕsu-If$!Y"2Kr1d3XUbs];|T4i+3~Mgd|7fiʉR$΢졔*VjW@ ԍАeF̍`K8JR1~" cefRSA 7UCp~Wa2Q 2\_y"*lLFÞlr&5yC\,tAD239®qy$&tx+RɅ\[aYv5D>ҝxCZ]t;>F9¸B9dpÞ/+)3GR+"4 t` 7:%)GL '<x83|&VX2FpbUb9,vH+ÞWdڎ$G)ت8Jf v/Q1U O&x_3 G*$AhڔEu( 2G $቎쫜ߑT:qɖkwg@;<},%%X0.;L$UVMaV0""F| 33vޢ> (+X,]dSŒGWujI 33b+b%˃G` }_k Gy(9EH*5*GHP^HOIhbY Kr>BasKի|^h8o|rEO~h+) N9"R%fnp~ }22 p[R'e'9'x.vȘrdjL)#+dq9d\0VıF9//ɯVe/)wh,Vֲ  tϏS EZ˷h':J\SL8$gr+'}VL ј JVR]PR=`ؕr&'ūTbj,=$8eFgfF +TzpE'={t8raJ J舓CJZ٢BktuUG8 W!9%%U@p%ѸqœҢ%9,}Lөg¸G-9-xgBlr 4.664&CR!\ɕI?)qa?!G݇J~İpCnBMBB\b0eljB\GxK"`GK/ĸGRnHZ%݄:`316JL ?J u(?4U8kC: tWwBl#'2v Ap!%,JJ Bڑ5E&WRMvڇ;NMTERsX>qJTHUJ q r\v%ǭ\I)baFjpELa&%WBjb29v 3%SvTI#柒\kUEʤr$*sj|r0R+LIU?SU&UDJJbVLUT)%.L2#UaRU$WJAQˢzTEMNKal`\UeRE3)cTI#ʌ(UEؑ]+R q0|WrD!V&(!S"\U? ,rB>GLy9~VK=?Sg`UreGncDaWqԴ43MB/K|S%#<9EiCR=l+ζΖI9OHR? jfVpcLMtGRP%sbmrQ1*mnP%Y L˕s+kY+$nR2ګĝ);D,~TLSǗFWq~O:t(?1b'ij䵛@N?Oo?Q($k {OtFGLi4(O@f̕2c .N"G5ܐ###;#J?+n-J,By:#OH9sIh'Α9on79ooi'w*rrbw*b^j4gsyCF_Ly:{! K=k=Qv=3Y/͋Gc 9<oߘhjfbL2kL&gSNC~<"ary!X ^24˘i~ݘa~Ӹ߼Yf1Ð'' ƭW۱*r|?3蟁 91{d4c7h~mttV̫}~G18> Os"U7w \J.߂߷m}?o[ ~˛p >_YO"?NB񟀏'{yx}~_ h{qد0ΗNjVab \7!o+BMs#Xp]U:!BJpceI;[#F߻rwgU-K ,ٖ9,xx2ӘkN}ƣ{ KOeO#JK_0ްo,L5޲L1mXA y5y\K>?!g`1x{XgMCgR7qⱓX^1˫f11\E 4c7n"w3y_~~s"O>" B<3/j{>>u;V6ï >c <[x?p=|v~=q$r݅ f;#`zjG_[_(1Z[烇O3ϭbZԎX?ZDrYg>:8dbm6=F-umS3llӍm39y`!X ^2β8qMm K0qɺoX'!^E5#k4r+y<0Fm 7 ~&~('хƅB~S_}@A|l}Q>8>r1Vs.7klZN;z3 tW1 9DK4=G_`)ԎOO ~;~g&A?;|fͅ\'~s!~2/@w~;җ2~g7wAG{˂?vz _#?#&#G>eL[m;zBDiub9S$^ն*N_GrxPibf70YMjQ\k^N3iZ3-6iMZyv+kgvjuM=٫";E}b m55ihS5~6{ w[2~9~UNv!yv1ysh Moh)XIB>[6~o;߶~S%~1~/I߅-b/ǮV\iO? D _Raw꧛B;Z-~Kv O3vLx 7r~lr Ʌ\xȆ_7 , 7kOε rG2W aw=AG{bhe-Evoa?*~邏GjWE]%mbvx_ӾBS;Bb'x{KGbw]'6x?#_y;yI>wo7`w¢vQK&jsªmq:Mu8BW5حVТЍ6/Ҿm/fƱ"[K;#Ntɓ> >sDڦ L_x0m3}=ln[tLS];TXm-TiNu:jqSxVТЍ~juMZ/va&pq>~7`B6imhm M9IB>[6~o[߶~S%~1p\pʼnNh2!vcks !ӞHz 8[1h|i+~v)s"~7~;~g&7~w &9 𛋟\́lu8̂߾{#A ;u밻^{@o侴gџ^qf70 \~;kQϖ'7'ê>.Vgyk.z)'~JmQkn+YgB|Q/ۭÍۭړ :3mD[ :Q~_iiiǷ~S_2[_j*갾{T _W.v,g}uX_=zEU' :_v}m`g`.!:Q%Ʀ>n[_)r/׭{1}uX_=?/ 2;˖s}uX_=ΰfI갾{TUݡtG}|Ƿ~S_2[_3joRa}@l'VvzUBWuܣˮum] :_v}%3$'nRa}?SO^_;vWu,:ɗU3δ%)갾wTՆ1PAWu/;>ظ[AWurFU}0s\3<1#zF_ŸIt2[d&Ҍ""EoD/c޸;[t4vZ>i#zwsU6&@ Зi:R3FුEWDgcA9gߍ j%%L0[k b\N0或C"Ƙ%S.safƝn0 \|zě)&5σd!pW|yo+MBW,JgSo;b_Vts'o=?7Xy ?jr݋dc%XJƛdUaE!?a12>  a`!x3d%ϣ">_OWi7[Kac)+krAp _o}ngUKwTz"q>\LBxƠ7k/ BH1H+:`PnnRNibHDpDW  np rŐߖ')yw>]\]YZ"^[Su5!k\hUݍdv'vqت*k7d~6bV,vhblՆ; b=5=mXhl?vدJg\7/hLߗ}ޗ۬Fm<0qM[so+;y96,䇉9O<|a 1\Z=si,S?YD1Y)ZƜɼ<4C˦=bkt5*N*X1| %C1H r@>Z?љv"Q?"WRQN]Mj=$29Zr܅5}hH6M & *ei¾F d"w3עׁZu-;3n#O`_&׌&m"Ɠ8m)^pn4[nZp[.pX.ρ %2䦴7?\pUhwik}8m. ϣ>;>iGIao_oR߿r` ":/X/ZX5#"o},¿b`ݛe_ W.ʌ_Zkc8ރ`9XoZ3^UͩY\(ksZof~ n8hglh ;n.cc?Hӟ; uۍ3d;ͿpS~f[m>fѰX0u1>b{cL{U? Z󷵞OOYrKf r#zt.&[ l7.W0/GMѹvZZǂxJ{kXij(1YƬ\/gՍp'@=CF7F+juQu$X?\ v_n?0P c6(Cy0vH7vWvאζmFOھ5n@?VVLl{_g;'ڢo;JҰK:{৖FFFn`e޸޶ϸζ1i_I;\ D!, _FmQl(5FmDp;mϹƀrlFپW`;{j ſs?2Tg cXfXbjIn_m0^dMHKKo˂3bje% ^le;Zuی3A}ϳc46.Bƥvhh?wڣ/~\9zukq^x͹"o[uv螉͙A=Ky8qGQϾ8þǨj1&;qv!:SQKhi_c$)1R;0|5f 9{8`^vQЍd3H2n!]vI{^>=\im9b",`QA9~6p [v?<|0n#cd`x~1~O99ҟɍc|̅`,Ȝ?9q'ws2'o̪l? 鿛 Ϸ[9.xVj-<ş elCCѠ.mw:gܗ6qGݿWwY$]KCOvόRf*f{wHȤ|PNߌMo3NNB3E<]EG#<]Gis%hRݴɱсk:H*-ڑAyH~;+$$uܞsvmho Í@GstW3|]uALGKz{0z0z='ػ<|̃9ٮ26NRMeδfj: w팭uލOȷ)tC7!SX(EiN憓"]@`bl }a/cfd1 @Xφ}LƵ]aaxf#iwF'(K< #~!1̒rYs3F,ęᬄfT7robvEO&%6=Ny/ @TrM*O2gx<8ȱZ4!"lGvq,s 34;44S8L23cvck"Jtc7y";xvq7cgω`'[8 K &c `'8UI6NwpMT]Ru1S㘥v]lւN_޻VحT5U~tHHByJwy7{׷\wo=i+:_%q q Um36Q$zTOxZ;'zw6o1>Zct>*|}D***|]`/w &kboٶl۩; wε ~mwvWMi|J!`nf|"{Y0G#%VP9 p/xqd̚\Q+~g8N k6Lʚd=)du*l*q*6w*lIZ u,p rFGXktumy"MMW8.қ;z e\"=Fo:Չk+Z%Z\ e_JK}z o]e{bh/;:կqt땠 HANttw]iOѓI$AÅ8B,-N+pn !$ '[1헡_ H|홎&=GG;cL:;³lz[цmTlSWr5mW:ϑiDgt;c+}j073fY Yd> f,Ј{ \V.Cq/q%HuB:`1krE:écX䭬;NfzBVΦbsB'~k6t&c<ױ1&bu2{ ry, 0QjKyxyq {SoO5{J2ٺJ13v-sf\ E;lcncngvngَf7+|AFf~u\W}1V1Wjt-^jVu^;*]AGu-QCdRGu^/~OAX!3G5ezTT|6D5+ۢZ֨+tST3t~uRw쏰#d>Ȏe T1Z.^EAp c~c활x  .DO 466c2'{8ܯ#[q~|\Ύs98slΈ8zɜ[o7s_N[)}Ŝ! 8c圛΋\{"u79J7\QFή,ZM~-HGNJ9Fໜ1 nwrBfa; 8'$ O#]>gMvOn+zO1wq*Ə|"Y??Vq2m'o4=ZJV$dEbiX_9?oF3|L=Szz a9'o:GɊGkQtEi9Uuۢ?iJc%?( H/ 0|DTimes New Roman(0(B 0 DArialNew Roman(0(B 0  DWingdingsRoman(0(B 0 0DCourier Newman(0(B 0 1@DSymbol Newman(0(B 0  C .  @n?" dd@  @@`` \Tp 0MI)I3   ) FI GkM8:)'&e G ICN&DA(@!?.>=H9*8263w M &$#!    W% Y(Z)[^!j"kp(s"t"u#v42$fc̦4흕;22$JE!b[b[<22${gP+9x$ 9o2$F.k#q,=Ĩ$2$BHL%ή)d 72$xB5V?7@ 0e0e    A Ao 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E|| "0e@     @ABC DEEFGHIJK5%LMNOPQRSTUWYZ[ \]^_ `abN E5%  N E5%  N F   5%    !"?N@ABC DEFFGHIJK5%LMNOPQRSTUWYZ[ \]^_ `ab 3@8lm ʚ;.=8ʚ;g4DdDd@B 0ppp <4!d!dlpC 0l2<4ddddlpC 0l2 <4BdBdlhG 0< g4GdGd@B 0pF pp0___PPT10 N___PPT90(2? -O =%Virtual Cursors for XML Joins,Beverly Yang (Stanford) Marcus Fontoura, Eugene Shekita Sridhar Rajagopalan, Kevin Beyer CIKM 2004dPd>  nx Motivation//article//section[ //title contains( Query Processing ) AND //figure//caption contains( XML )] ii3,)  In an index-based method, 8 tags and text elements need to be verified to process this query Virtual cursors allows us to reduce the size of the input data by looking only at leaf nodes2Our ContributionsVirtual cursors improve runtime performance by more than an order of magnitude by eliminating I/O Virtual cursors can be used by existing algorithms for structural and holistic twig joins Overhead of path indices and ancestor information is subsumed by the advantages of virtual cursorslowAgendaEBackground Virtual cursors algorithm Experimental results Conclusions6Position EncodingScheme #1: Begin/End/Level Begin: preorder position of tag/text End: preorder position of last descendent Level: depth Containment: X contains Y iff X.begin < Y.begin <= X.end (assuming well-formed)L\357Position EncodingScheme #2: Dewey Position of element E = {position of parent}.n, where E is the nth child of its parent Containment: X contains Y iff X is a prefix of YXW5?P8Position EncodingkBegin/End/Level Typically more compact Fewer implementation issues Dewey Encodes positions of all ancestors`3#3 9 Path Index5Basic Access PathInverted lists Posting: Token = Location = Data = <> Supported methods on cursor: CB.advance() CB.fwdBeyond(Position p) CB.fwdToAncestor(Position p)Z`ZZCZ` PO 3 / Joins in XML,Structural (Containment) Joins Twig Joins-=LocateExtension< Extension (w.r.t. query node q)  a solution for the subquery rooted at q Input: q Result: the cursors of all descendants of q point to an extension for q (7`>LocateExtension LVirtual Cursorsf Observe Every useful position in a non-leaf query node is an ancestor of some leaf position GetAncestors() Given a position P, return all ancestor positions of P Data: A1  B1  A2  C1 getAncestors(C1) = {A1, B1, A2} Dewey: already encoded in position Begin/End/Level: not simple, extra work is needed T7;V )83 33 33 33 33 33 33 33 33V] et Join Points GetLevels() Input: Path ID, tag Output: all ancestor levels at which this tag occurs Path: A  B  A  C PathID = 3 GetLevels(3,  A ) = {1, 3}j I: )93, ` MVirtual Cursor Algorithm pyExample qzLocateExtension Revisited   N EvaluationProved that with exception of invalid positions, every position returned by a virtual cursor would also be returned by a physical cursor Typically much fewer positions are returned for virtual cursors No additional I/O6@@sPerformance Analysis wPerformance Analysis xPerformance Analysis yPerformance Analysis zPerformance Analysis #O PrototypeImplemented over Berkeley DB B-tree Inverted lists Posting: Token = Location = Position is either BEL or Dweye Data = or <>N3V 3V ,s &$R Data Sets@Xmark 10 documents of size ~ 100MB each Synthetic 7 tags: A, B, & , G Uncorrelated, no self-nesting Frequency A = B = C = D = X E = X/10 F = X/100 G = X/1000jZ"Z Z;Z4Z" oMiExperimental Results}|Experimental Results~Experimental Results{Experimental ResultsWorks better if elements in the dataset are uncorrelated //employee//name Deeper queries the better for virtual cursors algorithm (more internal nodes) Selective join at the bottom of the query the better, since we use only leaf nodes 6::-XOverhead of Index FeaturesBUncompressed (Xmark) BEL 463 MB, 115.4 s Dewey 538 MB, 117.7 s Path index incurs in no overhead for text centric datasets (size, index build time, and runtime) Higher cost comes from integrating path information into the inverted index Overall the overhead of index features is small, but grows with the dataset depthnZ/ZaZLZRZ/3aLR09b Conclusion+Virtual cursors reduce the size of the input data by using only leaf nodes Easily integrated in current structural and holistic twig join algorithms Overhead of index features (path indices and ancestor information) is acceptable Path indices and ancestor information combined produce better results,Z, More detailsAhttp://www.almaden.ibm.com/cs/people/fontoura/papers/cikm2004.pdfBB /8   P ` Ot{h______` M <ff33̙3` +ffO=ff̙H7` fff3f̙` Tff33ff` 0Ky{kOz` )R{f` GiIfff̙fR` ̙|̙3f` 3ff~>?" dd@'?lFd@  nK'o`P( n?" dd@   @@``PT     o (`0p>> $''d(  dZB d c $D"`  d 6ܛ "M }  X Click to edit Master title style!!  ( d 0d "; `  RClick to edit Master text styles Second level Third level Fourth level Fifth level!    S   d 08 "` `  d*0    d 0 "`   j*0      d 0D "` `  j*0     T    d "`h2  d s *"`h2  d s *"h2  d s *"@h2  d s *"0`h2  d s *"0h2 d s *"0@h2 d s *"`0h2 d s *"`h2 d s *"h2 d s *"@h2 d s *"`n2 d 0" h2 d s *"``h2 d s *"`h2 d s *"@`n2 d 0"``h2 d s *"`h2 d s *"n2 d 0"@n2 d 0"`h2 d s *" h2 d s *"`@n2 d 0"@n2  d 0"@@h2 !d s *"`@n2 "d 0"``n2 #d 0"`h2 $d s *"`@h2 %d s *"``h2 &d s *" h2 'd s *"` H d 0޽h ? 3ff~___PPT10i. s+D=' = @B + Network.  E=((h(  hZB h c $D"  h 6M "&wf M X Click to edit Master title style!!   h 0|M "wQ  M [#Click to edit Master subtitle style$$   h 08M "` ` M d*0    h 0Y "`  M j*0      h 0LY "` ` Y j*0     T `]  h "]p h2  h s *"`]h2  h s *"]h2  h s *"]Eh2  h s *"`h2  h s *"h2 h s *"Eh2 h s *"yh2 h s *"`B h2 h s *"B h2 h s *"EB h2 h s *"yB n2 h 0",B h2 h s *"`u  h2 h s *"u  h2 h s *"u E n2 h 0"yu  h2 h s *"`(  h2 h s *"(  n2 h 0"( E n2 h 0"y(  h2 h s *",(  h2 h s *"` Z n2 h 0" Z n2  h 0" EZ h2 !h s *"y Z n2 "h 0"`  n2 #h 0"  h2 $h s *" E h2 %h s *"y  h2 &h s *"A  h2 'h s *"yA  `B (h s *D"H h 0޽h ? 3ff~___PPT10i. s+D=' = @B + 0 zr (    0 x P!  x P*    0tx  ! x R*  d  c $ ?%  x  0hx  @ x RClick to edit Master text styles Second level Third level Fourth level Fifth level!     S  6|x kP  x P*    6tx k  x R*  H  0޽h ? ̙3380___PPT10.pCW  (    0 P!   \*    0x  !  ^*    6 kP   \*    6೤ k   ^*  H  0޽h ? ̙3380___PPT10.0WpZK0 0*(  x  c $DYh Y r  S Yh P  Y H  0޽h ? ̙33y___PPT10Y+D=' = @B +   x T(  xr x S lYdM }  Y x x c $mYd; p@ Y r x S nYd ` Y   x  f*1?  T$ Query Processing  8  0   x0   x  fpY1?00P 7article x  ftY1? 7section x  fxY1? U 5title  x  f8|Y1?e 6figure  x  fwY1? i 7caption  x  f̂Y1?Q   :  XML ~B xB ND1? ~B xB ND1? ~B xB ND1?@@~B xB ND1?pp~B xB ND1?PP~B xB ND1?~B xB ND1?PpP/ ~B xB ND1?p0 ~B xB ND1?P0~B xB ND1?0~B x ND1?00~B x ND1? 0H x 0޽h ? 3ff~___PPT10i.pi+D=' = @B + pZK0 @F(  x  c $YdM }  Y   c $,Yd; ` Y "h@8XH  0޽h ? y___PPT10Y+D=' = @B +}  l$(  lr l S TYdM }  Y r l S (Yd; ` Y H l 0޽h ? 3ff~___PPT10i.t+D=' = @B + pZK0   (  x  c $lYdM }  Y x  c $Md; ` Y e8   d  0 t   fY1?   @A1"    fY1?  @B1"    ftY1? | ,  @B2"     fTY1? F G f  @C1"     fXY1?P F f  @D1"     f`Y1?  @B3"     fY1?   @C2"     fY1? f  3R ~B B NDo? V ~B  NDo? <~B B NDo? ~B  NDo? ` | ~B  NDo? F ~B  NDo?: : ~B B NDo? ` F P@   d    d    fY1?v @ ;(0,7,0) 3   fXY1?& F  ;(1,5,1) 3   ftY1?   ;(2,2,2) 3   f[1?F D f  ;(4,4,3) 3   f8[1? T  ;(5,5,3) 3   f[1?d  ;(6,7,1) 3   fl [1?f d  ;(7,7,2) 3   ft[1?0   ;(3,5,2) 3H  0޽h ? y___PPT10Y+D=' = @B + pZK0 -I(  x  c $&[dM }  [ x  c $'[d; ` [ 8 p  -      fl)[1?0 g  @A1"    fX.[1?f  @B1"    fL+[1?P L | l  @B2"    f0[1?`  6  @C1"    f4[1?  6  @D1"    f9[1?* lV  @B3"    f=[1? f W  @C2"    f(A[1? 6 V 3R ~B B NDo? & ~B  NDo? P ~B B NDo?p f ~B   NDo? L ~B ! NDo? l  ~B " NDo? | ~B #B NDo? l   $  f|K[1?   7(1) 3 %  fLP[1?d 0  9(1.1) 3 &  fhN[1?p   ;(1.1.1) 3 '  f Set of matching path IDs /R/B -> {6} //R//C -> {4, 7}H H3H $ 0޽h ? ___PPT10+)DO' = @B D ' = @BA?%,( < +O%,( < +DA' =%(D' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*$%(+8+0+$[ +* pZK0 %$'(  x  c $@[dM }  [ x  c $[d;  [ !l  `y,$D 0   f[1?  @A1"    f[1?  @B1"    f[1?` @B2"    f|[1?   @C1"     f[1?P   @D1"     f[1?p @B3"     f [1?f  @C2"     f[1? 3R ~B  B NDo?` F~B  NDo?~B B NDo?p~B  NDo?`~B  NDo?  ~B  NDo?~B B NDo?` xB  HDo?  xB  HDo?  xB  HDo?p`xB  HDo?xB  HDo?P     `[1?   @B1"    `4[1?d   @B2"    `\1?t   @B3"    `@\1?Y  @C1"    ` \1?  @C2" B " NDo? P ,$D 0 # N1?@  ,$D 0l  @ % @,$D 0~B ! NDo?  ~B $ NDo? @ & N1?`  ,$D 0 ' N1? @,$D 0H  0޽h ? ^V___PPT106+᳋D' = @B D' = @BA?%,( < +O%,( < +Dt' =%(D' =%(D' =4@BBBB%())))?D' =1:Bvisible*o3>+B#style.visibility<*%(DX' =%(D' =%(D' =4@BBBB%(E' =1B BPB`B1:Bhidden*3>+B#style.visibility= `B<*#D' =1:Bvisible*o3>+B#style.visibility<*#%(DX' =%(D' =%(D' =4@BBBB%(E' =1B B`BPB1:Bhidden*3>+B#style.visibility= `B<*&D' =1:Bvisible*o3>+B#style.visibility<*&%(DX' =%(D' =%(D' =4@BBBB%(E' =1B B`BPB1:Bhidden*3>+B#style.visibility= `B<*'D' =1:Bvisible*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<*"%(+j   pZK0 y q p t (  tx t c $3\dM }  \ r t S 4\dC  \  t  `5\1? l :A || B3F J  t P   t  `:\1? J 6 :A || B3 t  f&d;\1? f  6||3  t  fdLA\1? v  6||3  t  `D\1?  5C3  t  `G\1?   5D3  t  `K\1?  l :B || C3  t  `N\1?0 / l :B || D3 t  `0P\1? 8 ? A || B || C 3H t 0޽h ? y___PPT10Y+D=' = @B +" pZK0  %)<(  <x < c $r\dM }  \ x < c $r\d; `  \ l @ P  $< v ,$D 0~B < NDo? @  ~B < NDo? P ~B < NDo?0 ` l   } )< },$D 0N J  <  P  <  `\v\1? J 6 :A || B3 <  f&0z\1? f  6||3 <  fd\1? v  6||3 <  `}\1?  5C3  <  `\1?   5D3u @   &< }  <  fp\1?p   @B1"   <  f@\1?6 V @C1"   <  f\1?J6 V @X1"  <  fЏ\1? G @ @X2"  <  f\1? @ @D2"  <  f\1? @ `  @B3"  <  f \1?  @D1"  <  f \1?   3A ~B <B NDo?p ~B < NDo? p ~B <B NDo?Zv 6 ~B < NDo?Jv 6 ~B < NDo?` ` P ~B < NDo?  ~B <B NDo? ` P  <  `\1? G  @C2" xB < HDo?p @p 0l  0 %< ,$D 0~B  <B NDo?` p ~B "<B NDo? p 0~B #<B NDo? P 2 '< To? 0P ,$D 0H < 0޽h ? : 2 ___PPT10 +G2xD ' = @B D ' = @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<*'<%(D4' =%(D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*$<%(D4' =%(D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*%<%(+( pZK0 *1@6(  @x @ c $\dM }  \ i @  `,\1?P _While (not end(q) && not hasExtension(q)) { (p, c) = PickBrokenEdge(q); ZigZagJoin(p, c); }` `> l  V  *@ V ,$D 0B  @ TDo? P p B @ TDo?` & B @ TDo? p V l  ] +@ ],$D 0N J  @   @  `\1? J 6 :A || B3 @  f&`\1? f  6||3  @  fd0\1? v  6||3  @  `L\1?  5C3  @  `0\1?   5D3) N   @ ` ] @  `\1?p   @B1"  @  `p\1?6 V @C1"  @  `\1?J6 V @X1"  @  `\1? G @ @X2"  @  `\1? @ @D2"  @  `^1? @ `  @B3"  @  `^1?  @D1"  @  `^1?   3A xB @B HDo?p xB @ HDo? p xB @B HDo?Zv 6 xB @ HDo?Jv 6 xB @ HDo?` ` P xB @ HDo?  xB @B HDo? ` P   @  `\1? G  @C2" xB !@ HDo?p @p 02 )@ To? P l  P p  /@P p ,$D 0B &@B NDo?0P  ,$D 0xB ,@B HDo? P p l p0 ` 1@0 p`,$D 0B (@B NDo?@`,$D 0xB -@B HDo?p0 l  @   0@@  ,$D 0B '@B NDo? `  ,$D 0xB .@B HDo? @ 0 H @ 0޽h ? v n ___PPT10N +bBD2 ' = @B D ' = @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<**@%(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@%(D4' =%(D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*1@%(+ pZK0 `|*(  |x | c $,^dM }  ^ r | S -^dC ^ H | 0޽h ? y___PPT10Y+D=' = @B + pZK0 P@*(  @x @ c $HJ^dM }  ^ r @ S K^dC  ^ H @ 0޽h ? y___PPT10Y+D=' = @B +# pZK0 | t @  (  x  c $AMdM }  ^ v   ` h^1?P VirtualFwdToAncestor(Position p) //C is the implicit parameter  this AncArray = GetAncestors(p); LevelArray = GetLevels(p.PID, C.token) for (i=1; i < AncArray.length(); i++) { if (AncArray[i] < C.pCur) continue; if (AncArray[i].level not in LevelArray) continue; C.pCur = AncArray[i]; return C.pCur; } return invalidPosition;O O)        N1?0`,$D 0   N1?0P,$D 0  N1?0@,$D 0  N1?p00 ,$D 0  N1? 0 ,$D 0  N1? 0 ,$D 0  N1?0`,$D 0H  0޽h ? ___PPT10+\jmD' = @B Da' = @BA?%,( < +O%,( < +DX' =%(D' =%(D' =4@BBBB%(E' =1B B`BPB1:Bhidden*3>+B#style.visibility= `B<*D' =1:Bvisible*o3>+B#style.visibility<*%(DX' =%(D' =%(D' =4@BBBB%(E' =1B B`BPB1:Bhidden*3>+B#style.visibility= `B<* D' =1:Bvisible*o3>+B#style.visibility<* %(DX' =%(D' =%(D' =4@BBBB%(E' =1B B`BPB1:Bhidden*3>+B#style.visibility= `B<*D' =1:Bvisible*o3>+B#style.visibility<*%(DX' =%(D' =%(D' =4@BBBB%(E' =1B B`BPB1:Bhidden*3>+B#style.visibility= `B<*D' =1:Bvisible*o3>+B#style.visibility<*%(DX' =%(D' =%(D' =4@BBBB%(E' =1B B`BPB1:Bhidden*3>+B#style.visibility= `B<*D' =1:Bvisible*o3>+B#style.visibility<*%(DX' =%(D' =%(D' =4@BBBB%(E' =1B B`BPB1:Bhidden*3>+B#style.visibility= `B<*D' =1:Bvisible*o3>+B#style.visibility<*%(DX' =%(D' =%(D' =4@BBBB%(E' =1B B`BPB1:Bhidden*3>+B#style.visibility= `B<*D' =1:Bvisible*o3>+B#style.visibility<*%(+#%  1)!(  r  S D^dM }  ^ `8     0 xB  HDo? pH@ `   pxB  HDo?xB  HDo?`  @ 0    p xB  HDo?0  xB  HDo? P xB   HDo?  H@ 0    p xB   HDo?0  xB   HDo?     Z8^1? P  NAx033  Z^1?P NAy033  Z^1?  NA1033  Z^1?p OA99033  Zԝ^1? PA100033  Z^1?p0   NB1033  Z^1? 0 p  NB2033  Z^1?0@ Proot033~B  NDo? p ~B  NDo? P P   `@^1? gt  ? Position ZEROt   f^1?0 8:  ,$ 0 "GetAncestors(B1) = {root, Ay, A99}l# lF33333x   f^1? 0p ,$ 0 6Path root-A-A-B has PathID x, GetLevels(x, A) = {2, 3}(7 lF73, +   f^1?Y? @ CA.VirtualFwdToAncestor(B1)^33333w   f^1? @ ,$ 0 GFor i = 1, AncArray[1].level = 1, which is not in LevelArray = {2, 3} (H lFH32  G    f^1? ,$ 0 }9For i = 2, both conditions hold, first answer for //A//B (: lF:3B ! NDo?,$D 0H  0޽h ? 3ff~  ___PPT10r .h+əDf ' = @B D! ' = @BA?%,( < +O%,( < +DA' =%(D' =%(D' =A@BBBB0B%(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<*%(DA' =%(D' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<* %(D4' =%(D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*!%(++0+^ ++0+^ ++0+^ ++0+ ^ +   4(  r  S ^dM }  ^     `<`1?6   }While (not end(q) && not hasExtension(q)) { l = PickBrokenLeaf(q); A = ancestors of l under q; amax = maxarg { Ca | a is in A }; Cl.fwdBeyond(Camax); for each a in A Ca.virtualFwdToAncestor(Cl); } t !ml    ,$D 0q   ` `1? 0  _While (not end(q) && not hasExtension(q)) { (p, c) = PickBrokenEdge(q); ZigZagJoin(p, c); }` `> xB  HDԔ?  H  0޽h ? 3ff~___PPT10n.@?+-|DB' = @B D' = @BA?%,( < +O%,( < +D4' =%(D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*%(+ pZK0 00(  x  c $`dM }  ` x  c $`d; ` ` H  0޽h ? y___PPT10Y+D=' = @B +V,  !'(  x  c $)`dM }  ` F  P     `P+`1? P 8employee    `/`1?K p 4namexB B HD1?ppxB B HD1?pB  HDo? 0 pB   HDo?` 0` pB   HDo?` ` pB   HDo? ` pB   HDo?  pB   HDo? P pB  HDo?` ` pB  HDo?   pB  HDo?` P` pB  HDo? p pB  HDo?` `    `D7`1?@  UStructural join: employee//name 3   `;`1? YP  SEmp3   `@`1?y `+  :Name   `,D`1? ~&No PathIDs and no ancestor information''r   `GgHRI3o?0  r   `GgHSIԥo?y p` r   `ZGôHLPIC3o? ) ,$D 0r    `ZGHRIo?W  i ,$D 0r !  `GgHRI3o? p ,$D 0r "  `GgHRI3o? ,$D 0r #  `GgHRI3o? 6 ,$D 0r $  `GgHSIԥo?p @W ,$D 0b % ZGUUHI/3o?  ,$D 0b & ZGQHD%Io? jW ,$D  02 '  `o?"6@`NNN?Np0,$D  0H  0޽h ?@  ! " #$%& 3ff~vn___PPT10N.+Z|D"' = @B D' = @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<* %(D4' =%(D' =%(D' =4@BBBB%(D' =1:Bvisible*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<*#%(D4' =%(D' =%(D' =4@BBBB%(D' =1:Bvisible*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<*&%(D4' =%(D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*'%(+&  0!J(  x  c $h`dM }  ` F  P     ``1? P 8employee    `X`1?K p 4namexB B HD1?ppxB B HD1?pB  HDo? 0 pB   HDo?` 0` pB   HDo?` ` pB   HDo? ` pB   HDo?  pB   HDo? P pB  HDo?` ` pB  HDo?   pB  HDo?` P` pB  HDo? p pB  HDo?` `    ``1?@  UStructural join: employee//name 3   ``1? YP  SEmp3   ``1?y `+  :Name   ``1?l (With PathIDs and no ancestor information))r   `GgHRI3o?0  r   `GgHSIԥo?y p` r   `ZGôHLPIC3o? ) ,$D 0b  ZGTH8I^o? P` ,$D 0r   `GgHRI3o? p ,$D 0r   `GgHRI3o? ,$D 0r   `GgHRI3o? 6 ,$D 0b  ZGUUHI/3o?  ,$D 02 !  `o?"6@`NNN?N@@,$D 0H  0޽h ?  3ff~___PPT10.+D' = @B De' = @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<*%(D4' =%(D' =%(D' =4@BBBB%(D' =1:Bvisible*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<*%(D4' =%(D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*%(D4' =%(D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*!%(+&  @!D(  x  c $adM }  a F  P     `pa1? P 8employee    ` a1?K p 4namexB B HD1?ppxB B HD1?pB  HDo? 0 pB   HDo?` 0` pB   HDo?` ` pB   HDo? ` pB   HDo?  pB   HDo? P pB  HDo?` ` pB  HDo?   pB  HDo?` P` pB  HDo? p pB  HDo?` `    `da1?@  UStructural join: employee//name 3   `a1? YP  SEmp3   `a1?y `+  :Name   `L a1?! (No PathIDs but with ancestor information))r   `GgHRI3o?0  r   `GgHSIԥo?y p` r   `ZGôHLPIC3o? ) ,$D 0r   `ZGHRIo?W  i ,$D 0r  ZG(#HI3o?@P0) ,$D 0r   `GgHSIԥo?p @W ,$D 0b  ZGTHkI 3o?p  ,$D 0b   ZGQHD%Io? jW ,$D 02 !  `o?"6@`NNN?Np0,$D 0H  0޽h ?   3ff~___PPT10.+`6iD' = @B De' = @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<*%(D4' =%(D' =%(D' =4@BBBB%(D' =1:Bvisible*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<*%(D4' =%(D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<* %(D4' =%(D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*!%(+  <4P"D(  x  c $$MdM }  M F  P     `M1? P Remloypee    `$M1?K p 4namexB B HD1?ppxB B HD1?pB  HDo? 0 pB   HDo?` 0` pB   HDo?` ` pB   HDo? ` pB   HDo?  pB   HDo? P pB  HDo?` ` pB  HDo?   pB  HDo?` P` pB  HDo? p pB  HDo?` `    `M1?@  UStructural join: employee//name 3   `(M1? YP  SEmp3   `M1?y `+  :Name   `xM1?6 p PathIDs and ancestor information!!r   `GgHRI3o?0  r   `GgHSIԥo?y p` b  ZGSHkI3o?`  ,$D 02 !  `o?"6@`NNN?Np0,$D 0b " ZGTH8I^o? P` ,$D 0H  0޽h ?O  " 3ff~___PPT10.+8+D' = @B Du' = @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<*%(D4' =%(D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*!%(+2    `P (  x  c $|adM }  a F  P     `,a1? P Remloypee    `+B#style.visibility<*%(D4' =%(D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*%(+ pZK0 0(  x  c $adM }  a x  c $ad; ` a H  0޽h ? y___PPT10Y+D=' = @B + pZK0 0(  x  c $ $3$3$3H   0޽h ? 3ff~___PPT10i.}o+D=' = @B +  2*`(  r  S "xdM }  x h  3 rd#xo?"0@NNN?N " //d//e//d> $3$3$3  `Adpathexptimelp xH  0޽h ? 3ff~___PPT10i.qI+D=' = @B +  ((  ( ( 6t7x M } (Experimental Resultsv ( 3 r<9xo?"0@NNN?Nb{f ////A//B//CB $3'$3 $3 X ( C 0AtoppathtimePH ( 0޽h ? 3ff~___PPT10i.p"+D=' = @B + ,(  , , 6Jx M } (Experimental ResultsP , 3 rLxo?"0@NNN?Nb|g v//A//B//C//  $3 ^ , C 6AbottompathtimejH , 0޽h ? 3ff~___PPT10i.PO+D=' = @B +}  $(  r  S p\xdM }  x r  S D]xd; ` x H  0޽h ? 3ff~___PPT10i.I7+D=' = @B + pZK0 <(  ~  s *lxdM }  x ~  s *mxd; ` x H  0޽h ? y___PPT10Y+D=' = @B + pZK0  0(  x  c $xdM }  x x  c $xd; ` x H  0޽h ? y___PPT10Y+D=' = @B +$  0$(  0r 0 S ėxdM }  x r 0 S xd; ` x H 0 0޽h ? 3ff~80___PPT10.쟾/ 0 ?7(  X  C %   7  S  @   Many xml queries are branching expressions, therefore efficiently processing twig joins is an important aspect of any xml query processor,mH  0޽h ? ̙339 0 ,.(  ,X , C %    , S 0  @   0Describe how we actually use path index to speed up processing later& Maybe point out the obvious usage, e.g., for path queries Point out how every position (e.g., B2) is associated with a single path id (e.g., 3) Mention tradeoffs? Cons: Space of path table AND postings, time to process index Pros: enables path twig join and virtual iterators, which can have enormous benefitsR #H , 0޽h ? ̙33rxlmns!u^Pf w &0^OT'# X"<2k[[W%_HcMgre|Oh+'00$ hp    $,&Comparing Hybrid Peer-to-Peer SystemsosbyanginNetwork IBM_USER Hy769Microsoft PowerPoint-to@%,@@D@g6G"g  vF  --$--'--% t `--'@Arial-.  2 1."Systemti-3f--F$!>G<G:H8I6J5L4N3P3R3T4V5X6Z8[:\<]>]@]B\D[FZGXHVITIRIPHNGLFJDIBH@G>G--'--F$!]G[GYHWIUJTLSNRPRRRTSVTXUZW[Y\[]]]_]a\c[eZfXgVhThRhPgNfLeJcIaH_G]G--'--F$!|GzGxHvItJsLrNqPqRqTrVsXtZv[x\z]|]~]\[ZXVTRPNLJIH~G|G--'--F$!>f<f:g8h6i5k4m3o3q3s4u5w6y8z:{<|>|@|B{DzFyGwHuIsIqIoHmGkFiDhBg@f>f--'--F$!]f[fYgWhUiTkSmRoRqRsSuTwUyWzY{[|]|_|a{czeyfwguhshqhogmfkeichag_f]f--'--F$!|fzfxgvhtiskrmqoqqqsruswtyvzx{z|||~|{zywusqomkihg~f|f--'f--F$!ffghikmoqsuwyz{|||{zywusqomkihgff--'3f--F$!><:86543334568:<>@BDFGHIIIHGFDB@>--'--F$!][YWUTSRRRSTUWY[]_acefghhhgfeca_]--'f--F$!|zxvtsrqqqrstvxz|~~|--'--F$!--'--F$!--'3f--F$!><:86543334568:<>@BDFGHIIIHGFDB@>--'f--F$!][YWUTSRRRSTUWY[]_acefghhhgfeca_]--'--F$!|zxvtsrqqqrstvxz|~~|--'--F$!--'f--F$!><:86543334568:<>@BDFGHIIIHGFDB@>--'--F$!][YWUTSRRRSTUWY[]_acefghhhgfeca_]--'--F$!|zxvtsrqqqrstvxz|~~|--'--F$!--'--F$!--'f--F$!><:86543334568:<>@BDFGHIIIHGFDB@>--'--F$!][YWUTSRRRSTUWY[]_acefghhhgfeca_]--'--F$!|zxvtsrqqqrstvxz|~~|--'--F$!--'--F$!><:86543 3 34568:<>@BDFGHII I HGFDB@>--'--F$!][YWUTSR R RSTUWY[]_acefghh h gfeca_]--'--F$!|zxvtsrq q qrstvxz|~  ~|--'--F$!    --'--F$!] [ Y!W"U#T%S'R)R+R-S/T1U3W4Y5[6]6_6a5c4e3f1g/h-h+h)g'f%e#c"a!_ ] --'--F$!  !"#%')+-/13456665431/-+)'%#"!  --'--%!44--'@Arial-. 3f+2 YVirtual Cursors for XML )%",%"%"%)3%.-@Arial-. 3f2 gJoinsa"%%".-@Arial-. *2 dBeverly Yang (Stanford)        .-@Arial-. 2 Marcus !  .-@Arial-. 2 @Fontoura  .-@Arial-. 2  , Eugene   .-@Arial-. 2 Shekitaa .-@Arial-. 2 Sridhar   .-@Arial-. 2 B Rajagopalan  .-@Arial-. 2  , Kevin Beyer   .-@Arial-. 2 <C CIKM2004e ! .-՜.+,0    ( ROn-screen ShowStanford University, CS Dept.tj#: )Times New RomanArial Wingdings Courier NewSymbolNetworkVirtual Cursors for XML Joins MotivationOur ContributionsAgendaPosition EncodingPosition EncodingPosition Encoding Path IndexBasic Access Path Joins in XMLLocateExtensionLocateExtensionVirtual Cursors Join PointsVirtual Cursor AlgorithmExampleLocateExtension Revisited EvaluationPerformance AnalysisPerformance AnalysisPerformance AnalysisPerformance AnalysisPerformance Analysis Prototype Data SetsExperimental Results Slide 27Experimental ResultsExperimental Results Slide 30 Slide 31Experimental ResultsOverhead of Index Features Conclusion More details  Fonts UsedDesign Template Slide Titles# _}IBM_USERIBM_USER  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~    Root EntrydO)PicturesUCurrent UserSummaryInformation(`$PowerPoint Document(}DocumentSummaryInformation8