www.digitalmars.com         C & C++   DMDScript  

digitalmars.D - profiling

reply "Carlos Santander B." <csantander619 gmail.com> writes:
About the output produced when using -gt:
I understand the lower part of the trace.log file (Timer is .... times in 
microsecs... etc). But what does the upper part mean? There're just a bunch of 
numbers without any title or anything.

Besides, is there any free profiler on Windows that works with DMD? I tried 
AMD's CodeAnalyst, but it doesn't understand the generated code, so it outputs 
assembler code.

-----------------------
Carlos Santander Bernal 
Nov 24 2004
next sibling parent reply "Ilya Zaitseff" <sark7 mail333.com> writes:
 About the output produced when using -gt:
 I understand the lower part of the trace.log file (Timer is .... times in
 microsecs... etc). But what does the upper part mean? There're just a  
 bunch of
 numbers without any title or anything.

 Besides, is there any free profiler on Windows that works with DMD? I  
 tried
 AMD's CodeAnalyst, but it doesn't understand the generated code, so it  
 outputs
 assembler code.

 -----------------------
 Carlos Santander Bernal
I use AMD CodeAnalyst. It works for me.
Nov 24 2004
parent "Carlos Santander B." <csantander619 gmail.com> writes:
"Ilya Zaitseff" <sark7 mail333.com> escribió en el mensaje 
news:opshzvx6cfaaezs2 ilya.tec.amursk.ru...
| I use AMD CodeAnalyst. It works for me.

Oh, yes, you're absolutely right. I had made a mistake regarding the project 
options. Thanks and sorry for that.

-----------------------
Carlos Santander Bernal 
Nov 24 2004
prev sibling next sibling parent "Walter" <newshound digitalmars.com> writes:
The upper part shows you who called who, so you can tell why function xxyy
was being called so many times.

"Carlos Santander B." <csantander619 gmail.com> wrote in message
news:co372s$9lt$1 digitaldaemon.com...
 About the output produced when using -gt:
 I understand the lower part of the trace.log file (Timer is .... times in
 microsecs... etc). But what does the upper part mean? There're just a
bunch of
 numbers without any title or anything.

 Besides, is there any free profiler on Windows that works with DMD? I
tried
 AMD's CodeAnalyst, but it doesn't understand the generated code, so it
outputs
 assembler code.

 -----------------------
 Carlos Santander Bernal
Nov 24 2004
prev sibling parent "Lionello Lunesu" <lionello.lunesu crystalinter.remove.com> writes:
While we're on the subject: what are your (anybody's) thoughts on VS2005's 
PGO?

http://msdn.microsoft.com/library/en-us/dv_vstechart/html/profileguidedoptimization.asp

"The idea behind PGO is simple: Generate profiles from running the 
executable/dll on real-world inputs, which are then used to assist the 
compiler in generating optimized code for the particular executable. "

Lionello. 


