Path: utzoo!attcan!uunet!lll-winken!ames!mailrus!iuvax!bsu-cs!ibmbin From: jjb@otter.hpl.hp.com (John Burns) Newsgroups: comp.binaries.ibm.pc Subject: v01i069: prf, a profiler (part 01/02) Summary: prf.arc, a profiler Message-ID: <5421@bsu-cs.UUCP> Date: 23 Jan 89 22:25:46 GMT Sender: ibmbin@bsu-cs.UUCP Followup-To: comp.binaries.ibm.pc.d Organization: Hewlett-Packard Laboratories, Bristol, UK. Lines: 582 Approved: dhesi@bsu-cs.UUCP Posting-number: Volume 01 Issue 069 Originally-from: jjb@otter.hpl.hp.com (John Burns) Submitted-by: jjb@otter.hpl.hp.com (John Burns) Archive-name: prf/part01 This is a simple profiler for small/compact model programs. It has a report generator and includes sources. [ This newsgroup is alive again. Following this article shortly will be a list of pending submissions, and then the postings themselves. I will clear the backlog quickly. The code is Microsoft-dependent in its include files, the assumed linker map file format, the interface between the assembly source and your C program, and the supplied .OBJ file which was presumably generated by a Microsoft compiler. Source is supplied in C and assembly language. It should be possible to modify it to use other C compilers. checksum size (bytes) file 12403 34118 uuencoded part01 63204 27700 uuencoded part02 20903 44849 prf.arc -- R.D. ] part01/02 BEGIN--cut here--cut here begin 644 prf.arc M&@A#34%#4D]3+DE.0P`E_1<``-$*(UJ$$/PS```,8]ZT:5/T0)!HH&-,F MS!@Y;^:`:`$BS)PY9=J(89,'1,.'$4&8>2,'1!J#9>28<7CR#`@Z;T`@0<)D MCD(40U(,>0,GCYPT9]`<;)(&Y)PW9@[NE`/'!8@8.7#08/$T:@V%"16D,1-# M89`I3>!8G-.CJX(W=>AL!=$DR!`I3T"X"4.0!9DR9NR$8;'"EZ7A>Q&,@^_AC$K*('V8`@0N`.K9OTY=.O:DY$6#JR;=UH0OY4;'FZ& MNNHVGN5`+/D1HD?A"HJ`*%DR9LD6D`I\/ZR@(!GLNWN#&-/$(42)5E+.2>,7 MA`P7,,0P$0@VO!###2_@<-59::U%4!M3L``#"SQ,T1`;;+#UQEV7*=2;@QDU M(2&%392Q6AUM:,BA;A\R]B`3(_+`1!ARG%&&BI^QV*"+&0T1XTYMB#7&4!OF MZ.&.'F6$1(Q(U&$CCATJ\&`33Q#10Y(0@K`"EDUHB2437CXX1)A*0L9EE7+= M:!:(;5!)!`AEQ`%"9U)F-,659K6(98035GAAADT4&65QL*6TW61-U#''06B$ M8<>-?G'T%)8D==2&H"!@Q$890YJHFWO$H5:=`OOI4<805TY)9AM@;OD@$@J5 M6H:57ZXZYI8HO*J"#"D.OX+P`Q1,B#@N#_1V M.<9>;+0TGU^/&L2?&[HEMIB\3E09!!5!*/1#PD0L'$0,G'D&&FP/*\PPQ68Y MYQL($$OLT89U;&K=<0?_,`022TQ!Q1(.K]SRRQ3326C,++N\!,<*>0P="%/0 MX=`:\Z'!Z1K^%A3&1B:>?+,"7X4U5@\RG.P"%F\5881"5V=M!,(L_!`$%F$' ML:38,/X@!-EJPZI`UU)H+:\0:0_!]LIA#Y$V$6P3X3;<<@>;]A1)A$U$X3\4 M$6&PBPL!!==8Q_WU#U-`$?84BP\Q!>1>RRO%%'5#0438-)[!UP^ECQ&V$`V_ M'7G@;@D1-B0#A`W%$YQ++B\47]D^1.YR5Q&0&_O2P4(;4"B*QO%0\`3\Y%(@ M#@<<84\_+NILF`7XY&&,+K;E8@M].AEDA$V^]J]/#H=@/ZQ__5YOJ/[#&'-< M3W_5KG<>[+#SUAOVM^'Z01*"8+LJE(T(2GB>O*K`/RF`SPG>"]G&\I8SFCGL M MQ--IBH$/.F/EJ!MUQSP7!%W%4A@]SX&.0G+X5%`O:,JCRH4%(-4*/$<:5YT+6C/+@K#^Y`$C+T]:_X&ZH"VMJ&-UEUKJVY4?^:$-)X4HA@ MAYT,6/O*`R)U%U]J>BW5VI*!-85TKE-O=XJ&WM`TN_MJ'V->:P;G0_6UMI[ME@7&XXM-.,Q!$+\-#P_!RW$_ MJQL7`%D.>)$7%=*:PB5'M`<[WHIF\W58`8WT72R@70E0,*\GK`!U9%!#KV[X MA!YT>05LL)AQNFSFVZ&YRI[E`99+T&46T#D,858K?%P0Y',:MSW:81:^!(N" M.:0`!"(P@1M$`(*[C($--#(1<-*RG[N```X0&4.C\1+A4!&7N@*ZL?'>P`)K MB@$R4ZY79N`4ASJ\Y-)T*,D6"+H",71!S;`A:YQ,=U)H@A2>I\#V9;69D@MQ&\YZ8SE@E;LE<0-6OVWG'SC0 MSEP>X`IXI5%KJW?<R)NBQ6R"#9!NYSTI6M,.6+%;6%M;[A0/14_O0[,J=E?G=:^PCC@< MTKYQ1<^F/5W_NIX=-D`SJWNZ#C2S`U=@%IJ_K<\S9@T;XK<7N#(XA6%@0OS: M2R'^^C?Q`!:7A#0Z^GVQ@;"G1YWJ-0WAV?X6!%"@@A2V"]CAPJ?V>[%LB3&; MAJT2V6&I7SUS=>M=\`)?^,0WB^ZE;UWL^OY-P1^^=(N_?=Y[U[2HO;[X5UM\ M%9L7^6Q(;^ZCSWO%OC?]X8_O?-O_?M*SX;[SMWNLQP/[U5_BD7\"EH"=1V", M86`*`7\5=GKPAV(1)E1_!H$MYAV8!7\QEF+FY7D%YF&S\H#^-V(6-H$99GRX M1H*V9X(2Z'\=6($G`W]6\&YA`'T"V'OH%@8I,"(+^>]VXY9E*E5G,[5V^@ MIU4B]7PI1#MF1CMOQF$WV(0#T`,HP&4RM"4Q<&@Y-2=&0#M%@`1(MV&Z9V44 M,F=8.`!?-D!C%G+.YF06M79@!64:Q6(JWEXHF M!7VM.%VO*&[W`E^T>`6WF(N[V(O)!XRKV#VLYW$_4(RR]UW155K`Q0.X2"&Z MJ%'.&'_0*(RL1U\I9(WWV(RCYXL`.(FJ2(Z]%T<.@XX44H#^ M15I$0`7NR`/?J((541^8X3:1PEF8%RA9$,&8X<22$>.9#N M1V,GPXD(\P0NLS!)<&"+$@9J,0:F=Y+V>%?:9XU](HO^:(LV*9$$.91%B7M( MB7K#F(_D)&Y]@HS?%9`X:5Y4613*=Y$9R8K3J)57U2?HMX[:"):[.)9C(']7 MB9:]9X[5N)4QHH[;2`3M&)4L.95"4Y3S:)8,:9=*N4%,N8].28L`"9@?N8DB M:2I".9A%89$:*),[)I=OTI%2J6)_)I>8&9,9*9::29PH!!04`5T$Y0F M%I*V,9!D14XF]W&PL16V@8NK1DX20015@$M<:,@*J9.2J9]9:9HZJ6J^6<:RJ)P6J1R&EP\L*5I&GJC MLJ:GTJ8L.IHFQJ<^BHW:U9*%XJ9N@*A7^J2U1:-`JIH;1J@^EJEF,MY7;)Y8:C0JL9QU.?=X=--H=19@:I MQED>"J(@X%PZ,$X*`7@+YUQXF*?"B@?%2@:3UZJLP9,9PP1!(`1%,(H7JC4. MPP8;05$VM#WRXJW7XZUL0%%BRJJ21:]#ZJ[_6HY(*K#OMS2?P:3]FD+W"J4$Z)2TQ[!L4*46 M]@,16ZF`:J<#:[%AFK$;RP)T&J@$2:@'1J][.K(EZ[$?>($6N[('BZ]_RJ4N M*V&9.IF%J@#T*JG^"K`_VJAW:AP]*[-]NJJ7FI/3JK,^MJ]&NZBC"I(P"YV> M^K`:.[.JFJ^"^K/O%JL0^ZUUH'+.)V.MT71DQ0//12'IN9Y#H!M7>ZYAVWE_ M1JM(*'*W:E%V>&]R^&2]^JLU9Z[H.EEUL!%%,:Q,YGG.Y9P6BW70J@#(.G;* M2I]_"[83-;C]HFD6Y7F`1Z^,JU;+MK4H\Z!5PJT*L!CM:K72>(\:M1@N^JFI MJZJKBQ?\FJBO.Z>Q:P8%B[JM:(Z2M1@.2[NMB(\GJ[,'MA@^6[JRFX*@:1S& M"Z>LJ[P?F+.L.8+(:P95:V*+08&E6KW7BUG/2[9*^XBL@9:P*JM%9F^UBKYW MRS5)N+=X0(>MRJ`.VHE/$'X*@61G``6_=F,1@CL*L!)RH+_AQ@+]JU$`#''O M5L`_EH2V*H>8E;>C0E8F<%25.P=H`#05?,'^:P*2Y<`]@`,P@`:@6SJ%-87- MMX0\$`9NFSIFECJVI6+?WUL!!P`1)4'+LJZMH M$\1$-\'4!$*XA%D<'+V?%@1[6CILT,(UP@;KYE5OJ'&9E7%NT`)F05$63':- ME7@YYP9(%WE@EZ#*Z<`4E\'MB<8[Z:M!\877'9DC`)F?,6"&\9XC,!Z M/&:H4\54;#I\K*%>E\9+JUDQH\Y^(4T\0%$UPEDG;;X MHIY`W+8TA->B3=:K35I@\<-,X+:$/=N04=NT*#%N"T%+%9*^_:<:$P3!;26\ M/;R[*]1VQAI&F5M*CL3MQ!YTJUQGT*J309G>P:D5>4VDES=`H5G1FPNUS/R05)"8.=F MWBX7D09,8Q)NP'3DY.3`X1IO\.HM_30##N0_T`1?HSIT1CLE[K_(LTY3J.R, MP>,4SN678@<5D4\[5N7G&Z-%E#T MY#1_%NMJ>&:UWL<7G.[=;BT%->Z>MYK]_@.$323D^S,P#Q?LP(_05RMP:+L@9XB-`KW_+X M;AQS,+B90M$>S]X;5NUA?.W"N6$07+GW/!^Y?@8GH1!-_&EHK=981\%=7A(\ M4`54UP8G0922]M6(2`:*>"-$@!";@;D M>6WHJQ!C4`2*T?0EIN=QGT)T32=;0=JL_EG'7A`V]0;#M@)9Y3,D1??D1!&\ MOA^_OG1[T71GCA'%+A>![X$)BNTB(=7-TU%32`:2`0-#,`.P_#3(XU,FG.VQ M8O,JA3\!;U#7-.X<5>\]U5'I[F@"CX?Z7FQ>UN^OGU*R[U/I7O`Y.^%()IV2 M6\YE+Q$[1OS$%616CULW/HGBO_8!<7Z8?Y/8'#^=E\+]P0&YV_WY2QPH`,/Z`8FP#K^QFJNYBP$__.? M1C^2V$[_OX%NS9[\0X3#\S4%C_OX%NMD$1`9$:4UEQP(41;BJ<]D$1`1' M`!?]J1"+<03P1`1'`!?]R0*7W3H&+S,ZTWF0BDLDA08L3P=KD.S"J1UNH`>% M95%;@3]KD;G:X09Z8*(SC`)X@*!SOJ!#[@9Z((GMM*$L@`?X@QWY)```##M`X(`A`X<-$$&F3"G21`B3(E(:*)"8(`&4($>* M5*0A@P6(&#-D4$Q`)0F5AQ7AR#'C(LR<-B-=%+0Q1J)-!58@3DGRQ$F"(E&J M@(!!-(9$*46L)-G9$P10H42)2FSRA$@2(TF&!"G9].G0J`DD0I&2Q`D5IT&_ M2IVH8(?$@&]!&$G#IHR.MRE7MGR9H`6(L4^P,BE[!`25)T^8O+VY0P6D)V]5 M@(#4H>P0)E6(%)&;Y.&4R2-41'X\TC)FS0E4LD3#V#'DMI(A?1C2(WHU_CVS_?LCRN7+,08<0>1!7T0YU MS%$&&2"8\88)(6=0V8UDDMS MU,$BA7/H`&L1Z)W)9J$'!,$$$R#0>1L(0A1!A9*/_I=&@"`2I\-RN!&QG(<" M$J@M"$@U$419Y!:QDV:00J)`H7#F]QJ`X8:H0T5CGL>6O(%*$)Q36%`!D1/* MRE6%$WORY$2FRC*K1!5-0&%8$`YM!HD%EIX)@AJ^P@&"J&+4U>"#7:X4WY15 M7IFE&76X,4:,;[@QAT1*=$Q%&"&+2,8="01FQ$)46"2%$4C>)@45(^W<\Z1` M"TVT;4]`46R@&/Q;DJ,3EB6P%'E"<98509!%L6=R9GR3BBS*,00:8=28`!ED M)/"#6#N:05<94Y1Z*AUO\PS#2&78488;2?M-]Y1W$Q%J&&_'#9A@V6W7W7<@ MD(%^A2!31OV9J1+D<5?3V@]60/PFAWDVV(D<`(4)[!P@A39 MGV#$"84GD),43#G!`E)*E<\"55:EOI7"+(RE]=2*>C[9!?\:<7#"36FUK%-F M41[SG`>)#`P*@%10WK8@\0"%Z$`($FN!#_X2-E9)2R>5I(M/4EB8K2RXM?5$+U%&&AJ2E+2E>X5E>@)*PTC@D"`TO&T.^-K! M',(@.!V5*@T"*L[,IL?#.?AP#CID8@_?%L6X.!""(&B!!+MTI3"PB#@!`L&4 M*!0&-K!A)&UX@QT2$`8\>&0,0#R0@NAPN>^@48T_]$@;[[C&,LQ!CW@8R1C8 M$+>*,*99GT'B7T('*E&1RE2#4PX*AC`%S56$5[X2$1R%594B>(0,P1J61_S( M2,/'M&F2FQPI24((PQC6F(*:7)N"D M=W@0@Y(#H6JV0`9=`,%(7_60L'V!"8B!@@V1JM0NT:&ILNS"5*?'1KC%]17*7O=QI`C;94<35!:1[*3L31L;4CJ,E:UK/"RP M)$N&6>Z1K(:=)4VE95/+EB&G81!39[W9T,-(#!(-2$!I3QLD2!@@46BRW\6L ME@2L@4!K$.G:69*W/"@TKUT8>*%O7A.7"XT!2WO[F(QX1(<_@J`N1.24`0V#,Z(X(3P'$#!X1Q)!6XLD9,,;5H0X`IILL*IKM\LZ5J19-,KTU"`B M#:]9XEL%KQ6!6#N.3P2U.$$@ M,XVZ3A;RUN1[Y)\A"4O3TE>&ML8QSH^D#Y]#*D@PY=K1188DD?DKNF> M)9E>*3OSA#J?HQY<&Y$)BJ,,KIQ?=D8IA M(#!@#:/QZ$?-\M-E&A6JM[PVH4UNH;(EON[BGMJ%ES9ZHZ#^Z(D]N\QHHM0C M-(!LJ5?\(UF]@45/^%$1V*"@FU0A6##%8UYE(.N1.%$.9_6(BB_IJ5BR8:1& M&`)UIG?7N+D5KA#RM"Q7D&J<+HZNRR[K1*_MU6P':PLR6,&VNRUJ4=&5I!51 M@\L2D(3AP%C&+_5O`LC-U(VB6]UXX/9PL3OKD:C!U?6FP[UGK(`IW+H,N2[# MKA543HDD?.'EE"HOADB#"HG\>HC$CTXR(I M!8D>Z)=?F\W5$([Z\INTX>41[6T9+!HD6"I7I9->8TM!T,8@8C<^I1H9A(+S MTD&2P=0LE>Z3SS*'(SUA#1*9S`..BL"D_`; M(8=OP!0FC6QDG-N#P`V^$D-QC(T&9\K^(\0W?AJ4'<2OKZ'SP]&FX%Y&,B^! M:?C3P\.#7LUV/`3Q#G1A`PB$_\@`7_@-L*QT]X.8H"RIR^RS).46H'C-'8P! MPN,$P?3I0#(DCF3[RD5*Q$9_!W)^J=(R[4<&ED1X:J=W/T-=?2=#3/`&K7=W M*R8BP>$$JS2!%>A-<@`F4^!X;G`&]V)8AP<"B?#DQ=$I54R$N5'2\1=1J"!=,"!%T(&]W)(>:,< ME\-*6?(OU]=[.;)_)",E'\,VRJ$2;W`&@&*U)&J0(%4P`%*0`"5B(@81!,B[$O MF5)&8U`';+".XQE4#!V&2,7`0__@"'V$#$ZE<,#`#,4`4E+<#2W!D$@,8NJ,0'J%*S6$< M#_*#!!&$E7=YF4<1KKA/"A"!1,.$"W(O9%`])Z`UTL%V;)!Z9,`E">@"V?,1 M,Z!L,.`1)T`"X-.4?D=.U),`(M!MKF08?B5^D,``?F$BTS.5;&D%2G1+QV27 M%8&7XU,^*W`",'"6?TF57IDTU8,^2Z$P@UF8BFD].F"8:\D^5Y$5[],3CTF9 M>`D28DF69NEU8"=>GE)RPT):GL*-I<5UIUAV;*$!&@A04D8N15A%`"4E)24E MC@$``'<19&-C/UN#```,3;1L"2`$@$$0!@'\^Y<0`#-]LP`9])`P``!(#"&1 M:P%HBT2,%S.*#$D2I,F1)TNB7*FR9V"``"VV/CI>A&(5H)F(7PA`A#-7/<9P+2: M6$3`Q`(B`G1E"$0G@77LN`(PP:Z=NW=SX,4S8B+`Q#$"%P"R"T+ZC'?`*,[A MH@8@)B1RP'A'"#"*`<\ATV"$^^C"`0*>Q8!=$DY0@0,.((3!AAQEA$%&'B#4 M,4<99+C0@`(D0"''&V:DP48:;IP!`A5OO,$&")`PT`((5I0AQQQIO.$&"#&X M`(,.,,Q(`AH(4%)&+D@`)24E)24E)80!``!R$8]\5!.Z`P``##M`-%`0T$@: M-F5T#-R1(`$<.69K.+$ZMNS2`TX)JEC:]&ECQ4B+$@3QQ(R9.67H?!SSIDV;C"#HO-G9\R=H MSBOG*%30\/#`*5]P&C'BIF&"D"/'O`YCIPP9(5!LD[F3X,=`*9F#D"$C1SB9 MX@.-E(:9$>/*AL.A*X`MF[;M,F[(S!EH.\'"OT:^2&5+A;Q0V.NE4+&-FR31 M[3#4\RX#'#MQX_A]@1P=RC&'W7,`3I&?=#Y1YX9U9?BGG8)?0#A%&6>T`1X= M%(&00'8)JD<%>]^%-YX"Y\DFXA-02`8;$4[0)Q))K\6@7V_]??A?C0(FMUQS M'R+((X.F/?C&=3I.^`6,)8HG&1H(4%)&249,+D%330`E)00%``!R$;E[H\@B M"```##L2)&B@0""<,&?*"*R1@P4('#`("J23A@X;A0G@R#&3Q@P;%V'FM)&8 MP(4,'#;&$"2X`T02-W3*;`PSI@P(-FG$R`DC)P\(,V_D@(`BQ0@(%%#DO.&( MT\T9$%3>O&&38J6"'2Q!%(E3)TS,.2#DE+EH)PQ,$'3>@!C3AJ;2.2[2N%%Y M-0$D`R1=S`G#A@W!'U"8-!%8AJM`&`)W#%G+M^G3,6_2."%L M.`'B!#O%T:X,5]8;]1! MD1LV`2FDA1MBJ!T9("REH5PQR>$AB%FE!<*$-I4(0A@@B.9&"WK(I%99N749 M)!M#AE5D'7)P288+QSVAHQQ`SE&&0WDJ]>.?0V8E%AV$&NH"2U:-D=0;8P@T M)7ONT0$?&0[Q8$004C@$115",)'$$#ZD.D<:+)"!ZW8LB(&'#P1!P5,;5PCT M4IIKACA&<\^Y(1!);;QA1P*W.G1LAQ\2!UI"I*&)+8AU9F>A'"3-@08;U.(* M0@SEGINN0S$(!%I;:]B$YIYEC)&64'"\X2VYX^$15`)AX.%0P?+NX"6@8#IZ MAG9G1?H&M-(FP.N<>"0,IU934#RMKPYMI\,6MW:1&+=EFF&&HZ0=)$>(`D4[ M;<$ASZ&##"2G8?*V18+@,,0M\P1S`C);/,?!&2P'4KE/K+J_--NZFOQQZX7+47CGOBNY\G M(A7]#544C5>SB*-#3>7G9D4\.DW'ED\A^6^R@D=>A[Z6<4-6X/0\]:FG2E=R MT\:0!!DUY6MVR,K6ILSG,:H9+&4KZUFI/`3`R,1@!3'808I6M!VPF`E-_>,@ M12XSGJ+QQ2&/P]I1KJ6F;*5@!RC;7[;"U89Q53"&D5O+Y'R%.;Z`AF4;BB"X MP.>_#@JPA16CV;H2]H0U..12F0(!G^I@$R>X0`L3%(@:&G:`@"+%"`@Z>>"D!!'D0<^C(J3.&3ATY,\V\\5AG M3AD0:=R`&`+"X9LS-"(<,I:-[487-3S-$12<>PJ99-T M31FS;M"^#"/G3!DZ-.'`H3PF#-\W;JQ"6*RF3$\08]YP_)L`TH&!*EX,'!A0 M(8B[1KXDF9/$3#?4'[">6-4!X@$8]"X7O,2C6FUP)&J3'H\ M^640J+L?G9,G9QFY=-W8I:,=I\PQ$=-<%OG[=X(Y;YA!QQV<'7561SO!08<+ MOR5AAGKAI:&20RF5D1D+ZBE%GX&9=61&&&.4(5("E(D1E1QL28B4&VGPA9R$ MYVE6U%$;VN=:?N<=*$>"=+`PXAL;RG$'C.`A.)1X>7WV$TID_-4?%)Q)]5E' MUOT6!@ABY$''478@5\=1=Z"11G8VX@?13#4"*""!0*VXY8YU*/A26MEMY^1O M4B@IAU)6(*=#`GITE%9$-$6HDAM`NE5A9NAI6-\<]^&(V9L\TI8`HFZT$.A; M2#UX)4LNJ4BA48RFEV:D9TZ*8)P+XO9"`KLI<-9('WH$JG#$&4<'>93"#OSU!P)O`CT'W!=&N,&<S M1C\!Q6\RQ+IRR^>]+-]'G#T;K:]G8>C"V,+RIU%G`U4T'[ M'"HR8L`%H@.XBJX30/7`%R];%I7KLNPHNV8B!!-&Q4D@L1A$`S`!D`$2``<. M`_@M:.2+$20(,*X(9,2Q,""%-.,:3CGC9F2;"*N ML4@Q#!R3("?2><.Q(9DZ8R:J3`FGXQL\:=J$H3,QYQR(;LZ\-&@3!,2*"^?` M*>.F9$009<*,0<.09$216U\,'$&FS$>)()P$:5)D2A(M14#$D#&W[MV)5((( M^>(7,(@:@^=&',.F3ET0/*Z22?/&!1H?DMU0MCR1QQ@Z><9Z!JU@H-2(*"*6 M#'-Q#(NUM`O2/F-G2Y<4`_<,3%`&#U4Y;D#(!E%G3AB,*%*P<)ITSISH.P8. M3V,&1\;1%#%R#,-YQ]Z"4P$(/-/5=&=,$-9T9'LG6GF45RL"!"%5,$<401.O2T MTU28207'267XP(4;(BB(GG_N)1<#?0Q>-95,((SQ1EEA1'0=;G(4-,=M:.2F MPAQUB'&5',`IP-]R3#I)AQPAN<%"EO2I5\89"AW78Y)%J@!'EU4^F24(XZE) M%@II7BFCA6_(X=U/;8*P0T$_[0G'"BN8-UP"W'EG9GCC+=GDDRGX6%9$=931 M):$:7BE:&W#`N>B5T[$0)Y9DI<#F>#"D0.-[-RXXW*G)P8"C=@H$:!T*1!:D M(HM1\F=$$DP$IL*%+/R*1Y=UN#%'&F=(Q-)R0]$1!AM=UIJ31%O(4(,-7="W M77$Y4P003@C8XEAP-V5EN2#+VQUZ-@G7) MH(.MH3=<0"^!D`!,="2T4$,/O05"7>*2L=!,:4`TQK-LY`'"CUZA,5$16`0Q M!!7#P61&G5*5U%7"$S4A$TTVX:033RH"%9(+)1MTQT3%C75:QU4Y?`((4#29 MTQ@+B:&Q%<]&"L+00[F$'DP^C44;"^"RP<8;.[.D-`C39K2Q&4"#*T<;3S^- MM`YI_.1&&!7E#`(*;KQ!5=D=E9'49EF!(`8;*JT1Y<$&(911T!)IU%1:13J* M51T.S9$Q;E M+A.CFH01'0OQ3MBP=BP]R*\[81,5UKR5@ONE9U[U(I=/<#6I!)B!,F_0#_WF M([7T>.D_-IK4OQ+PO!]-[G\;>XARR+8ZJEP%+7&HP[-<0,/T#:I0C@N2L5`P M0!$4[6\R2=K2FE:&=(EA/6%8@[^&P[Z@S,U_[+G.``MX0!Z^13H7$I4)3``_ MA>"!>!6S(K4.9+])T!",=Q%@&`_U&3U`$(!T]E08# MSB^!+'#CX`@B3902F<0V096.*LOTVD*[)YD6Z9R=R8N(IB$Y",1(4J M84E%+C*1B)S,)`U!VS@+6I8WR.UVU41)0(O"K,V1!`X/D2<-IKUK&^YBHGMFQ#\V#@_,^#AC7F48BBI^,SG,FUQD*6LF8;UL'2`4=H"4E%"*L` M'5DLN&48;DDB6L?$+&:UK2VNLX[+K#!8\PMPN))1Z6-<'BVG;E]H0YW*\(4P MD($EI*(//&M+*S(5))B4@^UNP5I;L>9J6]X!KWC74][S)L!4^T)5E[CS1.9B M5[L^&(]S&?.7P#CP0G+($)SH4!=Z>8@*UD6)$>J@-1"\R*="'=3`CDFX%>93 MO,]43D-;(A%FZN<,R@5:=T&MU*UOZVI8%NXXM2WRM6#K//^$!EJT)@A5L.R2@]JJ?`.7`_'U3VRCX4PSN M[(-O.C`!<&B!#R@=V&)7\(AI4>*@_O4O5MWZLID*]FZ99;=G'3L!*/452;JT MGF2+:3EI8/B7PK1LX3J;3UTRP]90-*^D$#+QDHPGW3XOBPIB``,8 MN*!4+T!!MS9N;,U."C_ZZ>`#B7YQ4CU]4A@J2W=$4((NVR"5+"E!#5P@`S.4 MH`0?GHZ\@QGO>9=E.EQ?[*`,7/)ZU]VWC`T['<;>`DA(P*I""`1`2\`]<4JHQLQ7<.ID(RAQ3$'?/. M8@,+0B]MQ1NR\8_/N&,GE'V`B1DYMQZ(!@`:"%!21E!224Y4+D5810#^6``` M>!%BBFU?S&D```Q-M#`+4`-``P`@`!@3\.^?,`0`$.S!(8`````>+@((`,`! M`'P%&E@$@&FDJ(\%(`"`8H#"2@,87CIA<1$%R0''`F`:(*C`SE<+=LH+.@`` MI']&?U59Q&X&,'0T#`SR0T``'0/H'@!(-@P2@$5>#/R[(P#=F:U=`3A%=\$` M&F\%T'@(`%7!(&($<'%,NY0=+@,`T/4K<,6*AP.+_!C(U="I/%?WHB5)Y(3? M(CL$$AM8)\"K$4`\`-#AH(@`C@)UZ/VSP\_*%70^4-PUL`!8G7)Z`7CYPG4% ML-U<^^)20O<582MH0*XF@`Y4@KL$$AGA5[L.A.7HB*2X*R`W\&&),[.V1\0` MA#HRD&]L9(B?/RC-MQ.C;;O!ZPOR!5A!9P?!.F5HZ%,`>^[!U\0_T-5&!S*7 M\;/.`UXI8D@__F"R"#;V''*&`(#4,8%Z`1#X'CI:R$=?'=\TN,X4$E)H(88: M&@P8(")\>B,9@21\=-;#'(Q0U_BB#D'O")X!\"/0@``!U2#"`+SPR6:DM-J(3CI1X M:0D!';@DXH<_3**)#AH'<+<:/^A\D2HQ`KQ&0`#=57VO)0$!A@_A`Q$5T M'.`=;\,$XH,0%PG`!P-HX.#67.C<0"9>O2(+@!\;+.(!LL&,DYD1!N1P""(( MV+%`;J/\:NM77A!@S!$+?&4#M^808$4CM#""P&&+[,/8/XY!%LT*^1SB3S3I MR%/*!,G(0XH7BX";""&8('`,(9I`!,`_!B"[R+P`!%-O+A;=RXN^OH#+"#8( M*\RPPUY<7'%#OJTKG$7H[#%`8;[H&PJWX!`P@#$[&&/'"3^''/30TEFFV")6 M9(9,#E1PT%\`?#BP[B#&0+"#,W>P8S-3N,2$3@T[6W&,$?1!@!SOK#-!,#>Z<;H4^@["#P"+<-)/#!X7_4X<#5Z"A!%8Q MO.H`Y0X$P+81<2/[!RMH<('5!J\*@(8%="'!`'<1TW.YWGQOWG?GG]>=MSO2 M$?XWX3KDHSKKKL,N.^T]H`$'5M=(18P"RZU&#QJB8(6,_&Y!CTX]"U"5'?!Q MJ@+4BEA>H04,FA$"'@A@#@)H!@A^08\"?.Q1*[A'(/P!``C(85(=U(,$0L" M3`,<2+#!*(P`@`'<(Q$V>!0CAK$";]QC&[10`@-MP`@/]`(`%C@`/WZAKUR` M@P4K>(93YJ$*%J(C-&Z##![K88P"X0`H4_F$!2`)`@0P4PP&$^L(A[_,(8`&`% M)B+!"G\`@PX!0((JQ'$/%N["(H`X!4)_$4LB,%`."K"',`!!AP(`XA$(!<(2 M\G`.7VBC`+]X*3I.XE*8P&N`! M4*0#`(%5QR<+&X(/#&,']YB#`I[PA$4T8!SV^$_^C`.MPQ#``(AQ\K00<$>^4.8'W5`KW-9&[#((!%E*,+P\#%H]*A!7]D M`78KP`9(=^`!>`!`#ID9QS_"X91T$,$?5IB!/7*!+!F0@Q^LD`$XQ+$/0-"C M"G1H`#I<\8_&(%X;Q"`/(`P"Z>!0.+#!*.J1`G``PP2]IPDIQJ`48 MF;@J(-3Y&%?481]'.$(B?``.`/SK,9%91#1^P1%?!`(`CO!B0GD``CKL@P<) MH,,]>-``.KQ!`0]=PQ&G`!1S3`0L\$`$=2,`#+M!A`$)8 M!SEFD(P@]-C)^DAR6@`RY;LP$_^U+%5"MEF1\>1'I6$0^DC!,K-J##@APA#$>4P0+ MZZ,(EP`""?RQB'Y$HQP#".P'KO"+!`2F$`#XPB*>T?$!X",1+MCC81SA#?$F M81P3"`0/=C"$DHH*`$4H0JA'K0]QM(,R8/Q`%XR+W+ZXAE]1\P4Y6KD#8=`! M`D"P!!T8<`FG?-@5!5W'.BSQ!8@=5QB/ZLL5L+.,?RB(`I)8A#Z\WA`02X:O MGP0"`U5^]D;&21@5B0`P1(``\D+!$`E5B$"WP8``OX$#S'2`RB;=?`Q"ANL5-%$&,=]^A+ZR!0F,L0X!<-T=(@ M9IV.2)2U/``!TB!FG8Y(E+4\`4#H#$B'"(`5=&`,#"(F8!$^140.8%J$+=JX M`17'+3HD*T`B(_H.FANP4`!$B5#0Q;I0<@$P/E,&^=$'@`X47`@"0&ED!%[* M51X6$N`I[R,_BH#^^.-"!P(N!3IY^D3W)"@Q`NL&_'/"[RD`*/_L\`NK#YV0 M#PL-2$UI+T1+8`)__?MGC(@!`(N.>?FRJ%R78546L1O$CL`5*[XO7W_!A[,3L!!-!86P5M@CXX$ M*V$-A"6`C@I)8@:\I!ZV`IAPO\,@KR9LX#!/!$9WHR-!H*3LYV#MZ+;#VUN# MM`YW'Z15_>IIOLB5"R:,X+`O"P%X&C!ZL-SOAOCD9R=P,-1WX!_A8\45Z.!1 M'@&+&($/:LBM=M@BW$FF$!T&2!@0`KC,M==?D$DH`(6`,&$`".NP$Z(!`9PT M$3+1@#-`,"TZ%,@QK@0`2`G[2,A`'0_84T``=2APD!0`E+2.`9`M0@0!B1"@ M(D468631/[?`$L`_=!"`24H]8)!6(D0(X-(?%;A$1P&PD#@`9+!`@(!=QX0) M``#K"/(/$PUQ\(^3!ZA`SH;)`;":%;@`($!**VA@G1=,'D&`F1@`\H0!""AR MA$107I31,8=8:>@Z(2S"J*0&.'GIBBV^&",\!;SBD:/'$&)E`'@QNL@\2C)Y MP#%'"#"G%QP*NAX[S5D!886346@A'0V<"$*&_S#XEX1`MG.B`("08<`[Q8&) M7R)^\",A`G5,\&1&4HYCSR$U!D!'&(OPL`(?""X)1)/G1IG11E8BX>T"__A! MP158.AG1EN@(X"6`1O"SS@L:`P`(=#R`BZ]0%`<%%%.@0PX%"R&P M"!=.&D$`(@>DPTQD=A$@4#JK`!"(/_#5D82**670P5LS/P+`/P8P$$"CTLK``8#X* MUQ$G(G"OP9BBNVFGM'(=YM0PR.BN03`P"ZW!P M(@&_T)K73BI#P3,Z"K#$,#\YA#MS(_XHHK*?T@8Z*(0$2$A9!^/2<4'!Z$2P M=K8&W-,MDTMZ"ZSJPRKPH!TF>V&`(A+U$$9-*O0@1TT-]'!'3184ESICQH`4 M0"ZT*F*%/NN`4/D`V>LCP#KO0/9+`@&L0P]D]QSC:QT_!/*,KX&K*`FV>B!&&HB@1[0`0!UH$!>4@$`8-2A M`?8#`!#6(8T-=O!,*TC&.HX!F1`"8AW`0,3W$L$57)!")P3C#CHV,8$O*<@E M?1@(&_YA.GT@PBY$,UJ"\+&(IJD*:D:PAPJ`(2I[(()JF/`6ISHRI]VUS73X M..(!%F&,U#G(6-Q)8@!NEC,@Z*@..F!:JI[F$'L4HEUU*`'2E&:,.U;M&(78 M6M<,=:UC)`T%N*`5H%KH#P^XRP`W8".0 MXGBPE)!!40PQTPH.!@3,% M`(I54N=-!EC'+UI(+Z75P0*;*P`RQ027`QP$`>-Y#I:I=*VK7:1.*$F6>@!&FKB@!ZPH29' MZ`$<:B*%=2``,I"I*5]I-0@?\+4F!8@J'`X;52;4(0"EK6,AM.HN&0SB'T5H MRGF/4)GS8H%"TD6!KP9Q#!*I(;Z^@F%\\;D.7,07`G2"Q7FW4(1+*W2\0#<&4.HB/-#3?SQ!`'A@P"(. M\(\Q8@-Y?EJ'`BK<4W1DH\8,<SN3>.AC@%WB@TPELZP"ELIE`E'"`4'[Q!CI)X!]]'K,->DH@ M0`CZ*K\@`P``5H>!-"$`>6G!&`#0@PH`P`X#64$`!@",2;C@'Z>00P]](%<, M)B"1`!B%7^.*`H^A`P8!*$DZU`$`6*\C'K8U@%Z]DI(#G.\<9N/O^XID7?G2 M00'5Y2L$9G:(7@,X)>;(-4,&X8*G-L0#3UW$!Y:\B"L(8!2@0`%K13'F(*-@ MR$4^,AX:L.0F4R3-ZUB`;1?=YF7!-/&?ZAC`V^O`P<$!D(XJ_`,=[SA?"R"#"0GX0@)L MF$#,8[Z+"=3\YC;/N2XD@`P).$,".*<%T"?P8'$C5`8%>H`,$(Z1L&/Y1#K0>!^]PT280=]5/>M&,S, MQ^5;7;S69"#`*)(O:\*"ZM(5@R5`1P.P`@+(*&*\`B"!R9`!B'P$8`/`N`*WZJ03X--,#$)UQ1J.C"0P0BN4Q*('?"\08O\Q!V[-4SM\6>WC."/ M3$@L$58`G;!1,#/%Y`!)`,!_#/!_;S4S7!``Z4`%N>8#\C55Z*`!`X`.\Q!G M_]`"=(``Y[4",^,)15*!E?8_^^,`?I4.B@``9B-.*X`/9.-[_D`N17!>.-`' M#``+`X`Y^I`2RF`!Z[`%MI%TC"%_#`( M[R!:QY`)X*4/$9!_7M9F2(`?Z-`)]$0'B="#A&!'6@4(E98.>O`/@^`/TS80 M7/`/L$``-I@2,&`!@B@`[D(2]56)!C40-O`/N'`%)#<#_Q`*2B4QQ]`P9LL-AL$)!!#_=NX[:%B7``B6!Q#)`D:2=N":(/ MOQB+ET<`[3<(@#=D<'@N8#<#$/+5`'(Y"(]U@`9(0(!7`$B.97Z^`` MD!$ZMF`'&/`_1V$,_G@$Z``$\7@0V#!.+E$'XY"(+E`'*X`.A1``9D("!FD' M'^!<(9F0#=./_X@.$!"1Z(`*%.E!%QDN-7$%B5@&=.8/15!@Z*`$'@D71A"2 M08"2#OD->"&/]GB3*U`'(H`.*M"3=+`!^E@'$1"2#$!;(5D!0HD.LU"4![$$ M+UD'YO"#;'80DI``XL>-EU=\,DD''6`,!0``/*$+8&$#3Q4*?%4"'/,/%J`% M#`<OH0E%R`JK>-8J,4LZ&`*DP87!@!KP5(<+$48KH$.-%"4.\`= MN&<]PY&(M_=J&C(<&`>$*'`0!&"65P%KQQ$LN.%N\#9F\J8`BW`#3795J#,, M;(8.SR`/)>$%@#$LE2D-)04/]D`(954']."904(T-[6:@2*6_'80IH"!5^&< MPG=Y!0!K@6)\..4'3":"N^<.MP0,P--28@!3S=`.O/13H.`/H^`+[V8$3<4+ M\;E3T$!4N'!4-64+1Y4.'H`M/)!6`X$/1V,`S(`"M-)6R@!7Q@!7M`!7R`!7 ML@!7L`!7K@!7S@!7Q$!4NH`"(```@,`'`"2I&9JJ&8.&C!D M]"ENH<"?R6@`]"D`Z3``XC@T!O"@-96AV-8^E>!K]6!;MG"JZ%`,YV,(OK>HK#=ZQN`$B^`/<-,# MC=H#)5`']9`7*V`,4$!&'I`2G04>]]!B`Z$-_5!=_(E!73!D]VD/1S`B=#`% M3[=2P\`(&D`!&B`)17NTG#"T&I"T3+NT&L`/&8`"&N`"3INTA."T$%"U&N`' MBN(#^5D3JU:S=0`!.(L".CLB=3`+Z[!YZU`)D)&L[@>TZL$:&'`8IZ<`[#>M MQ8>Q'W*+$9J+L>$!QSI&YF84^."&XDFM_#7.XB4MW/F"MS%=1]'W)%#^R,6NOD?&.@# M$UH3(4`@E1!^6>8`![H"R$!#]$!;D(%^,*"[P9`$8U(/X+L(#M"@BE``FH=` M(<4#8<`'`P`(+``"1@`W??`/&)0.KXM!%!`*"[H`!E"A[>4'^!!WOI:ZP)`2 MHM"7T"BW^T08$$"-!M"A'VI^%.`+M!(*]!D@C.`%;C>OSAH)S/:WMANYY%:X M"H)_):RXCY&Y@VNX"C+",0RZ*DQO/P02&80+*G`^9BF3=?!J,<`V-TS"2[0( M,]03^"%P'D<(#][AJ*%H'#,`*"(,+B,L06U%C/H"BE0$PWJG5K*=A>T3W$UGC80#`T=L!$QK"RZ``/ M9TW(>,PL)^JA`$`@1=B;%*RCK)>=#Y05N/"A*?$!@ATHN"!.*3$!@HW7[LH2 M/M"@-?&8L;JV9I-G*5$/,\L0Y4D8_70LE4LKA<4C+/P#GRL`1K`.2&"C]V@` ME3L71L`8404#?%`#494#?P`#.4"]*)#+USW)&8P"XE19SX!9FI7>G?59H;4( M^9!@V)U=/!`ZX9`@OOL.#F&8B?`#9!2-K.$:OH`#)N$$6"$`:]QB#*`#.V(/ MJCD]"S@BL&^H^$Z7-TM87)$\]$[!%`73/;?PT%&GH$`.Q`,=9`-$8!(`&`!;&X#AVL4C2X` MCQX"EY[I>4!O3N`/3-P5`%#JZX`-3!Q`3E`I1J``M%#J<@X(IV`Q_9`.*8#G MPT(`,O`/B%"$"1)`R)`]ULA!A`@!'+3.!V`/!O`#V%('']XP@,#$!#!0SF<%XH$;`. MZ)`]_1``A4($<&X/P@`(60((7.%,0`U$-2F@`'/0A'9`*`U`3";#HM``$ M<)X.OP``^AXJ5@"P`#`$<+X.9]`AVEZ(IP``J3`_`_$)`)`++L. MZV`.RQ\0&##P<'X/PO"A1:SS_V#]<4X-L*``ZP`0+(P9^0>@D95_M'XT"R%G MV`)@=#(,\H,@`)T/N?[]6Q0-5P`A"W,%``#(SS\%=`[`:K#(BH%UEEJ^I%3R M9)UMZWP!J+*(W2!V"!9Y(;##`S$`<@[@`I`@7[I)Y.P=,@8`!)T%N`0(F9&, MXT(YZZ12!43'C4P/!V8`2V3$'UM^_*Y86:1OD;Q$9O`MX)U'L0"`')5J`%`/S3. M0;ZE'*QCP")MK?#;(GD=ETXMXY"V0#)U%+!(,.FDTJ!+W"W4'BWOD?-0'>#( M1Y\"BVB#GWX#\/?,?P`$F$P6H<`#P`[$S&'`"L3<@\T_X:BUCCX\L:/=`MO0 M00`@3_@3P"+E=#%,D%9,.ED.LX` M$`0=^@`2CC^#Y./.'/(LL4\*L_PBYB#"/:,!+-#M'0 M48`)C'C@A`")_"'`,"888P`5`E"6)QTE?+IJJQ9EZ@^IIO:2ZKJNBA/KK+7> MFNNN1R`@'@&.8+,.!2;XXP"Y=$00*"/7['",M28XXH$2C]VP#B^:&J`6.FK, M:`P=#9`0`!!`8(*.%P"`[$\3_J##0\NH@CWRLXP-^,$`213,/:*Q@GP!&,8B2C&=&HQAZVD8YZM*,273'%)$2BD&R4"UI(,PX3+"(;>K25 M6J28C0$LHV]QG(B0=6*0`@ M>)"`.A#`".N8!R0X`PPH0(%ZC/B'>@1P3'0X0P&B6P0VK/`+::"@$7=``%I* MP`$7UCR.DZ!TA5DLB2^[HURE%%"'`&2BB`9(QP]H%:2?$*"65Q-*4/Y@ M`#K!P`@3,0``_'"!O=RG!S!31`&.L`X!P`(&B/BE.-Z1""?TDP"A>R(`^$`! M0/2@!GQX0+*&.4Q_.F&7.:##/?RQPZ'@)P9U8(D7$/"/H,FR2<,8YNZ``(5_ M7`T=K:`4,0APTS6R,4JS`$`Z7!&`(&FG*$?I0P0&L8^-,D!$UM)<0]4"0#8Z M!I\$^`6M%F`/.IA@ERD+`?74=8YC+N(84$#'%?2AG@'!%1=H&``4WAK7(]"5 M&++SP2T`L-$$A,(=!,B!`0;+AP%Y`+'KV*$'!AN-!MU"%`2@GA*$RLPHH>," M?QW?2#*W!KU>`1T("&U1<^I5=MQS+G8(BA$#"H`_P&`%P%@M]:0`CF6^!0AU MB$`.C$@'E0CG\8$`_.6`0'_D$`11Q`!>18 MQS+JR0X&@+411J#'(O"!7@2PQ1_&*((!DI`(7R:B!M1K13]\6P0!M+>G<3PM M$LI1U]4.TZEN1&0<,WD,2JI@!_ZP@P6<-8`,XF,.#GCK`.+Q*R<\H1]F!$YV M^&@1/WXQC&,LXQG3J(]Q^O`:B#3B(KY!R0HLUP"*`,<]CL%%`:CBQ/-8A2!5 M09=)K'$O)#+"#G5'D2N@A1^34`!$)K#..CB`=7E0`"Q:H(I[;&,0T@#`/;1A M*TE03CP"N$<\)J'F'$Z#`##@00[L(``"G(#(PEC`,.H@CN8^@16&*``B2MD( M(@3`87*0!Q;^AU,`*.(!*FC'$"RX"UIE*`2N+N(*?#(".<6QD*(GXF:P5)0R,[L(*`CC&`0"0@V,$ M[0`U,#8!\I#L(Q@@%C0P-@*V4(-A:$$+NJ!'`1RA#?!"H06!`,`H'%``="`# MDQX@=V47\0AX$&`7""A`(IY``'0T$1?]V!PZ5L"-4)"[`&70=PBX@8YZ8*,9 M-?#!$`K0C!Y``10+%T41"H`%A+M@XOQ(A`\D(&\;4$!9SDB$`RQ0@%%X0-X6 END--cut here--cut here