----boundary-LibPST-iamunique-842511577_-_-
Content-type: text/plain
We have been experimenting with windows threads in Component Pascal for a long while. As a matter of fact we have implemented a subset of MODULA-3 thread interface in Component Pascal. I can mention the most striking troubles we have run into:
1. Threads can not use Out or StdLog. We have develop ad hoc modules for multi-thread output.
2. Neither can they use ASSERT: if the assertion fails the system will hang up. The big problem is that Run Time Support, and BlackBox modules do use ASSERT, so even if your code avoid it you can be trapped and hang the system up.
3. Don't use HALT.
4. Finally: garbage collection is not thread safe. Which is a very big problem! (It was pointed out to us by Oberon Microsystem at the very beginning of our project).
Cheers:
René Dorta. Universidad de Carabobo. Venezuela.
Douglas G. Danforth wrote:
Folks,
I have implemented a module GftThreads that works for simple tasks and operates in nanosecond response times (16ns on my machine).
The simple interface (patterned a little after Services.Action) looks like.
DEFINITION GftThreads;
TYPE
Action = POINTER TO ABSTRACT RECORD
(a: Action) Do, NEW, ABSTRACT;
(a: Action) Start, NEW;
(a: Action) Stop, NEW
END;
END GftThreads.
Calling action.Start puts the function action.Do into a tight loop running in a child thread. Calling action.Stop from the parent terminates this loop and the thread. The child shares the memory space of the parent.
However, I am getting in over my head. The functions that the user places in action.Do must be 'thread-safe'. Neither Out.String, nor XYplane.Dot seem to satisfy the 'thread-safe' condition. They both work for a single Start-Stop pair but a second Start causes the system to hang (for Out there seems to be an interaction with the routines that write to the log and preconditions are violated).
I would like the user not have to worry about 'thread-safety' and so believe something like critical regions are necessary.
Does anyone have experience with Windows' threads that could give some pointers?
-Doug
--- BlackBox
--- send subject HELP or UNSUBSCRIBE to blackbox{([at]})nowhere.xy
----boundary-LibPST-iamunique-842511577_-_-
Content-type: application/rtf
Content-transfer-encoding: base64
Content-Disposition: attachment; filename="rtf-body.rtf"
e1xydGYxXGFuc2lcYW5zaWNwZzEyNTJcZnJvbWh0bWwxIFxkZWZmMHtcZm9udHRibA0Ke1xmMFxm
c3dpc3NcZmNoYXJzZXQwIEFyaWFsO30NCntcZjFcZm1vZGVybiBDb3VyaWVyIE5ldzt9DQp7XGYy
XGZuaWxcZmNoYXJzZXQyIFN5bWJvbDt9DQp7XGYzXGZtb2Rlcm5cZmNoYXJzZXQwIENvdXJpZXIg
TmV3O319DQp7XGNvbG9ydGJsXHJlZDBcZ3JlZW4wXGJsdWUwO1xyZWQwXGdyZWVuMFxibHVlMjU1
O30NClx1YzFccGFyZFxwbGFpblxkZWZ0YWIzNjAgXGYwXGZzMjQgDQp7XCpcaHRtbHRhZzI0MyA8
IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwv
L0VOIj59DQp7XCpcaHRtbHRhZzMgXHBhciB9DQp7XCpcaHRtbHRhZzE5IDxodG1sPn0NCntcKlxo
dG1sdGFnMiBccGFyIH0NCntcKlxodG1sdGFnMzQgPGhlYWQ+fQ0Ke1wqXGh0bWx0YWcxIFxwYXIg
fQ0Ke1wqXGh0bWx0YWcyNDEgICB9DQp7XCpcaHRtbHRhZzEgXHBhciB9DQp7XCpcaHRtbHRhZzI0
MSAgIH0NCntcKlxodG1sdGFnMTc3IDx0aXRsZT59DQp7XCpcaHRtbHRhZzI0MSB9DQp7XCpcaHRt
bHRhZzE4NSA8L3RpdGxlPn0NCntcKlxodG1sdGFnMSBccGFyIH0NCntcKlxodG1sdGFnNDEgPC9o
ZWFkPn0NCntcKlxodG1sdGFnMiBccGFyIH0NCntcKlxodG1sdGFnNTAgPGJvZHkgdGV4dD0iIzAw
MDAwMCIgYmdjb2xvcj0iI2ZmZmZmZiI+fVxodG1scnRmIFx2aWV3a2luZDUNCntcKlxiYWNrZ3Jv
dW5kIHtcc2hwe1wqXHNocGluc3R7XHNwe1xzbiBmaWxsQ29sb3J9e1xzdiAxNjc3NzIxNX19e1xz
cHtcc24gZkZpbGxlZH17XHN2IDF9fX19fVxodG1scnRmMCANCntcKlxodG1sdGFnMCBccGFyIH17
XCpcaHRtbHRhZzY0fVxodG1scnRmIHtcaHRtbHJ0ZjAgV2UgaGF2ZSBiZWVuIGV4cGVyaW1lbnRp
bmcgd2l0aCB3aW5kb3dzIHRocmVhZHMgaW4gQ29tcG9uZW50IFBhc2NhbCBmb3INCntcKlxodG1s
dGFnNCBccGFyIH1caHRtbHJ0ZiAgXGh0bWxydGYwIGEgbG9uZyB3aGlsZS4gQXMgYSBtYXR0ZXIg
b2YgZmFjdCB3ZSBoYXZlIGltcGxlbWVudGVkIGEgc3Vic2V0IG9mDQp7XCpcaHRtbHRhZzQgXHBh
ciB9XGh0bWxydGYgIFxodG1scnRmMCBNT0RVTEEtMyB0aHJlYWQgaW50ZXJmYWNlIGluIENvbXBv
bmVudCBQYXNjYWwuIEkgY2FuIG1lbnRpb24gdGhlIG1vc3QNCntcKlxodG1sdGFnNCBccGFyIH1c
aHRtbHJ0ZiAgXGh0bWxydGYwIHN0cmlraW5nIHRyb3VibGVzIHdlIGhhdmUgcnVuIGludG86IA0K
e1wqXGh0bWx0YWcxMTYgPGJyPn1caHRtbHJ0ZiBcbGluZQ0KXGh0bWxydGYwIA0Ke1wqXGh0bWx0
YWc0IFxwYXIgfXtcKlxodG1sdGFnNzJ9XGh0bWxydGZccGFyfVxodG1scnRmMA0KDQp7XCpcaHRt
bHRhZzk2IDxvbD59XGh0bWxydGYgXHBhcg0Ke1xodG1scnRmMCANCntcKlxodG1sdGFnMCBccGFy
IH0NCntcKlxodG1sdGFnMjQwICAgfQ0Ke1wqXGh0bWx0YWc2NCA8bGk+fVxodG1scnRmIHt7XCpc
cG5ccG5sdmxib2R5XHBuZGVjXHBuc3RhcnQxXHBuaW5kZW50MzYwe1xwbnR4dGEgLn19XGh0bWxy
dGYwIFxsaTM2MCBcZmktMzYwIHtccG50ZXh0IDEuXHRhYn1UaHJlYWRzIGNhbiBub3QgdXNlIE91
dCBvciBTdGRMb2cuIFdlIGhhdmUgZGV2ZWxvcCANCntcKlxodG1sdGFnODQgPGk+fVxodG1scnRm
IHtcaSBcaHRtbHJ0ZjAgYWQgaG9jDQp7XCpcaHRtbHRhZzkyIDwvaT59XGh0bWxydGYgfVxodG1s
cnRmMCANCntcKlxodG1sdGFnNCBccGFyIH1caHRtbHJ0ZiAgXGh0bWxydGYwIG1vZHVsZXMgZm9y
IG11bHRpLXRocmVhZCBvdXRwdXQuDQp7XCpcaHRtbHRhZzExNiA8YnI+fVxodG1scnRmIFxsaW5l
DQpcaHRtbHJ0ZjAgDQp7XCpcaHRtbHRhZzQgXHBhciB9DQp7XCpcaHRtbHRhZzg0ICAgfVxodG1s
cnRmXHBhcn1caHRtbHJ0ZjANCg0Ke1wqXGh0bWx0YWc3MiA8L2xpPn0NCntcKlxodG1sdGFnMCBc
cGFyIH0NCntcKlxodG1sdGFnMjQwICAgfQ0Ke1wqXGh0bWx0YWc2NCA8bGk+fVxodG1scnRmIHt7
XCpccG5ccG5sdmxib2R5XHBuZGVjXHBuc3RhcnQyXHBuaW5kZW50MzYwe1xwbnR4dGEgLn19XGh0
bWxydGYwIFxsaTM2MCBcZmktMzYwIHtccG50ZXh0IDIuXHRhYn1OZWl0aGVyIGNhbiB0aGV5IHVz
ZSBBU1NFUlQ6IGlmIHRoZSBhc3NlcnRpb24gZmFpbHMgdGhlIHN5c3RlbQ0Ke1wqXGh0bWx0YWc0
IFxwYXIgfVxodG1scnRmICBcaHRtbHJ0ZjAgd2lsbCBoYW5nIHVwLiBUaGUgYmlnIHByb2JsZW0g
aXMgdGhhdCBSdW4gVGltZSBTdXBwb3J0LCBhbmQgQmxhY2tCb3gNCntcKlxodG1sdGFnNCBccGFy
IH1caHRtbHJ0ZiAgXGh0bWxydGYwIG1vZHVsZXMgZG8gdXNlIEFTU0VSVCwgc28gZXZlbiBpZiB5
b3VyIGNvZGUgYXZvaWQgaXQgeW91IGNhbiBiZSB0cmFwcGVkDQp7XCpcaHRtbHRhZzQgXHBhciB9
XGh0bWxydGYgIFxodG1scnRmMCBhbmQgaGFuZyB0aGUgc3lzdGVtIHVwLlxodG1scnRmXHBhcn1c
aHRtbHJ0ZjANCg0Ke1wqXGh0bWx0YWc3MiA8L2xpPn0NCntcKlxodG1sdGFnMCBccGFyIH0NCntc
KlxodG1sdGFnMjQwICAgfQ0Ke1wqXGh0bWx0YWc2NCA8bGk+fVxodG1scnRmIHt7XCpccG5ccG5s
dmxib2R5XHBuZGVjXHBuc3RhcnQzXHBuaW5kZW50MzYwe1xwbnR4dGEgLn19XGh0bWxydGYwIFxs
aTM2MCBcZmktMzYwIHtccG50ZXh0IDMuXHRhYn1Eb24ndCB1c2UgSEFMVC4NCntcKlxodG1sdGFn
MTE2IDxicj59XGh0bWxydGYgXGxpbmUNClxodG1scnRmMCANCntcKlxodG1sdGFnNCBccGFyIH0N
CntcKlxodG1sdGFnODQgICB9XGh0bWxydGZccGFyfVxodG1scnRmMA0KDQp7XCpcaHRtbHRhZzcy
IDwvbGk+fQ0Ke1wqXGh0bWx0YWcwIFxwYXIgfQ0Ke1wqXGh0bWx0YWcyNDAgICB9DQp7XCpcaHRt
bHRhZzY0IDxsaT59XGh0bWxydGYge3tcKlxwblxwbmx2bGJvZHlccG5kZWNccG5zdGFydDRccG5p
bmRlbnQzNjB7XHBudHh0YSAufX1caHRtbHJ0ZjAgXGxpMzYwIFxmaS0zNjAge1xwbnRleHQgNC5c
dGFifUZpbmFsbHk6IGdhcmJhZ2UgY29sbGVjdGlvbiBpcyBub3QgdGhyZWFkIHNhZmUuIFdoaWNo
IGlzIGEgdmVyeQ0Ke1wqXGh0bWx0YWc0IFxwYXIgfVxodG1scnRmICBcaHRtbHJ0ZjAgYmlnIHBy
b2JsZW0hIChJdCB3YXMgcG9pbnRlZCBvdXQgdG8gdXMgYnkgT2Jlcm9uIE1pY3Jvc3lzdGVtIGF0
IHRoZQ0Ke1wqXGh0bWx0YWc0IFxwYXIgfVxodG1scnRmICBcaHRtbHJ0ZjAgdmVyeSBiZWdpbm5p
bmcgb2Ygb3VyIHByb2plY3QpLg0Ke1wqXGh0bWx0YWcxMTYgPGJyPn1caHRtbHJ0ZiBcbGluZQ0K
XGh0bWxydGYwIA0Ke1wqXGh0bWx0YWc0IFxwYXIgfQ0Ke1wqXGh0bWx0YWc4NCAgIH1caHRtbHJ0
ZlxwYXJ9XGh0bWxydGYwDQoNCntcKlxodG1sdGFnNzIgPC9saT59DQp7XCpcaHRtbHRhZzAgXHBh
ciB9DQp7XCpcaHRtbHRhZzEwNCA8L29sPn1caHRtbHJ0ZiB9XHBhcg0KXGh0bWxydGYwIA0Ke1wq
XGh0bWx0YWcwIFxwYXIgfXtcKlxodG1sdGFnNjR9XGh0bWxydGYge1xodG1scnRmMCBDaGVlcnM6
DQp7XCpcaHRtbHRhZzExNiA8YnI+fVxodG1scnRmIFxsaW5lDQpcaHRtbHJ0ZjAgDQp7XCpcaHRt
bHRhZzQgXHBhciB9UmVuDQp7XCpcaHRtbHRhZzg0ICZlYWN1dGU7fVxodG1scnRmIFwnZTlcaHRt
bHJ0ZjAgIERvcnRhLiBVbml2ZXJzaWRhZCBkZSBDYXJhYm9iby4gVmVuZXp1ZWxhLg0Ke1wqXGh0
bWx0YWcxMTYgPGJyPn1caHRtbHJ0ZiBcbGluZQ0KXGh0bWxydGYwIA0Ke1wqXGh0bWx0YWc0IFxw
YXIgfQ0Ke1wqXGh0bWx0YWcxMTYgPGJyPn1caHRtbHJ0ZiBcbGluZQ0KXGh0bWxydGYwIA0Ke1wq
XGh0bWx0YWc0IFxwYXIgfURvdWdsYXMgRy4gRGFuZm9ydGggd3JvdGU6DQp7XCpcaHRtbHRhZzEx
NiA8YnI+fVxodG1scnRmIFxsaW5lDQpcaHRtbHJ0ZjAgDQp7XCpcaHRtbHRhZzQgXHBhciB9e1wq
XGh0bWx0YWc3Mn1caHRtbHJ0ZlxwYXJ9XGh0bWxydGYwDQoNCntcKlxodG1sdGFnOTYgPGJsb2Nr
cXVvdGUgdHlwZT0iY2l0ZSJccGFyICBjaXRlPSJtaWRBTUVUSFlTVDIyRHJlQkJzUXdZMDAwMDAz
NzNAYW1ldGh5c3QyLm9iZXJvbi5jaCI+fVxodG1scnRmIFxwYXINCntcaHRtbHJ0ZjAge1wqXGh0
bWx0YWc2NH1caHRtbHJ0ZiB7XGh0bWxydGYwIFxsaTM2MCBGb2xrcywNCntcKlxodG1sdGFnNCBc
cGFyIH1caHRtbHJ0ZiAgXGh0bWxydGYwIA0Ke1wqXGh0bWx0YWc4NCAgIH0NCntcKlxodG1sdGFn
MTE2IDxicj59XGh0bWxydGYgXGxpbmUNClxodG1scnRmMCANCntcKlxodG1sdGFnNCBccGFyIH1J
IGhhdmUgaW1wbGVtZW50ZWQgYSBtb2R1bGUgR2Z0VGhyZWFkcyB0aGF0IHdvcmtzIGZvciBzaW1w
bGUgdGFza3MgYW5kDQp7XCpcaHRtbHRhZzQgXHBhciB9XGh0bWxydGYgIFxodG1scnRmMCBvcGVy
YXRlcyBpbiBuYW5vc2Vjb25kIHJlc3BvbnNlIHRpbWVzICgxNm5zIG9uIG15IG1hY2hpbmUpLg0K
e1wqXGh0bWx0YWc0IFxwYXIgfVxodG1scnRmICBcaHRtbHJ0ZjAgDQp7XCpcaHRtbHRhZzg0ICAg
fQ0Ke1wqXGh0bWx0YWcxMTYgPGJyPn1caHRtbHJ0ZiBcbGluZQ0KXGh0bWxydGYwIA0Ke1wqXGh0
bWx0YWc0IFxwYXIgfVRoZSBzaW1wbGUgaW50ZXJmYWNlIChwYXR0ZXJuZWQgYSBsaXR0bGUgYWZ0
ZXIgU2VydmljZXMuQWN0aW9uKSBsb29rcw0Ke1wqXGh0bWx0YWc0IFxwYXIgfVxodG1scnRmICBc
aHRtbHJ0ZjAgbGlrZS4NCntcKlxodG1sdGFnNCBccGFyIH1caHRtbHJ0ZiAgXGh0bWxydGYwIA0K
e1wqXGh0bWx0YWc4NCAgIH0NCntcKlxodG1sdGFnMTE2IDxicj59XGh0bWxydGYgXGxpbmUNClxo
dG1scnRmMCANCntcKlxodG1sdGFnNCBccGFyIH0NCntcKlxodG1sdGFnODQgICB9DQp7XCpcaHRt
bHRhZzExNiA8YnI+fVxodG1scnRmIFxsaW5lDQpcaHRtbHJ0ZjAgDQp7XCpcaHRtbHRhZzQgXHBh
ciB9REVGSU5JVElPTiBHZnRUaHJlYWRzOw0Ke1wqXGh0bWx0YWc0IFxwYXIgfVxodG1scnRmICBc
aHRtbHJ0ZjAgDQp7XCpcaHRtbHRhZzg0ICAgfQ0Ke1wqXGh0bWx0YWcxMTYgPGJyPn1caHRtbHJ0
ZiBcbGluZQ0KXGh0bWxydGYwIA0Ke1wqXGh0bWx0YWc0IFxwYXIgfQ0Ke1wqXGh0bWx0YWc4NCAg
IH0NCntcKlxodG1sdGFnMTE2IDxicj59XGh0bWxydGYgXGxpbmUNClxodG1scnRmMCANCntcKlxo
dG1sdGFnNCBccGFyIH0NCntcKlxodG1sdGFnODQgJm5ic3A7fVxodG1scnRmIFwnYTBcaHRtbHJ0
ZjAgIFRZUEUNCntcKlxodG1sdGFnNCBccGFyIH1caHRtbHJ0ZiAgXGh0bWxydGYwIA0Ke1wqXGh0
bWx0YWc4NCAgIH0NCntcKlxodG1sdGFnMTE2IDxicj59XGh0bWxydGYgXGxpbmUNClxodG1scnRm
MCANCntcKlxodG1sdGFnNCBccGFyIH0NCntcKlxodG1sdGFnODQgJm5ic3A7fVxodG1scnRmIFwn
YTBcaHRtbHJ0ZjAgDQp7XCpcaHRtbHRhZzg0ICZuYnNwO31caHRtbHJ0ZiBcJ2EwXGh0bWxydGYw
IA0Ke1wqXGh0bWx0YWc4NCAmbmJzcDt9XGh0bWxydGYgXCdhMFxodG1scnRmMCAgQWN0aW9uID0g
UE9JTlRFUiBUTyBBQlNUUkFDVCBSRUNPUkQNCntcKlxodG1sdGFnNCBccGFyIH1caHRtbHJ0ZiAg
XGh0bWxydGYwIA0Ke1wqXGh0bWx0YWc4NCAgIH0NCntcKlxodG1sdGFnMTE2IDxicj59XGh0bWxy
dGYgXGxpbmUNClxodG1scnRmMCANCntcKlxodG1sdGFnNCBccGFyIH0NCntcKlxodG1sdGFnODQg
Jm5ic3A7fVxodG1scnRmIFwnYTBcaHRtbHJ0ZjAgDQp7XCpcaHRtbHRhZzg0ICZuYnNwO31caHRt
bHJ0ZiBcJ2EwXGh0bWxydGYwIA0Ke1wqXGh0bWx0YWc4NCAmbmJzcDt9XGh0bWxydGYgXCdhMFxo
dG1scnRmMCANCntcKlxodG1sdGFnODQgJm5ic3A7fVxodG1scnRmIFwnYTBcaHRtbHJ0ZjAgDQp7
XCpcaHRtbHRhZzg0ICZuYnNwO31caHRtbHJ0ZiBcJ2EwXGh0bWxydGYwICAoYTogQWN0aW9uKSBE
bywgTkVXLCBBQlNUUkFDVDsNCntcKlxodG1sdGFnNCBccGFyIH1caHRtbHJ0ZiAgXGh0bWxydGYw
IA0Ke1wqXGh0bWx0YWc4NCAgIH0NCntcKlxodG1sdGFnMTE2IDxicj59XGh0bWxydGYgXGxpbmUN
ClxodG1scnRmMCANCntcKlxodG1sdGFnNCBccGFyIH0NCntcKlxodG1sdGFnODQgJm5ic3A7fVxo
dG1scnRmIFwnYTBcaHRtbHJ0ZjAgDQp7XCpcaHRtbHRhZzg0ICZuYnNwO31caHRtbHJ0ZiBcJ2Ew
XGh0bWxydGYwIA0Ke1wqXGh0bWx0YWc4NCAmbmJzcDt9XGh0bWxydGYgXCdhMFxodG1scnRmMCAN
CntcKlxodG1sdGFnODQgJm5ic3A7fVxodG1scnRmIFwnYTBcaHRtbHJ0ZjAgDQp7XCpcaHRtbHRh
Zzg0ICZuYnNwO31caHRtbHJ0ZiBcJ2EwXGh0bWxydGYwICAoYTogQWN0aW9uKSBTdGFydCwgTkVX
Ow0Ke1wqXGh0bWx0YWc0IFxwYXIgfVxodG1scnRmICBcaHRtbHJ0ZjAgDQp7XCpcaHRtbHRhZzg0
ICAgfQ0Ke1wqXGh0bWx0YWcxMTYgPGJyPn1caHRtbHJ0ZiBcbGluZQ0KXGh0bWxydGYwIA0Ke1wq
XGh0bWx0YWc0IFxwYXIgfQ0Ke1wqXGh0bWx0YWc4NCAmbmJzcDt9XGh0bWxydGYgXCdhMFxodG1s
cnRmMCANCntcKlxodG1sdGFnODQgJm5ic3A7fVxodG1scnRmIFwnYTBcaHRtbHJ0ZjAgDQp7XCpc
aHRtbHRhZzg0ICZuYnNwO31caHRtbHJ0ZiBcJ2EwXGh0bWxydGYwIA0Ke1wqXGh0bWx0YWc4NCAm
bmJzcDt9XGh0bWxydGYgXCdhMFxodG1scnRmMCANCntcKlxodG1sdGFnODQgJm5ic3A7fVxodG1s
cnRmIFwnYTBcaHRtbHJ0ZjAgIChhOiBBY3Rpb24pIFN0b3AsIE5FVw0Ke1wqXGh0bWx0YWc0IFxw
YXIgfVxodG1scnRmICBcaHRtbHJ0ZjAgDQp7XCpcaHRtbHRhZzg0ICAgfQ0Ke1wqXGh0bWx0YWcx
MTYgPGJyPn1caHRtbHJ0ZiBcbGluZQ0KXGh0bWxydGYwIA0Ke1wqXGh0bWx0YWc0IFxwYXIgfQ0K
e1wqXGh0bWx0YWc4NCAmbmJzcDt9XGh0bWxydGYgXCdhMFxodG1scnRmMCANCntcKlxodG1sdGFn
ODQgJm5ic3A7fVxodG1scnRmIFwnYTBcaHRtbHJ0ZjAgDQp7XCpcaHRtbHRhZzg0ICZuYnNwO31c
aHRtbHJ0ZiBcJ2EwXGh0bWxydGYwICBFTkQ7DQp7XCpcaHRtbHRhZzQgXHBhciB9XGh0bWxydGYg
IFxodG1scnRmMCANCntcKlxodG1sdGFnODQgICB9DQp7XCpcaHRtbHRhZzExNiA8YnI+fVxodG1s
cnRmIFxsaW5lDQpcaHRtbHJ0ZjAgDQp7XCpcaHRtbHRhZzQgXHBhciB9DQp7XCpcaHRtbHRhZzg0
ICAgfQ0Ke1wqXGh0bWx0YWcxMTYgPGJyPn1caHRtbHJ0ZiBcbGluZQ0KXGh0bWxydGYwIA0Ke1wq
XGh0bWx0YWc0IFxwYXIgfUVORCBHZnRUaHJlYWRzLg0Ke1wqXGh0bWx0YWc0IFxwYXIgfVxodG1s
cnRmICBcaHRtbHJ0ZjAgDQp7XCpcaHRtbHRhZzg0ICAgfQ0Ke1wqXGh0bWx0YWcxMTYgPGJyPn1c
aHRtbHJ0ZiBcbGluZQ0KXGh0bWxydGYwIA0Ke1wqXGh0bWx0YWc0IFxwYXIgfQ0Ke1wqXGh0bWx0
YWc4NCAgIH0NCntcKlxodG1sdGFnMTE2IDxicj59XGh0bWxydGYgXGxpbmUNClxodG1scnRmMCAN
CntcKlxodG1sdGFnNCBccGFyIH1DYWxsaW5nIGFjdGlvbi5TdGFydCBwdXRzIHRoZSBmdW5jdGlv
biBhY3Rpb24uRG8gaW50byBhIHRpZ2h0IGxvb3ANCntcKlxodG1sdGFnNCBccGFyIH1caHRtbHJ0
ZiAgXGh0bWxydGYwIHJ1bm5pbmcgaW4gYSBjaGlsZCB0aHJlYWQuIENhbGxpbmcgYWN0aW9uLlN0
b3AgZnJvbSB0aGUgcGFyZW50DQp7XCpcaHRtbHRhZzQgXHBhciB9XGh0bWxydGYgIFxodG1scnRm
MCB0ZXJtaW5hdGVzIHRoaXMgbG9vcCBhbmQgdGhlIHRocmVhZC4NCntcKlxodG1sdGFnODQgJm5i
c3A7fVxodG1scnRmIFwnYTBcaHRtbHJ0ZjAgIFRoZSBjaGlsZCBzaGFyZXMgdGhlIG1lbW9yeSBz
cGFjZQ0Ke1wqXGh0bWx0YWc0IFxwYXIgfVxodG1scnRmICBcaHRtbHJ0ZjAgb2YgdGhlIHBhcmVu
dC4NCntcKlxodG1sdGFnNCBccGFyIH1caHRtbHJ0ZiAgXGh0bWxydGYwIA0Ke1wqXGh0bWx0YWc4
NCAgIH0NCntcKlxodG1sdGFnMTE2IDxicj59XGh0bWxydGYgXGxpbmUNClxodG1scnRmMCANCntc
KlxodG1sdGFnNCBccGFyIH0NCntcKlxodG1sdGFnODQgICB9DQp7XCpcaHRtbHRhZzExNiA8YnI+
fVxodG1scnRmIFxsaW5lDQpcaHRtbHJ0ZjAgDQp7XCpcaHRtbHRhZzQgXHBhciB9SG93ZXZlciwg
SSBhbSBnZXR0aW5nIGluIG92ZXIgbXkgaGVhZC4NCntcKlxodG1sdGFnODQgJm5ic3A7fVxodG1s
cnRmIFwnYTBcaHRtbHJ0ZjAgIFRoZSBmdW5jdGlvbnMgdGhhdCB0aGUgdXNlcg0Ke1wqXGh0bWx0
YWc0IFxwYXIgfVxodG1scnRmICBcaHRtbHJ0ZjAgcGxhY2VzIGluIGFjdGlvbi5EbyBtdXN0IGJl
ICd0aHJlYWQtc2FmZScuDQp7XCpcaHRtbHRhZzg0ICZuYnNwO31caHRtbHJ0ZiBcJ2EwXGh0bWxy
dGYwICBOZWl0aGVyIE91dC5TdHJpbmcsIG5vcg0Ke1wqXGh0bWx0YWc0IFxwYXIgfVxodG1scnRm
ICBcaHRtbHJ0ZjAgWFlwbGFuZS5Eb3Qgc2VlbSB0byBzYXRpc2Z5IHRoZSAndGhyZWFkLXNhZmUn
IGNvbmRpdGlvbi4NCntcKlxodG1sdGFnODQgJm5ic3A7fVxodG1scnRmIFwnYTBcaHRtbHJ0ZjAg
IFRoZXkgYm90aA0Ke1wqXGh0bWx0YWc0IFxwYXIgfVxodG1scnRmICBcaHRtbHJ0ZjAgd29yayAN
CntcKlxodG1sdGFnODQgJm5ic3A7fVxodG1scnRmIFwnYTBcaHRtbHJ0ZjAgZm9yIGEgc2luZ2xl
IFN0YXJ0LVN0b3AgcGFpciBidXQgYSBzZWNvbmQgU3RhcnQgY2F1c2VzIHRoZSBzeXN0ZW0NCntc
KlxodG1sdGFnNCBccGFyIH1caHRtbHJ0ZiAgXGh0bWxydGYwIHRvIGhhbmcgKGZvciBPdXQgdGhl
cmUgc2VlbXMgdG8gYmUgYW4gaW50ZXJhY3Rpb24gd2l0aCB0aGUgcm91dGluZXMNCntcKlxodG1s
dGFnNCBccGFyIH1caHRtbHJ0ZiAgXGh0bWxydGYwIHRoYXQgd3JpdGUgdG8gdGhlIGxvZyBhbmQg
cHJlY29uZGl0aW9ucyBhcmUgdmlvbGF0ZWQpLg0Ke1wqXGh0bWx0YWc0IFxwYXIgfVxodG1scnRm
ICBcaHRtbHJ0ZjAgDQp7XCpcaHRtbHRhZzg0ICAgfQ0Ke1wqXGh0bWx0YWcxMTYgPGJyPn1caHRt
bHJ0ZiBcbGluZQ0KXGh0bWxydGYwIA0Ke1wqXGh0bWx0YWc0IFxwYXIgfQ0Ke1wqXGh0bWx0YWc4
NCAgIH0NCntcKlxodG1sdGFnMTE2IDxicj59XGh0bWxydGYgXGxpbmUNClxodG1scnRmMCANCntc
KlxodG1sdGFnNCBccGFyIH1JIHdvdWxkIGxpa2UgdGhlIHVzZXIgbm90IGhhdmUgdG8gd29ycnkg
YWJvdXQgJ3RocmVhZC1zYWZldHknIGFuZCBzbw0Ke1wqXGh0bWx0YWc0IFxwYXIgfVxodG1scnRm
ICBcaHRtbHJ0ZjAgYmVsaWV2ZSBzb21ldGhpbmcgbGlrZSBjcml0aWNhbCByZWdpb25zIGFyZSBu
ZWNlc3NhcnkuDQp7XCpcaHRtbHRhZzQgXHBhciB9XGh0bWxydGYgIFxodG1scnRmMCANCntcKlxo
dG1sdGFnODQgICB9DQp7XCpcaHRtbHRhZzExNiA8YnI+fVxodG1scnRmIFxsaW5lDQpcaHRtbHJ0
ZjAgDQp7XCpcaHRtbHRhZzQgXHBhciB9DQp7XCpcaHRtbHRhZzg0ICAgfQ0Ke1wqXGh0bWx0YWcx
MTYgPGJyPn1caHRtbHJ0ZiBcbGluZQ0KXGh0bWxydGYwIA0Ke1wqXGh0bWx0YWc0IFxwYXIgfURv
ZXMgYW55b25lIGhhdmUgZXhwZXJpZW5jZSB3aXRoIFdpbmRvd3MnIHRocmVhZHMgdGhhdCBjb3Vs
ZCBnaXZlIHNvbWUNCntcKlxodG1sdGFnNCBccGFyIH1caHRtbHJ0ZiAgXGh0bWxydGYwIHBvaW50
ZXJzPw0Ke1wqXGh0bWx0YWc0IFxwYXIgfVxodG1scnRmICBcaHRtbHJ0ZjAgDQp7XCpcaHRtbHRh
Zzg0ICAgfQ0Ke1wqXGh0bWx0YWcxMTYgPGJyPn1caHRtbHJ0ZiBcbGluZQ0KXGh0bWxydGYwIA0K
e1wqXGh0bWx0YWc0IFxwYXIgfQ0Ke1wqXGh0bWx0YWc4NCAgIH0NCntcKlxodG1sdGFnMTE2IDxi
cj59XGh0bWxydGYgXGxpbmUNClxodG1scnRmMCANCntcKlxodG1sdGFnNCBccGFyIH0tRG91Zw0K
e1wqXGh0bWx0YWc0IFxwYXIgfVxodG1scnRmICBcaHRtbHJ0ZjAgDQp7XCpcaHRtbHRhZzg0ICAg
fQ0Ke1wqXGh0bWx0YWcxMTYgPGJyPn1caHRtbHJ0ZiBcbGluZQ0KXGh0bWxydGYwIA0Ke1wqXGh0
bWx0YWc0IFxwYXIgfQ0Ke1wqXGh0bWx0YWc4NCAgIH0NCntcKlxodG1sdGFnMTE2IDxicj59XGh0
bWxydGYgXGxpbmUNClxodG1scnRmMCANCntcKlxodG1sdGFnNCBccGFyIH0tLS0gQmxhY2tCb3gN
CntcKlxodG1sdGFnNCBccGFyIH1caHRtbHJ0ZiAgXGh0bWxydGYwIA0Ke1wqXGh0bWx0YWc4NCAg
IH0NCntcKlxodG1sdGFnMTE2IDxicj59XGh0bWxydGYgXGxpbmUNClxodG1scnRmMCANCntcKlxo
dG1sdGFnNCBccGFyIH0tLS0gc2VuZCBzdWJqZWN0IEhFTFAgb3IgVU5TVUJTQ1JJQkUgdG8ge30N
CntcKlxodG1sdGFnODQgPGEgY2xhc3M9Im1vei10eHQtbGluay1hYmJyZXZpYXRlZCIgaHJlZj0i
bWFpbHRvOmJsYWNrYm94QG9iZXJvbi5jaCI+fVxodG1scnRmIHtcZmllbGR7XCpcZmxkaW5zdHtI
WVBFUkxJTksgIm1haWx0bzpibGFja2JveEBvYmVyb24uY2gifX17XGZsZHJzbHRcY2YxXHVsIFxo
dG1scnRmMCBibGFja2JveEBvYmVyb24uY2hcaHRtbHJ0ZiB9XGh0bWxydGYwIFxodG1scnRmIH1c
aHRtbHJ0ZjAgDQp7XCpcaHRtbHRhZzkyIDwvYT59DQp7XCpcaHRtbHRhZzQgXHBhciB9XGh0bWxy
dGYgIFxodG1scnRmMCANCntcKlxodG1sdGFnODQgICB9DQp7XCpcaHRtbHRhZzExNiA8YnI+fVxo
dG1scnRmIFxsaW5lDQpcaHRtbHJ0ZjAgDQp7XCpcaHRtbHRhZzQgXHBhciB9DQp7XCpcaHRtbHRh
Zzg0ICAgfQ0Ke1wqXGh0bWx0YWcxMTYgPGJyPn1caHRtbHJ0ZiBcbGluZQ0KXGh0bWxydGYwIA0K
e1wqXGh0bWx0YWc0IFxwYXIgfQ0Ke1wqXGh0bWx0YWc4NCAgIH0NCntcKlxodG1sdGFnMTE2IDxi
cj59XGh0bWxydGYgXGxpbmUNClxodG1scnRmMCANCntcKlxodG1sdGFnNCBccGFyIH17XCpcaHRt
bHRhZzcyfVxodG1scnRmXHBhcn1caHRtbHJ0ZjANCg0Ke1wqXGh0bWx0YWcxMDQgPC9ibG9ja3F1
b3RlPn1caHRtbHJ0ZiB9XHBhcg0KXGh0bWxydGYwIA0Ke1wqXGh0bWx0YWcwIFxwYXIgfQ0Ke1wq
XGh0bWx0YWc1OCA8L2JvZHk+fQ0Ke1wqXGh0bWx0YWcyIFxwYXIgfQ0Ke1wqXGh0bWx0YWcyNyA8
L2h0bWw+fQ0Ke1wqXGh0bWx0YWczIFxwYXIgfQ0Ke1wqXGh0bWx9fQBDaENXVlJGS1Y=
----boundary-LibPST-iamunique-842511577_-_---
Received on Thu Apr 28 2005 - 05:16:26 UTC
This archive was generated by hypermail 2.3.0
: Thu Sep 26 2013 - 06:28:15 UTC