www.digitalmars.com         C & C++   DMDScript  

D - BUG FIX - thread-windows.zip

reply jhenzie mac.com writes:
Attached is the version(windows) fix for the deadlocking problem. It seems to
work as expected but I would apprciate review.

Cheers

Justin


begin 0644 thread-windows.zip

ML_0KM ;BDK(BR;[ 4%CG'AQ;300X=B`YEQYZ 4"3*VD;BE2YI&5?ZO[VFYG=
M)7<I*;;[R*5%A+:V=F=FYSVS.VZWRT[2Y6TF9O.<>:'/#GJ]`W9URT[%3.1!
MS%X%F6QVN^PXCMD(H20;<<FS:Q[A\BH3><X3Q' ;Q#G/V'.B17NK52=29!9`
MI1.FBR:L1_RJF!WE\XP'41\66NSHG ][*Y*_'=P+=L1:W6;SFF=2I`GS",EO

MB=]D\%&L3^91S"97?`9(M,!O"*7%)`\+4,MM6Q&4>1"^GTCQ7]YN-H V+F7Y


M D:5%H3TPGF0_?".2:68#R
M5NO*+I91E-I8"]16'HV0'5#N$9LN^_HK[,-W^&]_(\V(QWP6Y-SS650C%"%B

MO!P>G_G-! *0^KR=(,8C;A4NCW;0_ UYFX3S+$W`K2+F*2[.TO`]H'Y0V%,P

M]*\JU!_$.T3[`&C.(AR."NUKDB*Z 151?B4>OK5Y.!4+)-1P5A"'[8$,&N\*
M-M[CESLEC_ZA0U'N[<'>':J)E$NZ';TY/Q^>OX`--.!1/7:3(H[;K-=FNYH&


MRV/)2>_H\C9(-/-\Q]_)8U>!J#DLJ 23,9OQ_)+"UO57Q&"0 26/ISM&9UHI
MMB6TND[?7HQ.6;1"KT8JT0J4\!9H?)=F8Y',8GYQ]2,/<U0[6.+F._U9TT/%
M+B6SA8 AI?(P32+Y^?#O<%67 "?%` XPS.IL`%5`GPB_51YE(UZ.49AQ3KG,

M=292+'>>H<B6E;K!#HD!H+2U$GDX9]ZRRE,01KSDIF/8.(38+C$QF%["\NG$

MNAR^&DP,L$T2\QNZYAC=&'-*:0GRM)*F3VY;HSH8C2Y&D]' \LWHW'5_,"E;
M:M0=-R& *XE0%^XJ?*K":=?"A ;+N"SB'(W?[0+=))]Z.R5JF]73_)/H/\E.
M;1D#Y

M-!FCPFVF !8,-`HM^EKP6WSW6*?CROMN/=LO T*6*03^76]1="IB/__,QH5<


MMFC?<L(M"E`:^EPU\*L58/SJ`1JX%3R.*NG',>=+K[?19:C%*%5SA)TI;$-T
M7P,KA^N KNSVMNH.6)71G%T=X+V;9[W>.XM*'[(I4]TZ].904[ED<`LLH+5+
MV`GV [E8\+([L)H`,HKI-*'/!CJ0A/ -;J2VUM]5[:5S^:JN.70!ZU= SGW*
MOO:H4-2WQ86T[UI9NF()7]DW30\A2J73SV[KD1_"8JWREOQC(<$(;)4%2[BA



ME63W=9^R1:9!$MTGT<:KE.6E!&U=I.B[N4:9`'WZ=&LQ?8Q[&:<Z`:+`5V"2
M%B:[69Q>!3'$HECW&>TBSAM'HPIX9!XB0%\3*(5:SE(%A]IRM%)=:E'NK?T/
MTY^\H^Z^VK]G->"7X/LQ=Q$>Z%0EQOU]FNYR[+>#WCOC.<XB^N7:NFH3S279
MF+O7K^5UH_1?E-;UJY+ZG,2IY%I8YT!4CY'^SD(P3F(<8$2N),&BG,V)#DNG
M]"U4^M0N764AKEM"O,DKVVH\R$V!>:=#WTR

M-.12LO7GE*?[NH*HCZJBH0V,2W[OIJ<^!P[X:8%* SC10KO'M5T!VS5NVA:A



MQ^ZE]C7(,-4#OYX
M:,)^V.\=/&-=YGT#IL'E#K
MJV8.%G!8(*V^S&O!(B23/,UXYF.P5B=/C.!3<-H8,K,^7[&/6:20?7ME*9*8
MVE*+>[ZH^*[30QS8C\M65M.!->I0*SY;>AE?W*`/H!.*!"=*,B\=CHJ%D9XT

MKZ4Z8S.5,`VR3>/'%+J"DH*&VP3X7L#URP)4'H=0Y6+Y&[Y/>AMH\)\ W&TB






MVQ1459;$M.#VFJI,D--N;C85V'IJ=1ZSUP>';N?Q_QD<UKMJVEG3D5:,V?]=
M1XK58=;6D^C=I HFH(BU<1SR3WH! ^:UYY=M"PU)7`.A+6E&Z?_5AI2/*8M;
MBB!=NE!#X^&+-^/1_D>K8'V,J:(0> $`*2]5NW AU^-1U:Y0W4)W :8Y25=0

M!JKCC!M,T2AE[VQS3-LS&THM<'%`9PS3`GA)IPK8O$A+2 .4B*A%(L7Q`"J_
M`T9_95HY,<"OYM`8 LD([.E3.\5LB8A:PMGB&5\&TK6!](:W%1?I$T^ENZW)
MZXOQ\/N);E34C_'DU?'WK2[;KTVL;0+T;,0LG^B7?;+5#I.Y'C:J-N#T$JJC

M Y`AI75-`E223J<D+$B9`'%"ON(0Y;S^ .$C,5!CWBFGI/5F;WUZ#OEC,'[]
M95X.OJ(>M?_:8_.U[K_N#UH+DTDLKD(U&IM0VGK`_>(/''B#V[?8,`%^XAA?
MNQ/0I1X;2293MN(0LPG3C^!=57JJ>D^J=A\,K9=T_:K>M]X&K6?\7;7;T?,H

M`\X[>.QY-BTS0;&;'OJ?"'H/(H-A5\Z-:?VPN;7?PX-$$.-$2YNUUFL_($B=


MK,LQ5JT])>_1XU8Q4^/6K4% O-^Y&--?I/HU+#WB,DC.;6LCMI/1[-N.3D^7
MZ;)6JSJJ`=H]8K] QM"MN=4G6R.QBGE4OUYE^)>#L>&LN 66E*'IIDZ,)[*`


M```(`(9T.B\BD?V\-C4``('/```)````=VEN9&]W<RYDO%QM<^,VDOZ<J9K_

M!!5G;N]4Y1>A^VET-QH T&CI[9ODN4[*G(RNTGQ3/%4';]_\_O8- 5><I7%%


M#S2["W.`O]=.)</OR+P<$_RMH2XB^#U&IC[:9'"3DT0B]=,A$J\HGOU5F& $

M0!<$J"JQ=K=/0+L.%X[7'WG 5IO1(N#N&<;:W3Z!R^D%D<4E]?UL-;+Z)!K2

MR$-$EY++P`Z7;M0GA*9OV5I1CA=&AF<JQ*:57,Y]:^GJH5>>ZI96/\OQ+_Y+

MILZ`+Z:^,NZM?TW?TQ+FMK<<(.SI9V&X=A0-T&Q]3\%LH#T
MG2L:+UK21V6PT1\P;,L ]-4ULH78US(&&F`V]-K9I,:`"L/57-5-:`?P:[ "



M1;`&\I=S#GG
M2^";O&^`[3JWLH/`#X!V,A&%4/1WE+:BBH<A\&A>*)#S.

M;]F>8ZOBR$]]._BLE!G?=WP>=.L'MMHC>QV?]=UIN>X*)Q-J842185[RL:.4
M")YAAM41F"L$BF4WE).Q(JTE'?5Z166HQR_LF>,)&G911,FP,`4V3.F.?"R2
M;<\2S<- VA=TE VKM>H[^77T?'1T=`P_C1K42% DHP`V8WHDQ4P$S%7 1/;*


MPC:=J6/^`09<`2^.X?,UO`XC>[X*034PZEJ"`8:YO.D'%CMGOIRC?/^J/\LY

M?PA'-5MOX#EW/;RD*<\ 6OL$R*0/X9-_$'(Z)D0`P8H7.!? #ZJ>[[G7.M#Q
M$.C2L6!)U_<T&0*QH/J3ZEDP=\W(#Z[[H..C(9`1F)?.)\$;'6 R"/+\8&Z(

MRH2'Z<SFCWYC;LLVT<$=1H'?6Y`ZNL.H5MU01IWN186XPJMFH3?VHEPCC-J9


M%SH1S&'X#V=S3T-E::( G%1V\,EFRH5]LY2E:>DYF*E8 8Z6`T<RX36\-"WL
M('1 (?,PC-RF$Q5T)H.8CGS:-W&D M3U[)/O+N?VR F'%PQ8+QB(/H'615[Q

MQN8B;IS]Y>Q2LN^,>V6L0B!R`]=8+/J!>#H$`7LNEM,I/)_A;"M!)D.0`/9.

MX" 5.68H0"8#D
M9W^&H.]<?D[/0RU50B+UE%/AL.R9*%O`G].#GQ"Q_-`GGP%7\(8>M$?L/0O:
MMV^JNMRM:R)$3G/\X5D))\?;D3C[H&^^3._N%9)_>ULEM;91X.9:DGO[,<F1
M^U^".LU2+SX!);UR-\GOZD862[EFVS!9[\JT?K&2:EVFV[HH.0--CM\X^7T"
MY,LXWV2)TB.&1.3`:BIULWERBR<KKI,H?4 ^R!2T12")PJX<[V0"JY0')UXC
M,E29TS1+C+HNTYM=G50?NIBD"MS69IG$=5KD0J<"U8VKVEBODZH:IE^!F7V=
M<^PX3/^9]`:MI8"YBIE!4B7E8[(Y&F _YNWT' G^H"0O?DC^UB1M?E,8C(Q&

MV,58MFTZ&+=*0V"D9;)A[NN:0P`D\V*3P$3Z3A=[0FQU`]?AFP&STFI;5"G^
MBY+:\<[BN\K(-R*T,21*'K89UQS-X39;298,F2.P3=-\0]W3. 9;&EF\C365

MB.;+":`QS.VR+,J1W"Y/+KWW9&Z,>\&6+!'Z%F>,H/V\>)0&Y[8L'L;\0K8N

ME%F\W28;P<R0F;DH4ERS%4UH3CN#P*WC?)U$!5J&?;+;[6PK4]`-7=ACRSRI

MCF-^T"Q)TJ+$/,:>?UFQ_I)LG'Q=) _P$!NQ:TV09VPV24Z5Z;-;R9]BMY\A
MK/*[I.&.XO(NJ?G`?8JS7;(?![(;*.NF!Z57E2+4+!ZVL""V/3.&0U \ZS2G
M"]V8 QJ6YCTBDS+FMK"(F)9)` ^+8E>N(2;8[2>YAY9F12#L_I:XT/E>1CH8
MS1BZ1;QQTYLR+E^,$;_CS[;0(DYT?O6#L

M\1H7?A`%=A1<.S,/CA("1CB),=YK._1\O6CA,"KPZE46#FN,EW;_!W)_&K.Y
M OQX48C3?X]]QXTOD!=.!V'OOJ7CG8B\]F?3->:&RM[PGHB\!IPL`SR+ZN6>
M' DZ+T-,4O9T$/G/1-E71N#A#EQA





MHL_BYLD3P;9:>&O&6_: I44*N^AE2Y])LB3[FV6-6='!DPM/[QT(<S;LB<=3

M-\Q+3,Z?[P%-.A#VH)U+/=!)!UK8`5U:L8"`GE7.AT"G!VS:2U9!$$X=,;I[
ML)^ZOJQK3^YC$/3^H(F:;F^!$N`!&5RW.9P6SA8`VA%RP5+1XVFX)BT73T^%

MBV+D&VDOE+\2U3&L1:,X(S!=L5QF]-_"9?A!JZ;FQEG;/>-C0CN7L_>R<_=T

MP6X7>O%,7P=XC0&/ST5<PG8<CB8DK4C)<TXT8`11'OQ\\EW8)K7%+AI1'Y,7
M%++MI)!O>(& I_LD)]5+52</3*N;HJC[6BD:X:O3ZEC1*B_J_S_--/.QTVS2

MQ.LONRV!_\!9=5$FWZ[5-EFG<49BF PD)1P$JV\6MBW31SAWWB6 UC]VF&-4

MFC4PV4&) 7*C$3DBC=E>01XQ'T&KJSDR_%6/0^1QBUSFZ;K8)"3?9016B0=,

M,HR0VZ1,<HBZ`Z[ A>-AS8-N!T-.6 4QD8)SX('< &[E"P>SC)7.52-RVH)/


MB'!_&9 X!Y1#T8B<M4*:'!5,SZHF:4[J>QQ4WO 0;[FTZ1*>U:U(.)*9 ;.(
MZ/E_1/Z#BAN2=A^7FZ>X3,B&WV2E>'J4=>25>'/8C8:-PC`S<%))5RD\-1 D

MK,T-4I>&-;.XJL;R/9-/C:_&O,*;0/SQ6YRQ[IKPD&BO:IA,6H9.MO>89H1(
MP(Y9-]EV\R1<WFBM"Y.:YDR'C*-$\;JILZ^QA9V\\`,WJ":F-1O:^J9)<K:7

MUO)5+5 *%,Q_2\U8VRVWZ,!H($O4LLKV(1L.R6*(]$%^AL`0T^<,W<7RR<C+

M'%E8W>Q7R:"OI*^_W,:/.CHUNU9!.7I06! S+)Y2*C28WL<M0Z]4D3%,)`:Y
M=I*57[0,E&CZ"Z7:\:QEZ%>)LC(1E4&HZF2E)UJ&YGR&Y2P]ADX75B+3,LR6
M1M"KA^'92NXHTS`OE5+`"<_UV',L%YH[755Y5^K2,/#M5T


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
M=QJZ'F EW -&+-T[_\.H7SY$HRH[(09\F#O
MW2&)9\,'7HG`G7B=+BY[7!?5Y#Y/47&^:[6$C1VL5\F(33 VR:IQ'MW[+8)C
MA:U=IY.:*_(*VQ<RO(WMBCO`O+1C.J94$P5C".L<Q0FS\K*HT31B0XEEO7-<
MU3F^16Q;8 ?99&*-DRRLM,YX'/&5N5KLN<2"^[[;NMPA]D)I.<FO:ZT3L9<-
MI;5AP>H4N"VLLZ&H*:7(Z;)]PK=6/=B6C9UZJS9B0X=O+X]SYS('8I6&RS=E

M'^N75<.*4L8M_?K&"K&BE!,V,CV!1ZPHY>J^.B4R8CL&ME9DQ)XK["F1$7NA
ML*=$1NRETAGX,CW)M]M0;14,_*M)5$[`F60!SC6-I [QHH4%;#I*_$B.335L

M(5;8T*"*R\+ULFU A0W=? -6V!#HH
MV+Z&?:,NA:(LTA&X>7&FB :V)5N5>)+C*Q/#ZKI7W#E1`-T6I2&P:9+5C*]:

MEPGTH_4M<O.5.ZZ1V+H^U\*>[',YMF5BZQI#Q(867V]?P[&B]$[VN1S;,;$G
M93BW^)Z2093>R3Z78R]-[$D9NA;?4S)\<$NZOKVW8JC_(.XX` < M3,TB,M]

MELQE6>X +5G/-[O/06_W"N=UGN"F1Y8()VE_R!*?:S04-$M\3L5"(J'C,RMB
MFTCHC\PB=8CD.$D+^,LH67+OOG%"CZ%DB<\3&A]B,QG1`;&B=RF./>D5!O/+
M+\%JNWS8/WQ=;U\.<,N9AY.R8MH1#H;S[?SS:A]4XO %72O"BT=X"U4H4'+]
MN/J\WII\.<]TN3Y*QM7Q=W)E -I/JX<\[=MZ;.*>?X/H,1J6 4!ZB],]GI^0

MU?\#O:/3!RZ]*^BC8I"QV:1NADTYGF;T(AVRB>QMJEEC$[U0"_VD_"*E(5]7
MTF?1:*(O*2.=7R#D$DR'/:<$I,.Q-TW**/[1[  G-O&,8 !^4Y4IC,B9F.EY
M3,OJZ.$FRW,+H+HR1O>L$C!Z6]*GX\2>XFJJ&L'Z.C[X9J9_+NG#Z`[/;6 ,

MJ!K\+1 3H%6-&!:[X'4Y.$VJZ)_8UU"=RK?7;.[Y2Q4HKA54'C^2($2/E(HY

M9N]2Y0L?9[CWR--5,M=B/B ^(%)<3(T%'\1$FLRLJT_O/'QZ*BV^GNQB8I56


M$O7`8Z;!"C%:>8GN1V>%&%%>Z7`\N0?!Z24%`Z.5%\XL;K,JZ^6IT"=B4I66
MIRLA3%]A0)8>`]Z :]L_2TS25&G58K3Z7I>OA!I+43.P<3-UC:BVXE2+Z2BI

M5]_ABC:9S99-!:,O&3JM*-KF6<\S[J(9H<^79HM3LBI),9_2CJ T3G82Y%ZT

M$;PQ:P D,1V.:<.\W1E)T'>NI67A).:"8\!OZKA&YDN. 2VI.OUTM;0LN27F
M`\?  WQ)&6ES/8GI<0P8A<>&X0OY )"AW);4+3'/[HK`=`2&WN7U:K';U"3R


M[/HA?0^>Q\GB&W.;CU(</7BVIUJ<-&"YMJI7R$G3D4-L<U*255'/')=T!*F8




M(L/TV!C\QIQ;24R'8Z[+Z-Z:?DG,.<?,!C!P\/.YT-/JE_!RW)]MS*66E E1
MF*Z>5 V?#QR





ME([L04(H8SD#B


MJ%QLU)`RE*G9$3C8GL)Z)ELF5ARKN_X&;&)B/>MO"BL.?9P\1L:QXN"`O1GE

MB`,/DN1%67,6$;%BX[D^6PHK#P(-BEGM)BS'"CMC./9?W6E(PD:ZM</]K3JX
MQ:\AYGC4CMS"DR.GSEVVA)&*NAN-:\^ M821PGY#K? <*XP43N.\A15&2CNU
MPU.G$N7I%I !3<O*]]:1P,K3+; 77]^<(5:=5LORY`VL9J33%#QEG9"A+0L2
M5C&S$>M^]*T:"RT[(GZ+&0;:TG\0.4L. LWJD_`-((*.NV<K!/U)6F$?=VS:

MZ5[Y!<89`__VB_%\O3WZHI3D<=]'RK:+Z?-2>?L1O ^0X^>/PA7R7]OAW_0<
M:J*SC&I_07Z-/W/]SRL^N*);N'`3^WIU3.+T]>R=,4KX0Q+?^4Y?8(/:%'TZ
M ,AIJ%'L$A0*$!PL8)8-KMK,86&3S]*0$QL6HIF6LGF4H*X. GT`UG38G*CQ
M!A`=-`&H%$R`0 F"=\:F25I>NTN7'0F"2Y`E.`M6,`'JVIST'5P.X -^ Y."

MQVAQ7/]V` *O?C(K_KS?O6R7'(943`"-/UD=OK!*>P;5B%4?1:T\<3U)$*6_

M:K-BU5RG-0);H![L*V"^S<>D]'9E\XP`I8ETNW2BZ!'>.S&8I%1Z)5[7T5/"


M!,V,10"^0R;M^!].:VZP?J<WZ&4R>^`/FULC`&QAL#TG

M';E]'F_'9=YM"&!"A;$6`!6FT]1D]J&:XO23OQ&'*YV;]6I[/-D2&"T'KX[?
MAB<G4UH4JX41E_!PGU34 R$SLGH6K%W^5B:*E+XBD1I:&):+5\IWVV-TMH:[
MA;Y_,'KCAW\+3GT$.O7CGV)`KUAX)9W]KY-TQD6U7`04TXE\`!/**C-W"AH<



MGG4Y!D:H/)M_F;(.8&*<[`0F21GU?42>UW%9%'TOF:^3C8I1-)IDC,Z:X41'


M3]>]L-T*?0GP:RKXQ&B5]K+K<PO%[YL4_+20D[\ %)>.?RT&4<\+:M$[U(.T
M5Z8SKQ276#E9


M>P'D!6)#U01?`,DX:F4,)9",I!;8D4!28BVP*X'*)LRV0T[X96:8;;B9YJ-M


M;92S)G8R:CMV`4^LL#G
MR^-C(SBL]NM/JR5Q";[A8ZS`->LA*'=/<S8OC-G(_&7_>U`M'G>[S<?=[DLC

M2V'$X0^_CD#OWRW7&$5*-VN8T<:[E_T:?$2:BL(7_TS9.DJVE_UA_=O*B -O

M]([5IMPXW1)*8NZ>>FE+HNOG*>A(XC!-LJEYM.]<$JMTF+%:I]?A"TFT"/!=
MFM*:B*XD#M+HUMJM_<!WZ(',QBAV3HW\<RYE>CW-S6/%,K,<DKCR:[EJ:,F9
M*#T
M1)D-:0G(+`5%V&3X0 %A(]YQ4>)C=!:L+2#HFBZJ

M5S_$7M%UCXWD$[%!`Y_8(]E__MC;O(B=$XMRO5^MMGY2N5K6$6BWY4K?2Z+T
MW\.:"?UZI4E'IZ) ZXO9&&M/Y:X6?,(S'_L^KK6'(>$3FU=(FT'C6D<<K+0]
M+_ 45T8=;^;;U:&.VEL?T1?358U0X"0>G 99[[9U$)`[>YI_KA7^;KS:',:K
M_1`N -6![FM`IC2;_?1 E(U-SIY 16R.&9(E9)<!%)4=!D[#K"!_,0H[L]$H
MPA,KC/E29D"8IOXQ3+S;[/:'O[;^YA?2%,\03!=I'&%U3$=P85<(I6T./J^4
M&9OANN6;%*VVF`3A%E?;7U2IXP:C^I-V.-3?5[P;':]?5YN`7GF0S^^R<0+T
MJ")/;'*=DU,J]:JO^9!,H+^ RD-N5WO-0L4BH9!9Y6:-(O"G5%7P` N$5043
MO6#Z
MI28#Q,PK+9)J9$M6S\='-[ ZKK:+]<;#Z^65GA>RRBN?_[[:.^6E-\,0* H<
MT</YX8L5?KL^K-FPV4-)YM!P<8*R;9\5 I'[PM':?80KFL(X:_2L68`]3EIQ

M--H]TB'IZ[$&I621W(ZLI9YS$*UN7\,5GE]E4L)[(/( &N&XX!(H<X1(F2W(



MZ!J";#ACZI:). TN4,RHX,$6R'7Z>D:28ZUWRH2;3;H]PD.Q5GT0_QJ=Y'N/
M.6&/8.O5,"MY&D> ;[\)+M!][.^T*-[& LNFZ6N\V_S.-+%QE293..[9//6Q
MMSG1CM025)%J`H.!8Y465=[7&DD9*7G=V'T)>?Y11GK"*&NLCLV&0E,=&E%I
MQ-6:9CGT^`ZW'S: )*"O^DU6K\=8'.=GS>-^;C(U;0G1-8V3ECS`HLU:M*\R
M7:T `/+KRT'=33/U:\!IZY_&E*(Q_ <?< &?`-."AX&" CP!XXA+<P`>L=DV


M8!V%%/[PZ:_?K_2A"\!AJ%) %1J)7W+ZY:IV3!(,=[^M)CLX)6769![3,#DP
MJ^+E&+E8V.MV393C9Q[\3(_ /" XWAV.?WE9'_DU!% E#K
M3?,)N/BADP7 2CO2#S1

M&2K.HZI*[^3C7*+9 &_Q49OY_()7-(+VSZ]R957''N!X!(=R,3!\\_QIR_0!
MZN%4T=I1"O'F ,V<E\ BZL2!?.XZ"!XS7`U>K"0-KL_0]Y MY-QLP`\O8S L
MT\HWO0:]<EH->(R/^]Y\\84.`PIC)[7CMWD^_!<<"`'=UY#CS?QPT.A<7YV?



M*S/?"I1\HK'M7Q44&1.&:B*X(B 3?-`,<I!?TUDW?F-*4HUEWU>^-RGS+6(9
MLO!,"?UYG5:IH]"`\3N^XIGBF.J^LEWXJ<U2CIFPZN2[_=O1,. RP[:+)A=(

MIJ'52/!GN-MZ*Z99'^4U S.SFAJON6N&]W?\2Q39WRT1G&BZ)MT'XDTUOFMH
M.C.O/WA$UEL-$WPF KEXLC9HDHNTL$ZZT3%8CA:%3J%!I7[%;>1B5A_<RWMD
M$0VB#VKH(:??I/?Q[<00AFR<T^GJJM^/`-`+:)I=^Z>3NC&T0:S9-A%4ISF=
M+FX8`&H7.'U4D(1.^R3ISB6_ICR9R^CP6!B;BE9F_*ZDPTH$;%Z.6&.9TOZ 

MEQV^&)JS7A<P8LQJ19W51IWYXO)1`L2F0<);21/J!(,W!3`YH"86<`Z!00"0
M)=D#JW]Y%D=:%[28'^" ,AQM/6N'YRU\O=B,%C^P/L`Z>6%'.W]W9;1>;+X=
MP-*TIZ)Q_\ /CJ-HL -!=GQ#MPRRXPXZ-,B.!^BV07:</G<,LN/G^=PDVZZ=

M=U?UW":;G?B%R=R^IGQIQS8!747F$AOT#W
M +8TQ<'S7/;YDE;;0]<$;&FJ8_;6-_V+!D'KW*!7 \C4;DM3'G ^L977NC3B
M.U?`6UTW_Z8:6Q\,#DXF0


M'Y>#X
M&.EK=/:#L>/(;ZXTC`DQZ]C$3- F$!^-(ACI;$!Q=]KO]]KO6SP[H ?0>1$>
M(I?(QG-X"2X0P=B./N*M&WLA0?7,0M;;(DOP(B-?0H/_'%T(3?Q?S+-<H*67
M1AT;8/->/;]F'M55I[L&RX:07 JMB=K XNFC(TWO^E2`+YFJ-^AY5>`+4VQH
M(J^T SKX]_A5KN7H*U5/Q$RL5=&2*7ZTC"K7=Q1AHQ.T8SH!/!/* ^GY=?J>
MC2,[3+SWP9C]"PL_^".''UIE,V^]\=S"ZBSD;/.,2[WV^N]7%MI?;UB5'JZW
M;MC\5:U:3[CKII58> :V[Y$O G#M

M.0``"``````````!`"``MH$`````=&AR96%D+F102P$"%``4````"`"&=#HO

0```"``(`;0```#I
`
end
Sep 26 2003
parent reply "dickl" <dick221z yahoo.com> writes:
Great find !
I've installed your code and things seem to be working just fine (and put
the gc code back to its orginal form)

I've also made a small modification to the thread code to allow threads
which have completed
to be restarted.
    In start()
        if (state != TS.INITIAL)
   becomes
        if (state != TS.INITIAL && state != TS.TERMINATED)

I've come to the conclusion that it is too dangerious to add a killThread
rountine with all the
locking that goes on with the gc routines.

I think thats about it for the thread issues

tnx for your help Justin

<jhenzie mac.com> wrote in message news:bl2enp$2mcg$1 digitaldaemon.com...
 Attached is the version(windows) fix for the deadlocking problem. It seems
to
 work as expected but I would apprciate review.

 Cheers

 Justin
begin 666 thread.d M4FEG:'1S(%)E<V5R=F5D"B\O('=R:71T96X 8GD 5V%L=&5R($)R:6=H= HO M+R!W=W<N9&EG:71A;&UA<G,N8V]M" HO+V1E8G5G/71H<F5A9#L*"B\J(#T] M/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T](%=I;C,R(#T]/3T]/3T] M/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/2 J+PH*=F5R<VEO;B H5VEN,S(I M"GL*"FEM<&]R="!W:6YD;W=S.PH*97AT97)N("A7:6YD;W=S*2!A;&EA<R!U M:6YT(" J<W1D9G I*'9O:60 *BD[" IE>'1E<FX *$,I"B ("!T:')E861? M:&1L(%]B96=I;G1H<F5A9&5X*'9O:60J('-E8W5R:71Y+"!U:6YT('-T86-K M7W-I>F4L" ES=&1F<"!S=&%R=%]A9&1R+"!V;VED*B!A<F=L:7-T+"!U:6YT M(&EN:71F;&%G+ H)=&AR96%D7VED*B!T:')D861D<BD[" H*+R\ 5&AI<R!I M<R!E<75I=F%L96YT('1O(&$ 2$%.1$Q%(&9R;VT =VEN9&]W<RYD"F%L:6%S M($A!3D1,12!T:')E861?:&1L.PH*86QI87, =6EN="!T:')E861?:60[" IC M;&%S<R!4:')E861%<G)O<B Z($5R<F]R"GL*(" ('1H:7,H8VAA<EM=(',I M"B ("![" ES=7!E<B B5&AR96%D(&5R<F]R.B B('X <RD["B ("!]"GT* M"F-L87-S(%1H<F5A9 I["B ("!T:&ES*"D*(" ('L*(" ('T*"B ("!T M:&ES*&EN=" H*F9P*2AV;VED("HI+"!V;VED("IA<F<I"B ("![" ET:&ES M+F9P(#T 9G [" ET:&ES+F%R9R ](&%R9SL*(" ('T*"B ("!T:&ES*&EN M="!D96QE9V%T92 I(&1G*0H (" >PH)=&AI<RYD9R ](&1G.PH (" ?0H* M(" ('1H<F5A9%]H9&P :&1L.PH (" =&AR96%D7VED(&ED.PH (" =F]I M9"H <W1A8VM";W1T;VT[" H (" =F]I9"!S=&%R=" I"B ("![" EI9B H M<W1A=&4 (3T 5%,N24Y)5$E!3" F)B!S=&%T92$]5%,N5$5234E.051%1"D* M"2 ("!E<G)O<B B86QR96%D>2!S=&%R=&5D(BD[" H)<WEN8VAR;VYI>F5D M("AT:')E861,;V-K*0H)>PH)(" (&9O<B H:6YT(&D /2 P.R Q.R!I*RLI M" D (" >PH)"6EF("AI(#T](&%L;%1H<F5A9',N;&5N9W1H*0H)"2 ("!E M<G)O<B B=&]O(&UA;GD =&AR96%D<R(I.PH)"6EF(" A86QL5&AR96%D<UMI M72D*"0E[(" 86QL5&AR96%D<UMI72 ]('1H:7,[" D)(" (&ED>" ](&D[ M" D)(" (&EF("AI(#X](&%L;%1H<F5A9'-$:6TI" D)"6%L;%1H<F5A9'-$ M:6T /2!I("L ,3L*"0D (" 8G)E86L[" D)?0H)(" ('T*"2 ("!N=&AR M96%D<RLK.PH)?0H*"7-T871E(#T 5%,N4E5.3DE.1SL*"6AD;" ](%]B96=I M*3L*"6EF("AH9&P /3T 8V%S="AT:')E861?:&1L*3 I" E[(" <W1A=&4 M/2!44RY415)-24Y!5$5$.PH)(" (&%L;%1H<F5A9'-;:61X72 ](&YU;&P[ M" D (" :61X(#T +3$[" D (" 97)R;W(H(F9A:6QE9"!T;R!S=&%R="(I M.PH)?0H (" ?0H*(" (&EN="!R=6XH*0H (" >PH):68 *&9P*0H)(" M(')E='5R;B!F<"AA<F<I.PH)96QS92!I9B H9&<I" D (" <F5T=7)N(&1G M*"D["B ("!]" H (" =F]I9"!W86ET*"D*(" ('L*"6EF("AT:&ES(#T] M/2!G9714:&ES*"DI" D (" 97)R;W(H(G=A:70 ;VX <V5L9B(I.PH):68 M*'-T871E(#T](%13+E)53DY)3D<I" E[(" 1%=/4D0 9'<[" H)(" (&1W M(#T M(" ?0H*(" ('9O:60 =V%I="AU:6YT(&UI;&QI<V5C;VYD<RD*(" ('L* M"6EF("AT:&ES(#T]/2!G9714:&ES*"DI" D (" 97)R;W(H(G=A:70 ;VX M<V5L9B(I.PH):68 *'-T871E(#T](%13+E)53DY)3D<I" E[(" 1%=/4D0 M9'<[" H)(" (&1W(#T 5V%I=$9O<E-I;F=L94]B:F5C="AH9&PL(&UI;&QI M<V5C;VYD<RD[" E]"B ("!]" H (" 96YU;2!44PH (" >PH)24Y)5$E! M3"P*"5)53DY)3D<L" E415)-24Y!5$5$"B ("!]" H (" 5%, 9V5T4W1A M=&4H*0H (" >PH)<F5T=7)N('-T871E.PH (" ?0H*(" (&5N=6T 4%)) M"B ("![" EI;G0 ;E!R:6]R:71Y.PH*"7-W:71C:" H<"D*"7L*"2 ("!C M87-E(%!224]22519+DE.0U)%05-%. H)"6Y0<FEO<FET>2 ](%1(4D5!1%]0 M4DE/4DE465]!0D]615].3U)-04P[" D)8G)E86L[" D (" 8V%S92!04DE/ M4DE462Y$14-214%313H*"0EN4')I;W)I='D /2!42%)%041?4%))3U))5%E? M0D5,3U=?3D]234%,.PH)"6)R96%K.PH)(" (&-A<V4 4%))3U))5%DN241, M13H*"0EN4')I;W)I='D /2!42%)%041?4%))3U))5%E?241,13L*"0EB<F5A M:SL*"2 ("!C87-E(%!224]22519+D-2251)0T%,. H)"6Y0<FEO<FET>2 ] M(%1(4D5!1%]04DE/4DE465]424U%7T-2251)0T%,.PH)"6)R96%K.PH)?0H* M"6EF("A39714:')E8610<FEO<FET>2AH9&PL(&Y0<FEO<FET>2D /3T 5$A2 M14%$7U!224]225197T524D]27U)%5%523BD*"2 ("!E<G)O<B B<V5T('!R M:6]R:71Y(BD["B ("!]" H (" <W1A=&EC(%1H<F5A9"!G9714:&ES*"D* M(" ('L*"71H<F5A9%]I9"!I9#L*"51H<F5A9"!R97-U;'0[" H)+R]P<FEN M=&8H(F=E=%1H:7,H*2P 86QL5&AR96%D<T1I;2 ]("5D7&XB+"!A;&Q4:')E M861S1&EM*3L*"7-Y;F-H<F]N:7IE9" H=&AR96%D3&]C:RD*"7L*"2 ("!I M9" ]($=E=$-U<G)E;G14:')E861)9" I.PH)(" (&9O<B H:6YT(&D /2 P M.R!I(#P 86QL5&AR96%D<T1I;3L :2LK*0H)(" ('L*"0E4:')E860 =" ] M(&%L;%1H<F5A9'-;:5T[" D):68 *'0 )B8 :60 /3T ="YI9"D*"0E[" D) M(" (')E='5R;B!T.PH)"7T*"2 ("!]" E]" EP<FEN=&8H(F1I9&XG="!F M:6YD(&ET7&XB*3L*"6%S<V5R="AR97-U;'0I.PH)<F5T=7)N(')E<W5L=#L* M(" ('T*"B ("!S=&%T:6, 5&AR96%D6UT 9V5T06QL*"D*(" ('L*"7)E M='5R;B!A;&Q4:')E861S6S +BX 86QL5&AR96%D<T1I;5T["B ("!]" H M(" =F]I9"!P875S92 I"B ("![(" " EI9B H<W1A=&4 (3T 5%,N4E5. M3DE.1R!\?"!3=7-P96YD5&AR96%D*&AD;"D /3T ,'A&1D9&1D9&1BD*"2 M("!E<G)O<B B8V%N;F]T('!A=7-E(BD["B ("!]" H (" =F]I9"!R97-U M;64H*0H (" >PH):68 *'-T871E("$](%13+E)53DY)3D< ?'P 4F5S=6UE M5&AR96%D*&AD;"D /3T ,'A&1D9&1D9&1BD*"2 ("!E<G)O<B B8V%N;F]T M(')E<W5M92(I.PH (" ?0H*(" ('-T871I8R!V;VED('!A=7-E06QL*"D* M(#T 9V5T5&AI<R I.PH*"2 ("!F;W( *&EN="!I(#T ,#L :2 \(&%L;%1H M<F5A9'-$:6T[(&DK*RD*"2 ("![(" 5&AR96%D('0[" H)"70 /2!A;&Q4 M:')E861S6VE=.PH*"0EI9B H=" F)B!T("$]/2!T=&AI<R F)B!T+G-T871E M(#T](%13+E)53DY)3D<I" D)(" ('0N<&%U<V4H*3L*"2 ("!]" E]"B M("!]" H (" <W1A=&EC('9O:60 <F5S=6UE06QL*"D*(" ('L*"6EF("AN M.PH*"2 ("!F;W( *&EN="!I(#T ,#L :2 \(&%L;%1H<F5A9'-$:6T[(&DK M*RD*"2 ("![(" 5&AR96%D('0[" H)"70 /2!A;&Q4:')E861S6VE=.PH) M"6EF("AT("8F('0 (3T]('1T:&ES("8F('0N<W1A=&4 /3T 5%,N4E5.3DE. M1RD*"0D (" ="YR97-U;64H*3L*"2 ("!]" E]"B ("!]" H (" <W1A M=&EC('9O:60 >6EE;&0H*0H (" >PH)4VQE97 H,"D["B ("!]"B (" * M(" ('-T871I8R!U:6YT(&YT:')E861S(#T ,3L*"B <')I=F%T93H*"B M("!S=&%T:6, =6EN="!A;&Q4:')E861S1&EM.PH (" <W1A=&EC($]B:F5C M96%D<SL)+R\ ;&5N9W1H(&UA=&-H97, =F%L=64 :6X 0R!R=6YT:6UE" H M(" 5%, <W1A=&4["B ("!I;G0 :61X(#T +3$["0D)+R\ :6YD97 :6YT M;R!A;&Q4:')E861S6UT*"B ("!I;G0 *"IF<"DH=F]I9" J*3L*(" ('9O M:60 *F%R9SL*"B ("!I;G0 9&5L96=A=&4H*2!D9SL*"B ("!V;VED(&5R M<F]R*&-H87);72!M<V<I"B ("![" ET:')O=R!N97< 5&AR96%D17)R;W(H M;7-G*3L*(" ('T*" H (" +RHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ M*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ* H (" ("H 5&AI<R!I<R!J=7-T(&$ M+G)U;B I+ H (" ("HO" H (" 97AT97)N("A7:6YD;W=S*2!S=&%T:6, M=6EN="!T:')E861S=&%R="AV;VED("IP*0H (" >PH)5&AR96%D('0 /2!C M87-T*%1H<F5A9"EP.PH):6YT(')E<W5L=#L*" ED96)U9R H=&AR96%D*2!P M<FEN=&8H(E-T87)T:6YG('1H<F5A9" E9%QN(BP ="YI9' I.PH)="YS=&%C M:T)O='1O;2 ](&]S7W%U97)Y7W-T86-K0F]T=&]M*"D[" ET<GD*"7L*"2 M("!R97-U;'0 /2!T+G)U;B I.PH)?0H)8V%T8V *$]B:F5C="!O*0H)>PH) M(" ('!R:6YT9B B17)R;W(Z("(I.PH)(" (&\N<')I;G0H*3L*"2 ("!R M97-U;'0 /2 Q.PH)?0H*"61E8G5G("AT:')E860I('!R:6YT9B B16YD:6YG M('1H<F5A9" E9%QN(BP ="YI9' I.PH)="YS=&%T92 ](%13+E1%4DU)3D%4 M140[" EA;&Q4:')E861S6W0N:61X72 ](&YU;&P[" ET+FED>" ]("TQ.PH) M;G1H<F5A9',M+3L*"7)E='5R;B!R97-U;'0["B ("!]" H*(" ("\J*BHJ M*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ* H (" ("H 0W)E M871E(&$ 5&AR96%D(&9O<B!G;&]B86P ;6%I;B I+ H (" ("HO" H (" M<W1A=&EC('1H:7,H*0H (" >PH)=&AR96%D3&]C:R ](&YE=R!/8FIE8W0H M*3L*" E4:')E860 =" ](&YE=R!4:')E860H*3L*" ET+G-T871E(#T 5%,N M(" (" ="YS=&%C:T)O='1O;2 ](&]S7W%U97)Y7W-T86-K0F]T=&]M*"D[ M" D*(" (" ("!S>6YC:')O;FEZ960 *'1H<F5A9$QO8VLI" E[" D (" M87-S97)T*"%A;&Q4:')E861S6S!=*3L*"2 ("!A;&Q4:')E861S6S!=(#T M=#L*"2 ("!A;&Q4:')E861S1&EM(#T M"B ("!]" H (" ('-T871I8R!^=&AI<R I('L*(" (" (" ($-L;W-E M2&%N9&QE*&%L;%1H<F5A9'-;,%TN:&1L*3L*(" ("!]"B (" (" (" * M(" ("\J* H (" ("H 4F5T=7)N<R!T:&4 :&%N9&QE(&]F('1H92!C=7)R M96YT('1H<F5A9 H (" ("H 5&AE(')E='5R;F5D('1H<F5A9"!H86YD;&4 M:7, 82!W:6YD;W=S(')E<V]U<F-E(&%N9"!M=7-T(&)E(&5X<&QI8VET;'D* M(" (" J(&-L;W-E9"X*(" (" J+PH (" ('-T871I8R!T:')E861?:&1L M(&=E=$-U<G)E;G14:')E861(86YD;&4H*2!["B (" (" (" *(" (" M(" ('1H<F5A9%]H9&P 8W5R<F5N=%1H<F5A9" ]($=E=$-U<G)E;G14:')E M860H*3L*(" (" (" ('1H<F5A9%]H9&P 86-T=6%L5&AR96%D2&%N9&QE M.PH (" (" (" =&AR96%D7VAD;"!C=7)R96YT4')O8V5S<R ](&-A<W0H M=&AR96%D7VAD;"DM,3L*"B (" (" ("!U:6YT(&%C8V5S<R ](&-A<W0H M=7)R96YT4')O8V5S<RP 8W5R<F5N=%1H<F5A9"P 8W5R<F5N=%!R;V-E<W,L M"B (" (" (" (" (" (" (" (" )F%C='5A;%1H<F5A9$AA;F1L M92P 8V%S="AU:6YT*3 L(%12544L(&%C8V5S<RD[" H (" (" (" <F5T M=7)N(&%C='5A;%1H<F5A9$AA;F1L93L*(" ("!]"GT*" HO*BHJ*BHJ*BHJ M*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ* H *B!$971E M<FUI;F4 (F)O='1O;2( ;V8 <W1A8VL *&%C='5A;&QY('1H92!T;W ;VX M5VEN,S( <WES=&5M<RDN"B J+PH*=F]I9" J;W-?<75E<GE?<W1A8VM";W1T M;VTH*0I["B ("!A<VT*(" ('L*"6YA:V5D"0D).PH);6]V"45!6"Q&4SHT M"3L*"7)E= D)"3L*(" ('T*?0H*?0H*+RH /3T]/3T]/3T]/3T]/3T]/3T] M/3T]/3T]/3T]/3T]/3T ;&EN=7 /3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T] M/3T]/3T]/3T]("HO" IV97)S:6]N("AL:6YU>"D*>PH*:6UP;W)T(&QI;G5X M.PII;7!O<G0 ;&EN=7AE>'1E<FX[" IA;&EA<R!U:6YT('!T:')E861?=#L* M*B!U:6YT+G-I>F4I73L*?0H*<W1R=6-T('-I9V%C=&EO;E]T"GL*(" (%]? M<VEG:&%N9&QE<E]T('-A7VAA;F1L97(["B ("!S:6=S971?="!S85]M87-K M.PH (" :6YT('-A7V9L86=S.PH (" =F]I9" H*G-A7W)E<W1O<F5R*2 I M.PI]" IS=')U8W0 7W!T:')E861?9F%S=&QO8VL*>PH (" :6YT(%]?<W1A M='5S.PH (" :6YT(%]?<W!I;FQO8VL["GT*"G-T<G5C="!S96U?= I["B M("!?<'1H<F5A9%]F87-T;&]C:R!?7W-E;5]L;V-K.PH (" :6YT(%]?<V5M M7W9A;'5E.PH (" =F]I9"H 7U]S96U?=V%I=&EN9SL*?0H*=6YI='1E<W0* M>PH (" 87-S97)T*'-I9W-E=%]T+G-I>F4 (#T M+G-I>F4 /3T ,38I.PI]" IE>'1E<FX *$,I"GL*(" (&EN="!P=&AR96%D M7V-R96%T92AP=&AR96%D7W0J+"!V;VED*BP =F]I9"H *"HI*'9O:60J*2P M=F]I9"HI.PH (" :6YT('!T:')E861?:F]I;BAP=&AR96%D7W0L('9O:60J M*BD["B ("!I;G0 <'1H<F5A9%]K:6QL*'!T:')E861?="P :6YT*3L*(" M('!T:')E861?="!P=&AR96%D7W-E;&8H*3L*(" (&EN="!P=&AR96%D7V5Q M=6%L*'!T:')E861?="P <'1H<F5A9%]T*3L*(" (&EN="!S96U?=V%I="AS M96U?="HI.PH (" :6YT('-E;5]I;FET*'-E;5]T*BP :6YT+"!U:6YT*3L* M(" (&EN="!S96U?<&]S="AS96U?="HI.PH (" :6YT('-C:&5D7WEI96QD M*"D["B ("!I;G0 <VEG9FEL;'-E="AS:6=S971?="HI.PH (" :6YT('-I M9V1E;'-E="AS:6=S971?="HL(&EN="D["B ("!I;G0 <VEG86-T:6]N*&EN M="P <VEG86-T:6]N7W0J+"!S:6=A8W1I;VY?="HI.PH (" :6YT('-I9W-U M<W!E;F0H<VEG<V5T7W0J*3L*?0H*8VQA<W, 5&AR96%D17)R;W( .B!%<G)O M< I["B ("!T:&ES*&-H87);72!S*0H (" >PH)<W5P97(H(E1H<F5A9"!E M<G)O<CH (B!^(',I.PH (" ?0I]" IC;&%S<R!4:')E860*>PH (" =&AI M<R I"B ("!["B ("!]" H (" =&AI<RAI;G0 *"IF<"DH=F]I9" J*2P M=F]I9" J87)G*0H (" >PH)=&AI<RYF<" ](&9P.PH)=&AI<RYA<F< /2!A M<F<["B ("!]" H (" =&AI<RAI;G0 9&5L96=A=&4H*2!D9RD*(" ('L* M"71H:7,N9&< /2!D9SL*(" ('T*"B ("!P=&AR96%D7W0 :60["B ("!V M;VED*B!S=&%C:T)O='1O;3L*(" ('9O:60J('-T86-K5&]P.PH*(" ('9O M:60 <W1A<G0H*0H (" >PH):68 *'-T871E("$](%13+DE.251)04P )B8 M<W1A=&4A/513+E1%4DU)3D%4140I" D (" 97)R;W(H(F%L<F5A9'D <W1A M<G1E9"(I.PH*"7-Y;F-H<F]N:7IE9" H=&AR96%D3&]C:RD*"7L*"2 ("!F M;W( *&EN="!I(#T ,#L ,3L :2LK*0H)(" ('L*"0EI9B H:2 ]/2!A;&Q4 M:')E861S+FQE;F=T:"D*"0D (" 97)R;W(H(G1O;R!M86YY('1H<F5A9',B M*3L*"0EI9B H(6%L;%1H<F5A9'-;:5TI" D)>R (&%L;%1H<F5A9'-;:5T M/2!T:&ES.PH)"2 ("!I9' /2!I.PH)"2 ("!I9B H:2 ^/2!A;&Q4:')E M861S1&EM*0H)"0EA;&Q4:')E861S1&EM(#T M.PH)"7T*"2 ("!]" D (" ;G1H<F5A9',K*SL*"7T*" ES=&%T92 ](%13 M+E)53DY)3D<[" EI;G0 <F5S=6QT.PH)+R]P<FEN=&8H(F-R96%T:6YG('1H M<F5A9"!X)7A<;B(L('1H:7,I.PH)<F5S=6QT(#T <'1H<F5A9%]C<F5A=&4H M)FED+"!N=6QL+" F=&AR96%D<W1A<G0L('1H:7,I.PH):68 *')E<W5L="D* M"7L ("!S=&%T92 ](%13+E1%4DU)3D%4140[" D (" 86QL5&AR96%D<UMI M9'A=(#T ;G5L;#L*"2 ("!I9' /2 M,3L*"2 ("!E<G)O<B B9F%I;&5D M('1O('-T87)T(BD["2\O($)51SH <VAO=6QD(')E<&]R="!E<G)N;PH)?0H) M+R]P<FEN=&8H(G0 /2!X)7 L(&ED(#T )61<;B(L('1H:7,L(&ED*3L*(" M('T*"B ("!I;G0 <G5N*"D*(" ('L*"6EF("AF<"D*"2 ("!R971U<FX M9G H87)G*3L*"65L<V4 :68 *&1G*0H)(" (')E='5R;B!D9R I.PH (" M?0H*(" ('9O:60 =V%I=" I"B ("![" EI9B H=&AI<R ]/3T 9V5T5&AI M<R I*0H)(" (&5R<F]R*")W86ET(&]N('-E;&8B*3L*"6EF("AS=&%T92 ] M/2!44RY254Y.24Y'*0H)>R (&EN="!R97-U;'0[" D (" =F]I9" J=F%L M=64[" H)(" (')E<W5L=" ]('!T:')E861?:F]I;BAI9"P )G9A;'5E*3L* M"2 ("!I9B H<F5S=6QT*0H)"65R<F]R*")F86EL960 =&\ =V%I="(I.PH) M?0H (" ?0H*(" ('9O:60 =V%I="AU:6YT(&UI;&QI<V5C;VYD<RD*(" M('L*"7=A:70H*3L*"2\K(&YO="!I;7!L96UE;G1E9 H):68 *'1H:7, /3T] M(&=E=%1H:7,H*2D*"2 ("!E<G)O<B B=V%I="!O;B!S96QF(BD[" EI9B H M<W1A=&4 /3T 5%,N4E5.3DE.1RD*"7L ("!$5T]21"!D=SL*" D (" 9'< M/2!786ET1F]R4VEN9VQE3V)J96-T*&AD;"P ;6EL;&ES96-O;F1S*3L*"7T* M"2LO"B ("!]" H (" 96YU;2!44PH (" >PH)24Y)5$E!3"P*"5)53DY) M3D<L" E415)-24Y!5$5$"B ("!]" H (" 5%, 9V5T4W1A=&4H*0H (" M>PH)<F5T=7)N('-T871E.PH (" ?0H*(" (&5N=6T 4%))3U))5%D*(" M('T*"B ("!V;VED('-E=%!R:6]R:71Y*%!224]22519(' I"B ("![" DO M*R!N;W0 :6UP;&5M96YT960*"6EN="!N4')I;W)I='D[" H)<W=I=&-H("AP M(#T 5$A214%$7U!224]225197T%"3U9%7TY/4DU!3#L*"0EB<F5A:SL*"2 M("!C87-E(%!224]22519+D1%0U)%05-%. H)"6Y0<FEO<FET>2 ](%1(4D5! M1%]04DE/4DE465]"14Q/5U].3U)-04P[" D)8G)E86L[" D (" 8V%S92!0 M4DE/4DE462Y)1$Q%. H)"6Y0<FEO<FET>2 ](%1(4D5!1%]04DE/4DE465]) M;E!R:6]R:71Y(#T M8G)E86L[" E]" H):68 *%-E=%1H<F5A9%!R:6]R:71Y*&AD;"P ;E!R:6]R M:71Y*2 ]/2!42%)%041?4%))3U))5%E?15)23U)?4D5455).*0H)(" (&5R M<F]R*")S970 <')I;W)I='DB*3L*"2LO"B ("!]" H (" :6YT(&ES4V5L M9B I"B ("![" DO+W!R:6YT9B B:60 /2 E9"P <V5L9B ]("5D7&XB+"!I M9"P <'1H<F5A9%]S96QF*"DI.PH)<F5T=7)N('!T:')E861?97%U86PH<'1H M<F5A9%]S96QF*"DL(&ED*3L*(" ('T*"B ("!S=&%T:6, 5&AR96%D(&=E M=%1H:7,H*0H (" >PH)<'1H<F5A9%]T(&ED.PH)5&AR96%D(')E<W5L=#L* M" DO+W!R:6YT9B B9V5T5&AI<R I+"!A;&Q4:')E861S1&EM(#T )61<;B(L M(&%L;%1H<F5A9'-$:6TI.PH)<WEN8VAR;VYI>F5D("AT:')E861,;V-K*0H) M>PH)(" (&ED(#T <'1H<F5A9%]S96QF*"D[" D (" +R]P<FEN=&8H(FED M(#T )61<;B(L(&ED*3L*"2 ("!F;W( *&EN="!I(#T ,#L :2 \(&%L;%1H M<F5A9'-$:6T[(&DK*RD*"2 ("![" D)5&AR96%D('0 /2!A;&Q4:')E861S M6VE=.PH)"2\O<')I;G1F*")A;&Q4:')E861S6R5D72 ](' E>"P :60 /2 E M9%QN(BP :2P ="P *'0 /R!T+FED(#H ,"DI.PH)"6EF("AT("8F('!T:')E M861?97%U86PH:60L('0N:60I*0H)"7L*"0D (" <F5T=7)N('0[" D)?0H) M(" ('T*"7T*"7!R:6YT9B B9&ED;B=T(&9I;F0 :71<;B(I.PH)87-S97)T M*')E<W5L="D[" ER971U<FX <F5S=6QT.PH (" ?0H*(" ('-T871I8R!4 M:')E861;72!G971!;&PH*0H (" >PH)<F5T=7)N(&%L;%1H<F5A9'-;," N M+B!A;&Q4:')E861S1&EM73L*(" ('T*"B ("!V;VED('!A=7-E*"D*(" M('L*"6EF("AS=&%T92 ]/2!44RY254Y.24Y'*0H)>R (&EN="!R97-U;'0[ M" H)(" (')E<W5L=" ]('!T:')E861?:VEL;"AI9"P 4TE'55-2,2D[" D M(" :68 *')E<W5L="D*"0EE<G)O<B B8V%N;F]T('!A=7-E(BD[" D (" M96QS90H)"7-E;5]W86ET*"9F;&%G4W5S<&5N9"D["2\O('=A:70 9F]R(&%C M:VYO=VQE9&=E;65N= H)?0H)96QS90H)(" (&5R<F]R*")C86YN;W0 <&%U M<V4B*3L*(" ('T*"B ("!V;VED(')E<W5M92 I"B ("![" EI9B H<W1A M=&4 /3T 5%,N4E5.3DE.1RD*"7L ("!I;G0 <F5S=6QT.PH*"2 ("!R97-U M;'0 /2!P=&AR96%D7VMI;&PH:60L(%-)1U534C(I.PH)(" (&EF("AR97-U M;'0I" D)97)R;W(H(F-A;FYO="!R97-U;64B*3L*"7T*"65L<V4*"2 ("!E M<G)O<B B8V%N;F]T(')E<W5M92(I.PH (" ?0H*(" ('-T871I8R!V;VED M5&AR96%D('1T:&ES(#T 9V5T5&AI<R I.PH)(" (&EN="!N<&%U<V4 /2 P M.PH*"2 ("!F;W( *&EN="!I(#T ,#L :2 \(&%L;%1H<F5A9'-$:6T[(&DK M*RD*"2 ("![(" 5&AR96%D('0[" H)"70 /2!A;&Q4:')E861S6VE=.PH) M"6EF("AT("8F('0 (3T]('1T:&ES("8F('0N<W1A=&4 /3T 5%,N4E5.3DE. M1RD*"0E[(" :6YT(')E<W5L=#L*" D)(" (')E<W5L=" ]('!T:')E861? M:VEL;"AT+FED+"!324=54U(Q*3L*"0D (" :68 *')E<W5L="D*"0D)9V5T M5&AI<R I+F5R<F]R*")C86YN;W0 <&%U<V4B*3L*"0D (" 96QS90H)"0EN M<&%U<V4K*SL)+R\ 8V]U;G0 ;V8 <&%U<V5D('1H<F5A9',*"0E]" H)"2\O M(%=A:70 9F]R(&5A8V <&%U<V5D('1H<F5A9"!T;R!A8VMN;W=L961G90H) M"7=H:6QE("AN<&%U<V4M+2D*"0E[" D)(" ('-E;5]W86ET*"9F;&%G4W5S M<&5N9"D[" D)?0H)(" ('T*"7T*(" ('T*"B ("!S=&%T:6, =F]I9"!R M97-U;65!;&PH*0H (" >PH):68 *&YT:')E861S(#X ,2D*"7L*"2 ("!4 M:')E860 ='1H:7, /2!G9714:&ES*"D[" H)(" (&9O<B H:6YT(&D /2 P M.R!I(#P 86QL5&AR96%D<T1I;3L :2LK*0H)(" ('L ("!4:')E860 =#L* M" D)=" ](&%L;%1H<F5A9'-;:5T[" D):68 *'0 )B8 =" A/3T ='1H:7, M)B8 ="YS=&%T92 ]/2!44RY254Y.24Y'*0H)"2 ("!T+G)E<W5M92 I.PH) M(" ('T*"7T*(" ('T*"B ("!S=&%T:6, =F]I9"!Y:65L9" I"B ("![ M" ES8VAE9%]Y:65L9" I.PH (" ?0H*(" ('-T871I8R!U:6YT(&YT:')E M861S(#T ,3L*"B <')I=F%T93H*"B ("!S=&%T:6, =6EN="!A;&Q4:')E M861S1&EM.PH (" <W1A=&EC($]B:F5C="!T:')E861,;V-K.PH (" <W1A M(&%L;%1H<F5A9',["B ("!S=&%T:6, <V5M7W0 9FQA9U-U<W!E;F0[" H M(" 5%, <W1A=&4["B ("!I;G0 :61X(#T +3$["0D)+R\ :6YD97 :6YT M9G I*'9O:60 *BD["B ("!V;VED("IA<F<[" H (" :6YT(&1E;&5G871E M*"D 9&<[" H (" =F]I9"!E<G)O<BAC:&%R6UT ;7-G*0H (" >PH)=&AR M;W< ;F5W(%1H<F5A9$5R<F]R*&US9RD["B ("!]" H*(" ("\J*BHJ*BHJ M*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BH*(" M(" J(%1H:7, :7, :G5S="!A('=R87!P97( =&\ :6YT97)F86-E(&)E='=E M96X 0R!R=&P 86YD(%1H<F5A9"YR=6XH*2X*(" (" J+PH*(" (&5X=&5R M;B H0RD <W1A=&EC('9O:60 *G1H<F5A9'-T87)T*'9O:60 *G I"B ("![ M" E4:')E860 =" ](&-A<W0H5&AR96%D*7 [" EI;G0 <F5S=6QT.PH*"61E M8G5G("AT:')E860I('!R:6YT9B B4W1A<G1I;F< =&AR96%D(' E>" H)60I M7&XB+"!T+"!T+FED>"D[" H)+R\ 3F5E9"!T;R!S970 ="YI9"!H97)E+"!B M96-A=7-E('1H<F5A9"!I<R!O9F8 86YD(')U;FYI;F<*"2\O(&)E9F]R92!P M=&AR96%D7V-R96%T92 I('-E=', :70N" ET+FED(#T <'1H<F5A9%]S96QF M*"D[" H)="YS=&%C:T)O='1O;2 ](&=E=$534" I.PH)=')Y" E[" D (" M<F5S=6QT(#T ="YR=6XH*3L*"7T*"6-A=&-H("A/8FIE8W0 ;RD*"7L*"2 M("!P<FEN=&8H(D5R<F]R.B B*3L*"2 ("!O+G!R:6YT*"D[" D (" <F5S M=6QT(#T ,3L*"7T*" ED96)U9R H=&AR96%D*2!P<FEN=&8H(D5N9&EN9R!T M:')E860 )61<;B(L('0N:61X*3L*"70N<W1A=&4 /2!44RY415)-24Y!5$5$ M.PH)86QL5&AR96%D<UMT+FED>%T /2!N=6QL.PH)="YI9' /2 M,3L*"6YT M:')E861S+2T[" ER971U<FX *'9O:60J*7)E<W5L=#L*(" ('T*" H (" M+RHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ"B (" M"B ("!S=&%T:6, =&AI<R I"B ("![" ET:')E861,;V-K(#T ;F5W($]B M:F5C=" I.PH*"51H<F5A9"!T(#T ;F5W(%1H<F5A9" I.PH*"70N<W1A=&4 M/2!44RY254Y.24Y'.PH)="YI9" ]('!T:')E861?<V5L9B I.PH)="YS=&%C M:T)O='1O;2 ]("AV;VED*BE?7VQI8F-?<W1A8VM?96YD.PH)<WEN8VAR;VYI M>F5D("AT:')E861,;V-K*0H)>PH)(" (&%S<V5R=" A86QL5&AR96%D<ULP M72D[" D (" 86QL5&AR96%D<ULP72 ]('0[" D (" 86QL5&AR96%D<T1I M(&AA;F1L97)S('-O('=E(&-A;B!S=7-P96YD+W)E<W5M92!T:')E861S" D M*B\*" EI;G0 <F5S=6QT.PH)<VEG86-T:6]N7W0 <VEG86-T.PH)<F5S=6QT M(#T <VEG9FEL;'-E=" F<VEG86-T+G-A7VUA<VLI.PH):68 *')E<W5L="D* M"2 ("!G;W1O($QF86EL.PH)<VEG86-T+G-A7VAA;F1L97( /2 F<&%U<V5( M86YD;&5R.PH)<F5S=6QT(#T <VEG86-T:6]N*%-)1U534C$L("9S:6=A8W0L M(&YU;&PI.PH):68 *')E<W5L="D*"2 ("!G;W1O($QF86EL.PH)<VEG86-T M+G-A7VAA;F1L97( /2 F<F5S=6UE2&%N9&QE<CL*"7)E<W5L=" ]('-I9V%C M=&EO;BA324=54U(R+" F<VEG86-T+"!N=6QL*3L*"6EF("AR97-U;'0I" D M(" 9V]T;R!,9F%I;#L*" ER97-U;'0 /2!S96U?:6YI=" F9FQA9U-U<W!E M='5R;CL*"B (" ($QF86EL. H)9V5T5&AI<R I+F5R<F]R*")C86YN;W0 M:6YI=&EA;&EZ92!T:')E861S(BD["B ("!]" H (" +RHJ*BHJ*BHJ*BHJ M*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BH*(" (" J(%1H:7, 9V5T<R!C86QL M960 =VAE;B!A('1H<F5A9"!G971S(%-)1U534C$N"B (" *B\*"B ("!E M>'1E<FX *$,I('-T871I8R!V;VED('!A=7-E2&%N9&QE<BAI;G0 <VEG*0H M(" >PEI;G0 <F5S=6QT.PH*"2\O(%-A=F4 86QL(')E9VES=&5R<R!O;B!T M:&4 <W1A8VL <V\ =&AE>2=L;"!B92!S8V%N;F5D(&)Y('1H92!'0PH)87-M M" E[" D (" <'5S:&$).PH)?0H*"6%S<V5R="AS:6< /3T 4TE'55-2,2D[ M" ES96U?<&]S=" F9FQA9U-U<W!E;F0I.PH*"7-I9W-E=%]T('-I9VUA<VL[ M" ER97-U;'0 /2!S:6=F:6QL<V5T*"9S:6=M87-K*3L*"6%S<V5R="AR97-U M;'0 /3T ,"D[" ER97-U;'0 /2!S:6=D96QS970H)G-I9VUA<VLL(%-)1U53 M4C(I.PH)87-S97)T*')E<W5L=" ]/2 P*3L*" E4:')E860 =" ](&=E=%1H M:7,H*3L*"70N<W1A8VM4;W /2!G971%4U H*3L*"70N9FQA9W, )CT ?C$[ M" EW:&EL92 H,2D*"7L*"2 ("!S:6=S=7-P96YD*"9S:6=M87-K*3L)+R\ M<W5S<&5N9"!U;G1I;"!324=54U(R" D (" :68 *'0N9FQA9W, )B Q*0D) M+R\ 96YS=7)E(&ET('=A<R!R97-U;65(86YD;&5R*"D*"0EB<F5A:SL*"7T* M" DO+R!297-T;W)E(&%L;"!R96=I<W1E<G,*"6%S;0H)>PH)(" ('!O<&$) M.PH)?0H (" ?0H*(" ("\J*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ M*BHJ*BHJ"B (" *B!4:&ES(&=E=', 8V%L;&5D('=H96X 82!T:')E860 M=F]I9"!R97-U;65(86YD;&5R*&EN="!S:6<I"B ("![" E4:')E860 =" ] M('9O:60J(&=E=$534" I"B ("![" EA<VT*"7L ("!N86ME9 D[" D (" J;6]V($5!6"Q%4U ).PH)(" (')E= D).PH)?0H (" ?0I]" H*?0H* ` end
Sep 29 2003
parent jhe <jhe_member pathlink.com> writes:
My pleasure, I am going to start working on some refinements to the threading
model so I will make sure to keep you in the loop.

Justin

In article <bl9l7q$67q$1 digitaldaemon.com>, dickl says...
Great find !
I've installed your code and things seem to be working just fine (and put
the gc code back to its orginal form)

I've also made a small modification to the thread code to allow threads
which have completed
to be restarted.
    In start()
        if (state != TS.INITIAL)
   becomes
        if (state != TS.INITIAL && state != TS.TERMINATED)

I've come to the conclusion that it is too dangerious to add a killThread
rountine with all the
locking that goes on with the gc routines.

I think thats about it for the thread issues

tnx for your help Justin

<jhenzie mac.com> wrote in message news:bl2enp$2mcg$1 digitaldaemon.com...
 Attached is the version(windows) fix for the deadlocking problem. It seems
to
 work as expected but I would apprciate review.

 Cheers

 Justin
begin 666 thread.d M4FEG:'1S(%)E<V5R=F5D"B\O('=R:71T96X 8GD 5V%L=&5R($)R:6=H= HO M+R!W=W<N9&EG:71A;&UA<G,N8V]M" HO+V1E8G5G/71H<F5A9#L*"B\J(#T] M/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T](%=I;C,R(#T]/3T]/3T] M/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/2 J+PH*=F5R<VEO;B H5VEN,S(I M"GL*"FEM<&]R="!W:6YD;W=S.PH*97AT97)N("A7:6YD;W=S*2!A;&EA<R!U M:6YT(" J<W1D9G I*'9O:60 *BD[" IE>'1E<FX *$,I"B ("!T:')E861? M:&1L(%]B96=I;G1H<F5A9&5X*'9O:60J('-E8W5R:71Y+"!U:6YT('-T86-K M7W-I>F4L" ES=&1F<"!S=&%R=%]A9&1R+"!V;VED*B!A<F=L:7-T+"!U:6YT M(&EN:71F;&%G+ H)=&AR96%D7VED*B!T:')D861D<BD[" H*+R\ 5&AI<R!I M<R!E<75I=F%L96YT('1O(&$ 2$%.1$Q%(&9R;VT =VEN9&]W<RYD"F%L:6%S M($A!3D1,12!T:')E861?:&1L.PH*86QI87, =6EN="!T:')E861?:60[" IC M;&%S<R!4:')E861%<G)O<B Z($5R<F]R"GL*(" ('1H:7,H8VAA<EM=(',I M"B ("![" ES=7!E<B B5&AR96%D(&5R<F]R.B B('X <RD["B ("!]"GT* M"F-L87-S(%1H<F5A9 I["B ("!T:&ES*"D*(" ('L*(" ('T*"B ("!T M:&ES*&EN=" H*F9P*2AV;VED("HI+"!V;VED("IA<F<I"B ("![" ET:&ES M+F9P(#T 9G [" ET:&ES+F%R9R ](&%R9SL*(" ('T*"B ("!T:&ES*&EN M="!D96QE9V%T92 I(&1G*0H (" >PH)=&AI<RYD9R ](&1G.PH (" ?0H* M(" ('1H<F5A9%]H9&P :&1L.PH (" =&AR96%D7VED(&ED.PH (" =F]I M9"H <W1A8VM";W1T;VT[" H (" =F]I9"!S=&%R=" I"B ("![" EI9B H M<W1A=&4 (3T 5%,N24Y)5$E!3" F)B!S=&%T92$]5%,N5$5234E.051%1"D* M"2 ("!E<G)O<B B86QR96%D>2!S=&%R=&5D(BD[" H)<WEN8VAR;VYI>F5D M("AT:')E861,;V-K*0H)>PH)(" (&9O<B H:6YT(&D /2 P.R Q.R!I*RLI M" D (" >PH)"6EF("AI(#T](&%L;%1H<F5A9',N;&5N9W1H*0H)"2 ("!E M<G)O<B B=&]O(&UA;GD =&AR96%D<R(I.PH)"6EF(" A86QL5&AR96%D<UMI M72D*"0E[(" 86QL5&AR96%D<UMI72 ]('1H:7,[" D)(" (&ED>" ](&D[ M" D)(" (&EF("AI(#X](&%L;%1H<F5A9'-$:6TI" D)"6%L;%1H<F5A9'-$ M:6T /2!I("L ,3L*"0D (" 8G)E86L[" D)?0H)(" ('T*"2 ("!N=&AR M96%D<RLK.PH)?0H*"7-T871E(#T 5%,N4E5.3DE.1SL*"6AD;" ](%]B96=I M*3L*"6EF("AH9&P /3T 8V%S="AT:')E861?:&1L*3 I" E[(" <W1A=&4 M/2!44RY415)-24Y!5$5$.PH)(" (&%L;%1H<F5A9'-;:61X72 ](&YU;&P[ M" D (" :61X(#T +3$[" D (" 97)R;W(H(F9A:6QE9"!T;R!S=&%R="(I M.PH)?0H (" ?0H*(" (&EN="!R=6XH*0H (" >PH):68 *&9P*0H)(" M(')E='5R;B!F<"AA<F<I.PH)96QS92!I9B H9&<I" D (" <F5T=7)N(&1G M*"D["B ("!]" H (" =F]I9"!W86ET*"D*(" ('L*"6EF("AT:&ES(#T] M/2!G9714:&ES*"DI" D (" 97)R;W(H(G=A:70 ;VX <V5L9B(I.PH):68 M*'-T871E(#T](%13+E)53DY)3D<I" E[(" 1%=/4D0 9'<[" H)(" (&1W M(#T M(" ?0H*(" ('9O:60 =V%I="AU:6YT(&UI;&QI<V5C;VYD<RD*(" ('L* M"6EF("AT:&ES(#T]/2!G9714:&ES*"DI" D (" 97)R;W(H(G=A:70 ;VX M<V5L9B(I.PH):68 *'-T871E(#T](%13+E)53DY)3D<I" E[(" 1%=/4D0 M9'<[" H)(" (&1W(#T 5V%I=$9O<E-I;F=L94]B:F5C="AH9&PL(&UI;&QI M<V5C;VYD<RD[" E]"B ("!]" H (" 96YU;2!44PH (" >PH)24Y)5$E! M3"P*"5)53DY)3D<L" E415)-24Y!5$5$"B ("!]" H (" 5%, 9V5T4W1A M=&4H*0H (" >PH)<F5T=7)N('-T871E.PH (" ?0H*(" (&5N=6T 4%)) M"B ("![" EI;G0 ;E!R:6]R:71Y.PH*"7-W:71C:" H<"D*"7L*"2 ("!C M87-E(%!224]22519+DE.0U)%05-%. H)"6Y0<FEO<FET>2 ](%1(4D5!1%]0 M4DE/4DE465]!0D]615].3U)-04P[" D)8G)E86L[" D (" 8V%S92!04DE/ M4DE462Y$14-214%313H*"0EN4')I;W)I='D /2!42%)%041?4%))3U))5%E? M0D5,3U=?3D]234%,.PH)"6)R96%K.PH)(" (&-A<V4 4%))3U))5%DN241, M13H*"0EN4')I;W)I='D /2!42%)%041?4%))3U))5%E?241,13L*"0EB<F5A M:SL*"2 ("!C87-E(%!224]22519+D-2251)0T%,. H)"6Y0<FEO<FET>2 ] M(%1(4D5!1%]04DE/4DE465]424U%7T-2251)0T%,.PH)"6)R96%K.PH)?0H* M"6EF("A39714:')E8610<FEO<FET>2AH9&PL(&Y0<FEO<FET>2D /3T 5$A2 M14%$7U!224]225197T524D]27U)%5%523BD*"2 ("!E<G)O<B B<V5T('!R M:6]R:71Y(BD["B ("!]" H (" <W1A=&EC(%1H<F5A9"!G9714:&ES*"D* M(" ('L*"71H<F5A9%]I9"!I9#L*"51H<F5A9"!R97-U;'0[" H)+R]P<FEN M=&8H(F=E=%1H:7,H*2P 86QL5&AR96%D<T1I;2 ]("5D7&XB+"!A;&Q4:')E M861S1&EM*3L*"7-Y;F-H<F]N:7IE9" H=&AR96%D3&]C:RD*"7L*"2 ("!I M9" ]($=E=$-U<G)E;G14:')E861)9" I.PH)(" (&9O<B H:6YT(&D /2 P M.R!I(#P 86QL5&AR96%D<T1I;3L :2LK*0H)(" ('L*"0E4:')E860 =" ] M(&%L;%1H<F5A9'-;:5T[" D):68 *'0 )B8 :60 /3T ="YI9"D*"0E[" D) M(" (')E='5R;B!T.PH)"7T*"2 ("!]" E]" EP<FEN=&8H(F1I9&XG="!F M:6YD(&ET7&XB*3L*"6%S<V5R="AR97-U;'0I.PH)<F5T=7)N(')E<W5L=#L* M(" ('T*"B ("!S=&%T:6, 5&AR96%D6UT 9V5T06QL*"D*(" ('L*"7)E M='5R;B!A;&Q4:')E861S6S +BX 86QL5&AR96%D<T1I;5T["B ("!]" H M(" =F]I9"!P875S92 I"B ("![(" " EI9B H<W1A=&4 (3T 5%,N4E5. M3DE.1R!\?"!3=7-P96YD5&AR96%D*&AD;"D /3T ,'A&1D9&1D9&1BD*"2 M("!E<G)O<B B8V%N;F]T('!A=7-E(BD["B ("!]" H (" =F]I9"!R97-U M;64H*0H (" >PH):68 *'-T871E("$](%13+E)53DY)3D< ?'P 4F5S=6UE M5&AR96%D*&AD;"D /3T ,'A&1D9&1D9&1BD*"2 ("!E<G)O<B B8V%N;F]T M(')E<W5M92(I.PH (" ?0H*(" ('-T871I8R!V;VED('!A=7-E06QL*"D* M(#T 9V5T5&AI<R I.PH*"2 ("!F;W( *&EN="!I(#T ,#L :2 \(&%L;%1H M<F5A9'-$:6T[(&DK*RD*"2 ("![(" 5&AR96%D('0[" H)"70 /2!A;&Q4 M:')E861S6VE=.PH*"0EI9B H=" F)B!T("$]/2!T=&AI<R F)B!T+G-T871E M(#T](%13+E)53DY)3D<I" D)(" ('0N<&%U<V4H*3L*"2 ("!]" E]"B M("!]" H (" <W1A=&EC('9O:60 <F5S=6UE06QL*"D*(" ('L*"6EF("AN M.PH*"2 ("!F;W( *&EN="!I(#T ,#L :2 \(&%L;%1H<F5A9'-$:6T[(&DK M*RD*"2 ("![(" 5&AR96%D('0[" H)"70 /2!A;&Q4:')E861S6VE=.PH) M"6EF("AT("8F('0 (3T]('1T:&ES("8F('0N<W1A=&4 /3T 5%,N4E5.3DE. M1RD*"0D (" ="YR97-U;64H*3L*"2 ("!]" E]"B ("!]" H (" <W1A M=&EC('9O:60 >6EE;&0H*0H (" >PH)4VQE97 H,"D["B ("!]"B (" * M(" ('-T871I8R!U:6YT(&YT:')E861S(#T ,3L*"B <')I=F%T93H*"B M("!S=&%T:6, =6EN="!A;&Q4:')E861S1&EM.PH (" <W1A=&EC($]B:F5C M96%D<SL)+R\ ;&5N9W1H(&UA=&-H97, =F%L=64 :6X 0R!R=6YT:6UE" H M(" 5%, <W1A=&4["B ("!I;G0 :61X(#T +3$["0D)+R\ :6YD97 :6YT M;R!A;&Q4:')E861S6UT*"B ("!I;G0 *"IF<"DH=F]I9" J*3L*(" ('9O M:60 *F%R9SL*"B ("!I;G0 9&5L96=A=&4H*2!D9SL*"B ("!V;VED(&5R M<F]R*&-H87);72!M<V<I"B ("![" ET:')O=R!N97< 5&AR96%D17)R;W(H M;7-G*3L*(" ('T*" H (" +RHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ M*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ* H (" ("H 5&AI<R!I<R!J=7-T(&$ M+G)U;B I+ H (" ("HO" H (" 97AT97)N("A7:6YD;W=S*2!S=&%T:6, M=6EN="!T:')E861S=&%R="AV;VED("IP*0H (" >PH)5&AR96%D('0 /2!C M87-T*%1H<F5A9"EP.PH):6YT(')E<W5L=#L*" ED96)U9R H=&AR96%D*2!P M<FEN=&8H(E-T87)T:6YG('1H<F5A9" E9%QN(BP ="YI9' I.PH)="YS=&%C M:T)O='1O;2 ](&]S7W%U97)Y7W-T86-K0F]T=&]M*"D[" ET<GD*"7L*"2 M("!R97-U;'0 /2!T+G)U;B I.PH)?0H)8V%T8V *$]B:F5C="!O*0H)>PH) M(" ('!R:6YT9B B17)R;W(Z("(I.PH)(" (&\N<')I;G0H*3L*"2 ("!R M97-U;'0 /2 Q.PH)?0H*"61E8G5G("AT:')E860I('!R:6YT9B B16YD:6YG M('1H<F5A9" E9%QN(BP ="YI9' I.PH)="YS=&%T92 ](%13+E1%4DU)3D%4 M140[" EA;&Q4:')E861S6W0N:61X72 ](&YU;&P[" ET+FED>" ]("TQ.PH) M;G1H<F5A9',M+3L*"7)E='5R;B!R97-U;'0["B ("!]" H*(" ("\J*BHJ M*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ* H (" ("H 0W)E M871E(&$ 5&AR96%D(&9O<B!G;&]B86P ;6%I;B I+ H (" ("HO" H (" M<W1A=&EC('1H:7,H*0H (" >PH)=&AR96%D3&]C:R ](&YE=R!/8FIE8W0H M*3L*" E4:')E860 =" ](&YE=R!4:')E860H*3L*" ET+G-T871E(#T 5%,N M(" (" ="YS=&%C:T)O='1O;2 ](&]S7W%U97)Y7W-T86-K0F]T=&]M*"D[ M" D*(" (" ("!S>6YC:')O;FEZ960 *'1H<F5A9$QO8VLI" E[" D (" M87-S97)T*"%A;&Q4:')E861S6S!=*3L*"2 ("!A;&Q4:')E861S6S!=(#T M=#L*"2 ("!A;&Q4:')E861S1&EM(#T M"B ("!]" H (" ('-T871I8R!^=&AI<R I('L*(" (" (" ($-L;W-E M2&%N9&QE*&%L;%1H<F5A9'-;,%TN:&1L*3L*(" ("!]"B (" (" (" * M(" ("\J* H (" ("H 4F5T=7)N<R!T:&4 :&%N9&QE(&]F('1H92!C=7)R M96YT('1H<F5A9 H (" ("H 5&AE(')E='5R;F5D('1H<F5A9"!H86YD;&4 M:7, 82!W:6YD;W=S(')E<V]U<F-E(&%N9"!M=7-T(&)E(&5X<&QI8VET;'D* M(" (" J(&-L;W-E9"X*(" (" J+PH (" ('-T871I8R!T:')E861?:&1L M(&=E=$-U<G)E;G14:')E861(86YD;&4H*2!["B (" (" (" *(" (" M(" ('1H<F5A9%]H9&P 8W5R<F5N=%1H<F5A9" ]($=E=$-U<G)E;G14:')E M860H*3L*(" (" (" ('1H<F5A9%]H9&P 86-T=6%L5&AR96%D2&%N9&QE M.PH (" (" (" =&AR96%D7VAD;"!C=7)R96YT4')O8V5S<R ](&-A<W0H M=&AR96%D7VAD;"DM,3L*"B (" (" ("!U:6YT(&%C8V5S<R ](&-A<W0H M=7)R96YT4')O8V5S<RP 8W5R<F5N=%1H<F5A9"P 8W5R<F5N=%!R;V-E<W,L M"B (" (" (" (" (" (" (" (" )F%C='5A;%1H<F5A9$AA;F1L M92P 8V%S="AU:6YT*3 L(%12544L(&%C8V5S<RD[" H (" (" (" <F5T M=7)N(&%C='5A;%1H<F5A9$AA;F1L93L*(" ("!]"GT*" HO*BHJ*BHJ*BHJ M*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ* H *B!$971E M<FUI;F4 (F)O='1O;2( ;V8 <W1A8VL *&%C='5A;&QY('1H92!T;W ;VX M5VEN,S( <WES=&5M<RDN"B J+PH*=F]I9" J;W-?<75E<GE?<W1A8VM";W1T M;VTH*0I["B ("!A<VT*(" ('L*"6YA:V5D"0D).PH);6]V"45!6"Q&4SHT M"3L*"7)E= D)"3L*(" ('T*?0H*?0H*+RH /3T]/3T]/3T]/3T]/3T]/3T] M/3T]/3T]/3T]/3T]/3T ;&EN=7 /3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T] M/3T]/3T]/3T]("HO" IV97)S:6]N("AL:6YU>"D*>PH*:6UP;W)T(&QI;G5X M.PII;7!O<G0 ;&EN=7AE>'1E<FX[" IA;&EA<R!U:6YT('!T:')E861?=#L* M*B!U:6YT+G-I>F4I73L*?0H*<W1R=6-T('-I9V%C=&EO;E]T"GL*(" (%]? M<VEG:&%N9&QE<E]T('-A7VAA;F1L97(["B ("!S:6=S971?="!S85]M87-K M.PH (" :6YT('-A7V9L86=S.PH (" =F]I9" H*G-A7W)E<W1O<F5R*2 I M.PI]" IS=')U8W0 7W!T:')E861?9F%S=&QO8VL*>PH (" :6YT(%]?<W1A M='5S.PH (" :6YT(%]?<W!I;FQO8VL["GT*"G-T<G5C="!S96U?= I["B M("!?<'1H<F5A9%]F87-T;&]C:R!?7W-E;5]L;V-K.PH (" :6YT(%]?<V5M M7W9A;'5E.PH (" =F]I9"H 7U]S96U?=V%I=&EN9SL*?0H*=6YI='1E<W0* M>PH (" 87-S97)T*'-I9W-E=%]T+G-I>F4 (#T M+G-I>F4 /3T ,38I.PI]" IE>'1E<FX *$,I"GL*(" (&EN="!P=&AR96%D M7V-R96%T92AP=&AR96%D7W0J+"!V;VED*BP =F]I9"H *"HI*'9O:60J*2P M=F]I9"HI.PH (" :6YT('!T:')E861?:F]I;BAP=&AR96%D7W0L('9O:60J M*BD["B ("!I;G0 <'1H<F5A9%]K:6QL*'!T:')E861?="P :6YT*3L*(" M('!T:')E861?="!P=&AR96%D7W-E;&8H*3L*(" (&EN="!P=&AR96%D7V5Q M=6%L*'!T:')E861?="P <'1H<F5A9%]T*3L*(" (&EN="!S96U?=V%I="AS M96U?="HI.PH (" :6YT('-E;5]I;FET*'-E;5]T*BP :6YT+"!U:6YT*3L* M(" (&EN="!S96U?<&]S="AS96U?="HI.PH (" :6YT('-C:&5D7WEI96QD M*"D["B ("!I;G0 <VEG9FEL;'-E="AS:6=S971?="HI.PH (" :6YT('-I M9V1E;'-E="AS:6=S971?="HL(&EN="D["B ("!I;G0 <VEG86-T:6]N*&EN M="P <VEG86-T:6]N7W0J+"!S:6=A8W1I;VY?="HI.PH (" :6YT('-I9W-U M<W!E;F0H<VEG<V5T7W0J*3L*?0H*8VQA<W, 5&AR96%D17)R;W( .B!%<G)O M< I["B ("!T:&ES*&-H87);72!S*0H (" >PH)<W5P97(H(E1H<F5A9"!E M<G)O<CH (B!^(',I.PH (" ?0I]" IC;&%S<R!4:')E860*>PH (" =&AI M<R I"B ("!["B ("!]" H (" =&AI<RAI;G0 *"IF<"DH=F]I9" J*2P M=F]I9" J87)G*0H (" >PH)=&AI<RYF<" ](&9P.PH)=&AI<RYA<F< /2!A M<F<["B ("!]" H (" =&AI<RAI;G0 9&5L96=A=&4H*2!D9RD*(" ('L* M"71H:7,N9&< /2!D9SL*(" ('T*"B ("!P=&AR96%D7W0 :60["B ("!V M;VED*B!S=&%C:T)O='1O;3L*(" ('9O:60J('-T86-K5&]P.PH*(" ('9O M:60 <W1A<G0H*0H (" >PH):68 *'-T871E("$](%13+DE.251)04P )B8 M<W1A=&4A/513+E1%4DU)3D%4140I" D (" 97)R;W(H(F%L<F5A9'D <W1A M<G1E9"(I.PH*"7-Y;F-H<F]N:7IE9" H=&AR96%D3&]C:RD*"7L*"2 ("!F M;W( *&EN="!I(#T ,#L ,3L :2LK*0H)(" ('L*"0EI9B H:2 ]/2!A;&Q4 M:')E861S+FQE;F=T:"D*"0D (" 97)R;W(H(G1O;R!M86YY('1H<F5A9',B M*3L*"0EI9B H(6%L;%1H<F5A9'-;:5TI" D)>R (&%L;%1H<F5A9'-;:5T M/2!T:&ES.PH)"2 ("!I9' /2!I.PH)"2 ("!I9B H:2 ^/2!A;&Q4:')E M861S1&EM*0H)"0EA;&Q4:')E861S1&EM(#T M.PH)"7T*"2 ("!]" D (" ;G1H<F5A9',K*SL*"7T*" ES=&%T92 ](%13 M+E)53DY)3D<[" EI;G0 <F5S=6QT.PH)+R]P<FEN=&8H(F-R96%T:6YG('1H M<F5A9"!X)7A<;B(L('1H:7,I.PH)<F5S=6QT(#T <'1H<F5A9%]C<F5A=&4H M)FED+"!N=6QL+" F=&AR96%D<W1A<G0L('1H:7,I.PH):68 *')E<W5L="D* M"7L ("!S=&%T92 ](%13+E1%4DU)3D%4140[" D (" 86QL5&AR96%D<UMI M9'A=(#T ;G5L;#L*"2 ("!I9' /2 M,3L*"2 ("!E<G)O<B B9F%I;&5D M('1O('-T87)T(BD["2\O($)51SH <VAO=6QD(')E<&]R="!E<G)N;PH)?0H) M+R]P<FEN=&8H(G0 /2!X)7 L(&ED(#T )61<;B(L('1H:7,L(&ED*3L*(" M('T*"B ("!I;G0 <G5N*"D*(" ('L*"6EF("AF<"D*"2 ("!R971U<FX M9G H87)G*3L*"65L<V4 :68 *&1G*0H)(" (')E='5R;B!D9R I.PH (" M?0H*(" ('9O:60 =V%I=" I"B ("![" EI9B H=&AI<R ]/3T 9V5T5&AI M<R I*0H)(" (&5R<F]R*")W86ET(&]N('-E;&8B*3L*"6EF("AS=&%T92 ] M/2!44RY254Y.24Y'*0H)>R (&EN="!R97-U;'0[" D (" =F]I9" J=F%L M=64[" H)(" (')E<W5L=" ]('!T:')E861?:F]I;BAI9"P )G9A;'5E*3L* M"2 ("!I9B H<F5S=6QT*0H)"65R<F]R*")F86EL960 =&\ =V%I="(I.PH) M?0H (" ?0H*(" ('9O:60 =V%I="AU:6YT(&UI;&QI<V5C;VYD<RD*(" M('L*"7=A:70H*3L*"2\K(&YO="!I;7!L96UE;G1E9 H):68 *'1H:7, /3T] M(&=E=%1H:7,H*2D*"2 ("!E<G)O<B B=V%I="!O;B!S96QF(BD[" EI9B H M<W1A=&4 /3T 5%,N4E5.3DE.1RD*"7L ("!$5T]21"!D=SL*" D (" 9'< M/2!786ET1F]R4VEN9VQE3V)J96-T*&AD;"P ;6EL;&ES96-O;F1S*3L*"7T* M"2LO"B ("!]" H (" 96YU;2!44PH (" >PH)24Y)5$E!3"P*"5)53DY) M3D<L" E415)-24Y!5$5$"B ("!]" H (" 5%, 9V5T4W1A=&4H*0H (" M>PH)<F5T=7)N('-T871E.PH (" ?0H*(" (&5N=6T 4%))3U))5%D*(" M('T*"B ("!V;VED('-E=%!R:6]R:71Y*%!224]22519(' I"B ("![" DO M*R!N;W0 :6UP;&5M96YT960*"6EN="!N4')I;W)I='D[" H)<W=I=&-H("AP M(#T 5$A214%$7U!224]225197T%"3U9%7TY/4DU!3#L*"0EB<F5A:SL*"2 M("!C87-E(%!224]22519+D1%0U)%05-%. H)"6Y0<FEO<FET>2 ](%1(4D5! M1%]04DE/4DE465]"14Q/5U].3U)-04P[" D)8G)E86L[" D (" 8V%S92!0 M4DE/4DE462Y)1$Q%. H)"6Y0<FEO<FET>2 ](%1(4D5!1%]04DE/4DE465]) M;E!R:6]R:71Y(#T M8G)E86L[" E]" H):68 *%-E=%1H<F5A9%!R:6]R:71Y*&AD;"P ;E!R:6]R M:71Y*2 ]/2!42%)%041?4%))3U))5%E?15)23U)?4D5455).*0H)(" (&5R M<F]R*")S970 <')I;W)I='DB*3L*"2LO"B ("!]" H (" :6YT(&ES4V5L M9B I"B ("![" DO+W!R:6YT9B B:60 /2 E9"P <V5L9B ]("5D7&XB+"!I M9"P <'1H<F5A9%]S96QF*"DI.PH)<F5T=7)N('!T:')E861?97%U86PH<'1H M<F5A9%]S96QF*"DL(&ED*3L*(" ('T*"B ("!S=&%T:6, 5&AR96%D(&=E M=%1H:7,H*0H (" >PH)<'1H<F5A9%]T(&ED.PH)5&AR96%D(')E<W5L=#L* M" DO+W!R:6YT9B B9V5T5&AI<R I+"!A;&Q4:')E861S1&EM(#T )61<;B(L M(&%L;%1H<F5A9'-$:6TI.PH)<WEN8VAR;VYI>F5D("AT:')E861,;V-K*0H) M>PH)(" (&ED(#T <'1H<F5A9%]S96QF*"D[" D (" +R]P<FEN=&8H(FED M(#T )61<;B(L(&ED*3L*"2 ("!F;W( *&EN="!I(#T ,#L :2 \(&%L;%1H M<F5A9'-$:6T[(&DK*RD*"2 ("![" D)5&AR96%D('0 /2!A;&Q4:')E861S M6VE=.PH)"2\O<')I;G1F*")A;&Q4:')E861S6R5D72 ](' E>"P :60 /2 E M9%QN(BP :2P ="P *'0 /R!T+FED(#H ,"DI.PH)"6EF("AT("8F('!T:')E M861?97%U86PH:60L('0N:60I*0H)"7L*"0D (" <F5T=7)N('0[" D)?0H) M(" ('T*"7T*"7!R:6YT9B B9&ED;B=T(&9I;F0 :71<;B(I.PH)87-S97)T M*')E<W5L="D[" ER971U<FX <F5S=6QT.PH (" ?0H*(" ('-T871I8R!4 M:')E861;72!G971!;&PH*0H (" >PH)<F5T=7)N(&%L;%1H<F5A9'-;," N M+B!A;&Q4:')E861S1&EM73L*(" ('T*"B ("!V;VED('!A=7-E*"D*(" M('L*"6EF("AS=&%T92 ]/2!44RY254Y.24Y'*0H)>R (&EN="!R97-U;'0[ M" H)(" (')E<W5L=" ]('!T:')E861?:VEL;"AI9"P 4TE'55-2,2D[" D M(" :68 *')E<W5L="D*"0EE<G)O<B B8V%N;F]T('!A=7-E(BD[" D (" M96QS90H)"7-E;5]W86ET*"9F;&%G4W5S<&5N9"D["2\O('=A:70 9F]R(&%C M:VYO=VQE9&=E;65N= H)?0H)96QS90H)(" (&5R<F]R*")C86YN;W0 <&%U M<V4B*3L*(" ('T*"B ("!V;VED(')E<W5M92 I"B ("![" EI9B H<W1A M=&4 /3T 5%,N4E5.3DE.1RD*"7L ("!I;G0 <F5S=6QT.PH*"2 ("!R97-U M;'0 /2!P=&AR96%D7VMI;&PH:60L(%-)1U534C(I.PH)(" (&EF("AR97-U M;'0I" D)97)R;W(H(F-A;FYO="!R97-U;64B*3L*"7T*"65L<V4*"2 ("!E M<G)O<B B8V%N;F]T(')E<W5M92(I.PH (" ?0H*(" ('-T871I8R!V;VED M5&AR96%D('1T:&ES(#T 9V5T5&AI<R I.PH)(" (&EN="!N<&%U<V4 /2 P M.PH*"2 ("!F;W( *&EN="!I(#T ,#L :2 \(&%L;%1H<F5A9'-$:6T[(&DK M*RD*"2 ("![(" 5&AR96%D('0[" H)"70 /2!A;&Q4:')E861S6VE=.PH) M"6EF("AT("8F('0 (3T]('1T:&ES("8F('0N<W1A=&4 /3T 5%,N4E5.3DE. M1RD*"0E[(" :6YT(')E<W5L=#L*" D)(" (')E<W5L=" ]('!T:')E861? M:VEL;"AT+FED+"!324=54U(Q*3L*"0D (" :68 *')E<W5L="D*"0D)9V5T M5&AI<R I+F5R<F]R*")C86YN;W0 <&%U<V4B*3L*"0D (" 96QS90H)"0EN M<&%U<V4K*SL)+R\ 8V]U;G0 ;V8 <&%U<V5D('1H<F5A9',*"0E]" H)"2\O M(%=A:70 9F]R(&5A8V <&%U<V5D('1H<F5A9"!T;R!A8VMN;W=L961G90H) M"7=H:6QE("AN<&%U<V4M+2D*"0E[" D)(" ('-E;5]W86ET*"9F;&%G4W5S M<&5N9"D[" D)?0H)(" ('T*"7T*(" ('T*"B ("!S=&%T:6, =F]I9"!R M97-U;65!;&PH*0H (" >PH):68 *&YT:')E861S(#X ,2D*"7L*"2 ("!4 M:')E860 ='1H:7, /2!G9714:&ES*"D[" H)(" (&9O<B H:6YT(&D /2 P M.R!I(#P 86QL5&AR96%D<T1I;3L :2LK*0H)(" ('L ("!4:')E860 =#L* M" D)=" ](&%L;%1H<F5A9'-;:5T[" D):68 *'0 )B8 =" A/3T ='1H:7, M)B8 ="YS=&%T92 ]/2!44RY254Y.24Y'*0H)"2 ("!T+G)E<W5M92 I.PH) M(" ('T*"7T*(" ('T*"B ("!S=&%T:6, =F]I9"!Y:65L9" I"B ("![ M" ES8VAE9%]Y:65L9" I.PH (" ?0H*(" ('-T871I8R!U:6YT(&YT:')E M861S(#T ,3L*"B <')I=F%T93H*"B ("!S=&%T:6, =6EN="!A;&Q4:')E M861S1&EM.PH (" <W1A=&EC($]B:F5C="!T:')E861,;V-K.PH (" <W1A M(&%L;%1H<F5A9',["B ("!S=&%T:6, <V5M7W0 9FQA9U-U<W!E;F0[" H M(" 5%, <W1A=&4["B ("!I;G0 :61X(#T +3$["0D)+R\ :6YD97 :6YT M9G I*'9O:60 *BD["B ("!V;VED("IA<F<[" H (" :6YT(&1E;&5G871E M*"D 9&<[" H (" =F]I9"!E<G)O<BAC:&%R6UT ;7-G*0H (" >PH)=&AR M;W< ;F5W(%1H<F5A9$5R<F]R*&US9RD["B ("!]" H*(" ("\J*BHJ*BHJ M*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BH*(" M(" J(%1H:7, :7, :G5S="!A('=R87!P97( =&\ :6YT97)F86-E(&)E='=E M96X 0R!R=&P 86YD(%1H<F5A9"YR=6XH*2X*(" (" J+PH*(" (&5X=&5R M;B H0RD <W1A=&EC('9O:60 *G1H<F5A9'-T87)T*'9O:60 *G I"B ("![ M" E4:')E860 =" ](&-A<W0H5&AR96%D*7 [" EI;G0 <F5S=6QT.PH*"61E M8G5G("AT:')E860I('!R:6YT9B B4W1A<G1I;F< =&AR96%D(' E>" H)60I M7&XB+"!T+"!T+FED>"D[" H)+R\ 3F5E9"!T;R!S970 ="YI9"!H97)E+"!B M96-A=7-E('1H<F5A9"!I<R!O9F8 86YD(')U;FYI;F<*"2\O(&)E9F]R92!P M=&AR96%D7V-R96%T92 I('-E=', :70N" ET+FED(#T <'1H<F5A9%]S96QF M*"D[" H)="YS=&%C:T)O='1O;2 ](&=E=$534" I.PH)=')Y" E[" D (" M<F5S=6QT(#T ="YR=6XH*3L*"7T*"6-A=&-H("A/8FIE8W0 ;RD*"7L*"2 M("!P<FEN=&8H(D5R<F]R.B B*3L*"2 ("!O+G!R:6YT*"D[" D (" <F5S M=6QT(#T ,3L*"7T*" ED96)U9R H=&AR96%D*2!P<FEN=&8H(D5N9&EN9R!T M:')E860 )61<;B(L('0N:61X*3L*"70N<W1A=&4 /2!44RY415)-24Y!5$5$ M.PH)86QL5&AR96%D<UMT+FED>%T /2!N=6QL.PH)="YI9' /2 M,3L*"6YT M:')E861S+2T[" ER971U<FX *'9O:60J*7)E<W5L=#L*(" ('T*" H (" M+RHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ"B (" M"B ("!S=&%T:6, =&AI<R I"B ("![" ET:')E861,;V-K(#T ;F5W($]B M:F5C=" I.PH*"51H<F5A9"!T(#T ;F5W(%1H<F5A9" I.PH*"70N<W1A=&4 M/2!44RY254Y.24Y'.PH)="YI9" ]('!T:')E861?<V5L9B I.PH)="YS=&%C M:T)O='1O;2 ]("AV;VED*BE?7VQI8F-?<W1A8VM?96YD.PH)<WEN8VAR;VYI M>F5D("AT:')E861,;V-K*0H)>PH)(" (&%S<V5R=" A86QL5&AR96%D<ULP M72D[" D (" 86QL5&AR96%D<ULP72 ]('0[" D (" 86QL5&AR96%D<T1I M(&AA;F1L97)S('-O('=E(&-A;B!S=7-P96YD+W)E<W5M92!T:')E861S" D M*B\*" EI;G0 <F5S=6QT.PH)<VEG86-T:6]N7W0 <VEG86-T.PH)<F5S=6QT M(#T <VEG9FEL;'-E=" F<VEG86-T+G-A7VUA<VLI.PH):68 *')E<W5L="D* M"2 ("!G;W1O($QF86EL.PH)<VEG86-T+G-A7VAA;F1L97( /2 F<&%U<V5( M86YD;&5R.PH)<F5S=6QT(#T <VEG86-T:6]N*%-)1U534C$L("9S:6=A8W0L M(&YU;&PI.PH):68 *')E<W5L="D*"2 ("!G;W1O($QF86EL.PH)<VEG86-T M+G-A7VAA;F1L97( /2 F<F5S=6UE2&%N9&QE<CL*"7)E<W5L=" ]('-I9V%C M=&EO;BA324=54U(R+" F<VEG86-T+"!N=6QL*3L*"6EF("AR97-U;'0I" D M(" 9V]T;R!,9F%I;#L*" ER97-U;'0 /2!S96U?:6YI=" F9FQA9U-U<W!E M='5R;CL*"B (" ($QF86EL. H)9V5T5&AI<R I+F5R<F]R*")C86YN;W0 M:6YI=&EA;&EZ92!T:')E861S(BD["B ("!]" H (" +RHJ*BHJ*BHJ*BHJ M*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BH*(" (" J(%1H:7, 9V5T<R!C86QL M960 =VAE;B!A('1H<F5A9"!G971S(%-)1U534C$N"B (" *B\*"B ("!E M>'1E<FX *$,I('-T871I8R!V;VED('!A=7-E2&%N9&QE<BAI;G0 <VEG*0H M(" >PEI;G0 <F5S=6QT.PH*"2\O(%-A=F4 86QL(')E9VES=&5R<R!O;B!T M:&4 <W1A8VL <V\ =&AE>2=L;"!B92!S8V%N;F5D(&)Y('1H92!'0PH)87-M M" E[" D (" <'5S:&$).PH)?0H*"6%S<V5R="AS:6< /3T 4TE'55-2,2D[ M" ES96U?<&]S=" F9FQA9U-U<W!E;F0I.PH*"7-I9W-E=%]T('-I9VUA<VL[ M" ER97-U;'0 /2!S:6=F:6QL<V5T*"9S:6=M87-K*3L*"6%S<V5R="AR97-U M;'0 /3T ,"D[" ER97-U;'0 /2!S:6=D96QS970H)G-I9VUA<VLL(%-)1U53 M4C(I.PH)87-S97)T*')E<W5L=" ]/2 P*3L*" E4:')E860 =" ](&=E=%1H M:7,H*3L*"70N<W1A8VM4;W /2!G971%4U H*3L*"70N9FQA9W, )CT ?C$[ M" EW:&EL92 H,2D*"7L*"2 ("!S:6=S=7-P96YD*"9S:6=M87-K*3L)+R\ M<W5S<&5N9"!U;G1I;"!324=54U(R" D (" :68 *'0N9FQA9W, )B Q*0D) M+R\ 96YS=7)E(&ET('=A<R!R97-U;65(86YD;&5R*"D*"0EB<F5A:SL*"7T* M" DO+R!297-T;W)E(&%L;"!R96=I<W1E<G,*"6%S;0H)>PH)(" ('!O<&$) M.PH)?0H (" ?0H*(" ("\J*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ M*BHJ*BHJ"B (" *B!4:&ES(&=E=', 8V%L;&5D('=H96X 82!T:')E860 M=F]I9"!R97-U;65(86YD;&5R*&EN="!S:6<I"B ("![" E4:')E860 =" ] M('9O:60J(&=E=$534" I"B ("![" EA<VT*"7L ("!N86ME9 D[" D (" J;6]V($5!6"Q%4U ).PH)(" (')E= D).PH)?0H (" ?0I]" H*?0H* ` end
Sep 29 2003