begin 666 profileguidedoptimization_fig1.jpg
M_]C_X `02D9)1 `!` ``9 !D``#_[ `11'5C:WD``0`$````" ``_^X`#D%D
M;V)E`&3 `````?_;`(0`%! 0&1(9)Q<7)S(F'R8R+B8F)B8N/C4U-34U/D1!
M04%!04%$1$1$1$1$1$1$1$1$1$1$1$1$1$1$1$1$1$1$1 $5&1D '" F&! F
M-B8 )C9$-BLK-D1$1$(U0D1$1$1$1$1$1$1$1$1$1$1$1$1$1$1$1$1$1$1$
M1$1$1$1$1$1$_\ `$0 !#0'"`P$B``(1`0,1`?_$`*,``0`"`P$!````````
M```````$!0$#! ('`0$``P$!`````````````````0(#! 40``$"`P,&"  $
M!00"` ,```$``A$#!"$Q$O!!4=%3!6%QD2)2DM(3DQ6!H;'!,G(4!N%"--3Q
M8H(C,Z*RPD/B%B1$ U0U$0$!``("`0,"!00#`0$``````1$"$ ,Q(4%1,A-A
M 2)2!/!QP121H4+18O_:``P#`0`"$0,1`#\`N=RT5.^BDN?*8XE B2P$K=/;
MNZ083&2P='= GU!9W'^ D?(%45]/,9,>YPB'&(=;ICFT77&%G"J;[<9F+Z:S
M:XJWDR]WSB&L9*)(# ,`NY%(\NI=C+ZC50T4B;-FL($,!;%T"VQIT$7F,-"Z
M )KMRF3?6:W'E&\NI=C+ZC=2>74NQE]1NI2D5E$7RZEV,OJ-U)Y=2[&7U&ZE
M*1!%\NI=C+ZC=2>74NQE]1NI2D01?+J78R^HW4GEU+L9?4;J4I$$7RZEV,OJ
M-U)Y=2[&7U&ZE*1!%\NI=C+ZC=2>74NQE]1NI2D01?+J78R^HW4GEU+L9?4;
MJ4I$$7RZEV,OJ-U)Y=2[&7U&ZE*1!%\NI=C+ZC=2>74NQE]1NI2D01?+J78R
M^HW4GEU+L9?4;J6]S P%SK +2M'U\CI>HZD#RZEV,OJ-U)Y=2[&7U&ZD^OD=
M+U%/KY'2]10/+J78R^HW4GEU+L9?4;J3Z^1TO44^OD=+U% \NI=C+ZC=2>74
MNQE]1NI/KY'2]13Z^1TO44#RZEV,OJ-U)Y=2[&7U&ZD^OD=+U%/KY'2]10/+
MJ78R^HW4GEU+L9?4;J3Z^1TO44^OD=+U% \NI=C+ZC=2>74NQE]1NI/KY'2]
M1U+W*J9<XEK'1(M0>/+J78R^HW4GEU+L9?4;J4I$$7RZEV,OJ-U)Y=2[&7U&
MZE*1!%\NI=C+ZC=2>74NQE]1NI2D01?+J78R^HW4GEU+L9?4;J4I$$7RZEV,
MOJ-U)Y=2[&7U&ZE*1!%\NI=C+ZC=2>74NQE]1NI2D01?+J78R^HW4GEU+L9?
M4;J4I801O+J78R^HW4GEU+L9?4;J4I$$7RZEV,OJ-U)Y=2[&7U&ZE*1!%\NI
M=C+ZC=2>74NQE]1NI2D04GT5/LV?J.B$6_\`<(B%0<'EU)C)^&P"%O-SQL6A
M[)3'8<3K/Y1;=_-'/D[G*\W-*;,W?(#P#S&WB*K*J<Y\][ 6L 2VR ``NB<)
M-HMX+ECV3W='5;],]O7^O+51F49\N#G1QB%C?<?99[5UBY:GJC(FM+G!S<7Q
M&!''BPB$/P71R*F5/![IP="PP5NOQC\4=LN9;\)"(BT8B(B#G)V_W.>YDD 8
M21SHD]40]I6 [SJG_P#98>BUOMYV7I(K'O$7--O.=81PN_'7T=<)9-C1'+0[
M\(0M`-F5MOX)61JZ VF9,XL4-'\HX<HX<?53]J^/SG1Q>[W-4'NH-Q\X-L-]
MO 8<+K<UI(_F'DLC8<=F;$[A'0/#E8H]O(L/JIMPFOT?Y(Y7CU7QM]-KJB]L
MU_6#M' [3[,UJKB#G+X?,[E^`99C<L$`GG8G1Z1-L(\67#S3/J+=N]JIH!+P
M1_,R/K$(\EO K+=F]OK7F6X#$!BBTQ;#W' 7+# /RCT_C'WF&D_#;[ =BJ7?
M)_RRX^'XC:9RATY65!WF]S*=Q!+3S;1??P9:52RZJ81\;HF$8N-]N7H3;>:^
M4R6NH1<UWTSINZQ3OIG3=UBLO]C7XJ>*^JIYD,+X1A"R[.O3)HF-Q-M"YY\Q
M[Q!SB1QE;::I=(=$79PHG?,^/0XKJL_P3/D=[%#:ZP*3.FMG4KWL,6N8XCD5
M4)UEZZXRVB;C3&H?>Y99<B=[EEER*RF$W$L%V<J(V< 03R+<:AN.)=%I/J_#
M 49.+;B3$O+9\G/#-FY5Z$V66%Q$0( V9X96IE/%G$<ZQB7GZF7G,0<-D.5:
M'S 22(9<:9.*3C3&H?>Y99<B=[EEER*483,17JF,: _)[U![SA4C=[L50X_R
M?\E%6UGJM8K,52[TFO9/:T.(:6$V&'YVJ&RIF$#GNY2L-^R:>6LF73(N:[Z9
MTW=8IWTSINZQ6?\`L:_%3Q7<VK$J:);A81'%Z5)C8N9<]SK7$GC5A05N$B2^
MXV-/N4Z=W+;%_(NJW5+O??S-VN$L-+YA&*$8`#CM5TN)^XY??;P9+C#$UC8\
M;BNWJUFVV-O#/:XC7-^ZZQ_P8&# ;'VJ&[?U>Z^<?0`/8%H=030>:( FRZ,(
MD PX8'D7H;MFE ?S;<1(Q"P-A:>5=\UZI[1GFL^;UNV?UD\WK=L_K+6V G.A
M`"V'YAG;B_VVH-WSB<($3P<6+UBY6QU__E'JWMWY7-NG.],"I4O[HKF7EKOF
M;J H,O=LY[ T -CI(L$<,>6Q>&[OG.:'AO-)+8QT>Z_D5>/5\:IS74[N^YVU
M,QLF<S YQ #FVB)RX5TH7SJDD=Q64XC'$9;^7W<*^B 607%W::ZV</%::VWR
MRB(N=81$05?[A$_<(B&=Q?H)'R-535N8Z>X,EF.)WYC$NN) '\86A6VXOT$C
MY&JCJW8JB9C=9B,3`&P`71/Y;=3A%9]OAOTS-O\`9NDR'/F-:9+P'&!=B>(#
MTZ,LX5_34C*4$,CSC$Q,5SM(V4)\LXWQQ-_(!;P\XW^[3%=4+4ZY,91VVYQ[
M?G_EZ1$6C(1$0?-Y[O[CQFQ.RR]"\=Z<M.E=?5?;5-4.+V%TMSK3A-D>( ^J
M"KIGVE,'^.>"/YF:B KFU[6,:W#CPX8!^:!B8&^!Z)LS\"VLWG+! X.(!#HV
M1/.Q0/LSV+:[[6K!=,8>4>XY>OQ_ZO7=)A'&<LLZCC#+6[>+"70Q0PL#2( Q
M;RB#L\."Q::FL$YC&M$(`1$!"($+./A4L?:]=G=+ZQ[.M>V?:E4?BFL'*?<,
MO4XPRI \A7GVPXNJ7QZ!]H6Z7]I&^9//$UH]IU*YW?NF1N^)E ESK"YQB=7(
M%(V[QI75=.Z2P %T+3QJH\EJ6 P>R,;+#=;K]2Z-8462^1SOE59TF>O5E;=9
M!Y56=)N67MX(=$BI]O7X6Y5RU50U%+*,Y[FX6PC#%'-ICEQE;=V4;ZO^[,B)
M48 7%WK^'V\2OZBG94,,N:,33>#G6P`"P).O67.#E6BK$)$P#H.]BYR6<4MI
MM%V;A ]%ZZ2L_P`$SY'>Q<&R9,#0.=A],,LK+UK%*N TQ 70TZ+(#C.I8>0U
MI()+AAS66\95/WDR_G1NASM>7*L%[]#LUX.:[/EPJ4+H6 &)M$0`W B?4O3 
M&M!BZXDG#Q9E2=Y,T.],<LN.(OF&PAT#I!MX\N%/0708;3$PCA'-ONX>'U+R
M!$1Q660L.G1H5/WDP]*'$?1GO]/+F=Z_AA"&?C]OLM076& L)B70NXXY]/XH
M]I% )C9&(LM,/8J7O)FAU_#EQ>ZV+O)A`$'0_JA[<L_ %P8X8Q-L8"!T$VV^
MJW,O#78FXHW NNCIY3[E4][,T.]=^66D'O&9UEM (]/'ZD%VUI,1&VRV%PCE
M8I>Z#&IF",0&#UE<SC>,Q%T;,^G*Q7GVTYSITTN!^%M_& LMX[OF54S&QP',
M+(.TX ?<H7DU4V&%S(0:.3T7967KHUA4NLV\KYL<YY15])G*[5EGQ)Y15])G
M^K+*^'-72(J?;T^$\K\N/JI<ZDF-EO YSQ$8(D^[W9]*O-V[O,D"9-MF$>AO
M`/>IKJ:6Z:)Q$7M&$.T!;E,Z]9<PNUOH+A_N::96\&3&PBUC2(\97<+A/O!K
MFU37P.$L`!S1B5U=%DW]?&&>WA6^8S",,&PLLAH).G22;4%9.G R ,9<'7-B
MZV!-W$+XJLBI-+4]SB:1%KQ P,#80;# YQH7?9K/$F5,58]]4M9+< TM?"# 
MW [N!X860]Z\-KJAI :T$$X88+'0`;#D`B/>MDG>XF30]XP&V)C9#'CL'2S"
MV"UNWP" US(MPEC '0BTQ ;C!PC;:>*]99OKG1.#ZJII6M<Y :""UI+=#L7M
M'(M0KYK6M P\TDM.$1 Z]L>C:;.%1ZBK$YC&X2"R-I=&()CH]ZC+762SUDRC
M"VH9[IU9(+ !!S&B%E 7TE?,-S-=,K9(:"2'M-F +Z>N/^19RF/A?5E$1<JP
MB( J_P!PB?N$1!N0?_ D?(U5=5/,Z>YK0V6,6&) %VEQ%^C C<I-#6MI-W4Y
M(BYS`&CWG "RR4VOE.GS&$/TLB,8A98;_2%3?U_3/^&VGI^O:>GC/XHM).,F
M>UI#7 D"+8&$;H$-')HNSKIHKG-VSI4J:!,9!Y.$.)/-)S6Z;+1Z;UT:CK\'
M;]7C'^7I$1:,A$1 1$0$1$!$1 1$0$1$!$1 1$082"RB#"+*(,02`6408641
M!B"0640%A91!B"RB("(B`B( (B("US)+)HPO`<#F(BMB(*:=]M;OG7RL)_D)
M'X>I0YGV=1N^%SV^D'W+I$5N6T]QRQ^RJ?:O_P!.I/\`TJGVK_\`3J74HIY[
M?*,.99]FTH^)\P^D:E*E?:N[Y1B6%\.DX_ KQ$Y[7WJ6BGI)-*,,EC6#^404
MA$5 1$0$1$%7^X1/W"(A#HJ/ZG=].6F#FL!!]"\RZ7>$EN!A !F#VP];58;B
M_02/D"E3FSG0[ES6Z<32[WA5NDMSZR_ TF]DXXEGXJJDW7-[P3)YN.*_$2;+
MS99=8- 5XH7=UNTE^&>VG=UNTE^&>VIFLGA&VUVN:G(H/=UNTE^&>VG=UNTE
M^&>VI53D4'NZW:2_#/;3NZW:2_#/;03D4'NZW:2_#/;3NZW:2_#/;03D4'NZ
MW:2_#/;3NZW:2_#/;03D4'NZW:2_#/;3NZW:2_#/;03D4'NZW:2_#/;3NZW:
M2_#/;03D4'NZW:2_#/;3NZW:2_#/;03D4'NZW:2_#/;3NZW:2_#/;03D4'NZ
MW:2_#/;3NZW:2_#/;03D4'NZW:2_#/;3NZW:2_#/;03D4'NZW:2_#/;3NZW:
M2_#/;03D4'NZW:2_#/;3NZW:2_#/;03D4'NZW:2_#/;3NZW:2_#/;03D4'NZ
MW:2_#/;3NZW:2_#/;03D4'NZW:2_#/;3NZW:2_#/;03D4'NZW:2_#/;3NZW:
M2_#/;03D4'NZW:2_#/;3NZW:2_#/;03D4'NZW:2_#/;3NZW:2_#/;03D4'NZ
MW:2_#/;3NZW:2_#/;03D4'NZW:2_#/;3NZW:2_#/;03;T574S:JF9C<]A%UD
MLY_ZU \[FZ1X?_FHNTU\U3;?77ZJZ-%SGG<W2/#_`/-/.YND>'_YJOW-/E7[
MNGRZ-%0TV\Y]0\2VN +HP)EV1%O3T*Q[NMVDOPSVU:67UB^NTVF=4Y%![NMV
MDOPSVT[NMVDOPSVU*R<B ]W6[67X9[:F-C"V]!Z1$05?[A$_<(B'K<7Z"1\ 
M5DJW<7Z"1\ 5DB1$1 1$0$1$!$1 1%A!E%B*(,HL11!E$1 1$0$1$!$1`1$0
M$1$!$1 1$0$1$!$1`1$0$1$!%K[UN/NXC%",,\%[096%E80<C751G322!S>:
M/05#6V>TF8^%V)WO7ATMS3"$>$9>GB7!MFVVO+VS;;7E%[=*>TP+3?#TK EN
M+<<#ATJ,*X3MS_J6_P!7HLRT+J5RNY_U;/ZO]I75+JZ?I_-W?Q_I_-Z1$6SH
M$1$!$1!5_N$3]PB(>MQ?H)'R!6!,%7[B_02/D" []>X.8TVM(,&Z3E=KL,;7
MC,KZZ\KQ7?>,'YARK8#%<C]+* ?[TJ,+\/!D<K.HIVALMH!B`UMJC7:WS$[Z
MS7Q<MZ(BLH+"*OJM[4]*<+G8G=%MO\/2IDM\(MPER:AD\$L,<)+3P$+:N-I=
MX.IZATY .&8XXF\9]NCTKK9,YD] F,,6FXJ^^ET\^ZFF\V\/%3/$B69CHD#1
M?:N<=O2IB>>0;Q8/1F4C?I/>M&:"J%Q=N]SQGIAS=W9>7&>F$WS6JVAY!J3S
M6JVAY!J4)%CRV^:PY[?NJ=YK4'\Y]6K2NIE6M!X(KB08+MI7P-X NCIMN<NK
MHVMY9N6Q$4>952I1 ][01",3IUK=U)"**:Z0##&$\PI]HU!)11OKI _.%"=O
M##.):<4NS\56[2>MJ<5;HO#'AX#FV B(7M60PL$ ")N656[]/_P)WRJ9,W C
MU7W-1R.:TF8[^2[E,!R15;,^\1^22?ZG? N31>E/X^D\^K+E72.^[Z _#+8.
M.*\_^W5709Z]:YU%;['7^U'*ND'W?4"^6P\JWL^\#^>3R/\`P7*(GV.O]IRK
MNJ?[IHYMC\4OYKO5%7<N8V:T/80YIM!%Q7RL`FY=Q]J?HH?SN]RY>[IUTG+5
M?7;/HZ!$1<B["14#>M3,I90F2R!!S0^(_*5S[JQ[K)KW&!(M,+?4+P1E97;;
MBF3+J)E5*E&#W '1&WD4=^])3?AB[B7/BH8+AEE[]#H#4-'%'+-E9I7/>[>_
M3JOP3ZFI[]X>!A($%(IMY%G-FVCI:U3?5-A$6\(B1Z3!3J"7]7,A_P!;;7'V
M#7P<=E-;V<L^]+)AT0((B+EE$7:S<5,?!\QMX+W>HFY>VUF $0LS<XC\L/=[
M?1#J'0G3/G=;_4<K=-X6H3-&?++)RY;K<UP72RW"U?5 B+1:<=FC%# $<^GA
M7B96=XTM`L=GC'/BT<GO5<'.>8,!<= $<N#EX%-9NBMF6A '"YW\3<G':IX;
MUNW('3*EKP#A$8N L^'3IX%UZA[NHF44H2VV&]UL;86J8NG6<9AUZ:\9AE81
M5.^ZJ;2R6.DNPDN 3 70.GA5I,W"UN/5;K"Y"5OZK9\1:X<+=2L:?[CENYL]
MIEGI"UNOU*]Z]I[*S>5?HO$M[9C0YA!:;B+E[6:ZK_<(G[A$0];C_02/D:HN
M^!*,Q >7XBUP T V1&G^&E2MQ?H)'R-4;?$Z2Q[1,EAY 3$N+86CE5=_IO\`
MEIU_5,9_)4N^GPWS2(&W"!_RA'V\,5U5/#NVX;L(A'B7)SIDJ9\$L,LMPS,6
M;\8#JW%=73%QE,Q#"<(B-%BSZO?PU[IZ:^?SQ_A(6#8BJM^5)D4^%MA><.O4
MMY,W#FMQ,JW>F^73"95.8-N+QGXN#BM*I8PR!N]V5J-YU B2;+,K;5<4NX9T
MVV<1+!S0B[\%WRZ=4_'_`+<=FW9?P5!L,;;[?;;_``O74[CI7R)!<\GGG$&Z
M/XZE5[MW:)]0[';*E.+;?S%MPU\BZH%8=W9R_3/'EKU=?'UOGPYW?W^9ORJ#
M+IVS`WG0)$3UL.5JF;_,)[.%OO58RJ>& -) +AZ8Y:EY>\_76';/UW,]&\4E
MH&(9O62.._UE>9E/ 8'QC&%G&(K6ZL>Z%MH`],.6/LT+P:AS['.)],52R?#.
MR>T8) NWE? WB"XFCIG5T[NVV#.Z$1<,K"NW:,(`T""Z.K6ZRY]W7T:766WW
M>USN]'8:IQ/1ECE+ET2 U6ZY-4YSWQBX-:8',(P]JUVG*8=,N*H6/$(&PV>[
M6O6-ND*V.XZ<DD%XCH?"Y8\BD=*9URN6]%^5N456-ND)C;I"M/(*<7.F==5L
MS=<QU69$DN$L`.<]QC#%? Z3HS7Z%%Z+\IY1-W7.>9A8VU ^(Y =?!D;M::>
MG93L$N6(-"W+JTUXSBI;FBK=^_H)WRY9>R]62K-_?_SYWRK37ZI_=5QM/,E_
M3!LQS;#-<&.C>6 -LXP<BMTM])*G!S2W#CXQ#TB/M'$51=XLA^E>I=)?>^K+
MU6['4SGX780,,HQS1BW'ZHK8UU&+\&G\UW>=C-Q9U7TU.)TI\TQYD 0V%D0>
M<> 0ML]*E'=C1 XC`")L^/F8^9[,]O(J7C+B[5/JV?\`PVX0T-/-?\1=\0Q7
M\!.&%MR]/?2$RFDM+071L-Y:V$<^'%&(]2UUE QK'3A%L V#0V(',!.+1B)L
MS1CF5.7G0IUDV_5+3U7/>TXES.[PM+F/!'.M=B:1ALN +(KI?M0QHOZW>Y<#
MWEJ[W[4,:*/\[O<LN^8T_O4Z^70(B+ :(F\9!J*:9*;:YS;.-4,O<-1,+R\M
M9C#39:0[/[^57N\)[I$K$SXB0 H#=YS1>&F/H J;;:Z_4F2O$K[;E- 9DQSC
MP0:,M%MBG2MT4DF$);21G=;[5J;O8?F81Q&.I;V[RDNO)'&-2B;Z7Q8>K?,D
MM=+=* `# 6W:5KH:1E)););<+SI.E:JFN8V4YTI[<=PCI/ I$B>)S,5QN<-!
M5\S.(A(6%E5U7O27231+F P+<6(<>B_DBK"-5?;U-/<9C8L>3$EIS\2CROM>
M4TQ?,<[B %:,WM2.L$UH^:SVP7IV\J5 MFLZP3",1[I:*12-P2&! X I"J:G
M?DAC?[7/=FL(;RZE0S:V?-)+YCN('".005IK:9=JBX(F-I)Y3K6QD^;+M:]X
MXG'^&7)/VZ9=PJ/[E.&0R/3'L*D;GK)E5+<)MI80,6G+ 5D]C7B#A$*L_3?[
M%F8^?K"[>9NVEFB#I3?0(*MJOMUCHFG<6G0ZT:_:NG7NGO&%ZZI]WU[Z%\6V
MRS\3/>.%=C(GLGRVS99BUP!!7#SZ>93/P36EI]1XBKK[;J#%].;K'M]_NY57
MLUEG/5;2V7C5A^X1/W"+F:O&Z9G=;ME/-S98/J52_>,Z9":^!'"T819Q1%^F
M)S9 ;&A!.Z& 6DRKO0JIKYK6E C <6N/--I:3#2[,-,%CVVS#HZI++GU;9M8
M^<82F!D;A+ABNZ4/9QQNCTM."&-#_B (\<%R\FIJ*9I$J(S_``1_X F[_5P+
MJ))+I;7.^( 13JN<^4=LQC$D;ES?W,>=)$(DX[.JND5!O^:),ZFG$1#'.=#D
MR'"NG7.?1S[>/5*W3NL4K1,>/[I%O\O K5>)4ULUH>PQ:;05[46VW-3)B>CP
MR6V6(- `B39I*]K**J7*_<S'=ZR9A):&F)A$9<:H#,!T'UZ_7_#Z/!:31R2<
M1EMCIPB*BZYJEUEN7$TM%45A_M,,.DZ('KO]?ILA=R/MEL 9\PDZ&69<=ZZ(
M""%1-8321#H:"70L+)<8$QYQBIB+*LN(B("(B B( (B("B5]+]93S)$88VEL
M5+1!\RJ]P5U*3&67-'YF<[\56O8YA \$'A$%]?7AS X0(!'#:NF?R-IY]48?
M(0XB[.LXS9;=<OJ[J&G=\4IA_I"\>5TA,>Y9U K?[%^$8?*B\F\FV]9:"ZQH
M)/ OJ[:"F;\,I _H"VLE,98UH'$(*/\`8V^##YE3[FK:D\R4X#2[FCUKO=R[
MN=NZE$AYQ.B7&'#F5FLK+?LVW^I.!$19)5F]94V:UC93<0Q$NMT#(*H<U[(&
M8US8](9!=0;PA 6>_7-TRX<J)C"8!PCQKVNCF4\J;\; [C$5#?N:E?<P-^4P
M6-_C_BMRBFQ"Z(6^FK!3'&2,!A&U::^B?(GRY%*7.<X%T#<($>K+ 5I0;I;(
MA,G<^:.0?CPFU->G:7.2V86H,5S'W$Z%0WY/^2Z=<I]SF%1+^3WE=FMQ8I5:
M[$VUP(!NB(+R'C-ZE*%;*#Y;70,O"P3"03\(.40O,JJDP:XP#AA)YN<.M/$6
MV <5 O6O-5K<Q[+7-<!",89KO7E!> ZY2IE7((<(AP,,0:TB/]S%P#X8+2^H
MD&HQ"&"!$0##/ D&_-$7<:<[[CP<32 1`D7'VY?BL8K8%3&UE.><\ G"S\N=
MH%WICH].;3.J)#Y<VT%Y<7-.'^8>Z-\.*V*3<77VV8LFG^9O^U7ZY[[7,9<W
MYA[%T*RV\K06%E%41:RCEU<LRY XCG'$J#<TIU/7ODOO:UWI$0NEF/;+:7N,
M& 1)*YW=M9]9O-\T?# <UO$"/;>KRW%GLI9,Q9?N$3]PBHL];B_02/D"L57;
MB_02/D"LD2PBRB#"Y_[DEDLE/S EI_J'X+H%'K*5M7*=*?<<^C05;6XN5=IF
M8<INW>CZ+FD8I9O;HXM2ZFEKI-6,4EP<<XSCC"XJ?(?3O,N:(.;R'A' M=QQ
M-B#I%A75MUS;]6OIG_ACKO=?2OH:+B9>]:N58)I(_F /M"O-R[PG5CI G0.$
M-A 0OCPK#;KNLS6LWE7:(BR7$1$!$1 1$0$1$!$1`1$0$1$!$1 1$0$1$!$1
M`1$0$1$!$1!B`O641 7'_=9A42_D]Z[!1*S=\BN;AGL#H7&XCB-ZD?.<5R!U
MT%U\S[3I7? Y[8_S1]J\L^T:<?',>X>C5[5;*')!W&K:G^WZV>T.+0P0_.Z!
MY!%=+2[ HZ5P>UF)PN<\XH>Z/#!6RC)AQW_JM1GF,_U+7-^V:QMK2Q_$XCVK
MM43*7/?;4F;(9.ESFEK X6'BS'.NA6%HJJEE++=.FF#6B)4"OWYO/Z&5A8?[
MK[&<'\WH]JD5&]:>E;&8\%T/A;:[DR"X>JK'U<TSIECCFT#,,KS:HT1HMRRS
MK6:?BKE<;RWQ,KN:.9*Z.<Z"=5RG_;,HNFS)QN:,'I-_L5#(D3*J8)4D1<3R
M</H]Z[R HV44D266PM)TG+U)M9->,5DS<U'_`'")^X18KO6XOT$CY K)5NXO
MT$CY`K)$B(B B(  UV[Y5:W#,L</A<+PN:J]SU%,8X<;>DRWU?Q79)!::[W7
MPIMK*^>..$P=81F*OOMJ!F38:&^]= ^2R98]H<.$16)5-*DDF4QK2;\( K[=
MO*8QA773%RWHB+!J(B("(B B( (B("(B`B( (B("(B B( (B("(B`B( (B("
M(B B( (B("(B`B( (B("AU]$RNDF3,N-QT',5+64'S.JIWT<TR9H YO(>$*V
MH_MJIG6SB)3-'Q.U#E]"Z+?&ZF[QE0^&:VUC]!X>!6+1``: K\JC"+0[NDT+
M,$IL(WN-YXRIJPBJE6?N$3]PBA#UN+]!(^0*34TPGPBY[8=!Y;[%%W%^ D?(
M% WL)W>\[$9=F'#Z_3QV0O4;7C,KZZ\KCPLO+F;6=XKM:>6-VL[Q7:USDN,,
M#0Z)+3S8\.C NAGN,+NHH>][EO??'GC?P1]ZKKO-O"=]+KY:_+&[6=XKM:>6
M-VL[Q7:U/1740/+&[6=XKM:>6-VL[Q7*>M4YQ9+<YMX!(01#NUNUG>*[6M+Z
M>G9\=1,''/.M<XZIFSH.G8GV`_%'A^&(AFS:-(*\]]+9>(<;8?\`' _B57E\
M"_+J(?\`VG^.=:\][0__`+4SQG*C%6WI77W\'"='\?SY^J8/S7<)R-V48.KR
MV_:GT7 F4)_^T_QG+:V72/\`AJ7G_P#.=:YWZM N==\W!EGSQ%^(*ACK(Q-F
M8GV _P`<]Y+EM^TPZAN[Y;K6SIIXISM:]^6-VL[Q7:UR0>+'-8X"PQ#</K!;
MEP")Z+<-3-GM>V:[%A(A$Q-HNBK3;/HA+\L;M9WBNUIY8W:SO%=K4]%80/+&
M[6=XKM:>6-VL[Q7:U/1!`\L;M9WBNUIY8W:SO%=K4]$$#RQNUG>*[6GEC=K.
M\5VM3T00/+&[6=XKM:>6-VL[Q7:U/1! \L;M9WBNUIY8W:SO%=K4]$$#RQNU
MG>*[6GEC=K.\5VM3T00/+&[6=XKM:>6-VL[Q7:U/1! \L;M9WBNUIY8W:SO%
M=K4]$$#RQNUG>*[6GEC=K.\5VM3T00/+&[6=XKM:>6-VL[Q7:U/1! \L;M9W
MBNUIY8W:SO%=K4]$$#RQNUG>*[6GEC=K.\5VM3T00/+&[6=XKM:>6-VL[Q7:
MU/1!`\L;M9WBNUIY8W:SO%=K4]$$#RQNUG>*[6GEC=K.\5VM3T00/+&[6=XK
MM:>6-VL[Q7:U/1! \L;M9WBNUIY8W:SO%=K4]$$#RQNUG>*[6IH$!!>D0$1$
M%7^X1/W"(A6 1W92QQ7#X/E-^5ZC.:! 0FV .Y?3F5YN2'T$CY&JMWL^8Z>Y
M Q%H#86V6YKO6;,QSA9=D].3?JMMXH?BG++\%TF[?TTOXKOSWWYUS1;"U >/
MFO/%`1%Y.;1Q6M+O1[&ME3&/<Z(&+C/N]=ZKIMBXJ_9K;)8OD1%NYA:*K_"_
MY7>Q;UIJ072G 6DM<!R(."9,L X/PRNM-A^(G/?0NS<?_C?9H%]EC0H0>&G"
M;':#?9P+,<RCC!;NDOYN$EV(V&,6PPDQC&%GH+87#/Y[B:;;."#N"-EEEGP\
M(!,;%#&\)A,6P$3%T!8Z(A;P0T>U9;O.8.B=`(NB,,!HT*G&IRF/DS6$AQ'-
M-L'9X7"^T"-  +1'0M<X39)#9T8G-?Z($YOAX8VQN45]<]X<# XW8OAN=P:,
MLZUSJET]P<XB)&:R/#K4S7U1E($P7B!.7IXHF/IM;T/VT[$)IOM;[,M0N7(E
MX;>>5=7]JAQES7$&!<($Y[+5;'N+:LK?IL,1BQ1SPA!:V[T83!S7`YQ>H6]Y
MH$]N*QK6WFZT\F90VNQ9>E8=G9MK?1:25T+*Z0^YW+8MS9C7_"0>)<TBI/Y%
M]XGBOZBJ%.6XA8XPXAI6\$&Q<T7%T(DF%WI5INZJ#O[+C:+6\7X+33MFUX^/
MA%F(M%A%#^O8;FO(M$0VRQ;JIB*)]<. _JI]<. _JJ492T43ZX=!_53ZX=!_
M50REHHGUHZ#^JGUHZ#^JAF):*)]<. _JI]<. _JH92T43ZX=!_53ZX=!_50R
MEHHGUPZ#^JGUPZ#^JAE,1:I,T3F![8P.F];5"1$1`1$0$1$!%B*(,HL+* BP
MLH"(B B( (B(*O\`<(G[A$0SN+]!(^0*KWJ]QJ'-B2("`,8"[,#;'BO %:;C
M_02/D:JS>K98J"Z)+R($0; 66"W.="S[/I;=/U(08+\,SU99#0(=+NUL*9EA
M!A^:^]<Z`YI >) $=/:A'EXL\.DW=A%.P,<7`"]U_IX5'7[_`"MV^WPF(B+5
M (B((\^BD5 A.EM?\S05`?\`;M __J CT8A6Z(*,_:U"<S^N??%>#]J4>E_7
M5^B"A'VI17\\_P!96QGVS0-O87?,]VM72(($G=%'(MER6 _*IP`% N640>7-
M!$#:%&F4$B88N8(Z80U*6B"L?N:4? <YO]4?;%1G[EF#X)T>![=4%=H52Z:W
MV3RKC9O>RYYIOCF CX8VQ$=(`A9'CXU>4&[72R)L\Q>+ +F_CZE)I&TSG/FR
M8%[CSW9XW>ZS,IJB=>LN9$W:T5/(=!G]3O\`<5<+G6S(1'"[VE:QGMZQ/Q!,
M04+O4[Q7RSXIPM$1I L1A>H\NK#&G.8Q0U0PX1=$WY^-1E/%)%MN98BHWU#2
MT-(N-D%[96AH%EWNR F3BWQ1H+KEX97,) -EUL="\BN:#=&$,^C6F4\8V%R8
M HSZH/ `S69>]:^]3*.*;B0.4+O4[U,F%KN^V0WC=_N*EJB^MF4]-),N'/,R
M.>[$5Y\PGFPNNSX1:L=]YKY;297Z*A\PG]+U#4GF$_I>H:EG]_7XJ>-6\ZI;
M)+0^S$8`YO2M\8KFYM1,G0[PQA=8IE#6X(2IAL_*=' FO=+MQ]O8X^BX4:JJ
MY5(W'-= 7#A4F*YO[F^*5_5[EMM<2U;KTY[S6^[9-^Y6`PERW'A<0-:CN^Y)
MQ^%C1QJD:TN,!>O1DO$+(QNA;P9ES?<V>C/X_5/2S_M9G[AJOY.K^*#[AJ_Y
M>K^*JS*>&XX'"<ZQ ,80SPM4<]OE;[/7^V+=OW'4B\,/H.M2&?<I_/+Y'? J
M`L<!B 8'.LMEN>"0+ (^S6I^YM\HO1U?M=73[^IIQPN)EG^:[EUP5L"OG9$1
M!?097P#B"VZ][MG+B[^J==G'W;41%HYA$1!5_N$3]PB(:-W53:;=TAS[8L$`
M+RM4MC-ZN<\!THP%HM#O5#$(<:]4%$VKW=3M=80P$%>#05=,"9<SF %W-,.&
M,(.M/ L]LY\9U;:XDS+C= FL#)IES2]S`870SP_-&RVPYNJNFH^Z,IID_ 1$
M+GZ25-WDZ$QY$!BY]MCC"RX"[1<>3HJ>2V0P2VYM.6=1U^;?9;L\26_JGF)"
M(BU8"P3!97EUQ01J>OD5(C+>.*,#R*4OGX<TM&+UY9&Q>VS"/A)$=#C[LO4M
M>'Q49=VYX:(N('&JFOWRV5S*>#W&]U[1K/ #QKF"0;3 C/%9Q".6E3.OYIE8
M.WO5N_[(<31^*\C>E4/^T^G#J4+$,LLO4F*"OQGPA:R=^U$HQFP>W/9 Y97K
MIVNQ`$9UP+SS3#0?9EE=WLKX&\066\D\)CTLJ%65[*2 <"7.#L(&?"JF;OB9
M-,&P8TC )SQMNYJQVVFLS5I,^%^^8U B\AHX5"F;TE"QD7>H*E,P.,7$DZ71
M]^5_"L=XT1)L`RR%ZY]N^_\`F+S1N=-)>7BPDQL4^EWA,<X,>,43".=50F!P
M+ "6B]P!P\JL]TRL49Y&EK>6WV>I4Z^?+X^2^%PN+F3 U[Q&YS]'2<NT7&3]
MUUIFO+99PE[B+0+SQ_BNZ,J\]_PY91]Z=^;H^S+*U>/*:[9'E&O\%GRFNV1Y
M6Z_X:5/HA)94C"'1;!H=$V7YO=:O3GRQ&.8"`!R'HMXE$\IKMD>L->7':L#=
M%;LCRMRRXXC"6U\O"'.S N^*%MO)[UZES61Q`C/"WU<$#"&E0SNNO($91,+K
M6^JVQ8\IK=D>4:\KKD$T3F.A%P()C\0OP Z1^"\29[ XF($( 8CF =4/0HWE
M-<?^H]8:\N5/*:[9'K#6 G%TL0:"WAYV:'K"BS)H:\AIL!LMY+<O4M?E-=LC
MUAKRMMBGE-=LCRMUY#T0#UWYNCEEE> GF-ARR.42O/E-==W1A\PU\O!98$.Z
M:[9'TN&O(Q-]ST%JVFF55)3F4 88RZW2'#/PK1]#6,#>9$G%'G"R)LTW# 5Y
MNJ2^12RY<P0<!:/2IJSVUFWU+RX<M]-6[+_4->7ILS]-6[+_`%#7EZ>;U"*G
MVM/A/*N0J'3Z8!TYF &,+1FMAGOR"G[MHW5($V:/[?Y6G\W"<N46FUJJ&75E
MAFQ(8<0&GC4L""F=6LN<%VM N9^Z#!TD:<?NRSKIER_W68/D<)?[N!6W^FK]
M-QV:W\5++>6&.8  \16Z54!K',,0(" ! 2[$#&/H58V:7. X?7R<> VVM%ZV
MTTUC'![Q%H X?5 :+K 8"%ZYI+'H[;:V?U[+,UQ']PM($>ES?BQ:+\RQ]:6D
M1!LPWNT.Q:.3WK4VID%O=F#K6XX-/]PAI!AF#N.!SE>IDZG82US6EP+"]H;P
M-N,;"#&^_-<KXORQY:_L8E50ED%H-A,;;XQX+X&P^F%J].K"YI:X$Q!%_#&Z
M%_(H\ZI89;V->'<]K 0S",/.]D1;G%L;BH37QL&;-"-WH% /%Z#S5%E^6FNV
MM];KZI1,+U]"E? WB"^9%]IM(-D8F!RO.89V])?397P-X M.J8RY_P"3MRX_
MAEL1$6KC$1$%7^X1/W"(AG<?Z"1\C5"WG5S1.[G% 99"&<$6YCQ0%N>"U2JB
M9(W;3"688FM!.>$(J(^IF%H<7ET3\#LT#GQ"'(?BL'!EV;?^?=T=6G_KT_#^
MO_K72S/IFDRB6.<6NLT0M$760!(L-]FD+J**:^=):^8(.-_+E8N:#A,=&+66
M]$B[  Q>N\POOZ3=X IV!KL8A8[3;PJ.NVU/=))XQ4U$1;.<6'7%96#< X+=
M\P->8D 8'YQ?`POLCH4 /D3H/> TN<YIYUL`T0B,V(BVR'M5+B3$M//JAT-,
M93;&EHB68H/ 6\TX +;1& X;EI>9+VETQP+A+EP X=&#N#$#"RT\&=4L<P1I
M+C!L2XYA> MJ1TILLDEL2V8UV(BSF\V''Z;="WS64P9!F XG,C%V:+ >&Z!/
M'& N5?+W56S+I+X:7 #VF*]NW+7-'^$GB+3[T"OP,?AEGFD9C&^_3GX?0N\E
M? WB"^<SZ>?3?Y9;F"-Y;9RW+Z-*^!O$%6W)%=OR274QFM$72B) XA?ZES<N
M1.FXF2&DEI#F$782("WJGA NV(!$#< :&B L"I9E;+FY&X)[[9K P6V-&(^N
MP>OD !:4^YJ:1 AN)PSNM5DL)-9"VUJGR&SY;I3KG M69,ELEC9;+FB 6U%*
M!$1 1$0$1$!$1 1$0$1$!$1 1$0$1$!$1!A1:V DUK,$]N(7C,1Q%2UA!S$[
M[0E._P`4US1H< [VJ&[[1J6VLFL)TD0MTY_Q_,2NS11B+\]I[N'/VK6 \US.
M"W RT^W%Y'VM7FPE 'S$^T?Q_,3G[I$XP^YLXEOVI5F]\L<I]T?9RF*WR_L]
MY_R3A#0UEEW#ER!=>B<8<]OE24GVU24S X S"#$8H0ZH %=W(LJ5,Y\B(B B
M( J_W")^X1$-6Z::74;OIQ-$0&-(XU*\LIQ<P>M1=RF?]#(P-:6X&WN(_P"*
ML,51T6=9W947C[K3ECTSAI&ZZ;H#UJ5*E-DL#&"#1< M6*IZ+.N[LK.*IZ+.
MN[LI,>Q<^Z2BC8JGHLZ[NRF*IZ+.N[LJ4)*PH^*IZ+.N[LIBJ>BSK.[*"BJO
MM.5,>7R)AEQ_+"(]&=0G?:52+IK#PP<#[\KUU6*IZ+.N[LIBJ>BSKN[*D<Q+
M^T)OYYS1\K3[SZ>-7F[-RR-W`ED7/( 7NO\`1H4O%4]%G7=V4Q5/19UW=E!)
M11L53T6==W93%4]%G7=V5 W3);9C2UX!:;"#<O0`` %'Q5/19UW=E,53T6==
MW94B2BC8JGHLZ[NRF*IZ+.N[LJ!)11L53T6==W93%4]%G7=V4$E%&Q5/19UW
M=E,53T6==W90244;%4]%G7=V4Q5/19UW=E!)11L53T6==W93%4]%G7=V4$E%
M&Q5/19UW=E,53T6==W90244;%4]%G7=V4Q5/19UW=E!)11L53T6==W93%4]%
MG7=V4$E%&Q5/19UW=E,53T6==W90244;%4]%G7=V4Q5/19UW=E!)11L53T6=
M=W93%4]%G7=V4$E%&Q5/19UW=E,53T6==W90244;%4]%G7=V4Q5/19UW=E!)
M11L53T6==W93%4]%G7=V4$E%&Q5/19UW=E,53T6==W90244;%4]%G7=V4Q5/
M19UW=E!)11L53T6==W93%4]%G7=V4$E%&Q5/19UW=E,53T6==W90244;%4]%
MG7=V4Q5/19UW=E!)11L53T6==W93%4=%G6=V4$3]PBUQF:&_Y])OY+D1#__9
`
end
Nov 25 2004