ࡱ> n.3~B*ɼPNG  IHDRs6y#sRGB pHYs+.eIDATx^흹eUiERP.6;:hbq6Ӊ=ؔ=8$sc 0fK)lܨO+JwU{IG|$}{{; ^{S>AӧO={>~/ @_=ǟG?/~-t~&\#q}mؗ@h1=y^.v+`tÈ.ųes?Ńato9A]dwtss2ِ"}D3M}y?Ӟߋo2{eZS^~it{#Yn?=ݒǗp<ܐû^}|XdӤc%?c Ə/zk~@KU%1=nGM=}܈WQe* $NP$nJ`7F 7dB]܀xJ&D@؅L 7dBpc62A^Ǯw\ r#X=oNFTϯ̯OW8 lD}4@#puH2po<7_}m__YB '%Z,QG}4*e|qZY%~+ ";xODG^:x◅{6\~["CaS qumGb32t v+wW>ml` $0͓"hTY:~SȚuZrDd$(NfF:EwGѬvѺ PRkKpwo@8 yezޢO:9wGѬ.ɸr4>Ԛ1{x>h/ r^$J d(ik sW(VCtG1KE֜F5;IB#ؒ ]n=Z^J0V:6?ғ$&)QXm~ZLw$DY{#B+;Yǥxtf%CDD"9r\9򲵐v{>a`$p+ YGӞZkӌ[>#gD E*?=~=w/xtgU@R  pP p EpyF^PӧOZ%MϟA X–M6uĞe?s2Gh^5>_&wk]6~6v) S A ( T l}L!@8 \![r~6};6gefv=D%/p@>u< 0Z}ŴSsiF5fx.z<jʲxTiRR,=>ܙVIhc4uE7#Ut&fO ʑ}?\7.MбQ'-WТ4"Z.i5;W5^۬KפV}14 H Hأ |\i7I7$?5% G{PM-MfZ )s֓* b)btzW̕}WeKEdTuam:=>C=?5\D?jʚEBSڲ*85nUXuD Jφ2{__E1JBƖ=geY+#٣E3QL;󥅵TMGջ&-?#r#M d{ɥ .Ug|K,vq0j5{FT"T,&,Z泔QPG%>Վ kmAjt:NL:#U ՝rIgH<ަc[5{G~u3dnu6t=NF]n6>ca@>:E7؏CC]7,#dǑH IU4NYc#u>NNDMz0,kJ x$&NGi=%]cʸl46`=dw<جy!-+@8!ݟzQXIU虊suWăWcx/0~T',V[:s*\yk\;=۫ၤ[Ǐ;ܭA{} r} .JzY}ܷYS:K ӧOscWǫ6*atUg"L\9ׇp8$˞_{z)!pR.a`9/TNCv|ۥ/= @@8>^{`۩ߣo8Yx;G>s}a=>ϫc`k 3qA>L1: G RgēFܳ]!VF`V#<*4!U$(Xz$fIM5c>U+k\'E@4k|l3HIHZ64vW'#])GHw& WynGϽ~Ǩ3g>JǗf Y FmW>ji{{$rϥ.Fl3 ; fNڔzپóv>fT:*Oz<{$|;od}1>d4J-ەS}K^ag^{iG{pew@ޱE]R++OΊ$N@:sQucJʫJӠK:Ta&7A)7;g9fıMNV9tdm6cէ'kK.-/qy fp~F/eW..po  2Z)=xuC~xAGW*~<'zuQ'Ѫ6M$Zja XZ8hxU DN{5 裇i 0@ؘ'{^tPϑF̯]Z ܦ˗R3ί' 8TFAjcѝN'n kN`I&^ɼĞPWà  h@W">^6I}I[WMbF@G p%m.]`=Wj^w}0}|0 pV|o| ؗ.kj>oKt@ C =+{#8"0f=r1̯&Bee(Yme;#3ȲuՖ `j=,@,V%4eL Kl%6A !@ K`GVݘ/E` }l0?;5.ߦQ-NAgY"d!\o!0.{~hFTAo%q.8y9JeMeLͦEŬgUMcٱ?,8\Z.FR+gvq088h?)!p v(r>űP+YWk[7hy DNG;ZLGN ӈ?ٚټ}r$%E@)`lulW!%]rJґhOE?fuRŒN5Yf- p4ǹq>#Yp0ȁ>(p-SW}{(G#0XCx灘 \>j8 ,N=ZkAn@)-iGئS[#R4:Ѷ/5jiH@%qE2eڧSZAϣi\u/=UjjQeV~΀oLPFuBM9,}h裎f:^V3;̲%="r--ūl[V6eAM],50$} F pxO@ !A<~3v&0aQ< 1\xъ%,@`5g= B^cs-S@g-tHo`*vdhI^@h6_nqv4Le1ݹGx0MSȂMɘeA'A;1~15;In4}BTfjYUg6!nƏwi,m$Ofl,S@YБcu;^+кbkz[K!̰T$1Zy,r+ _? iG2ܒ WJFGSe.&J"eIlԟ\qi3չ&ou:Az#p}?D[HX+=C+ ?<~v!\5 6@ O}e@|~zsz`禣ָZD){5eλډ \.zܥ{_UU7']=,ͰSI`uy5cb]4#/B[}tuvL _ED{h1MnÓOӈQ"<cZvMM}gAyIJo`j༨X hZD,B`FJ=Y4\m 9~hSi p+1@lqY+w5y#o@.\}lqK\c*`_ lBzS[A"]Y eOVQJO^j驩l8!K#Jl}[F`qրegռp =+_g 7ۃD@ # !p#u @nN}y |@`H '0X ';4KM ş=[4e":Y9y!p41gxޏ z<[{~l$cߌ"F/v p1XřtWz^Or! -ѹc:[j;`&є<ʢ::>Ӗ:3*`aʜT-B4ޥ)S(r:+2xɸMRIoJ,})OϣM[C |z?ͻ$Q4l"!p@Əh;yH0:[si0ˮuԁp Kfc(.'#;fiM(k8fE<cyGbtfrs:ܚ>"ƍnVd^?`?.EΗ%q:$*ߦR+G4o=]LreDU8)2åZثR.6 0x+F1Ka-[ۀNk;}LHVW޿G7NކyuSI@t<~<]e0 ,)a @ T"!@SSbgWG>vq^OیH/{Ѣ)|7yI\7ר<nB`&Gy԰ @`KS_oeAD} B&ˡ'Y09ƁµжO\VD&0X޲`['gN'0^>[Y%JL0 IaGYk c)}4AfdvSV, / )hqIufg"=z$:RKmZvqP|n@y4 {yE2Jf U ڬPF`>kV*@"^G +iM˜2 e, [-&0KU"ݙuTO+ُ+"+j飸4{wH5n,}lqtlrDp빠6l>}h8)?fG7x QCj]@MYgQ\bM钢Mߦ"D5.*+:ŕ ޳{Cɓ'Mμ[|caWB !g&c5hJ(Oާo5q2hh)8I`ԥ%'[sez74򶯈4d@RX}|eO4mzp o4^L_L6A!-9I5|?U#`)g$6<1xj;hAw$Cֳct,+Z[SkF. 450{.YѴ:T鐳4Mym%ZB5ckh`3ؗk^u`3~u~&Hdc>)+2M6X2Ru)+E*P/9 L$W936bZĒV@D8ׇ%[NV5/y/@Hu p]O&r)B`G?Ȕ!k5D^3~rz/ \?5/dq[,C g]: eC}HlK  ι7-]NG`>f{#vcs{uՆ< 9\ť~yf#/lqv=!T'K` }thgєVvN{}6l J#=qۏvm(+ |O_+mOG+YqT")ssq=;5F'ȩhq9eֽ}ٛKYhQ1bQHj)JX^K3]?Rku*U=gGUa vHFt8gJdxLrc&2zd鳏% 8!2"ʮɍHyl,bI1 '185GV"͕-+Bv2$=edm^ήH2x*Y7"<<9{gϞ[EgܭB,w!FǏ@L OlHmCXC lYTjaW?ja$ 0136!8 8?3F .rz)p/+!lI}ܒ6eAg">ؒ%mʂD}+(eCx?`d*<9]=jY5Ay,ZD6e+.rn|}ԇK'$?q9QNIVXj':%opD@+Q·夿icFhFBHU5Rd"@ܶ + M(uQ(g0ny6&ot͉jәtYf;O=?cv8ω-Dڡ/4hNwQ{֖;djQLVAԿcFC[Z-^ѳ B7<{"[*LADuٺ]ZT{v` ۊ<(EG bťIHWM_0A7eV#֛:>J@O_pRS#r\% ]_XE@d)K'm{_qQ #iMo6=T5kbl*hijzښ9Z;@Wrα>fjY%Rf @#oz8F?+m{6]IjѶi6,4j]m//U2[+ë-rIeBĮqؕUt\Y8:e\߹yd^ڴ-pQY ! TnjSih6]?T~Bp}̮ԦcSʪ*;[kiǎ-oIeGfe|n[VXwl!,Lj}x3ӈzrRY=y( ^jX - [Ҧ,@L3B[@MY]s!0G%f c_|1+@ >8,!@/R '>GA@"NjT$a@ Ñb"Ipp.B}HE 08)!@/R 'Ь5ʕTԱpF4\J[шNnd *yWo/MBxX"k=n]~9͢زE٭[>6Y |MultEВQQWf;Qv G1\UZFf'sdvij4eP,T"L,4{R UlZ]L}:.&J>VCKgYaD;T_hHqRmR̯_^﫲^D kHS5Q>"zew2\i$HwhN{ ˦"  E;֢è,۴}zZl#QBQt!ZC'Y/uI1J r$=BT[ 3諬(N`夝%:Q DޱC2iv+*Iܪ*ϟ9:!S@DƠu5QMv77d7>peP[30=wVwutfo{ު{oUvLX@@@ 3,NJ2qꅙ僣A@+6nح({vnkp@@ k׽KQf]s|"/Og'aw25L㙫%h`DsLTLWخDq=ص7Q-8 ZzW-KLp&v%U֋I$mb6-CekJS@bsAl[b}.H66)Kg炄%3x.i%>Hu˝:gzasf/{=+{Mrg)S{;G@ 1JM6Wf+22h 1Jϝ,bxk: EKQM,>tr*y\`_?#F  GxX]fx#~u8#Q5}^#\ ^"W?#:>ݴ)Sf.b̻xeQ9DWn~8>%mz K~Ə>}c_{ܵK0K#[6If-ŸGgyOTwvC&gw_GLzLG4b\$ WEElX?o q6nk(UԙOTSaJ8hWX 0M~^#cMtbnd ^QL ~6_-_dK&uϣ@Q(}M2چ'{wD? G}Ggg-88%~*.w=}ڛ*["i@!  Vh  o8fJǃh < M@@Pg8"( 3(pD.  Pg@Q\@@(h  8@Q@@!༢mU;cr+Jaq=s,X   )'"&-ݗ_=8@@ G8(? ќsfݚ=N9(P^bq/SnZӧ9If*nfZk%]P&frl 6.Q2J@mn8ᐲA,%eE'U32jeW'P(DN+F4S_{;^Ldݽc3WSZem{ʜgky޹)\հ[+ {RY3,H&D+Z_sYu툢D kX(uζ |䣛f˺mqei-JkY׌>!'֨(HwWe[])[魍t@QT<* .I%宯AF򪣓'{iLSO$mYbt {W(%$^HshuٲScP)pǢ.5dƢJD+iI\?tuΪZW:H6IkzR&cL1)jRUA*'ji**è^yxڤ}k?,c iqBktzݑ6y˭ۇ1cz9Qm)+X,"-)ڴmh ](SӾ$hyz)U.:tn_m5cJ 2"|bmIR}GPJc@)-R<>ϣ)q5io 9iOJKmTFW|$& f.j[ЬJ-J2C,*Z6,sU2f2C)JUH$@eST䛗pʠ9D|hg=ݰC~);eI"ew꽧$h _\ʲʩ|5URBvXHozهC {RAá(EeDtQN[7}ʊO/^kjCRu=Ӗ@(%xvƋ(.9Hi|~r}O'$tD;t0-bךG#,  9OӮHqUVYQB-!<}7F]RPxq(=o46( rs5[k}pS  QJ#oD#ijxp"V/s='jzE5)@$3 b]:iGD1JWh;Nh{}g[#5F_4\Cs+b7%pXTKSCw|qop wam6%V0=L;>M5c555q:1:q~y=zNVSu w%>rG_:iQe]m@@VWc-g5}TߨYtUҞk?8|kDxz~v6&1%r~*  %fCm2%0@@ +2ŭLA@r^9# p (@%j>(nPF  (P@ Eq2| EɇZ  (Q(J>2|7@Qܠ2@@ @Q#Ae @ A@ P7( P|e nH7ݰ e@r6;6{Ax=-iy22|`d=()KİJd n@Q3^>"ziȥ/׫/L x@N7pn_@W,LbSjAɶlxm @QY!e$ݽBN6ǽU%*.:{w dIN~5(Jkwٓe$P\)iNwm(hMtX)vyL @Q0rw'gL˵۳$ C, beox׋lݫU+~6"<;Pc v^HZ'qw /WsP&lv+=a#_ʽ:^' = Ez={?(+Vs GixEɓ(=v*lEɃJưG[݂xvI&m 'ޯcx  @Q_@!Eq3Jx!Cg 'E~Cp(@O:  (;Q x6{~  $> Mt@@@O^V0nIENDB`Fy1׿ Cj=aR=JFIFXXC  !"$"$C," }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?.ShjRwǬ"-DpȊ0x0A,~@ߣ"x]<ꬺ]! vU%Wlƿ*4;-[ǿ5]SXg䴳I9X@ǁ~|hLj4u]N_P6,:y#3v, QiڅޫO~grB;nB?M Mdžhoa۬F;*dԞ_?C :',xL|:8uU?I8|EG[ȿ-3H P@'&qkC]]CIA\C"?̯_vY۽V+U(Z+ǂ?urN0PhlA@D6pqXˍ߁ּ>xHѱ*#cW?%ߴ$WD6Z]ÒslJ~2AӾźE(w.x€;*+/Uuwx-#uHO]^O1@EqZů:A×#B4؜bIր (vTBUFI' Z+GE[]kW !*!3'Jω<ľ%=F5 \ UAِAtVWxWK&S*]A$3h((((+/A/ ]xXbYP0)wPpkMGUĞ4;i/ڡk{F14/UmԬ"]iQUbޜs_5?g,LC \xs_^mxE})Sk{Զp+:-BN, I-&MFyzP94n~+`%$T~$|@o{o:H7wme\V<NIn+|#¿/863qz]pƄƤuώZ~UFSY|;K[4 έ>=H/?]xQЯl›C$jv5dڽC ;ė%y_jj5݁˵#*RyCg^1^[7G-߇"A[蚡HY-[n!VO-N~NS|5go<)}- qua rC%ԒGPkG!*I\bsZ@e< _>]|E^2x/ X?yr?@,!+{xPGQTE@iٳ Cֵnc$ыO W //x@` DdS`Fw>b9)]둒=U!ԭp?MM?iQkknty@_dxGփ={Yu LS%4'_cW1j>4dS-0{91:0MO!DXnllt??*?-]-B=a㹙TyGS@/|#m_Py,bm: @Q"sAeׂ tn9$p 3їEEaksiVjGq6ĸutP3&;y5~ڞ?A5ũ ͵]$PeOL~1{[KNmDtNbM`rھ5M2R.-.I+b4G>&E-28F.裫aY|A/'g9GvxmO5kxď Jg?,v MrBth.yJY <1_~ǿ g/onVxoR=pk~v~-AP.mIj#0Lwq|^-Yt9ۢ͝;+hoVorgjSƮCZ? Ϭi7QվIm9cAeFWpJ wً7ƭĞ'VeL0d98-9H~[m]s:uwa7xQS<7Jvc;Dq_8gb/[^<ɩZM-Cc HLG'z/[hD"]OF-GGߎ8WZ3 BO9{w 'p-WS%֗bKe*ՍA0e:5)Qk|~oEU:2GY3Vg>+ӠqKzsk,K#!*Ӹ8M|{pjpmIWW-,m:;Pz)_D~/NկZp{LH$oF~P |5EqNVkEmZyͺb7c8M\o |o%r׉XTk?չIF>?)gK[ ]fdT <=#lű^@K#yrDC_CGБ޿;> :[X6\LbU,ɯj{>fm,bIZs&e N@RX{;էh ..UIJD;O^.{[>w1M?#^Kxv^t9㌵ܶ8UT*WIOxOQ Rޞd[Juyu;ryצQ0̚_($S|&lgW8|Cà÷:} I(W2%A?6 Go('KokWF\ىܲcv}=kBv'Sx~%RjleW@vxs@iC4ԑrf 莏'^@vYKȎ7:3? 鐤p!FpIEMx |ys]XOIi-WLΎ v`z(o^pI'ա%ZؓTMko-)P +0*-τѡw;- L궗p$ pwOJmO xsšItRnB 8VݣxakT`UW:/o0!$ .c6i1sN6hv ƽ]4t?^\z=ŏ +ڋqZh@n OĻX1sQ:ĭw?|mjZS^F'u @?>u/qo &\mvm-cێGPA#_%kM\}o!c+i%i呎Y݋}ɬ%C/?#?f8NM}zPGiw~A!7.Jm7M%!@(U˜g}g¾A 3jrm+1ܰav=wڝz'E:.G|ze>k9[BsF9צ\dpk2n!h."ha2q Q^KC3uQ?MLf|*5cG**]aRqH]T 8l k/~?/6ui 818,O7ZY_ <nB+ Uҹ1*dzեo̟zf#i(μE_9𶩧"Nxm#iRۅNxR&1n3~*nxݑ2Mj_O!{?ʦ? 57~<;:/D[ $H,iV^8 1k@~%{} X!kR|eSxGRx֫uhs0+?k.9PD,Wb( j|ۨG+Z))d.uqV4,r_j] v@9ckҾ@kO.Y.4-ZGK" dwH78ペLobuwSUId1\[cBAs֞cS_Ljr7KS?ß3Ag}7t x ̪ɂebb`F2x=+ôoقQXoFđ{]P }z.|VmoB>Ūvn8p< |=/n,ؗ+ۨ<]rԎGG˳;~Kxòn#E"qLt'n?mA-̗Al#Idʸ $@x;d~xs߆;bka sEʋԒI V<{TVXH$AU8|9ĺgI,?;ש~meBmfr  #ǽZ7.]y1hS~[3 񶝮7ºewP%bQ zƾ~9|%F[J,5xwefBe@e.AK{doRQM3ZF-'4R[hG8 |+Ub9UGW,@5w*:| =Y0_3xdU>k^L/v6R[SE[ai_/-ak3|;;$CԐ~&Q$d8|p>A4HB%Ae*zSmce_㽹y3PB㵼rڒ?8gh|:.Y$qD_Y< ׎eVA*7\Gm }xkúQh:^`VwPƛ<^s:˖Š( ( (15WZSqěߵ¿w>#ƁoEG@uqs|: Ư?6rY{y,$5"eMہNh{GY&eep}IV"%yɑvj4I\Χ&^gj9RVeg">F\Z/#G캍z'&䚳4sPӺ8 UoE/;m;N2V(X8z¾?Br?!?Y [{@ѥ W@ף1H:K>k{XgZ| go=C?fSg⏆vZt(4DK{yF$1zfA+ۿTwhᲶsNGK!TpTrk1B^G$6.AkEDI|4>lַ1\>Hwp2`W xV_+ȷ@T8xs:~vPN#>_,~ h稔oWPDϭ i:I= MƺK[[8D6:$HG*j+ecgRsM* ( ( ( ( ( M=uoZSV[sЯPƝo c JOΤ63mw'OJaZnݢTe+‡r-?iǕ!5(c_Q:;6^ݽJk?a|%fZj-^_Gw|&:6࿵}sgmź#Sw~ K PI;>UK o>fcz~B;9cg~3F׼%?t&ib72^^*)(qv@]5<] :ɽREK"Q `p85 _ q1Vcd@ H+iؘYd2i189 rJT'>KӡBĸX䜒}MZb iMƝ9*&ÕaPxSQiIl>.xWa=O;/\*jZ.yh A$0#_4K\Q⾄ Au i6G Ķ *TQRA8<9^)s/3< lƅVp-ܖ `X3y ѶZRkzև%Zk3y;NO#_%?[-Ε$v$}S xa!r>475ͭл]: ao*.QrIv3(A_z>_ s"J]sl.?dюQg/5W M6ᕁvcBix^_>&󎄏_a– 5I\j89 y~Y{9턗}}EWQEQEQEQEQEQEQE~|~X|udrRoɵAyj"0ݸqO^^۬?!fOהn)G1$|%rՖOK#"6bV+YFF>?JvI /[8sE%+bW ?7>%\2Q}=]mKʖa+4|>w:]?:\>6;˻3L⺊((((((//u̒IW#<ֿL\Z_0 V 95foHS}|o̱S$y?cKO|{s6}p?JI, E,01 }--xa? ?<fө+?Aƌd#O>7O_wY­gq?WU'b"uj0HBDǖR>;56.o(<((((((F8ʺ?C_3Mx$]+5$?ďXF ZJ‰[W\?+Nk0on}Α A?Xo5G;&X a(cs g3}+Ԭuy0=usU,\QE{Q@Q@Q@Q@Q@Q@E{qsG m#@'T|n>x0&ȥaS'ʛ.9께^u;:VqyM2{sk杲H}>(Kl]Pj~V> ҥ+g?~+׫/d|%]\ 7ƺZ1|*|.QZQ@Q@Q@Q@Q@Q@~~VL5p9#&@k{Jh>-ƿ-'O:sJr9mhTG0%\_O~:<[\Ơp?+.yskܿb=O_fd(ed~`gG 5袊Š((((((Wտ Of Ame?.f|4mLi九IAb>񞵆)ڔܺ X'R{d́ =*}:[ZӬVd8`5NF;{xPāG`((((((((+/Mo eZwU@ξ&|5yowir^XEy1!g`N&ܺOV=s|ա5V" l@_qqfqdVB~K6dR[C[ c&MoZ>Ҝ7 ;$f7e8O?; ( ( ( ( ( ( ?hq2kρ_Nl~QEy/H;(3B((((((((k/.?z/kWJ(.>2(P(((n/$PW5QHG PNG  IHDRfƼsRGB pHYs+#IDATx^흽%GR\.ue!,dȄ+0'SD fLCb 졵䦲<_(gdee>YǏ @5_3y@~ d @.H F $5@p@2]0  @L޽{F|_0mRLԊ@! dzɇ5Q:/1?W 1^:w\UĽ8z餷qe~ lDG^6UΨ&zDocTs*6"CPߨ<[:YR?N4n=>eH U,~njYa 'e&Hwl ] Ʀ)WkSͤA܃'iङ GB7'gڛG3ilYp7Kר/tq Ki\*[@$@DzVQЛE,3PFIwlL?7$v./.|h#F+t+nsI}VbkA uv«@o%ӹ+k|i}2cwnU5i&s,ucmLzI){<& " e&ɞ<7ao̚O`7͈!E\*acVg΍r:L6f=mid.yn^<@&+zoVg71֧%B|0,?{kZ8uoJؽF= ^̥*:*ZyN|o=GZ'b/"*z1e>@gFι-SoeIj ω3@ sjF `Gֿ:yb")-V AB^]]fwo+̾`LE`x8 0.sl@z27MaaenW%tu+$@ (eTO hSt7-aoM@fu@H5+B -9D!5E^sYFL =TsnI(@5Y @2/P+(Hkן!,\6Hr%! @CeH&+xTi]&$sR M |uj`',$5lO@#?J}9N\88M: a29#^ [ӿiR|B&Hz`QN \>D ocd\@ɼ2S@ %Fɬy@`4j0̍G p%~bJL'1˶t/9e'i@h'l;3F@K@2_$ @vf $ddI @/I|ɲ4 !PԲW p3)2GWS*sϔg@`cU`L]~6> S<9ҟ(W ?FSTjstBJv󚣌WZpěP5i2ngD@LL"!Fɤ:x'98LKO1F5.3HiSR9'z2wژ2 7s F_~˥P  l#%SQءnjj[I Mg!>`ӪD0 p#ٟF@Kr`97k\1'{F;i ;yƥe5b"@` Jh܏(_9r'c8yQ:x\QArL|#{c1-z[T3#ɛ$d EV/`$S+K3\4Ka s+9} Ɲh7չ^I &0W2͏MQ -ƂQVZYM͹4J%ޏ1ֶ:! ̕Lݙ:)8[z+؜ Qgy px t.FA؅\ɬǜnjJ4\?틦u @Wrܞ>irێN')ztXWNA/E`dSRu]*J봱21xr\ ɋʔ  c>d2#}xT|qDմ񘌾far  #$w4Z츠<HD@@2)@̵Ct 1 ˳UI.VWƄ'O㦔I~Z Vc$37ǃI';LROZle$~K1f_nD@ I`dpjLv9΃Lz0{8.3+n<~7*'n^H~kJK:L?(_Zer.9_O/(^INU V- +ȌiKj wNa[5nGW6;3@'\!fMΉR%Y(C }^U)`@`WH>kuKyKʶ|Ւ{i,q%g@W/j҈tۂsvU=h蜴ƢNۡ@c,XM`dW_u^e 1x]Tˌ%FSϘN -\r{<,HVxKPZB7d=?;[:;S0蹌F^@C`dٹ<^gdzQ2SMC7NZ?OI^fa =XՌA)K'. QKf|z5r9ħ> ؟Z24^|a:Bz" @&/Y\ycN%{{/Nf H hKyd~'M&\C~Hd~٧{:-JkN3 Ϭ+YAp#3<8B!dS " K @`H: @XoY<';1{bC @ IM#O[$sOˊ| A|ɼ3|W̤o@%72Y. $Ӆ #@ L;Ʈɯ5#F7k6vW0f`08I3v'cfqUWs«&1-F$G2k֊/v&0L2ǐ7<ґMiMFs}I4 CjiNVkI`>NJtrR(dgl ?o%l&0F2E/+P.Ų\2j.n]*t6:xDZ곭9:oU 4v>cO1Yh=IA&`/i=miwY -Y8jxU(BBLŋKxX\,zB4"?ybzr0)\|hhU ҉7 IwgR j`DWf;4 ){36_P}^nNLu97<>Gs(-ҝՔ3{`vFC6zlT\{3#)ҩW&M $n5ulkKXy^>m-[] iU 1cp\ɧ)/*f[.X}B-Hf2MXt`'1'\-$sCN^jH`GxMc$34^A5u <ڸ-8)Rȩ6)=j:6Oi+iW *Գ*Ay܅X!1wͧ61j lzFB`k$3f] G㪁+xzv]p5hI!N\-NIJzѣ4g9l$3u C$k8Î̽jԞ ٙU$uYpV 0R2Wȇ @ F|ZE&IQO?o% 蟘F2Y* 6f]0  @„ @d @\L& @H&k "d0a@sO[W<-% p7ɼsf>$Çs|k/'ׯQƯAN8@5yS_^UtW,fC=?y"+$h1/FJ'h A<}u.5+4놉yqĪc!W7?͐Bk~ymՠu2tUx zU*A[;oe~dzZz5©rϲkN+'%R0P_#9 ωua'|sUäx @/PPBj^k\˶69oJ 7`-I:t̷4ÃL?6lMgh<'CҮx^ZΕTϜdE,5Ơ`?L0^ TO WbyH4+iru~I YksnWsHpF)^gww̽LX&w&@2{3 @vs7foO @1;*~ؘ]Oܿ O$A?1}i ^惊I* 09.!@AT @`&$s&]|C *&@LHL @2TLR t}|2' gx{{Đ̧8|aӲ"@w/;_5'1{iO|,2_r2 !!q@'d>d@CwI4gx5ÐA7Ra"3Z.Bq)hCnĐ]!!0F2)ă}!C2)6Z* ɩg0@0ɔni:vM'ȸOɨ䃜e2a!v$GD/iⶻ{kMv0Og  D`dYMh0*К|U"y 6mg$s1r5gqbv$X@` S$3^}-4SW^"1?3؄+ =Kvǐqs]onW4@%3$O1q4fs2 H{FjU{Vc!L?i\_X8[UmrnpOu B`d6Yڕ{c^t_UvUE1ϠdSwބn{@=LYiC{Bcmq u ܟǃ\|#0 /`8({`@a߻*8gL}_MJiibMNg DcMUr(sH /cI*Go fN&'2D:5;7f ?$$1e%@Kٹ|@!d>$@s iߍkIENDB`n8R8bd zqUYvcQPNG  IHDR6GxesRGB pHYs+8+IDATx^_'Ǖw6cK'3O?-1 yуا$`DlXY,]pGQfevIO Kȼxk3C79HVc(G*\SOUWwWw~4;uϩvu._|vvvzzk| @@_ojE#@ + F @S '= @  @S '= @tNܹs_O%ό3!訠;> 2;$^tHȜn$Ɦ`j< X辿waG"# ]S8s/p& o1:S'Aja bIC]))ȽVݖ1c] 8:t:S/gwY=I% +;NN[ 2`N;EWb%fC_7;LlqGDqio.b電l֩#a&}s)T}s;rě;x4 ~;OH*oO ͌53Vƭ+)̌۽}#o w[,R:oE]P3F!)MAjG d|) ~x]> =gw !:j9ep.gSԑ&X,~QL/P^,'ntQEo9MLr<3ag82;ឩTdAyRd܆9u bfl{G"w9Ę[1fwቡXAFkvf_\4Ox,s)^BM&E^AIU*xCu7!m;9`{mG/G}uL*D|Ec%YC%ih}0G\2XISh"F)u$17e|n]F9zս'=fM1%6+vǎ 2)!Z^G_DTaTțz.U9(î1d|'kûj^$1 x~όh{#[Lహ4&% w:}aFnWYJyqBjF=0WYޞ@ݡH,oݽw ۣ6 ifa Wsl*WM fJsO^ޙi*ͦ3G[7l+#ʶU) 樣9p(w~1ܒ":ƹ={nwgMU6vjd[hţLjxp/z*SC w{i9%m%f֞&Fo^[ sѷ}xkYN{erחҋmpϧ#2i^wL|mvsŧ?j_S# ?0{&^Kl]^u^y'Ƿ3S 2x p@S zb3Es ,ϛ `0&>H?ɜ4!@E'ثV`I<Bs+q' @qjA$ @Olr @zbZ  @`[qC!D@*V+G q'Ʃ@J=7 @`qjA$ @Olr @zbZ  @`[qC!D@*V+G q'Ʃ@J=7 @`qjA$ @Olr @zbZ  @`[qC!P'9Y0._g 4 s͏^5MB6Ko'-^EخXJOX1abr%3-3ue2r'H9tGRﰻ(x澴*oI Dm4Ɍ; ˯y8Gb2qu|̊QVx,bpc%=F&퉡ܷ^)Cz6D?g  Ɉ 6hLO4zPr붡-M$",̾1,]6.&a"(LRG?+&$E0A pKWӨϰ1F40b:)<.T'D^VŤl \tvt͔Rf`F66̐ˆ)晃i~_q*҈V3z.YɢvHgr*kJEmkiL)U)leH~;1̄hQ=(^Ӵ Ws3Fmw.co4nj;/Ne$U|>ݳKm(.Nk0z`wiئ{h;:6Oed3WlfO7=QTpbzf1Q]1qW`1g1)e-Fҧu[v){ ]-:Q6~Lyyn{AUps QOxX|^,o<-ֵ rbwf$X9 YPKgLPv_Ai5^YUQcwE{o.>9DeJںtf ;La渌l`m+/d QOHK|24,֒҇9fygYG{2Tt$u,VC7sЌ0nq6tMJnnE5_w19w7LfhyM+M*47)8YHWу I˗NOO̙ =.1{OrI\P0.\\s<3n`CB`G.p2[LH_艉C}O7x#MH`8|=0p zbE%%@ ;@ 'vXTR ,L=0p zbE%%@\h7fV&_?Y'e+{TB aS:`e^y3&Ə2G?=f<Vn$D&0hCwі=FYE 0ĐfU'5SB6qg[=5ow:jrw!^`.,.-@9Fo,Vs8.wNxhʰ1Dq7ISЬ}ƛwGXMW3wS*šUdyHU-/Fi G8e8U%R].ުFG#<\T kwAI?TF;$Ю'r}UMt` {^8 'gs3h/ cp @K@O,I @$pggg^sc  v$j['ċ; @{7<@= @ %`@ 0@w?fuj85}^j` @@0,FI cHV@ u T +&L\n.Ù ;Q;u{bZ; @`-z"eݩL~Y$h\ielv,c}"U0f T 0 `DC̣L'Rka@j=ag ei{Jnm=k:ܚ4  iu.6C ft4 @@E~1F @0!Q@"2+ =MO"YCN;72z'> @D z!@':@ @@@`v=q l_?mRmԉ~V6 #QOxO3_ޒA"|r%Lqc9Bfž1 @`#Y@$X>}CA=: @`M57 @`]|4Kwn'''H, @;#*o?ReW*C% z/i%3W>;>pAI @'DI{WR0E!uy)}T6*/*~'T92'dfBDU3;yб9OΦ7bP|[{b~R>CKoEW=Enè~cq+@ J@Nrooasϧ]tYO=aO]o$_?`/yq洙r 7AzRDᬀU 7Cc o'.ΎxF v괭XA z{!u!nh{@mnzמ\S+dbpL 5ڶ s|~ JRh2-qo轡Sͣц]ثk@vį7YxU ҫ@d =CTeQcO@xY,bV(J eߘ/)!Ea݇yuutAOP,A{_|GGTEݨ6tJq]<1ih0=.2c)nhzjxy ?o`nyxBʡ\ yG>o8~Q,f 6RZҕ{;L֋0G3e;r7nl^Ŷn yȞmg*KԖ57RC%ИAQ[_ooquj7x33n:qHTt`+/_q[Zm B ֝hX߄YayD ʠɒ3'P=1 =!zbb  @`z;fGj h'4 @ G= @`*T @=?fM)SqOyZ q,A=小Z){ƿݨ1}:!Hma^3@yU0#mg=sCFf୶I5C6PRe`rt4F!X§#eTn~6+ h}  MTߡ(jϿ&bƉLm+ fzbBYDưy_R~kV;#\Wכ Gc"3 'Es#ߌ"(`t >*B< ~*J> 'gN @O쭢@Xc?˗ (kba8c'zǩ#DO0 { u!;!@0^t#t@&<&D l {.AF"׮E'Lnm\h@8{=75 H @|z'*B@CGf^eͲFhOt Pc`u]7|>mf~  @X;"M? # :Y}W./}c"_Sxb@XL.{;Hb' jCv/&v,)v'aN6xSޑ`b# A`^_\j1'&Acu]#7{+Ge^z}4-JyK bJf~dFLlk[=a4;u4P  0\o-&$uO.bbpcv1n׎q]v.TEO@pmr_ݳ9c'H+Gchcg̊0MoC?K8=JsԐv{-EgS;`(NJqŮDt l ~f{q^w947OtXF"tY1Qf{q2C/)2Oܻ1fX8޵e\ZD&jBF3`6CD[#oJ߉ ZAk02ߙvJÜeLMnʅ\i$91õRНm]SFJD)5 DXqEOf1} 05A^tCቔ3-見()2yl7`60jJ'1v_]93› U̧_O!b7 |@@^Qx;fM3ui^L9m+H)Q6\?> x'z½=a2w7;oM@1N\,D*V7|ņ(:s䗢 $o^MxX/F'=ͻaEk=zs]y)-K?Km㖮7L .Dz{;{9 ;`B nxci'A Lr=(8^z" ;7x_JÒn!1]ӻD.-y޺5Ж=% @dRDk}O5m\h@8{=x^+j, @ O`I3|'1@+§k@N'vRHҀ H="| zb'$ @+§k@N'vRHҀ H="| zb'$ @7'>D2zbZ  @ BȈ?sWC!#T @q"D7rų31pݻw_|jI?@$ ?bĄ-![!q=ӫ$"&ůA3J ? <~번v횈 0_-U!-sDµo1o@Re7@"o%7n(?/}!?wn~_YQ>MAJk$DEgtǎC@$ Bf#|I<(>/qDs纗/+>Z?•𼏉6 nGSpRQL? lH[nO%~7oޔo| bB9CLxIQ+f1O %JIEkmW 07~G?4 %&'2c l/  _1;O"gi;Q_x;7R||{nx~"iUSjf@56> @@Iz|((y-l=`"4+^QW.zBlinC•;@'p=q> @`n艹 ?N`>` @k@OE~!@!O-vL qEOS " D%+YF @ A/х ޽+o-H>o~5@OTx C1bB-8xZUr|GЌR ,O@," ]&bB$a'WGx=!iQc-\Tǿ)Iї- C$<-矽qEyS)(ss<vOwm\tFw8 K")d6ɧc8󲈘`AJ`UGRޫ1laWn+>To(vWDɴŖRJc@H[nOe]͛7e߾:`'f:oZA&*"*Q}%6iubi>M8I6`@ $ ۯ櫡w^o2`Y7>_3y^J o+elXD7)(=f|^  ? #&sȑǬKp$d WL JB~NO34Yعs'ESf"ԇ% 80gĄ0KT4*{ni.1*s׭2b:E2B=+,!X:YW"cK% .-p`=t±'09Uc @%ko<',ʊ'ّF+8''ue͊t2_+Ypzw!͜F82LoP48i(:M | ,r82+9x ϼtFjYS{J b)ͯI76Ui7dnvEԞ =`@`7'NNN˘,pO{&/0p#xZ$D@d7"ڵk"&DRȷf~|5C -sD=:B1 v%7n(?/}!?;Ok\= awA .DRlēO=iqe11Ȼ'ua'῰4D_xzPsT<֡ae#gۿ}G[/D 0+nݺJ/-n޼)+AĄutpz/vShORںň7rb(41hB7BCZA ۯ&ڡzbCg㛓%pSᴇ64O^O4/;;{:lp 4I FLdÚYivۥ!]0ډjM󫝨p4؆|Q?aCf p@ыzD'!Ӯ}d!5`0 X⁶'E++X'!)]'U<7jo!@H^5~vﳲ+{u%v.$ph6?hmn  W8aSCOt\MАdhPG" |ϟ R  |,r4+|=y΍Ԣ!\Jx,0۩膑?GHe/?n*7B(C艓?2fspT+wRx\oћ&f mt|g:w{rOgaCT'p=MV/@RDRlēO=iqe11Ȼ'8ReW]D_zBHy6 84_YB*xf\ DRܺuO~*ay|W zbR=Íu\|+mRͨCͮsߢ #`J%^F ۯ&zb2V @%2ip~l1dmbwѬzJ)`4l\B!E++&XkݼHy·9C֞3S=kz~bbSOi.A k,vﳲ++fX]{w]Qɢwk,3}m۔TdSNE[@`7W8a'v3$b0Yó~^nvɦCNfʶ}@`_~[&,r6+fy=y΍Բn O|({)nIP=vE1ڧZF敖mn< @!P~)Z{"=3No9g{v7r~Y`~s+jQj*UBBz )@ "`l@>AK=x @`*T ,@>. = @`FF<ʯ9sRGB pHYs+IDATx^MnUs%vb` Q, "qPiTbV)U XHJ IB4`*H DRifNvݟk9sϳk>}[@ pI?rɨ  G%D@ p](!@@ Q \J躹'r@ne~w _87;ܩFG=D\y.ܺu\s'_s_ߢ'?b?wSQ!+#NGFR1^9~?]L /{d«_ց+ zk@:/%ti`AxA_Rs"2CW;_d'?įyLXS2.LF)NE~규@4>G?]>hP\񢃎)έQk(f:lR4>?ȩNusbR\5{nG[vvW5vfrG,^l\`Q6 =z>44 B) ƚn5MZS Et1Ϭl2nmj>ŻhLEmkHr3FFw"&kW}nz䞐\ 񼼺uSEa( VRl߸]0F8*1:[naweIˆo&ڌD kjUNwn/l~P2fūJ}UF*!7^4kjx*fŎv' ~4hG%w"}1̆?b{^?긲 DP9n¶J1* U#3bYSaAāͨ.ՌeRkD3Ф6JhI QE鿲jx7x;:W{7m+ e\\u+ '7 q-"YJ$pw{ Dkǫ+T1mx{}6~GKq^G3H<[Qtlv)8[Z6;cO!q{'h eǪ?Gԓ!}[eBp͍';N(vp_nX?{B>2<$μ7F=*8jox3J54>(7`lf|_?1]+!CW+nEY{BC #.QJX&A!:Le$qG>$`f1uq*/΂!@:cwWKB9m83 "R  @J焦8 @K@ - @`*T @`i(Ӄs L% ,M%tzp PBSb NA 0Jh*^C 49@@ Mŋq@&Z:=8@T(x1@PBK @J%4/!@XJh @S ܺ~nݒ}!SGr @ݞH\U4CL83ݟI!2bIb8=pWF-xJzv x<,>(R#oJd>:Yu4svK 8=3HF@syZĊ ~WUW1(μ PV&]Df}cع cݽ.+7@`KP1 w1M]ꅂIzmQZŬbȠ""@GPfVtFYýX;7=cМqD`rۚch7g\"RrԜt:š6P^d }xOiT8؁@3OȽ/&cez+7|cEfSQ8^%B vh̯fXJ !Fl^#:M"F@ "@ O%D@ p]uOL_C pF(3f @@ 8  3@ 1@JHljV JY%&@tPB:N @PBg*1A #q @g$:cV  ܾ}[۔vQ &{W iW/|ݻ{4s% @@z}?%t>T6;Pm* w> @J !@84СӇ t|S)עڛUiշ좛\hᄆX@K`2gwVڱ5Q-.Cdt[1Qc;8 @Pltk'cbCVyrqd`(#/>oR Eɬ p`.0@0SB9nDf 4o:rdjD#lWU pjv0@'0E Ҋޙj]5KQ5n9KTcU8XͣWKc@$SkkVXBcmǢo9=LA!^C(@^mƺ5 WBtknOh *f3mDx>d8%eNt %0^ geYkmd^Rc|zo6)V4ùqpH0@VU%4|. mLF %@@v{B F%ZF^[ J M@&@ MI@B雛8{ݽ{Woj|dj9 CQ ݾ}gԃ+kɧUO pDJ舡3 @%@u {" @%D @ p](!@@ Q \J躹'r@PB @%n 5@u {" @%D @ p](!@@ Q \@w\C pL<Ï>N ǎ !@(GQB=aC@O/?(4o?&"PZ@"`CC//?.QEi3*LX6)*!S p $/?S?nu##Go@8&sKWޢ ux Q o+j~j?7nGM{@n{ߵzo,e5?^ZU6=:O3U"w$ 0˄/~95eǚ^V+!Ax]"o ? ;Zŝ(CJޫa޷eքyD0/ dk_e5G[OWƷJfz^j%ѱFV0Ye'n`f}!Q=KB0@@K]2ͼg^=h;| VB-EU=fT4K@$`esyΐᦋ4G^xjGgʎkB7x۟0/=fj @>xEUuz y~W]F4i>Esd?݉۠i7Q $^V؝OvNZ3p3Cќѭ\o˞Ћ!;<.}wKG>'/A{CƅF@v*Sa},76ݱ hwW2{Ο]RTؠXJ{jGܱ @HtޱʌݭX* M ~w{H()uQ|ddlXZ o#l!O:lӱZ >@m{#{|&fSQ!GLVOPS{GCa[2p.Q9 'ytw` 1U A"-' wƓ)b 6g":S6 :ÔЛoZ72!@~uOL/ .@ <0%tΝi @&`njeP;(Ƈ @@ @%:hp PB b hQBi{Cfv?cWYӷIoL`TqJ" EO,5Y&QEGfOqNŊ!-Jp3uHw7;0I n3W cH֚ku{ }O*CNj oW2萕ux^7ӻd^?Br徉^e {":l'PuPY4;AgWd'Zfnތ^ fԋak#:$Dj(v7DM}kaJ(zq) .>.yګ+vtfhVJ*^@w{33eo rq\qXpĹeyjd($-Nb%P|)U[G%1yn{F*-"Ggz`qG:U~Ep8A6l?U4 רb=!oY&\9Lś3뎆mm)?fB2 3M'wvy3hp$;.>`~Nr2Jo8[B-J݆-p{.|ώףfBީC~Q Gӑ'j LNxY/L[bxy•A3;6~ 02D- 8Ukӷ˟ה:!=^ٖ-Jfi` oxrw80@O כ24^шs-"ТBɹّ fft,p:Y6lCۆ!@`-Jh &M K KQonn>Z7< @zGOaO @Z^#s;| u|#?3o~o@jPwނnҟ}f %p  |UMm^淍6{p{>JhL1. dX%#ߞ}_\UN2Rdc&(!@K`}%~R6J'?̈ŗ24 @PBHNB 0Jh G?ёqeu -XhSAMњm,i{m2v416q. &# j;6jpUU6nP٥sك~{!`pF  h`~i>r_2^AEbg+ t/Y2{[(̚;vC:J(Zҧ_ɒT^s2crIC+Th`aғ,e}n jnŐ wvDlWC?jo0usB(?_53_YjqH.F6Mƥ?(+Zf;fx>ݚ3#5]ͤbnΗ__EnKw/gR(-oƛCf5')) f1 o/jhY(}R: WH뭔? *]7AEeyT:3iHQ(MFê2UUѹ3Bfpu~1g!,h)y˖ᯏc[He& @ =W쳽.!@`)#wE K%~/gPB{g\@0'h^p̭^^g  @x_Jh_@|5@*0C dPZ-* @{B@ <\ @J !@80Ё t@ u; @&:pp N(Nt @PBNC I%  u2IENDB`F)$ x;JFIFC  !"$"$Cg" }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?$ij8''٤/Z}mC@>.߻8ϘIi=c42EF|!}wu !m!eIޢȮ^;N(zh4ݷN>2uS2,#<Q)yo۩YmnVRa@>'ƏI_:~פKZG| vc׌ܐ; &f,"X"tY{Hz~'Ɨ-k>ZlO&siH\_ 22$3\5gK%fKx/&Cx 3@٤/қIR|0t֭beq6Ѻ!\z vOw]"JK*J0٤/i=c5|G>[٬6- UYV=vF;d&hn)GHϱ;U= kziVfm]ku&&}Y5ҋ~lgv9*߁m+^]*{.MAf0=7j#$(}~.o!nH1oh=~sO>qcHYBS`^w\u EM7\bEa* ӟJ~'ƏI_O.}Y@C,v<`Pw:zݾijShQ^#L a`Nx@鵔O4f?]b|?ŚX\iwHFBJ~DrCU 6lژ6W61[[]$SX0sҀ0Um]hKi7}oxN{}n[29&UQ*S _kO &" i@J+l䌁܊:?U4/>KkF3v8&nf ))glI ;;i5E.8$}ҪY4(5$B_h0sh3+qL${u6=ꬒ+>c.玆,qA>ӣL 0=Eyw[@%VYS1$~8fЭTp{KZa0_z$ A(7G9d]<*oȀϲog5n ܟcXgj!|~ǚ7Cq:*\ $`=*ͼ$abbSbBABqVcv8qE:OsaՎoY &9oBH 8>(#soj*soje%Ưn lXx?Qў2^+vdz~U4R@}iogh՗z̵76ѤƱ6G^o"ӵ'&iax1W$-fƏLz+^+"DdDTDPs.KqӁ^ucM@Mw֭Eco"ԛM[Qh 5"n f:gzguɵM7TK;wD x=zל\{Oh74x7_]B[/t2E 9+oJVV &4tD^k#+yuή__ ^|o:cEty%Nq4HvHAu[[moZpj2{O1de% +??jj xþ cQIf[c][\C=@s4on.OKKoYī[8v/;ORMq2Ǭ?VuzC7 1MFK1}v[^b-K;bt&5_20dE&U V$l=5:=hxohb[>y.bT(RCy$\ZXyn4bcNajҝR/hU~734fd)t~U/j͝;O_zmfƀ?ѢƷmP4Dķw5ŋSN?)0;? :^~P}mB+#MN'n//3z^KVBѫ1z;gh\鞗.tKhaTM3?y}/T>l?ѣ͇}46tK*3xޙj>}yd{9vĩ^?y}/T7x}6=o/?K}ݼ*;jjҜEE6_j,Λ?ľڪǽB4_CX7Όwe_.-]eS_k>[a#UUOڀ&=aY:&*$Wr& ۣ/9>Ib?ѐs@?)s^X?5W͇}4w_BօywXAGUo6O]f?W1o4[}=B0E)l5>:}EwKE/d9t".%k|d.+17dcR=[i,|5m?CPR2rfjZZMs(%! @p; 8c۷jBOĒEiu`A0啊kF5;+nLuiѦ:]6u; Q{g!( RAWA}oh;ܙWB@zt?)dI`-L5xeH,'jaaN:;yW/ 'jZɷnՏye~_GqkE֨i,SmBr8k7VVn3 ʅz^?ysZ3 RUƤq 'ҩid`_ tvUVL3=%Ӫi[[\֌MZ=B+6dUeHh,On0+ZMVC4Nt<٥ݸA6>o5WFT}JH*2f,=,-/ilv`3gw4YYi^60yEy1Z˒H&$r;h7c[ mERmE_`.Հ}ifT?#P~7٥ƏKLCQPf>/35G@}_gWi&]yu*47P5<oFk[B4XuP>ǵB4Y4Me+?-usZf޵-]eA~?~b?F X~*_΢ wv4:F_}%|!Q'__:1-Wj٥Ƥ?)q^GuIU/34W_BP{iwu/Cb.ȝpսm&ۄq?I^y z0'G^? \ ^  |惔Y-~Y$uD̙^6Kp}qNvdprLx\A"= E~t$[q AS\j[yXLem !WV;@S*gU]@;Rk'Ax ^yvbPj|ws3; 3ۥe%VKk]NSMnIX Jw}klHܘ'Y^'ӡ{Ua7?ۨ=ۆqJQ4cֺ=?A[}VHb@D@Q*hrmvi3nxУ.ԂA#4RB%u%Z_;w{9MB;܁ny3olf_^XA'9`Fr1Z:>o4if4=6=QR\|8Ez4Ijb}_Ϳ[_ͿC e&z;g/iFYHg3u4yϰdQi>7W@/yϲmG٧ch4_dS#Y˲ uZg٦ciSg.]1ޔZ=oqҮ:ֶdnV_?o&AXnGQZm?-~Oe+?Ԓ}>`#>_^sN\)埱 x:Y3Po~~Z v ߫@,??jjj-_f埱ooנ=aʢG.>nq^-Inp9}FC/_> ^rF0?z b[MIU4kW;/?S̃}j[LuK~15Wu4fH|u?_̓}jo._'W,_(ﶫP.-8"}l}%.ѧEvq8H~nr?xv_]LJu-ei ]Ӛgy &HrGώ+ӮТ'iiYRj+_, c}KnT*>jT 98N*lq2Lr؈[&O5Uă=ã :'u*]*(H uc#:!1ǹ[4W1jXʆZْgͶM{¾ޢ#LPZswF3׊~j h4߰zz3hf?pN~o}?LF4 4ϧ>o}?LF4 4ϧ>o}? ?y|э7 Uw>Sш A?9@ƙƧig>?|ҴѲN`|g?\i߼j=ϧ>o}?LS 7 wt?ު}?4q4%t{^;2ZTuoOx~'>.h܏V6 V2A6]A?m@KCW\cU8)}j>X{*$RI f\R!pGQڀ cB?wTPcUZӳ0l?\?ﶠ MtHO3OS$-n}m"]s-C^?s ̬( >v (* I?Z6>I5(F{B~!G_ִc$L0FEx2 &.6:?kym9=f5#Qm}P?'.3^b5|]Zr:?jWƏ4[wXZH#}qss&ogl&áS97-a?7\Ϟj'jq$r&9[oqZ*d0 V"[6 )%XgI~Ъx4OŁQǪ(ZSX8qީ⧋=&I~ЩeVFFnVo`"7#=~?=\]>?7lW.Q>T[O3?3OEy生)?@^si Z%`3;-,@~?ؓoV\?)㷽\[!³ ?_O"'hS?5f)?Ao'h\/5Y,p ?~)?R*Ѱ[rTPЩdVB3}Tke\];)$p|j(q黏UC,G֛q~GEcw=)x7(O/M?Ə/L?ƢȐ+jK`B]Pzo\ߑ5f 5.Ү>USzjn\wޠbMyQ>q0Ս@X-۱#_^X =j]RWBq@ Aۿףn^ oQ1@?PxQ1@?_PxQ1@?PxQ1@#k[gz}̶3O$lض6tU>wx|#_dJϵ/u_ \C__K]ԮnxfU?K}畿_ k<lo~((Zc+Gy[ߥ 1VQ+Wb}Oo~W(c+@qF*y[ߥ >P\Q/$VɃPj{<"9Q*oIx;~7d(q9hg vvҼ\Ypa'e6oMkc(EׇtF]_7Y j3qW{'~|*V׊&Km#y2@ w=X8vb>(ͫ Jϔ}'WgFJ>*h}଑N# yfߎگ#xnmX5㖁cv&vCpEaK;`('tkF\sՇ=ou\k>>6i}\yd&^3ׁvo}'m6quX>xC2! yā~v3\y.k &GK{H\dGMW~1֛šnW-SC ~|/ M_#=ȠF8䌏ν<}GʜںRVg5\&M {CQ6rDn lE C'{m}&zŚՖYmV٤XW?n"XnnJA%ܨqE1_C}g*M3vw35[ Yq/b)}Ѽ̍Cg%}9 9YE Su>O?I?vݟGڧGQ?vMlЯy$cC?bIn%hYhۢL=h,Z>ty$~T2 ˢ Rľ!0PjWVteM`\&~ϟuz6aYe.;W'J~>7 gǡy,>"7UsČZ>#/~u%Id͊TORU:QV)֌F* E=9_KwV~[KH#Oի?bǗ͓R:nA0VF}@'S^ZIu9W??or[B0җ9?K~z/ہγl&acVb^G$A*|EFAITpgXī ʹUdw~6X)so';mu%ϤxLf1\E:Fe {Er-퐰[Vi0?ڌMu%ɥxQe>L VU$?:壼K!f?وA_{=}yQп~K^i{Sx46z$HP]Uyɯ0~_Jwˋ}O*L4 wGʲT݂9wO;>}ުv:Պ#ͼ;xAvv $V ЮdAׇZ펏kmdOypFM5|j|ixŏwpʐm@%s{zKաWNQi׫&-퇙ue#ڝ^;]ceu YX".?u־!2u#` #~7ORՇmt\M|'%+N:xN ɻ07.Lqٯ.߳is/Ȅ?q[|mg55;+,W+|,s\69lxWRay7獎ҭ3cjOA̛Jw%Rq*/JԿ BJ❧ђVJu^R\zWW$V褯|w#ƽa+W$V?o8Ƽ?%qZJknAt1۶1MB( bxX+Txj(f2s'_D7 'wcRHE390P8^H8\3 5}#hh/u!w?*F9u OקvTP!,Sh 9uuaGg/~k^5xž &{^\ZC=dnAy4(8p?Z%O݈9_j)0RVv5VTf迴/|5M7V(rkο=.5 OOᡅ0*ԨMokkwE͜D ،K^o%%z闐rFh䈟U 5Øq!UPv]ކ.tbigڧŏ<xᕼU`n>¾_~.5\=3{.$ ~`~ >???ƌKөy9NNu*/n]}S :w"3$ya>1? [Gd!ff_2}Xa^u>J7oYFI&Sdb}~\k~2xe"X!nooݹwR نA 8Zx}扩XA\!u".x<<}Ίevwٞ\c/6U?fF؏ᗉ47⶙}n#KǸlɮ33h׽0*UiŹ:n*ڕeJ;%?ߏムa\]N%-1?t?;xq,zp ܎rpkH"`'hۃ ZO,uN{0XOK<7[oiw/[_,&уk8|IaMV"˸}y'4me "OQb>)ʤҲrwA[*i(#߂4-3ðxW|vhp9qtf? ˿~ҕϯ~[+YK'JifRc%nNҩ:n[!TPQTA|rkwa(#.O p9",>iXn,#^Ǹ5 ]";t̀s0fdx:9`r[w~3UUUQ.?gk-[Q[!Fyb20'æA^G&3'DS9ᚯg~mJXTIϓRwQ'8}=oV/l͔XW R~-|e}Wmuh v 0W?^V0{/|P,-ė/gos:A?Ρ`A#9:=焍!Ye(dRr\@^ EqBR=ק}I Q^R,@PI=L!Ho=(y/ai=?6Yb<ҤICӎOP]rǠt C[8uj6v#"Vn^aIvz9tl͎ :}:77'dd?0 RQȻԇO/O:kv\nW֢WGhT!tG,RDpFz{(J?{=G_Rz@XЪ>i&9r ¬j^Q~)F}=_ 4ê^Ukj^Q~(FM]ԽQ{=G_ Y{=G_Nz@hj^Q~(ԽP0M5sRzG€X^jaOus (׫1+^t4<{8@X rFX5~vRjo Țm:-xzqZW}'m {_$=v9/aȒ攖I*XwdSOihB??|/PEVmwo;$+e?_Z|OHTt dU,a&#ZڃPx;OG,+?=dJl7V>w}kb/Ox)d.[ٔ@*B uS7f<#)ceJW.[Y]Uk 5xZHoh)۫gqQc|u  1ʘ`\Q< RTT;6JtEH(揖y r2I޻It=]2(F^:WikG|}gs&*5A`ٮbjM(={1OϹy@UnE"!vGQ_H_5ٸ@?2 r"B~OēZ`ak)q 7<%Ѧ4FkC>2|炾xOukє;T5E#RyF堯?]81repy<1ԭOd}]B#n ]Q׈8$!mƼo%w\wj\dK ~.JjJ#(Ihy_{mcYQ3D~4R +$yzm7[ȲF~ZG,uhbٻ6Vd&-#, 6x.OpֻOږQ+nOW^6V|$ʰB+욖mae-I4qo IYoEݵ~|QX{?|4Ҿ%^kأ۔,w_DmĿdQQzpH9fM A?]FEZjvmwԏӆ62Կ's B9X乷R>jfxdZ#WrCvOedʸ/b/'X  @ITuWRuK'h8͈kaGn-+ko4qV턚mֺ4W9H?X}+EoO|yc$P\<"9s[_~/xl$g" wsPZȱ=6yLkI8zn TOA<'jNM}glE2W_6>6O_mrxv&V(!joξE]xs:+H@'MzS}[o-ž<9ZVguVQacel&x$HǮb0Q$ҦK;d 𾲱/nuK ^+Pr?*/Ļ2ęg W4{okXXd2.F+ʳJҥ;;$]ֽW18h҂ڞIJ2 hw"QwikOyݮ-ET1;[jjX.\ܴFvʞdsSMyow)uGMMrۣ9_[?^o(:G\q8RndǡIp\ #՚;7$𤱬w (Ѩ7azA 0Q𮰾mñ V@_ O@cR.%+-v1W7*QwGz4,'kQUeE&8oӏ6jvN[5vyٓ2.>}eƯ2E*Fџ+<) #Tfq]+~$M'ggIsk,6[#'Uf^ged̉6YøzWr2mE%۹{0]9-jڸ-Ϝx|L귷#Oc$wiXȤqs l~Ѿ7𿎵]+RΆ/&s4aį~5zv{o HX溻 ~O#]ݜ KZ%[b@ p%vWxY7>^ko V'mCiR%/Y2%#Q5~ӱڒrsQ~F>*Zyla_3WМSQRߑﴞ>-)Lj)REsO{5̮0qq+ύvꟳڴ,i2,IzHk~# XʟS|exv#[+KpEF`ŹeXӂ$եWHӍE&Xu2clkJ\[L]ʼnYm=K3ic!HS.?򯶫K#Y ޅA'x܌TߵZ| Pr[WKhgeYHdd|5zGia)7$יp:|~g^X[@.n$9 ؖmq@^c@j^&lN 0pnޕ_6IOQ^G]+5O]x^K}e~|&ǴxbJw-%.$q2r9lc3`V;"`Oki ju9[kudu'yx2/֖ZEHBOs h 8. jN1tK؜ӫVWDߙE! !nQmK"85;d8>Vǿ5"tkGQT-ls*<#PĖ7&7v |_LaZsU%ԏ+Vm xY, m;|ӄmԠ™/&X`(-&q~9AǙwg3 UZh>YUzI0Gۛ)uhN6PuQ@{qom7 0@cr3^K A_*)c߾kcjwr-0U2ye 0?m|,|Ei70p9'BQ|qEW}|˴awl}3^~#&ue5Ks+on_Ëe7ȎOsMp^=:k-\ıqwrE-ec~G^{/mҮYyk0+tic%;(w=itINTkoD.>h /.%#.zy'ڬPj>%iԼ0c̐(?3g0 p`Ӆy܎ }+՗PYdO/e*Wh'xŷ^#\]8ڡxүxjKs2I:38-m3m AS3qޱ?lGG,Iᴶ391،qxDCka(+ <;/?ZRmXJm*[ȲJ2*}>nt9nHIo2 UUܸq ,T}KZCp1+\'c*S9];\.-RV_9XDQQUS֦?<`t&?>k9 Zn?QVET(=)iJJO"oBR}AN (# o~c"YIsnsM;JxA; rѬG -w4QEQEQEQEQF*e`9E#@"U'\wkq|u?SI 뽈D?'VDL _M!|#y}{HZ"wwl:KGdI E]}4cpŔG80lɽÖe!=ɸY9'-Rkctq */2)xmkrXFѱ>nqм@7 )ȧ .˅cх2)$ӷuԻ`OCOڀ$!xH~;c8t>VH yt6rE-^hQ^ R[M1{z3aac ׌c-J]:%H9aVn얫h3ϼ{IcL4RC%?׵A,`F:"4f>juQOHQ$Ηi}MC /.vV<.L*$e#por~݊>~;Ƭ#_]O4̏Tt6iV;lNr(?ֳ䶊e2[Z fi$tU~ nTU{?S֦YrOT)@ (ZҊEPHzR@5 I_UEjOkieVqK+ @e{/) Fy5$I$@Q@Q@Q@S}'Ա@Vnz~ &Nycǚ|#]lqqF28cՉhv sƢgv"(c<2K@9`7X4R?S@򣇙O4gyҒ(]BF?~'\['z7_Ҁ[cU.鰤QCxjG,q=X]G 淘/@ gHLF<GCYάHr\o$?CHv|8U<(8qw>G2FDq}Ea;¢Gt`Xwf鵕^E$W u,|n{Qpg%te uu QÓ緭Ex]f<Ia6aܪ>bsQl.CLO=7Gs2'yrIP#&wHأ.B$Dd}NmV =ݟ$@oN3)yi:Bi?7iooǐ|)7 ܏QZ7cbEF)KI%~ƀ+r9+QxXߡE;#Ŏ0}*+9Ҧ9?tP7 m 8o# nAUO-ѳG~9=pgç@iS>OvUò+PZ{H4j%4/?QOz3fG Fv>,}d_Uih?QOzZOz= MR3VuYEo2llzJқIt$cT:}#,2<˞H=AJ;$=5Rgxw1iUhi~9Ҧ$II#h<3*?+iNy#G F ՔV|U4 t0B*^&u(qB^]=4X[hX\Yڽ`'#c*^t4W+ 3hɗ+qwz&ny88=E>MkKH.14s;#lqƞi){K,fv0Etq.@V;bs3o4˝|1Miyp!29Iwj*sN#gܡFEDذW~2߻mg4Q:(yYmg_*6M :ms (7pqE8Mr۹"2 c82+J =69#yKDBK>x5O_I [xSc ,?qF{^Q4Ka,#Ip ;L@{q(EDŽ_zk;d767$J3qۚA*XIdߙe!qViϪ5K/ R4q ?@D[\$y<*wnm7#mLMK~xgx{ɍUɑc;00'|:Gh&㉕Z{5xg2A’^?8X4F{3y [ȨJ@$gM^ogWJV`sq5gĚni \qوq MG:Ѣtajgõe!*\6X~v-o4 ]dJB:ڦ`"Wo'47Wg90hğc$W=۲%!S4EFUhxS}XL򀤀ǽk%rE'=I&m6'01QKX59bN _IwB\n?ߢ*QE%r{ջH;K vbLַʼn2y#aUn'fd,D{~a;Vm\ֿ%'TTR*@汷BIJ+"9M6e=G1(m6~_`Ao2E!ey,Ms<L1H"m; aǙNҚQn: _j͢9"lj@'v*QEQEKk1?Ҭ#+Xt*A8 Ia6jY `z"C" %1Np7H%N65:)NQn|ϙ֛ ۣvSQC;eOjV}6@^ w@}O5chM>ezt $Epa8GAM?$x?a T%2enAT s3btP#R!'.Y0 B5=N~c4^}k5 -Kh΢m\lM LI27󩢳Vx㺕mc>˞Z$do>Ahq/ɋuX:YҡGOjm+31O4製lj?/?X cEPWu?*W'@ ֿ+qk_zEPW4#CZ]Wÿ7Oo.$ 'XqrCIyêឿ(泫:ޡsĉc+*9OG_hh~(Y.?*>_{'}ȕkI@ѳ}#}>"x> m$G0'ѿZµΝs?C&!_Ǔ#Rb#d Op@y/4GLqL;lY^STOZWOgltĤ'#-d~#ګ57~{H4iAA/$"*]_S`Ix=]$Ӱ Ƹ_^DNO٢|=jDnO񧤤C1H}R.=I,΀%&w^ZRѿE@Q@製lj?/>5[Ϥ cEPW'TjW@ ֿ+qk_Q@(֏yZ6&XOS5i>v OkGDK5 Hʾ+t5OV2N}IpȚ⿃(XZfr  Cr `㩮Vm.D m8##zN'¾"tKFWoh%Ѐ-ոBI]J&p5c㯋z=`DQwr.Bg=c&@'|;$ PAjO(;1JRZiHs߾**pw q]SIEQEQEQEQE>)^66=}@Heo]f(%p*Fm,KeP6/RB_?M&DŁqlin0>f9nUسb{Fj]ѕT>`v@UIcd`qG?,vs4o9$UPU.U9QEwA=lj?/>5@Q@^ӿЪ^ӿШn?QVE} #dW( N?º+G?e??A/_r2|# xc[TѴ?OH -![nyſ#w.A9?$ז]Rib{T26zWp5iQ{6۳_u[tFg˦Ys:սf_8䑲؀tdgmb[t;īl dջ>jRn5rFH#-ሔkk-P! U}~:hxÖ@R,Kv*.#y մ>+4VdOGOh괟/W[E|G3~{WG(>xfD4m䏲'+)Tֺ(OԿ}ZV;DEic?'aj_ʾrBvG+oН*XEթ*µ '᷀N?kg>KW܎H|6 /Q ?'h]f)hOԿ}[xCnµ 'uQթ*¶ '-Bv]f(4_0/_r9?V;DU¸ICET -/g>KW܎SρyGEmUR''/uX/ }Z|8R{'+_Л"WJ:ROԿ}ZoA]m&(OԿ}῀Y> ''š~h ?,g>KW܎k/)jEsgo9L}4eC/x<>]7콨"7c\ |6񯄉}kB/2/x~bGB GمlBS_s֟[#=`~t?.X_^d7@t}BR pGM5υ*;Qq`N#D}yG3Ovgseհ]wG E`_Bp^ӿЪ^ӿ3ZҊ5 (Z(5~-&GyGZҏu: ]6X`Wf|~],"ĹsKE]__j-/sG9'I$y;ךx[^!:|CH}_V[Nd@gw|`;ֆO-{x%ԕԌB%N;3W}L(tk򿑊Qvos33yPiلj18IJk]>&xVm6[C85fir@*kdx0碊]\$]OAZ/xBR jp[Dk`J8׷;mz⻻>ӣy$AsJI^#%M/'m~ዄ; Z֡y'n嶴Y#X cY^Lj~%t3xbnMhX`a8ZEpRMAwTUM[*{I,%$ginN/ttFWi)sKRPQE&hh((NQ@Rc PEPH:@Q@Q@A}koyk%lȻEOE8Ŧ.)3MOBϦezzWH`F>\Ex'f r~j)w`;>9/.RGyRuh]^ӿSYVcW4u?*8n?QV((S^Utm RO6{Մ#NA$|åwjba9qY"c nwҔӾ]0+w' OMamb[u 1t pF @tRH7|M7HPm”6w DHڽ`z8 Nd+7={>G;63. z^b??;uJ//6ktpN*${iY@F}ceMgJL~ҲBۊ]WCy- &T(bXep3GJkzP$^8r~\gN+ َ:NtZw~KQJ2RR8[3׌o&H$JR K Ci8zV^x4C hOї7PHxٟo\^i}nkY * nFAT?*a3 n|%L";;b x'K^:7hZux6F8@\'vЄwuSrC;Z_ëMleV v"~jQXƤR-+ wXq䌴@ۻG]C=|Ld5cI*û{6;זa4r QfPM͂zVzEq[<{v?Sq~&Dޱ=j0ۣDR2pv61nj":Vxv .7ccpwC1YG:E$/O M~?*YdPF[p?"|*"D*ִi]2=ӪEEөS_>Qqm32(S`E!QEAKE!(((- (Hih)((A@ E(BhhCKEQE!G况$k*Э蟶E M ﶱS.0(޸OOLt+SŠ(LEPE CK@Q@)h ( (:R@Q@Q@Q@PEPEPE|B񵿄~Xy:Fq[r _J**TUՍ8I}x7WM"HQA07F~{OӼL/ռ:*UoɔT۵ΞAK^aҎ㾒5zB=Ċ?4Wiwn042gὂl%Z|̛4Q_(z!ALREQHhh(AKERKE(QEQEQEPhEPE!RZ(A= s5w$Z}yVLb.3ӡ%}u1pNjэM$xՖ΋{7z$sJYUpa]6-WUӼS4ռCZlo&GV<^-[hdqљ"ֽEZ\v+93ӧq5{kvz|:ފdP6kyup2Y4?^Ʒw:EiXKlMP7dq+q:m}mwkHq|?tIk'ӮfO1 ق{WU=cz/MVڹh{ TblN*?<-:n)hӤ(@Q@&iM ((4P(4Q@)h ( ( ( C֖BE ) -((3KH:EPEPEPf-!Q@Q@Q@ߒ(im     : D N q p q r shttp://www.oaktable.net/main.jsp;jsessionid=7441B6E64E8D531D15CEF0E157F7B588:,&www.go-faster.co.ukAhttp://www.oaktable.net/main.jsp;jsessionid=7441B6E64E8D531D15CEF0E157F7B588.zwww.ukoug.org/ 00DTimes New Romanx( )0(Y 0DArialNew Romanx( )0(Y 0" DComic Sans MSnx( )0(Y 0|B0DTheSansMonoConSemiLight(Y 0 ` .  @n?" dd@  @@`` 6zI #      x  U 7  (Cw ; ' 10   !#%'/1379EuOGU[egi?AKMIQS)+-WY_]mo qs k5;=ac   "$&(*,.02468:<>@BDFHJLNPRTVXZ\^`bdfhjlnprtv4b$3~B*ɼ.b$S @D}Ʌ1d|B.R$׿ Cj=aR=1Fb$PW5QHG 7$Fxb$R8bd zqUYvcQ8}b$Âk0,}- R$$ x;1'c 1? f̙@8   g48d8d )0ppp@ <42d2d 0dg48d8d )0p6 p5<4BdBd 0doʚ;J{)ʚ;<4ddddH 04&BRANCHTO257JHOTSPOTTYPE$DefinedInNavigator<$DEFINEDINNAVIGATORTrue2___PPT9/ 0?:- &www.go-faster.co.ukOt= `Go-Faster Consultancy Ltd. www.go-faster.co.ukgoSQL*Fingerprints VDavid Kurtz Go-Faster Consultancy Ltd. david.kurtz@go-faster.co.uk www.go-faster.co.ukN ((F0(( ` Who am I?DBA Independent consultant System Performance tuning PeopleSoft ERP Oracle RDBMS UK Oracle User Group Unix SIG Oak Table www.oaktable.net     ~ Book www.psftdba.com&  _ Resources   If you can t hear me say so now. Please feel free to ask questions as we go along. The presentation will be available from www.ukoug.org www.go-faster.co.uk Further reading: Chapter 11 of PeopleSoft for the Oracle DBAT{Z$ZZ,Z{$,z         =  z 0{, 0HpPerformance Tuning  What is Performance Tuning? Response Time Often down to poor SQL Oracle RDBMS V$ views, SQL*Trace PeopleTools SQL Trace PeopleCode headers PeopleSoft Performance MonitorjNN  IrOracle RDBMS SQL*Trace  cTrace batch processes via trigger Enable trace on PSAPPSRV processes List of all the SQL Statementsc  JqWhere does the SQL Come From?   Most performance tools will identify poor SQL But they won t tell you who or what submitted it Unless the application is instrumented&_'_'  eTuning without code changes  CDatabase Parameters Indexes Hints via Stored Outlines (Oracle only)C  Lt+If you can find it, then you can change it!+  /This presentation is about how to find the SQL./  KsDBMS_APPLICATION_INFO  Oracle implemented DBMS_APPLICATION_INFO module to solve this problem in Oracle Apps. SET_MODULE PeopleSoft only uses CLIENT_INFO So you only know which OPRID is responsible for a statementLV !<V !<  T| In the following slides I am going to show a number of SQL statements. Can you work out what produced them? ALTER SESSION SET _AUDIENCE_PARTICIPATION_ENABLED=TRUE;*n8n8  MuComponent Processor  SELECT EMPLID, PER_STATUS, TO_CHAR(BIRTHDATE,'YYYY-MM-DD'), BIRTHPLACE, BIRTHCOUNTRY,BIRTHSTATE, TO_CHAR(DT_OF_DEATH,'YYYY-MM-DD'), TO_CHAR(ORIG_HIRE_DT,'YYYY-MM-DD'), HIGHLY_COMP_EMPL_C, HIGHLY_COMP_EMPL_P FROM PS_PERSON WHERE EMPLID=:1 ORDER BY EMPLID (Z# NvComponent Processor  This SQL is interpreted from contents of PeopleTools tables You won t find this SQL anywhere in code. Generally all UPPER CASE Dates converted to strings in the format YYYY-MM-DD Date-times converted to strings in the format YYYY-MM-DD-HH24.MI.SS."000000" One SQL loading one table per scroll Predicated and sorted by the  key fields.n<$<l >cP. P  PxSearch Dialogue  SELECT DISTINCT EMPLID, EMPL_RCD, NAME, LAST_NAME_SRCH, SETID_DEPT, DEPTID, NAME_AC, PER_STATUS FROM PS_PERS_SRCH_GBL WHERE ROWSECCLASS=:1 AND UPPER(NAME) LIKE UPPER('Smith') || '%' ESCAPE '\' ORDER BY NAME, EMPLID*cC OwComponent Processor Variations  Search Dialogue queries are always DISTINCT Often contain ROWSECCLASS User search criteria as literals UPPER() function when case insensitive Wildcard added automatically when search string shorter than column&  QyTranslate Values  Hint added from PT8.43 SELECT /*+ FIRST_ROWS */ NAME_TYPE, ORDER_BY_SEQ, NAME_TYPE_DESCR FROM PS_NAME_TYPE_TBL A ORDER BY NAME_TYPE <spcC0  p Rz PeopleCode   PeopleSoft s proprietary 3GL Tokenised in PeopleTools tables Can also be executed by Application Engineg  S{ SQLExec()(   ?Select A.BEN_STATUS from PS_ACTN_REASON_TBL A where A.ACTION = :1 and A.ACTION_REASON = (Select min(AA.ACTION_REASON) from PS_ACTN_REASON_TBL AA where AA.ACTION = A.ACTION) and A.EFFDT = (Select max(AAA.EFFDT) from PS_ACTN_REASON_TBL AAA where AAA.ACTION = A.ACTION and AAA.ACTION_REASON = A.ACTION_REASON),@Z?cC? U} SQLExec()(   W SQLExec("Select A.BEN_STATUS from PS_ACTN_REASON_TBL A where A.ACTION = :1 and A.ACTION_REASON = (Select min(AA.ACTION_REASON) from PS_ACTN_REASON_TBL AA where AA.ACTION = A.ACTION) and A.EFFDT = (Select max(AAA.EFFDT) from PS_ACTN_REASON_TBL AAA where AAA.ACTION = A.ACTION and AAA.ACTION_REASON = A.ACTION_REASON)", &ACTION, &FETCH_STATUS);XXcPV~ SQLExec()(   What you code is what you get Mixed Case More complex Joins several tables Hand Coded Multi character row source identifiers (table aliases) Mostly using bind variables literals possible if dynamically generate SQLl     kScrollSelect()(    SELECT SETID, DEPTID, POSITION_POOL_ID, SETID_JOBCODE, JOBCODE, POSITION_NBR, EMPLID, EMPL_RCD, JOB_REQ_NBR, TRIGGER_RECORD, TIME_STAMP, TO_CHAR(TIME_STAMP,'YYYY-MM-DD-HH24.MI.SS."000000"'), PROCESSED FROM PS_ENCUMB_TRIGGER Where TRIGGER_RECORD = 'J' and emplid = :1 and EMPL_RCD = :2 and PROCESSED = 'N' ORDER BY SETID, DEPTID, POSITION_POOL_ID, SETID_JOBCODE, JOBCODE, POSITION_NBR, EMPLID, EMPL_RCD, JOB_REQ_NBR, TRIGGER_RECORD, TIME_STAMP *cC( nScrollSelect()(    ScrollSelect(1, Record.ENCUMB_TRIGGER, Record.ENCUMB_TRIGGER, "Where TRIGGER_RECORD = 'J' and emplid = :1 and EMPL_RCD = :2 and PROCESSED = 'N'", &EMPLID, &EMPL_RCD); CB  S  D  oScrollSelect()(    bUpper Case Select clause All the columns/fields From clause Table name Order by clause Key fields ZZZ Z ZZ Z B$B B B B B Bb   -Where clause As coded Binds and/or literals @  B$ B $-  WRowset Fill() function(   SELECT FILL.PNLNAME, FILL.PNLFLDID, FILL.FIELDNUM, FILL.PNLFIELDNAME, FILL.FIELDTYPE, FILL.RECNAME, FILL.FIELDNAME, FILL.LBLTYPE, FILL.GOTOPORTALNAME, FILL.GOTONODENAME, FILL.GOTOMENUNAME, FILL.GOTOPNLGRPNAME, FILL.GOTOMKTNAME, FILL.GOTOPNLNAME, FILL.GOTOPNLACTION FROM PS_CO_PNLFIELD_VW FILL WHERE PNLNAME = :1 and FIELDTYPE = 16 and LBLTYPE = 7 AND RECNAME = :2 and FIELDNAME = :3 ,ZcC"`$  XRowset Fill() function(    &PnlField_Rs = CreateRowset(Record.CO_PNLFIELD_VW); &PnlField_Rs.Flush(); &PnlField_Rs.Fill("WHERE PNLNAME = :1 and FIELDTYPE = 16 and LBLTYPE = 7 AND RECNAME = :2 and FIELDNAME = :3", %Page, &LinkRecName, &LinkFieldName); ,ZcC  A*        YRowset functions(    Replacing older scroll functions [OT: Although I think they are less efficient at run time!] Complexities hidden inside view Upper Case select clause Mixed case where clause<!<Q!$< Q$  zA useful trick  Joining tables in Scroll/Fill functions &PnlField_Rs = CreateRowset(Record.X); &PnlField_Rs.Fill(",PS_Y A WHERE FILL.MYCOL = A.MYCOL & ",& ); And this is what you get SELECT FILL.& FROM PS_X FILL ,PS_Y A WHERE FILL.MYCOL = A.MYCOL & This can be more efficient than burying everything in a view especially if a group function is involved.(eB=,(ccCBc=+   c '     $  Bh  ZSearching PeopleCode  $Application Designer  Find In&  Utility Effective but slow Save all PeopleCode to a text file Search for ; Save result Search text file with wordT(ZZ#Z4Z(#4  [Query  iSELECT A.EMPLID, A.ATTENDANCE, A.COURSE, B.DESCR, D.NAME, A.SESSION_NBR, TO_CHAR(A.STATUS_DT,'YYYY-MM-DD'),B.COURSE FROM PS_TRAINING A, PS_COURSE_TBL B, PS_PERSONAL_DTA_VW D, PS_PERS_SRCH_QRY D1 WHERE D.EMPLID = D1.EMPLID AND D1.ROWSECCLASS = 'HCDPALL' AND ( A.COURSE = :1 AND A.ATTENDANCE IN ('S','W') AND A.COURSE = B.COURSE AND A.EMPLID = D.EMPLID ),jZicCi {But Which query?  pSELECT a.oprid, a.qryname FROM psqryrecord a , psqryrecord b , psqryrecord d WHERE a.oprid = b.oprid AND a.qryname = b.qryname AND a.oprid = d.oprid AND a.qryname = d.qryname AND a.corrname = 'A' AND a.recname = 'TRAINING' AND b.corrname = 'B' AND b.recname = 'COURSE_TBL' AND d.corrname = 'D' AND d.recname = 'PERSONAL_DTA_VW';qZqc^       |But Which query?  zOne of these OPRID QRYNAME ----------------------------- ----------------------------- TRN002__SESSION_ROSTER TRN003__COURSE_WAITING_LIST CAUTION: Unrestricted use of query will bring a system to its knees! Users often clone public queries to their own private queries, and make a few tweaks.x EV ccEVN   cj  fBatch Programs  kYou know from the session a batch program which type of batch program v$session.process v$session.program<-%$- %k  gCobol Stored Statement DELETE FROM PS_GP_PYE_STAT_WRK WHERE CAL_RUN_ID=:1 AND EMPLID BETWEEN :2 AND :3 ; It is impossible to be certain by just looking at the SQL statement.RxFu! (D$>>( H  aCobol  Stored Statements Delivered as Data Mover scripts %PS_HOME%/src/cbl/base Dynamic Statements Strings built by Cobol programs during execution`71$   $1 N<    I  \Stored Statement  nSTORE GPPCANCL_D_WRKSTAT DELETE FROM PS_GP_PYE_STAT_WRK WHERE CAL_RUN_ID=:1 AND EMPLID BETWEEN :2 AND :3 ;&onaA,l  ]Stored Statements  Stored statements usually contain bind variables Dynamic statements sometimes contain literal values But not always! Individually named in timings report Can be difficult to distinguishFeZ5Z Ze$5 $  jPeopleTools Trace COBOL 0  lStored Statement GETSTMT Stmt=FSPJCOMB_S_COMGRP, length=297 COM Stmt=SELECT A.PROCESS_GROUP & Dynamic Statement DYNAMIC Stmt=FSPJECHF_U_CFERROR COM Stmt=UPDATE PS_PSA_ACCTDSTGL SET & PMGMG  hIdentify Stored Statements  STORE GPPCANCL_D_WRKSTAT DELETE /*GPPCANCL_D_WRKSTAT*/ FROM PS_GP_PYE_STAT_WRK WHERE CAL_RUN_ID=:1 AND EMPLID BETWEEN :2 AND :3 ; $a$"  iIdentify Stored Statements  @Stored in PS_SQLSTMT_TBL Can add comment with PL/SQL Download code for book Ch.11: stmtid.sql (Oracle Only) If you customise stored statements then add the comment manually to the .dms script Remember to compare DMS scripts at upgrade time The PeopleSoft documentation won t remind you!6 T_6$ T_ hU    W  e  ^SQR  What you code is what you get Search for the SQL in the SQR And the included SQC files Can also embed string variables in SQL content of variable dynamically becomes a part of the SQL statement. Source of hard parsingj<ZZ(ZEZZ<(E   lSQR  ... FROM PS_GP_CAL_RUN_DTL A, PS_GP_CALENDAR B, PS_GP_CAL_PRD C WHERE A.CAL_RUN_ID = $Cal_Run_ID [$Where] AND B.GP_PAYGROUP = A.GP_PAYGROUP AND B.CAL_ID = A.CAL_ID AND C.CAL_PRD_ID = B.CAL_PRD_ID ... ,ZcC"  mSQR   let $Where = '' if not isblank($Paygroup) let $Where = ' AND GRP.GP_PAYGROUP = ''' || $Paygroup || '''' let $Where_B = ' AND B.GP_PAYGROUP = ''' || $Paygroup || '''' End-If *cC^7> _ Hints in SQR   aBegin-Select On-Error=SQL-Error /*+ALL_ROWS*/ m.model_statement m.parmcount m.statement_type ... &b`aA4B   p Hints in SQR   begin-SELECT DISTINCT on-Error=SQL-Error /*SYSRECORD-13*/ RECNAME &Record13_RecName if (((#current-line + 1) = #sqr-max-lines) and $DetailErrFound = 'Y') or ($DetailErrFound = 'N') move 'Y' to $DetailErrFound do PrintSectionHeadings end-if let #rows = #rows +1 print &Record13_RecName (+1,#Start1) FROM PSRECDEFN , (SELECT /*+ALL_ROWS*/ 'x' FROM DUAL) WHERE RECTYPE = 7 AND SQLTABLENAME <> ' ' ORDER BY RECNAME end-SELECTZcU6 qHints and Comments in SQR  SELECT DISTINCT /*SYSRECORD-13*/ RECNAME FROM PSRECDEFN , (SELECT /*+ALL_ROWS*/ 'x' FROM DUAL) WHERE RECTYPE = 7 AND SQLTABLENAME <> ' ' ORDER BY RECNAME c `SQR Cursor Status Report  -s parameter causes SQR to print cursor status report after execution Static SQL only Parsed before execution begins. If there is a syntax error in static SQL then program will fail immediatelyL70L70L  rSQR Cursor Status Report  tCursor Status: & Cursor #34: SQL = SELECT substr(C.PRCSNAME, 1, 5), C.PRCSNAME FROM PS_PRCSDEFN C WHERE C.PRCSTYPE like 'SQR%' Compiles = 2 Executes = 1 Rows = 11 & ,ZcC4,  sSQR Cursor Status Report   }Application Engine  SELECT SERVERNAME FROM PSSERVERSTAT WHERE SERVERNAME <> 'PSNT' AND SERVERSTATUS = '3' AND ( ROUND((( SYSDATE) - (LASTUPDDTTM)) * 1440, 0) < 10) /c~Application Engine  %Select(PRCSPURGE_AET.SERVERNAME) SELECT SERVERNAME FROM PSSERVERSTAT WHERE SERVERNAME <> %Bind(PRCSPURGE_AET.SERVERNAMERUN) AND SERVERSTATUS = '3' AND ( %DateTimeDiff(LASTUPDDTTM, %CurrentDateTimeIn) < 10) *cCV        aApplication Engine  Mostly, what you code is what you get &Bind() variables mostly replaced with literal values Lots of hard parsing ReuseStatement attribute on AE step From PeopleTools 8.x, rewritten in C++, and so can execute PeopleCode. Bind variables in PeopleCode remain bind variables in SQL.B\Z9ZZ\9Bp     bOptimisation Techniques  Indexes Disabling without hints From Clause Ordering ORDERED hints Leading Hint Transitive Closure Hugely effective on GP PSFT develops on Microsoft SQL Server, Stress Tests on DB2 and releases to Oracle! - Perhaps that will change now!!t  t  cImplementing Techniques  Component Processor Views Views of a single table are updatable Scope of Hint Function Based Indexes For case insensitive search dialogues SearchSave PeopleCode Validate search criteria4&4& B    #  yImplementing Techniques  Queries Hints in Expressions Move DISTINCT to Expression Manually reorder FROM clause SQL92 Outer Join Outer-join query secure records:_ _   u"Effective Date/Sequence Processing"  0Query gratuitously adds EFFDT/EFFSEQ processing.0  v"Effective Date/Sequence Processing"  *Irrespective of whether key fields of not!*  w"Effective Date/Sequence Processing"  <SELECT A.EMPLID, A.EMPL_RCD, A.NAME FROM PS_EMPLOYEES A, PS_EMPLMT_SRCH_QRY A1 WHERE A.EMPLID = A1.EMPLID AND A.EMPL_RCD = A1.EMPL_RCD AND A1.ROWSECCLASS = 'HCDPALL' AND ( A.EFFDT = (SELECT MAX(A_ED.EFFDT) FROM PS_EMPLOYEES A_ED WHERE A.EMPLID = A_ED.EMPLID AND A.EMPL_RCD = A_ED.EMPL_RCD AND A_ED.EFFDT <= SYSDATE) AND A.EFFSEQ = (SELECT MAX(A_ES.EFFSEQ) FROM PS_EMPLOYEES A_ES WHERE A.EMPLID = A_ES.EMPLID AND A.EMPL_RCD = A_ES.EMPL_RCD AND A.EFFDT = A_ES.EFFDT) )(=Z~<  x"Effective Date/Sequence Processing"  'You can (and should) delete it manually'  d Questions?    oSQL*Fingerprints VDavid Kurtz Go-Faster Consultancy Ltd. david.kurtz@go-faster.co.uk www.go-faster.co.ukN ((F0(( /tbD1PQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~P ` ___f3f` ___3f` 999MMM>?" dd@,|?" dd@   " @ `"  n?" dd@   @@``@n?" dd@  @@``PR    @ ` ` p>> 0 k c  8 (  8pF  q0a 8 q 0a2 8 C BUCENG HZI8Qf3? جU,جU,8`T,8`T q0a2 8 C BUCENG HZIDQD? U8U8D`T8D`T 2 8 C BUCENG HZIEQ[? U9U9E`T9E`T dn" 8  G/*d6?@33@@@sf 4 8 Z Egֳgֳ ?  T Click to edit Master title style! !: 8 Tgֳgֳ ?0  RClick to edit Master text styles Second level Third level Fourth level Fifth level!     S  8  `gֳgֳ ?`  GPSFT Tech PUG 10.1.05   8  `Lgֳgֳ ?   B*  8  `gֳgֳ ?   B*H 8 0޽h? ??0888 ___f3f Fireball     @ <u (  <pF  0  <  0 2 < C BUCENG HZI8Qf3? جU,جU,8`T,8`T 0 2 < C BUCENG HZIDQD? U8U8D`T8D`T 9Y 2 < C BUCENG HZIEQ[? U9U9E`T9E`T " <  G/*d6?@33@@@sf  < Zl=gֳgֳ ?`  T Click to edit Master title style! ! < Tgֳgֳ ?0 `    W#Click to edit Master subtitle style$ $  <  `gֳgֳ ?`  @*  <  `@ōgֳgֳ ?   B*  <  `Dgֳgֳ ?   B*H < 0޽h? ??0<<< ___f3f 0 bZ`(    Z 1 ?0    Z* X  C  i   @  Z 1 ? *?   RClick to edit Master text styles Second level Third level Fourth level Fifth level!     S  Z 1 ?a i0   \*    `Ȟ 1 ?,\    Z*    ` 1 ?,a i\   \* B  s *e ? ̙33T $4(  4  4 Z{1 ?0    j*David Kurtz     4 Z~1 ?a i0  V*   b 4  `}1 ?,\   h*Experiences of Global Temporary Table in Oracle 8.155  5  4  `\1 ?,a i\  V*   H 4 0e ? ̙33` : &www.go-faster.co.uk 0L(    # l`؍gֳgֳ ?<`     fٍgֳgֳ ?<  f2  c ,܍gֳgֳvd @?UQl$ 0q 0 0 > 2 f2  c pߍgֳgֳvd @?@UQ< l$ 0: 0 0 > 2 f2   c gֳgֳvd @? UQ l$ 0D 0 0 > 2 f2   c C gֳgֳvd @?@ TP< l$ 0N 0 0 > 2   AJ)http://www.oaktable.net/oaktable.jpg `r  0B  s *޽h ? f3f3f  .& `(  `r ` S  8    ` S , 8 <$ 0   ` S  8p 0<$ 0   ` s dA:C:\user\Ppt\psftdbacover.jpgj @,$D 0H ` 0޽h ? ___f3f4 P \\(  \x \ c $ 8    \ c $ 80<$ 0   H \ 0޽h ? ___f3f( Q P(  r  S (8     S 80<$ 0  H  0޽h ? ___f3f( R P(  r  S \8     S 880<$ 0  H  0޽h ? ___f3f( S P(  r  S m 8     S ܊ 80<$ 0   H  0޽h ? ___f3f( T `P(  `r ` S  8    ` S  80<$ 0   H ` 0޽h ? ___f3f4U  \(  x  c $4O<`    c $P<0 `  <$ 0  H  0޽h ? ___f3f V @$(  r  S Z8   r  S [80  H  0޽h ? ___f3f( W `P(  r  S f8     S g80<$ 0  H  0޽h ? ___f3f( X P(    S 8n8<$D 0   r  S tt80  H  0޽h ? ___f3f Y $(  r  S j8   r  S 80  H  0޽h ? ___f3fT Z |(    S h8<$D 0     S -80<$D 0  H  0޽h ? ___f3f [ 0(  x  c $,$8   x  c $$80  H  0޽h ? ___f3f( \ P(    S T=8<$D 0   r  S >80  H  0޽h ? ___f3f ]  $(  r  S XB8   r  S H80  H  0޽h ? ___f3fT ^ @|(    S 8'8<$D 0     S (80<$D 0  H  0޽h ? ___f3f _ `0(  x  c $08   x  c $8180  H  0޽h ? ___f3f( ` P(  r  S 08     S F80<$ 0  H  0޽h ? ___f3fT a |(    S ,28<$D 0     S e80<$D 0  H  0޽h ? ___f3f` b (    c $\8<$D 0     c $w80<$D 0  H  0޽h ? ___f3f c xp(    c $p|8<$D 0     s *$}8 0<$D 0  r  S }8p 0  H  0޽h ? ___f3f( d P(    S  H8<$D 0   r  S H80  H  0޽h ? ___f3f e  0(  x  c $ 8   x  c $k 80   H  0޽h ? ___f3f f @ $(   r   S X 8   r   S P80  H   0޽h ? ___f3f( g `P(  r  S h8     S d80<$ 0  H  0޽h ? ___f3f@ h h(  r  S 8     c $<8 0<$ 0  |  T1?!  3 *A?4223ill1101p  ,$D 0H  0޽h ? ___f3fT i |(    S 38<$D 0     S l?80<$D 0  H  0޽h ? ___f3f` j (    c $lY8<$D 0     c $8Z80<$ 0  H  0޽h ? ___f3f` k (    c $ l8<$D 0     c $l80<$ 0  H  0޽h ? ___f3f( l hP(  hr h S Pd8    h S 80<$ 0  H h 0޽h ? ___f3fT m  p|(  p p S xt8<$D 0    p S Xu80<$ 0  H p 0޽h ? ___f3f( n @P(  r  S 8     S `80<$ 0  H  0޽h ? ___f3f o ` $(   r   S h8   r   S $80  H   0޽h ? ___f3f( p ,P(  ,r , S 8    , S 80<$ 0  H , 0޽h ? ___f3f: q b(  x  c $p8     s *80<$ 0  H  0޽h ? ___f3f r x0(  xx x c $8   x x c $D80  H x 0޽h ? ___f3f( s P(  r  S 8     S 80<$ 0  H  0޽h ? ___f3f( t (P(  (r ( S  8    ( S  80<$ 0   H ( 0޽h ? ___f3f u  $(  r  S 8   r  S 80  H  0޽h ? ___f3f v @0(  x  c $8   x  c $80  H  0޽h ? ___f3f w `0*(  0r 0 S 8   x 0 c $80  H 0 0޽h ? ___f3f x 6(  x  c $L3 8   ~  s *3 80   H  0޽h ? ___f3f y 6(  x  c $<8   ~  s *480  H  0޽h ? ___f3f z 4$(  4r 4 S P 8   r 4 S F 80   H 4 0޽h ? ___f3f { 0(  x  c $] 8   x  c $l^ 80   H  0޽h ? ___f3f | NF(  x  c $>8   |  T1?  C zAbC:\user\word\apress\4223\ch11\4223f1103scrap.tifaP` H  0޽h ? ___f3fT }  |(    S r 8<$D 0     S 4y 80<$ 0   H  0޽h ? ___f3f ~ @0(  x  c $| 8   x  c $8 80   H  0޽h ? ___f3f  `<$(  <r < S  8   r < S ؐ 80   H < 0޽h ? ___f3f(  @P(  @r @ S R8    @ S Q80<$ 0  H @ 0޽h ? ___f3f  L$(  Lr L S $c8   r L S _80  H L 0޽h ? ___f3f  0(  x  c $ 8   x  c $ 80   H  0޽h ? ___f3f  nf(  r  S L 8   r  S  80   |  T1? o N  3 &A?4223f1110 r H  0޽h ? ___f3fZ   (  r  S R8   r   S S80  |  T1? o |  T1?||N  3 &A?4223f1112 0H  0޽h ? ___f3f   8(  x  c $$_8   x  c $80  |  T1? o |  T1?||H  0޽h ? ___f3f  z@(  x  c $}8   x  c $#80  |  T1? o |  T1?|||  T1?N  3 &A?4223f1111P H  0޽h ? ___f3f  `$$(  $r $ S 08   r $ S .80  H $ 0޽h ? ___f3fx D: &www.go-faster.co.uk Xd(  X X C xBgֳgֳ ?<`   X 3 rCgֳgֳ ?<  f2 X c gֳgֳvd @?UQl$ 0p 0 0 > 2 f2 X c gֳgֳvd @?@UQ< l$ 0q 0 0 > 2 f2 X c T gֳgֳvd @? UQ l$ 0r 0 0 > 2 f2 X c P gֳgֳvd @?@ TP< l$ 0s 0 0 > 2  X AJ)http://www.oaktable.net/oaktable.jpg `r A 0B X s *޽h ? f3f3f 0 P@ ( tdvL @X @ C i    @ S   *?   " H @ 0e ? ̙33v 0 6.pd(  dd d c $i   " d s *  *?   If who are into PeopleSoft I have written this book. For those of you who are not familiar with PeopleSoft. E-business suite is Oracle s legacy ERP system and it will be replaced with PeopleSoft!  H d 0e ? ̙33o 0 \8(  \d \ c $i    \ s * *?   " H \ 0e ? ̙33 0 , (  ,X , C i    , S \ *?   " H , 0e ? ̙33p 0  (  X  C i     S  *?   " H  0e ? ̙33r 0  (  X  C i     S   *?   " H  0e ? ̙33q 0  (  X  C i     S   *?   " H  0e ? ̙33 0  (  X  C i     S L *?   " H  0e ? ̙33t 0 0  (   X   C i      S X *?   " H   0e ? ̙33s 0 P (  X  C i     S $d *?   " H  0e ? ̙33| 0 p (  X  C i     S Ts *?   " H  0e ? ̙33u 0  (  X  C i     S X *?   " H  0e ? ̙33v 0  (  X  C i     S  *?   " H  0e ? ̙33x 0   (   X   C i      S x! *?   " H   0e ? ̙33w 0 $ (  $X $ C i    $ S : *?   " H $ 0e ? ̙33y 0 ( (  (X ( C i    ( S E *?   " H ( 0e ? ̙33z 0 0, (  ,X , C i    , S `$ *?   " H , 0e ? ̙33{ 0 P0 (  0X 0 C i    0 S , *?   " H 0 0e ? ̙33} 0 p4 (  4X 4 C i    4 S 7 *?   " H 4 0e ? ̙33~ 0 8 (  8X 8 C i    8 S 7 *?   " H 8 0e ? ̙33 0 < (  <X < C i    < S Y *?   " H < 0e ? ̙33 0 @ (  @X @ C i    @ S u *?   " H @ 0e ? ̙33 0 D (  DX D C i    D S h9 *?   " H D 0e ? ̙33 0 H (  HX H C i    H S   *?   " H H 0e ? ̙33 0 0L (  LX L C i    L S  *?   " H L 0e ? ̙33 0 PP (  PX P C i    P S ̄ *?   " H P 0e ? ̙33 0 pT (  TX T C i    T S `& *?   " H T 0e ? ̙33 0 X (  XX X C i    X S  2 *?   " H X 0e ? ̙33 0 \ (  \X \ C i    \ S V *?   " H \ 0e ? ̙33 0 ` (  `X ` C i    ` S h *?   " H ` 0e ? ̙33 0 d (  dX d C i    d S c *?   " H d 0e ? ̙33 0 h (  hX h C i    h S  *?   " H h 0e ? ̙33 0 0l (  lX l C i    l S  *?   " H l 0e ? ̙33a 0 Pp (  pX p C i    p S  *?   " H p 0e ? ̙33 0 pt (  tX t C i    t S ԭ *?   " H t 0e ? ̙33 0 x (  xX x C i    x S  *?   " H x 0e ? ̙33 0 | (  |X | C i    | S , *?   " H | 0e ? ̙33 0  (  X  C i     S  *?   " H  0e ? ̙33 0  (  X  C i     S d *?   " H  0e ? ̙33 0  (  X  C i     S  *?   " H  0e ? ̙33 0 0 (  X  C i     S   *?   " H  0e ? ̙33 0 P (  X  C i     S   *?   " H  0e ? ̙33 0 p (  X  C i     S |  *?   " H  0e ? ̙33 0  (  X  C i     S @;  *?   " H  0e ? ̙33 0  (  X  C i     S @F  *?   " H  0e ? ̙33 0  (  X  C i     S <[  *?   " H  0e ? ̙33 0  (  X  C i     S u  *?   " H  0e ? ̙33 0  (  X  C i     S Lm  *?   " H  0e ? ̙33 0 0 (  X  C i     S   *?   " H  0e ? ̙33 0 P (  X  C i     S h  *?   " H  0e ? ̙33 0 p (  X  C i     S |U *?   " H  0e ? ̙33 0  (  X  C i     S b *?   " H  0e ? ̙33 0  (  X  C i     S   *?   " H  0e ? ̙33 0  (  X  C i     S P  *?   " H  0e ? ̙33 0  (  X  C i     S O *?   " H  0e ? ̙33 0  (  X  C i     S p\ *?   " H  0e ? ̙33 0 0 (  X  C i     S 6 *?   " H  0e ? ̙33 0 P (  X  C i     S @. *?   " H  0e ? ̙33 0 p (  X  C i     S ? *?   " H  0e ? ̙33r  09KN_ b#P DS1UH77;7G#Sc  }!5-9/i1Bg ;=Mw;# &u}5[8;>m3g;(%+iWAY[\^`ybQd)fhikmao9qstvxqzI|!~сY1 iAəyQ)٤a9qI!ѼOh+'0 px $0 T ` l x SQL TRace  David Kurtz UKOUG 2003 oNC:\Program Files\Microsoft Office\Templates\Presentation Designs\FIREBALL.POT\ David Kurtz89iMicrosoft PowerPoint 7.0t O@O@Zmi@6N@@޴՜.+,D՜.+,L     OverheaduGo-Faster Consultancy Ltd.m8;; @Times New RomanArialComic Sans MSTheSansMonoConSemiLight FireballSQL*Fingerprints Who am I? ResourcesPerformance TuningOracle RDBMS SQL*TraceWhere does the SQL Come From?Tuning without code changes,If you can find it, then you can change it!DBMS_APPLICATION_INFOPowerPoint PresentationComponent ProcessorComponent ProcessorSearch DialogueComponent Processor VariationsTranslate Values PeopleCode SQLExec() SQLExec() SQLExec()ScrollSelect()ScrollSelect()ScrollSelect()Rowset Fill() functionRowset Fill() functionRowset functionsA useful trickSearching PeopleCodeQueryBut Which query?But Which query?Batch ProgramsCobol Stored StatementCobolStored StatementStored StatementsPeopleTools Trace COBOL Identify Stored StatementsIdentify Stored StatementsSQRSQRSQR Hints in SQR Hints in SQRHints and Comments in SQRSQR Cursor Status ReportSQR Cursor Status ReportSQR Cursor Status ReportApplication EngineApplication EngineApplication EngineOptimisation TechniquesImplementing TechniquesImplementing Techniques#Effective Date/Sequence Processing#Effective Date/Sequence Processing#Effective Date/Sequence Processing#Effective Date/Sequence Processing Questions?SQL*Fingerprints  Fonts UsedDesign Template Slide Titles;4 go'/7 W s      _PID_HLINKS TemplateType GraphicType Compression ScreenSize ScreenUsage MailAddress HomePage Other DownloadOriginal DownloadIEButton UseBrowserColor BackColor TextColor LinkColor VisitedColorTransparentButton ButtonType ShowNotes NavBtnPos OutputDirAH258,3,Custom Topic B259,4,Vital Statistics260,5,Favorite Links to Visit257,2,Custom Topic A257,2,Custom Topic A258,3,Custom Topic B259,4,Vital Statistics260,5,Favorite Links to VisitMhttp://www.oaktable.net/main.jsp;jsessionid=7441B6E64E8D531D15CEF0E157F7B588http://www.go-faster.co.uk/Mhttp://www.oaktable.net/main.jsp;jsessionid=7441B6E64E8D531D15CEF0E157F7B588http://www.ukoug.org/2david@go-faster.co.ukocwww.go-faster.co.uk;Presentation to DBMS SIG of UK Oracle User Group 14/3/2000z  f3 C:\User\kurzbyrn\go-faster\#_ David KurtzDavid Kurtz  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~Root EntrydO)PicturesXyCurrent UserSummaryInformation(PowerPoint Document(DocumentSummaryInformation8