Thread overview
Doug Lea's "concurrent" lib
May 02, 2004
Ben Hinkle
May 03, 2004
Mike Swieton
May 03, 2004
Matthew
May 03, 2004
Mike Swieton
May 03, 2004
Ben Hinkle
May 03, 2004
Ben Hinkle
May 04, 2004
Mike Swieton
May 04, 2004
Ben Hinkle
May 26, 2004
Walter
May 03, 2004
Ben Hinkle
May 02, 2004
I've started a project on www.dsource.org for porting Doug Lea's "concurrent" package. The download section has a zip file with the code or you can get it from the svn repository. The doc (converted from the orginal Javadoc and generated using doxygen) is at http://home.comcast.net/~benhinkle/concurrent-doc/

Anyhow, I'm looking for either anyone interested in helping out or any pointers to test suites for synchronization and threading. So far I've done the basic Sync and Barrier classes and implemented a Java-style wait/notify struct. There's just one file that knows about D synchronization internals and has platform-specific code in it.

-Ben

May 03, 2004
On Sun, 02 May 2004 15:55:58 -0400, Ben Hinkle wrote:

> I've started a project on www.dsource.org for porting Doug Lea's "concurrent" package. The download section has a zip file with the code or you can get it from the svn repository. The doc (converted from the orginal Javadoc and generated using doxygen) is at http://home.comcast.net/~benhinkle/concurrent-doc/
> 
> Anyhow, I'm looking for either anyone interested in helping out or any pointers to test suites for synchronization and threading. So far I've done the basic Sync and Barrier classes and implemented a Java-style wait/notify struct. There's just one file that knows about D synchronization internals and has platform-specific code in it.
> 
> -Ben

Cool ;) I was actually just minutes from doing just that myself, heh.

I continued doing some more on some of the Executor classes (easy), and started the LinkedQueue class. I made Channel and friends templates, and changed their APIs accordingly. Some input on these changes would be appreciated.

Matthew: what can we expect from the DTL as far as things like thread-safe collections are concerned? I'm not sure what I'm really asking here; I'm just wondering how/when the DTL will affect porting Doug's library.

Currently, it segfaults, and I don't know why. I have to go do other stuff today, and I'll look at it again tomorrow. Right now I am primarily interested in feedback on the API changes and such that I've made.

I have not updated much of the documentation that was copied in, and I am not sure where the InteruptedException fits in yet, as no D analog appears to exist yet. And no Windows or multi-processor testing has been done whatsoever. I don't have access to either. The latter will probably be a PITA down the line, though...

Mike Swieton
__
Our earth is degenerate in these latter days. Bribery and corruption are
common. Children no longer obey their parents. Every man wants to write a
book... The end of the world is evidently approaching.
	- On a stone slab carved in 2800 B.C. in Assyria

May 03, 2004
"Mike Swieton" <mike@swieton.net> wrote in message news:pan.2004.05.03.01.29.03.75384@swieton.net...
> On Sun, 02 May 2004 15:55:58 -0400, Ben Hinkle wrote:
>
> > I've started a project on www.dsource.org for porting Doug Lea's "concurrent" package. The download section has a zip file with the code or you can get it from the svn repository. The doc (converted from the orginal Javadoc and generated using doxygen) is at http://home.comcast.net/~benhinkle/concurrent-doc/
> >
> > Anyhow, I'm looking for either anyone interested in helping out or any pointers to test suites for synchronization and threading. So far I've done the basic Sync and Barrier classes and implemented a Java-style wait/notify struct. There's just one file that knows about D synchronization internals and has platform-specific code in it.
> >
> > -Ben
>
> Cool ;) I was actually just minutes from doing just that myself, heh.
>
> I continued doing some more on some of the Executor classes (easy), and started the LinkedQueue class. I made Channel and friends templates, and changed their APIs accordingly. Some input on these changes would be appreciated.
>
> Matthew: what can we expect from the DTL as far as things like thread-safe collections are concerned? I'm not sure what I'm really asking here; I'm just wondering how/when the DTL will affect porting Doug's library.

Hmm. Initial thought was: nothing at all.

Perhaps, it may be that if we (I) get the mixin, and they are selectable by template parameterisation, then we could make threadsafe collections just by having a null and a locking mixin. However, I think that collections are always the wrong place to be putting synchronisation logic, so maybe I'll go back to my original answer. Anything else could be characterised as intellectual playing-with-oneself.

> Currently, it segfaults, and I don't know why. I have to go do other stuff today, and I'll look at it again tomorrow. Right now I am primarily interested in feedback on the API changes and such that I've made.
>
> I have not updated much of the documentation that was copied in, and I am not sure where the InteruptedException fits in yet, as no D analog appears to exist yet. And no Windows or multi-processor testing has been done whatsoever. I don't have access to either. The latter will probably be a PITA down the line, though...
>
> Mike Swieton
> __
> Our earth is degenerate in these latter days. Bribery and corruption are
> common. Children no longer obey their parents. Every man wants to write a
> book... The end of the world is evidently approaching.
> - On a stone slab carved in 2800 B.C. in Assyria
>


May 03, 2004
I feel dumb. Here's the file that was supposed to be attached to the other ;)

Mike Swieton
__
If all the human race's collected information could be made available to
anyone, anywhere, at any time, for marginal cost, would it be moral to
restrict access to that informtion?
	- Eben Moglen

begin 0644 concurrent.tar.bz2 QlpoOTFBWSZTWe18yL4Br5J/////////////////////////////////////////////4Yb+ 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 7xvLxc0TTNbM1o0but84FdateNb1TW64tbveHHob4OTfOm8I7LrWy26zNJW6rMQAyMCSPw0K 0jAgjMUoK1bZJpataFU1bbZWSU0tKlaqyVMUVWqQkqttaysVqrCqUxRTYlmq1kgvOdGUk2kq SRW1d3Y6zpq0lapRFZWJasUllLW1bVLahLK0Qk0q2qjVKmRJSyVNTKkrK2pWlW7u1aVVsNFT MfP+y7MbyCsqtpN6usddbe6Lu1U1Uqh5HQ8s6PKjbrbVRtWVpas626aiWqspRTSrbrdVqHR1 VE7g63W6zV0bpTdZ01alatlYramK2VlKxqBRlNtj6ljefz3ZjYFTIiBEA07Q2HHaEggHRkAQ 8nYOtnhClr91uK34qPpMC2Wtv19VVANaISIbog/I1v2c+mfV/xddkFPwYan9uhBBdIQlEN/F DlfhyLK5jJWXuLt0bgBEBuzBAEQNCjkVSZ1smcghJHBUFDCbv836fxtP6mYMg5AYwzkbOp8k sZ4qMpiXJddtHRhEtsgCdgyBAO1gJtp1NN3WkpjT3SFO1QEJRF85VRO0UVQ7AIAgVvaUbS9f eI9gjp4YaIgV4ZCpi3yUA6TC+OWMJxb46xbbGsTWtsYsza99YWYvKyr5mbXym1mU5zU2mqvV 71WM2WteLTn+DSsYzqsXtbU62tq+ytZm1X2azrFZmbbW1qavvqsyxrWdVe+M2vmk3m+F6qsW rGrXterf3NsWrNtTOsb7axrFs5liZ4rabYpWLCrXtYR3u/3OyuIimPq+jLIGadbONBU/D6XN sahaSy+zzc1Wql5R4QDHt2CSIiEo4UxaQg0nLVVAAOH59ExQvxCIC+FwjOBUdbbjDrUiRhMC SdtMUnXNSskYqKbt0TWKA4iiKtGiuynTAZTzNVIAKjgU/CiZCwhqoIET8yBYdmFL4+MNUAPD BOGSRxqCBKGQAE+9drjC/RcClNZucKpfYGTSgL4dDQodTlqMSV+FXRsBBIraBh4tIZHYQFKZ MaGrlVEoi3zCyzKy+ZVyVL48Y0nlDBmeXNY0HUiEQIqsGCsamIrVYWJJjhdm2MCMCGVElBZV YT0g+55sz7mGpkziq7ECSRkkAkBJAZGRB2bsyACTIGYv7/Jbr3G8Ra7sbOsQ2QBC6x7tJE+y AgDXDJsDeC/ELFjsECqHL3CnMS8oy+aanGCiGBhmAQICHHfylCBWuQFMg0GlSycSkDBlxp5Y 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 J1c0nDql8XNsR1HI2ezg7F7LtyTDgw5NxTENjTS6O5yU+DqaaU8MGGzk2XcinD1ebo6vZDZG yV3dKmG6kZSaWcLtnRy96u7Dl5u5KUkngwwqVR3Ks8DxK5TZVbG7ZpjDDsjZw8uq5zX5d149 nIUu8OJbfFu9EtNMFkrIsnzhB6LsN3VTVScPJhGiV2lHycOFyXZ72zTJThZw5t27SObZxl4b Hiz2POYP2UoR+lc+Lq6HboMF+yfJ/Xj9xEylJ/7dKRp1+Ld949Dk5N9zLZ8HTe7VJRyIwxY9 nDT3MLvNldh14RTvL3GXCSPzLODqYYyVTU46rvw9e20Z/AZWerZSyVkZU7OWV2GVmyyxphdd c0MN2mEXaUs5tKZX6NLtndw9G45pP5hLhts/gV9zm5uT7fY6KUu+xxoxGlnKsU9Xhg+SNzsX 94dOw0bPcadnqXYezkdnU8OejRKI5m/Zs4bvzNPC7mps4c5Xyaxpk05GNP1HqNRxZB0eByT5 lSVU86lKOrHkaYqQpQVKiVUmlTCoT7FdB9T2NNOvY08GK6NPPLTDMLJSwVlZLjXQldN2C2ve jjDRrQ0KS03pKXvlZLW7kiynmbNl3d4c1nZ0qOa7+c6F8tzKznCLPouswxHNvd5mRZPvPJhl hThlSkuS7dKUpJSg6XVECUnmJB3JjaxsM7ay3SSkbt1FJXSY8PCyyX0SjhpzjZdTJxYZWovm 6yxKcvv3UXRF1JXWWWcGCx+VQu5uEsOjw5MsuaV2l2jd62J/HdTpHD4fezR8akUqVKUUqVKV 2O5ec8WqfH5O5UnA9bocO86NPVZTpye56qWXhc7oih9j3PxN1zs8272OT2ZYe5ze5F454V75 tWrROxD6PeR+Z2fjbOHDgizgsuXbPZg6HzeHJ3UpD2SplTs+TDKMnJEpLvipaxMqdFYN130f J2Zi6GjXd7o6pMuTNl1LFi6Jeo+jcyxiLsujBHNT8zb26afvL+iSFkxDPc5z30Oek7ViTFPn oNyNJpkz65bcmQjxPb44k0jklpL4ouy7qS+tJlKxw7uinN4Ju/O+B4tRD5K8XU9avweR4PYo cHuPJhuw8LIeiSN0pNkaJb+Th0aQfalzcKiXBR9Eq9lc8vehZ3Ss893k8jwy5vm3e51jfZTR wn1dWH0Ojgkdo1K0LRKt1GjRklYMUxTFYVSYnrUbuqOhcshQlDh6IklL3t3l8zsWXNFFO7Si Mt2XuSl0cNxGJaR6KYc3f+70mxYPHh5HpTcrvdTbyaYqleTRJhF3NnbiJbOn6FLHCTySzH8w 5I2eZ+M9yzg+CUcOjk+WTrhlgpp6+7Hkky9WkXXSOSMPwPwLxCFqZe5L4OTKXz04XVPuesuz qlQ28yn+iu57OJd2XmphHvclIsbLSTFoRK1HRLmvu9V0ZS3YeGmyPc3dFndQsdEn31jkhH51 yySxl0fqQuj0so4ZeFjZhhSxckSuwlZdZSIlZ6LH2JWYeqI/Ew7LsPZTRbkcnJ51eSo0qVKm 6mK4lGzq02bK3fNZswUw8LFiUWe8lwu2lZhSko0keqLubolusUyrZuswklcqWGyPCw7JXU5q c2zDRsVLA4e9d5sNCkmC6qmxz5Lt4IY5MMx7uSnJT9keQ8KUczyVSlnc+x8z3u/Dq19Lvnme D0tNNMr53afS9HqcPGEdGOFc24+phbFqXp324wynnbNOTBp6urWJPMVZN1PmU0s7Kedjzs7z GjtXqjpRVO1knJkTE5uY5HLPlTk3XiPEqWeSnVaNJdWVzC8rIXJJfoey0RyFTZLuroVKqTmo aVizSU4b05kjSYk29iN6m3Jjwecc1GlB0Yx+B6zEnBUmysUxVUqqxiKpVRjGMVnHV0abm7md XDfq3kOCydmMJsVVSlMrciIRHJuSUm5ZxKT7xp1dXPUx2zkpTksblI0qK4bNHjUY2bMaexsx JsxhwqN7E7jE4kG/fZ9++T7AfdITTaWSY0hpNomk2hMT4eZ9rN2VsOEJMiaKUZ4Y70yA00Wk RJgwLEAIEAeJ2fYbXn9eHtIA+BAPJs/a7zm2TR49Dk95lU5hzzfLwYmUTB/r0C+CQg0KYhSF EOw42jR6GVXXblXHW9/TeQh6GC5D46odOTVLQEh29eWez5naX8fxetuZMh7O077FU9jCrNQL QqQygnszOD+tVr898n5Xwurqrwe5ybpH5X6j5DE2VI6MMQeD9Z7HfI89jlTOb3OsInJ9D1tJ HxXtQ5pNtzm3ZLijnaTnM00UUP3/AyAcI4L5t2mEIyD7jBLR8wROSUQg6qQaRpidmvtP9zy1 JJOx/isf2zQYEIT0onK+Ne0gyDIeqplPpRG+UKPNTTEA80UCA2698nu7ih6oLDtYdAhwSBky dp4/F+90YuPEOFNrYPlUNQ3k+L6ePC8nIg1FyK84ieGa6jzcl132RpyUwz464N6JDN2dJ4Vy gMjlkiJ/fHQZH9B9w/hUjZSf0N4hyczpS1IGmxS48W9L0jinSPY96HSIWOyLFQxi+sGxD2xC g3p7EooTyBo7M4pQBcOtcqibP7GzsESR7FgIYCbUkJiahSZB3g0K64poDQNIgs9gwJeyR/Z7 nqu2WLos/ihC7SyYhgYNCljJKJf6RizDhpF0NmlGEstkrrOTDQoSRcul/EyiTdErrrpfxpU5 uUbylZQpplS0XRlLcvNOZsvnBKMFQjdpzKYZfxkxDIyw2iK1tUfJpphRlLAzFXaZWMo+DKy5 TJKm1UVyVWNaTTkbkrZVJo0sl/aZWWXJGDTZhu/sNjZDSlJEtkolSlObe9mzLG7EWSSyoppi o72zFNP6W40qtjzqxUncrKbGKkopSiZ80dkrOj2KcMopJlLhqIkdViNTY/5QQVo6K5Io6LI8 LJ3Zbt3JSWCOCOzgRpu27MKXNjZvsWZX9FM4zVJrXT/WDQpMzFtkd+ZSISiSTybo3XREWmOJ aSFSKb+MrwhrMeOHNdGCMm5R1SUcLFkUjBkk4LuHGGKlKdZYxSTSVhXNtzlugaKSjZ279nRY 3qcqkYNJOFdXMXMGCS9VAphuPvKaMIiNmkpUxPOaN0NEvZg3rTh1NSSau0xiIukR6OGy0EGS NjQhYJYSwsiY7PBg2bJhUK9WQxRXNfGncaDGUdl07b/YDclVCISEEpOBDN1U5O/8w2SA8z+W p3f3y6Po4Pg96UtP7aPRLq6sKKeq7Cx6d+Hxt2vN2R2VK/hYmH+NuaVpjqjKPgu+3qdXRpd2 eZ1cjq0sPJEGzqtEbH95Ax+J0I2af3MYkve2axpg4bkRLw8NGm7m/afat/f0l0aR/qHQz6qR FPZyd2n5FCngjPutpG71ejBKV35XMu4dXCuileSpP76j+Nu/3vRs5vrfEeT437J95+u2eR5v R5vko+cxb/DY7d/3Pq/FbXtUW0jdL/Wo+bkhRyXURk0fUlqJWaLaNl1MI7ruqy6qeSSpWfgU UhKHc0WWY+5ZZLdKlOaKIWerZsuXdVEur0d1xg6lEbuzBYdWzcRh9583Q6G7ZujsYYbLOjk9 HCl3DhRSUvtXbNMsGzkj3eHVo9ynJp10wpmbpitMU0VSuR+B7Jcl5OqzVNMNVD3Ssd0lxJ2d kqOrKnNJw4ac2OrWpph2LFl8tlj3LLo9kkZiLHJ0XF3gqnqXb+Ob3bltHVdubSOSilyXJJsT H6zWfilxgrj0dy6HU+b7lP3mz4MtkuH4Wn2nVs5sPwPhd5OBt8TYrazivzH+Mu89pdqa99LO xKUUw+8qtHyu82GysUeStL5WdVPJX95XvcE6tD+60jY0xs/A/Ad75nDqqeVk8jyNKdjGyafU 8XJt5JW6jslOiVkuSW7qqmz0P7jmp+R4fkbI7JckoLpcPksws5LurKPcSJIlDqYdkWU8lHCX 4lKLrKLMLrIZSySlJ9Sz8r0XR2aU0lEpKWUGxZCiLuCT9pY3Je56KeEu0/B/rlNHhUYlDi75 17LmZfQl2exVvNzWhHs6+k7erhl6VXuYUeimz1tnoU2VHXdo1Im5XYqPBT8amchy4axqGkW0 gmxc/E9wPVBrkDi82B0p3pG3XjINz5tvePxX4JycHGIiJDsxdrY3I3SmkzRtoym0tsDRGm3H bbB0Es5NmFBVjDuY0iwqxEpWldF0m8TM4ktiTOW3ibb3JnqbEiSLMIxNtvWOLaUqlSpiI+xZ IOFRIpKSOG7IaKiPuJSHufExNiyQ6KiRMEVHAcQiLSvjkRk4xAFziwNBFY9R5Nztzs2lkdG+ BMdBIFNkm2tNTSb07nb4H2L4/r1t3WNTFsLUmP4ubC086cRSDyfoPO/RT3J+oUlbMEpiV6Xx v9c9DsDuKrzPMp701J0eJwmv/OK0kPFUVqYlf1fJ7VDEpsgMkmg0EIQhAfdXXahgzu+Wcs7P 2So/u/jYfrjOIiDL5PyLNfXm215q2r34fofn027Pc05sPuZftv6j9doySfrSeSXZ/NfjfqOh hp3WdWH5Tw3EuJMuz8bB5PXB0ebky6sOjw0Kc2Viz++JObhl3crf5zo6P8RLq+DLyjuw12f5 C7L3LOqjC7s4bXLrO1lLMwglRb3SrKY6MX+Ctzmu1dpMQ0vhpctHR7kosa5PnTZqG6zPCVWX WfvpzYlS6UfzHVo8t0sLOyzutEXV6l3KWScuqmn6X9Bg6R51udF2lkuyU7uhZdLmp7/435n0 Zy9ysvEePesjh70+nSj7pbvJ4e27FscElou58TCC9peHMtJSTZdZezLCMuFJu9G+/TFu7LZs ZybebZ1VsSy39GyX76I2dEbuEfp6vk7uRstLvjSVkS6NLOr0e91PDT9h80vwxZ958XU/mIMl Pztzq5FJSkIUgd9de20c7nHVtmmxFJFKW0DoG8PtimSVZCxZH7pBgg/WaU/37hNHQc2jH9ky P8uCf01/DQpJOT6RU+xon4HtVseBB/ePhfQ+h8DHw/Z9Ju3SKI+nLbbVVVVVVVVVVVVVU+IY ejR1cjdELoptqEsqS/XNvvvyMGzJhCpjTmqY05v1Ddsa2PiPtGcncxiyRUaQafwOr9Dm5PwN CjaIhuS2d2eT879Ri5S8QeZCdm72LLMoh5u5G6wh0fR9+SfKYW2LLS08wmnzK/Z5NuXs1ru9 m91mvjVrSqohKksLKWfsuiyktGXd3fYw2fB9SzTDB+uu2YUuUWYWUsslSUrpSUc1kvcs7JaM pU6nJdu2ZWYSZJbqP1MrNn6VndZu2OinzJcJcnDLdzYXSRZdupY/6tTZZsyu0ussl9TKyW67 DLyU2XcJebo04S4SbGVKR4XbsJSyslZSzDKxJ9p+y+82N0beEt0rXUhu3S4WWShm9qzS6XDm s0ulLTTZS7s6OEpbMtkmSzq++lSjeIdIhwJ7jucJpXJTFbleZ5MMuSuvSikqUcC7dRddLc6O bvvxjezaeVszadLrQfpuuzu9W+nEtMLrJZXa5sW5SeFlJYZbJfhWRdZKKaUuykVJHRxsl24b nNsizKMsst3q333wTZ0f4z9L8D8Tq2I8nVu4KS8lKPR2XbMNn4mzKzLyP5rhZ9aXZp4YRydG 7hhKF0qZUySld5WpZpKn2XLOzm57l1MN6XdSW5hS6UufLZj1U5MPff4bZaSSSnTc2XPNGGUv JKMrOaWV2y5Yw80sqXXSldhZlluwyth9F3N8mUZaS0WilHmldd1x5MHJlMUo9XRzXablUlyS u2bMtNLMRdillPNJZczFMui6y7BjZh5t11l1258GEaEskycmijhhfmbNml4rs1MPYxVWFeZ3 NNKOjucPc6rMt8o+azZEI6fjPziYQfrrKPtMJT++++/04P3qkfZ9o/wjmcOh0fy1R1dXgRj9 r0Q+L3pKQ682ElkR6QfR9b9+PmjmsuMVTd/VadlcnuY6OB3CfrnKJK1PEe573AnNucJ3Kp37 yVOkmzc1uvXLbNUqfnW01vT5YrWqt+D7e2KY4ndqlqVN9b343ys3let5zja1rGY3libTvLM2 xvtepvvqWG7dhk2SbrN27ddLdki0tavi+/GON+OMGGjdllhswZbtmHGHE7S31txvW/FtEpvP FUrWpm2ZnTLbhPDhqJxTibWpbji3HF75xjHHGOONtta7xKJRKSk83cNKVUfO6PuGJ2foj6Dv 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 ENiTZss0OilCpmhJDWLFZBYwW2mwaVtplhyS4bKLIkRlWmMRwqqmsxVNjGK/cP3kf2z98/17 +uf4p+E/vIjJpgkuhofyFI03JYOY/vG5yKcHwREdyqqqqqqqkkkklktLaW0tpYlpEmk0mkkk kk+ybnJJJJJJJJJJaSSSRJJJIkkkkkkkkkklpJaWlpaWlpaWkS1UlpaWlpaWkkkkkklkiSSS SSSSTm5ySSSSSSTm5yRJIkkkkkkkkkk5rqkskklkkiW2bem5nNR/gHRFkOaIucjqw5MJSpZ/ RMoOoZOURudh/hjLolLZyRl/qzB4SS4NCjAoppKVijqLOizZldSl12QsUdFEtzsiixchyG40 ZH+vP8FppSVEkbHIo5ndD/0pQ4F3ZSkqekWPNHUweZRzJNGSSl0S7oyYN4iMlkkrHdSiikWH Vu2bKLKUs0Ox4Ui7ZSVLLCkShHd5CVOqUpHI3ckt0XMtEqdUrktyTYkooo/tEnBhGDouR2Ac FGCUZMFEeZ0dVnddJRHsR/oGJh1tINJzIdbG91ohUHTgfelVL4RSHxiz6FMScnpeE+IeQdZS lKUpSlOqecSe5DZ4kqpJJJJJJPpbNzkkkkkkkkkkkkkkkkn64b6jPW354aB/Kh+ZDb2ttsFJ /kV0WR+yxgn9VI5jlJDqQzPTNoPqMdvrkkkkkkk8yj5AZDrF0iw3XnELlBSNjEKtIRPBH5jA pf5ljTSVcq2/p+/yMsktXeO6L+ZAxACED5XAWxqu7p2LIqc8AtpQwDIfnfs5FVDztnxK226K TCoT+0seuIac229y225Nm/Sp4nvo5YZFtJsskiqRMUclEmVJPf+7/g+TqcKSQgDVAxzoGxA7 Dnc1mWlHJx5t3zz4KrML641QT7OtjVNstOKtMflf5GeNu3tu9zq/41Psh/OQj7g+aIdduOO/ JCCeff9CPT8z9/ktttWVbfkXF3eT8Y/eHJXGMiq40uI/3bbY8mMNnRWjZpqOSqPGKbOk4OTN EOnKDfEM0TEdKKqq00zUuj1th0V1VWMZFq8NCniOpyMRubaoUcYgcQh1YR7Y09ywDwFXMax6 BTxmiRxuR7B+UIyTNEbaam7dPCTSLHKEWVB9hViSvmiSvB+iYSexPBUmHMqdY7SyTSjRPynp +t1kSWqmgsLHgfG2DEQEXwiIIBy4m5BRCy4AdEh5zFX9k70cRH27IRzVPBThSQfGxiPV9Wza R9iqofG9xUVSRCqPL51PsUdSyV33jfBhFMLrLCVKXSUppGonDGN2N2ibtGMXYrhOO9PnStIn 0ObtqPa9swm4MYSoqWDvMVSPgKxTFO6tKwJXSRWlaUmjDQrcnJIlJ0WIjT++n7SlKQtiTJG0 hoiTNJksxA0ZphstgS22zPbJ1UemDpD9ySwwaZKVKm4rI2oqd0mjTYYrGMVJyNJ4zz3FOlN1 iHm/tNzztbPYqYcMmFK5xKwe5LtkpJwVELUwsjsaYTcSTc2hosSxZK1mDSymVNKF7JJUzDow nbZDDQpUihzdnb8joerZUYO5judGjHQqyTnukcnRgfNjElUqhangWExZJ7X+W+XDT6XscOjw MFKsj0KdWkTHI9ComvNvJS7tMVw8WmMXdszTZWzZUrTeSSXS6c3IeepHnc3IO0iGwTzN5JD+ SshKrSR3SI9C97wVKrGMVUr+alMNCqirA0pJZNyd59LiUVFkNh97zXyYZTkZJSqlYxVJUkhp XVTx445s9LcnHjbwSeLPFJxZDNmzHmfGrSmyo2YVWo6kTmq2e23vPSPanIJMkrDSx9BNs5Ya QibQ+9dm4W2elth8mZIzeIyZbZva7i2b1GqxNQ0KP3ik2RybtiyNiK02qY6FtkWyJ0T8DQpw 0dpj+Y5Nm4SxDeyQbx4RP5zuQ3J1cyxDFOzHynmBtJI9SxHWRRDqrk5OhJvYDQqo5pxP9RLO rmg4hIJSOJFsVfOod88HqmHNNpG07oIfedWo74lR4q5psQ/bqbvfEYm6dGw/VpjwOfc/HCpj PpmN0kN1km9EnoLEZTZ0dZiStuPk4+DkjyTUj1yTsoPU+I7jUTdybjxmR4BtE/aQn1fziqi0 tVFVI0kiTITEm2mmmSTSZLGaI2iNoIgm0I1gRCISeNvjE9ze8+r51KPGRSWAWJE3MiMkPA8n uUqlZ5uESyyrJJ4MTIVR7WmPMs00w2FVKnosYmk72NNKqoYwxisbsqo9LyEcJw0KNKVPKPR4 28WjRyScmU0WbHpPA1tspWzIRnhPa5y8en0Q+g03g3PUeT7iuyt0fU8UnoUqWQEmbTWRJrbG m+ww++N7nEGySTJCV13Tk0jGYfQqbFEqpPa8HLHmkYoirORmLJZBaIomymN4tna2SIWZ8Lxu zxrbSIkLSRIjZZM+cnuPekJ/Pd3a22WUtUsruRFYxhhUUVMkmSIYkKUpOj0vh9/w+Kp9Miva VJoVRVqFivkVNOjt75pNlieBZCMSsY9ypzR1O9o5mOfOOjcwdydDS700nVI6pTT/TUo04RK7 MJg6dlNEwpVUVMkkmtsaR0dlmObaTjxZM7MbpwvDZTzsDSSPcgjJJ5socPJ2MuaWknU/7FyN c002Yqpo2YbKUsKspWpouzRSmJpoxG0mxVtk00wYrEkq8CthoWpuxo0dVmKnG7jb2FnI3PTc qeuexEuJpXi5JjK0fKxiHgnmMedjq9jo6ObsnlCK3R8NClCpT+UfmiTFLHmJXVHCTrIn5X67 ufGEnMxHwkryaPiSOyetE+UcxVsA8w7w2TWCEIQIo7wIO2Ngo4iecehE7cMkkn1qnio0w1jU ZjFqiFwt0lLiDwTEOIFsaS8gPA88R70BAMgRPlDngFGVGIaIE+SrgyV0LzVcOahnCZVaQphq XJArMhP5HPnz69fvD5D4Fn4rMeGzU5FJVR7lQPZiQPhmjvliIxRPOsoiOCfLu/X2aE05sSJ9 4kldE2VjvcjZNyp9wRRYJRafqvmfDze/0fkk+SHyb+xsnVA71kgT4LIfaVJH6JKRkRDoxJ3I qT6+r5nVPFynKX2nk6GuHDT4EiR/TEssqEtkkTCItlsTLa2020bE2yEDJksz8ab74mkmwTqH NS0tSOakxQuDJOI5zmJOWbocnGmacTJAwBZpJ1qfoKkbtqVVSlMSPFUk879tk+OlaKYYqtMe 9RwlJOct9KMakV9J1Mc1J/pP9TEemIP+bYTm6SYif3w+sfzDR1f715n9B/sk8DzjketUnfCM nwMH2hKj+etbfCOB6FffUjoWFUV9jJJ7IhyMIkV5PdYWTkw/HZpxU+d+djuVPuIHmbujtXPZ Jvb7U7YIlJJpNbe8sZhsp9rMdHN4bTqp5P0Th9ENCq+B0SfncxSEQeQdXjDcwUelolw0VpgP Nefl5uBr9HnaFOlt+F+Ljn7R7EjyOkRqEKfjzXwMI+GRPeYDwyNg2yDQDciqDRHBg6QEV4B7 mEew2k+Q+p9t9b6fwbMbPpPsTRyNyvxO3JG54+o9KvQxomJVSqsTg0K+f3/P5cCR8/L5eN/1 n0qidjpPrUVZaWKc0h9H8X4+O+e45bTVmy4XKFqB2FkMolEBGRFMKclLNRiYaWC5UWUsQiD7 eeWYQ7/e8aubKUpzhP3PQnuV63ZyPBmx05D4pYIMNxVmxjqVRySsYYqVisYxw62FsK9cKmRU nf6vskjknNh3DHZjRI0YUo1JpTQxqQxoqMdTEbGmmmaKbVhu2bVppiNlFitjY0rUlUxFViaY ZJuodXCZESaqcO0+ZbXeqVSoqk5J9oakPefl+X5dnP4ZkTFkcyfOVHg0J3PA0eCPoNmK6LN2 DTgcI/orEkNznDyNLCmISc2PO2bStp6kklVJSo00ic7gTWxNIs3Fs0htjmd22TJyG3Zzg42R MUlI5lFfbkfmmJ5n2z0NTGKr0XWeOc5CccuTjnO3OSSSc4ieneeJI48LbD8asaRqpLYeo9TH kf0XI1JqQRyhvIakPq/OfLJNtENJibeZ8B89iJEVMSSdkh+jBSwnCND0q9qvRErZYJ8ffg76 llBvOBMRI/IJQcYwHgmBQpngHTo2ULCDsEQRt/RGQ/KK//H5lx/MP4BD6xmkhVQWVIVqH2TK kP2z9k4qq7Q+xZiQv09nf9gVPYXMvyOTvvm0PH7ZESTIAGZ+l1v6LrXLdjr/wrvsX2NxzjvX +WgBtri/5/l+zm/cWPxP0mqn9zSI0OO+6L/sWPHg7t56D+RW67xUy4+x7/8fFYnTqVZWAIMZ hCUgIMeXcy220qNpUYJUL9rfb61czP8WZltKGszz9ZhUS0KfN5gYjaUtLtzLbbbEG0vpuYX8 h6MIAAYQk88E6Q9ApMEng+Y5+WyW2kIiM9N+aQ3fgbQTslQ/iWJO62wh+0siHJSlOR+0yJOi KkUqux0T9t1aVunX+0jEZD9yn4XpdMY4JJ5HinNxzY8Dcfz0T+FET+4qSc04hODFKrzyfIqS bG7+BSUoqmMkhw6OQjFaFWVhSqPxJUJseY3akRa5FfxK0xM4eNaShxMZLbk525yDcU01kltu 7j2zGzi2xt6WJbHb17nHhwSaQjxw0mPJ4hJvEw54c3iaPHOTnPOSwek3Fnm+YG3jwU2U3vNv R5m8Usi2ljJOE4MWKpVVZEYTCbycgR60nM64toaWUrZrYMb5h8s8ONHkBnXARbLiM6qjcuOV wHyAhpibECts0bVixiFHKuYh5cxEFYpPeR0A66hQJsfD/alvN/QWRugf4GP6iuik6CylHrWa aqqbGjg0xhPJkb7Mq1XFalcjiDmidY2dP6vQ0KVpjCUxg00YVVOciYmK00wVpORs21GzyaVw 1NMlNhKSlUUorJSbpjokz2m58JPH6ujo8ClxiUU4K7lctj/v4Vs2RMWcbyDBWjE2LJCVwMaV tuyNFNsZJSlTmkpilG25hpuZGLJw3JoVNJsbSyYbJiYZJCtinNsyKWSqk46scKlcjIklOTTU jFYVOJsqcNODG7SswjKcWTeecyTJEWh45uO2JzxbJOHBMKzZSjNSYrZzactpGy1WlScpKYlT kXORkwmKzctlTGlTdKVK0jVQsYpcTI3cG02KqqqnCU2XSw2Vu0xVaStNTcxpTGjguKME6ZCK qbGJWN2zDQpTN2xskrUjkljeVSmy1xNKlaU3mZENmIqpNDUaVprHa0PfTeJkESzx1COnt82Y 4meWdw42aTJHvJjwlKkrSyaxpXMzY1ELCKU5DcTt4ntenPGnLUack8ePEhbvX3OsGI4RKsNh vSXGnRpjWWlHLdhyTQ+BuRbeLbSfA2dSSm1GzDrqVU0xWRLZUq7Q085srNqOTZyM5JHgporX M001YbLBqmljFkxWppg1cTH9eJMk8yomldiDaSTCNjFjxIYz2XI+z66XHkX4Nk4XAovpLs+X S4EFDqtYUd+u1j8buzbl29ljy38itNKr2NI2bMSKaM9baSNoVYklN5NpBppUVYjJvanJN4EP mIPGnhycm5zcOW+z2btuB25lhuaDsUVJrzbO2yPXPYJYkUT+47zvP8j7yRTDuSPdN3f6Pb5x 4yeb2/B5Inyvt04HOx92nZ4pjSyLSekk0ok+xKwYsTTzPHkTm53MTjx4lm5PFnOUZCYWJ3Um NjIicUJPEc7E7JzN1ZPa0zRzpGzRSzZTFM0mK2yc0JicRHyLBHrWR61SlcKp/vGI9oTk7z7i mx7ZR9tNMeKdEck0dVfY/wmI1v/ZaRw8xPgfaYpLK4K2aMVVYwmj6Wxj0nejmI8aTykTD4UT SHqU5FPWoxIjJIlgQfWPnyEfV4XZiIhfSKGoRUDnzYs7MLHqydh4SuTZdgtvdaJaWdI+jiDK XJ973X+8jwbpws+dUKqSqDo0nepMkjqmiyV0HR2cxeEdYlsV813kxjGzpIc3Sqh9oqfWU8GG GMMY+gxj6z5mkJPApVEpURPxvmYP8CfCZH0NCvcxiPJUSq6N0xHyyS0WLJEdUj5mkkO9T1vQ hjdHpKVOFPSpdYyZ7WzY4SzbcxaxS+3hjSWbFkYVuxHDTEWybnNw0hfXLJLNIT2OHiNLnh5n OeKkxE4RIdG5JzOZ80kObg2VvEcIjeghZLsXGS8OWkf56SJJNI2cDElf8xw6Xvd3y6Wz9BlS NVGlTbFb+xmcPdAjJyuU4VmAuUxczJisxDHl00tySN11U5x4lvOKc661NMYiqxTtzyz+6myt mn+JTYw/0lY4ObQ/ApP8TdyULurtZ9tmzTm/0lRZIyrphsbpSXIT+BmKfpcc1rpcOjrTnxEa cNnOOStLFOPclGko5rqblKQs2XbpYYbpWXbLIpc5N1JXUuhTKlGktG5ZcuUpw3SxEOTo4f5q Ut24hLuwlsywlJhpus6N0XRF0tNNMuFK2QjDdlDR4ZiDQuU3RKaVMKgpzcRhpjY71Hiszcwj G+S7ddB3Kg8TW2kRwp3lBVCdVOSoaVI2VN3CdWkm6om++EaVJaieYrlI3zdUzGDnKMVDuHN4 lNE6J2UdHYxHkWMUskbpOF1Q8MJWWcjLail2WDJY3bWcm1l0aWGTKksLuyV2cOEbsJadm6nL duixdYfvtNkrqJ5Sps1GklHVdZ1YdTMRB0MNlObqSu0Z3ULmEndJZseXRTTEINdUeHDdfmyU 53sNCnNRDQpKzEcR2bsNmHJaGkS8RtLoWMpOaxSOTUlbomN3fbe7DZqLJSjwjuss8cRFHhLv HZc7MtMo0upaYhKOjCo7Dbo20xBCSVnRVuqVoQXUf0lRu5zZo7lSqGmyOGxurcSNyXJJlzvZ FJXZc3K6NaNlkc2lEIlK7mw4s7NmkW3bIaUiSykxoXMZUU3dcsJlfZlwUowuxs1ZyXYYpk5p U2ObZZXmbJOzTDTdMOFcjuUxMic2SNt2N3KynTIwqnmZzNJuMJcmxTdhjmXR0SjSeUSiFIyp sUu0hVQ2Ypu8mzgppTzOThNGlZcIRvEXSy6tI0coJORZziCHJu20zCunIwksZWaaWaNkSShJ u6IlsrhTsqOTg2aSZKcNCo5StKlm6YHJvzacnNmIvZSU1zYWRhtplZhZhs1LeI2XdmmzCITw pTanFinDZksSrsaUYdFJwreuanCu9yaaquaJOiX7cojTkpdJwlwppaDLZUZSu6FIdHJlZF5Z XblsuFLJSjhJsssrRXHVWHJZTdO9pw5Q01wshjsqIgylsS2lDZlk2NzrJG5luslyc7nIyZHm lu3bo4jklbRLdzizocDd2OrJomItp0cjDq5oRzbESmIcMKNsPGmGByJUSlRQ4aSp0dnamToR g0lCllQ6HNGSzh0JSWbKXN2ssXSwplRN1hSYjKViyit6GCYIboYDHDvgslHJTojm05pSu5uR c2iF0lKYXWUuRSzkc12EspZSglLZKjhlGyGyNxlClNm7CDYlZkJJbMFjCLlJhiXRhbjgphC8 SNNLolYjhLDqqF2WVOTKzCKRcsjdcKcJL6uqVl+Th2dGixlSzmsjkw8dFCm643WU6NLllJKU sl0cy613XCzLdThazS6hLZpLn0aObJnmbbuTTkcmzmkuZlayVLuSnhlY7HRKOiynBUYLqcLs LLUc2GG654ZbsHJpvwlz2I2WMLKbOjnhlhwiXJZKLEqXWVGGVOZkphKDq7J0VXg5MRyO3RA7 lTvsJ1KkhVklVVR2cE3KkckaKY7Oy4jlyZbN10845ENHBZdFFkWLOdiYZWGCXddp0JMOTLdK Gi8MuI2aiJpXCcjSq0Sc2nJNRXdWQ2UsmVd6keWsI05txzc08NGjuYYqjrhsbW2YbWm5ZpJK 1KbqldS26kURpSM2KJEpJEjvRGV6dtl+FW5NlyiiMvDLhguy0ulktTf0UiLmFISnhMNKdNnJ dS5Y0k0vSmljk2xyXaXL5Uu2L2bKleG2yymTKmd78sLSau2Y8l7GiSWmjdY6rnJCLo5OXKiN 2WFMollJdzSlzSpdlZSWhErtOW8srObbKzTZzcllktFjZ3XObLZZGTilN3JZu5ZZj6hsplGE U5uDHgXbnS9s1MwutNGaxqrRJ8imtttFrWtalsVrWkOzm5uFaIkOp3DgpHjUwqTt+j+Xo7jg EX8en3fs56Pu7Xp3/gvN+PtHYskttVTl+Vo9BTfv4RNipDl1wJ4WSI9HhMehjGnerTnHkq1U opSp6FZpqu/GuSGEYm6KqZPE5J7z08eNpMjiOeJyilclabzjWOVlaxwbLJj1Sctc2JFgOBut RRyWQqhNbm6Hoj2t4qiqVVVVJKVamts+FsYcpDgUcyhE/tonSTmquTqcnZNOvUxUrMTB3RGj HWTh/oRI3fB9kB2KsSOVkHyqQpUFsxGdjJY95OmbzTY/gVtIPFteOOTYJGSM1tljZZkkkzSP jFsbIm9hJviamSK+aP8avFpjxJ2mNHJUqwSrBIqhqVJiLLJB86MSe32+b/bOboUqqd9OOh5H +3V7vCH0vJOEjrIkldfPJJKOcTUx2frqkqhod42aiST/bQm1POxMiPU0mk1Ikqoqww9DBGLE qkIqmiWJJNNoJNSG45tMR2bOJJLCSo5N2HKWIaKj/k0RH4oBF2NpjUcfV65U5O7ZGWxiI2VL 6lnk2w89Xtups81zDhyWR+hJFJZbKKZbGnGytNJio4c2FWKqqhVKkwjklhK7Dkl9GjMbS0s5 rIioikvB0QwspRXM3Obsx0SnRwTFRWyubo02dyujZxqSaVVKVux3zOg2TZTqpvOizEOqq5uj vZIjTquSostRTI5kwonhKmxzpbmwwu1JN7Ec5zcTk70niR7hN2M3bN/r3dZXfJXDiubSqqpi pz4nPujsyyOaG6UpYRsuk5sNi2zUoy2MMMJy0pvFN+5ujGVYJRDhpGyGy/CJYzm6u03kGm6V tMrTRKqaXSkZpSIGbrCKWQusl+RKmFNN3Njk2aYcQjBJD7DnFzEZZc0c1nR5FUS5vBpw5uiJ cNLrRBS7mlKMKZdGF3WLw8dUVdsbPFl0QulEOjAim0m7ulSlLkl0mUowS04UykuwmyymGjGl 3VOitNmbLPF0dn+Q3cdXinnqfR1jvbvB3vJ0ninCOUM1VW2W22VVttLFVbZJ5QRs7hyHBpim HZHL3+9+f1PNHN3cpVtttWQqFtvifKsI7xnm82GoQXHZCIPzHDs3h3WSQlLiV8RpqncV7j5f xbRv5LR7jKdE1iaUjFo5tBUuMNgcOAOc2SjbFpbG4qkGD1HdU5Gkp53nVVVqHxREfZk7kkT5 2B7XuRVVYfqxe0nEQ4UriHiDvPrSkSq9G1Q2JqalT/USnnR4P3BHARlpHg8lnQvH0nxJplDu hcnrJsVVne+ZpqSrCdZKVJJFiiVRKnSMOSxJNpOcepIaT1ixDQpZAlVHnN04kUelps3Xfdj7 b0PUNmG9IWIUJrjpCHNITVTkjDonomn3vanX0Rqm6or/RcNK2P1d2MKabMVGw0w/iWs2a0aR LxEeZ9HyUh9TzVGETK74LOeHNN41t8tZa2ptLM5bTnZzZPvt+BvT2PZs/HK0mtZYTUSKWLTa wkyRJkISkkxJGSJsSabZrJhNrZmtmyDWQ2maYkyiqpiTs6okw+WRVUdGEkxY7KTFxXDY+Fwc E05fpMgjFivtL994MmyJOU7zhT76mzEjyr982SfMSVJ9pY3lcQj0pjkzdYUpoSrNlhRDRE2Y IJJs0aJmCJS2XB0RLJQXU7sMu7JZKUIRo/MllhURk3MaYZCR0EqQ75JPtuTzvtqTmVuGmmn1 k7GyursxyfromnnslbGIfU3vltSVIkkmgmkREaQ2RsmQ0k0iIm7ba+TwHSSeeyJDqPZJE3DH ndzHi78IupehHRokilEe9YeSS7wiJaNIySzSx02bNJ2N2p1rZVk4xMSujnk1IlcMmDZHNUY0 xGRExAxuNNt1gfE5sZ6QhDJKrRNSKlQ9T9dj6eyOyc+caFU3DI6UDQrKbpUXdlB2pc4RQUJu KkU4JxDuThs7zvUnhfO1MqtKTSpPE3fos8zaPPUJPiecpaTo+dXE9IUqqN2STCkw+F0kbCxE HY4jiBh3+yclVZVZWGRhi1mJvoxmGjPcd5hD4sPyvqWXHe6Z/e6t3GRpLdd5NmzKUXYLrU6t M3GSSz6lkXymJSlD0SrOUUs6JJWYiyibOlmLIlyYihow5NXMQ6JSiUmFOiywuyiYwsYWjs8b U2ZJbEiW5rnhCXNZZyci+m0OXLuXiHRKCKTA2dXJhrCwwi1EckFuH51HNg0KRzc7HclF42cN NLJXQ7JUllEOEo7pSlxsYMurbJ3w3ZUbibuEd2loIcLplGVkkqXbFF0u3DnZarFy7SkZJWUX k4JWUsw2URKnGHFoUnKYiTTswjmw2dDOmGksGw04bLrpdWV+TdlcpUQ5SRGyyuZpDxKw6pHi 0kRykoPAMwhaWnZK5lNdNU0RVkKqJOySaVzVJookPCQqjT0sPF3H3iaTRYo3LRbEm998dETP ZmuaBXAuouQPhEUyGIpzujTLDnHIBDoRp0RVKbDY+hkRohskqFWJJ52gPUR9DJOT2hkhOsEP TMU9xSW1iz1dHkucll2zKltbIjhXjBlhlZKkkiVKbuGGy7d7m+yW5uyc3nHnLCTzJ2cSRJ3m xibJVOGEey5uTAOTmw9yzonFOrLOCXJSy5YsdHJdlzYZe9lhu3ZfB6KxsbFjo/jhTBxLZlRl 1WP0MurhpZZHdw5iUliWzopdphLrlZdkwFm66zLyU5smFkbMPC67Y7G7Zl4UizKiWilkrJd2 lzEpSdmUwyy8REXYcnZsWTEZU0MpJdDSWejs5LJ6sN1zDTw3WOCkmVRlHNdS0Suw6rsOjo6O iyW27LwXbMoh5uyLGkmiycEuF4IUthRK6VLlkuaKUyhdTo5KcmwYc2ixu3UjGlKSZeL6cUwq NmV4qbo6N1m66VmClEliktl1F+5ssyuk5tm7CMHZwwyuSl16KLmhOEpUqVRNvX3SSeIdnio6 OaD4SqqGK4h6BiO8Kk4N3ixirprIlkaVVGwlibKosh9yTyIaKOIp2eg3WNBiqyO5qRJNDQok 5nITJIWdvxoskHAakTo8vQkeixSz6JU7LsPeUpcWYWZUuvEfDzY0jhRhSSlSJHNw5NSJsqtw xKiKvVD0yPY7I9aiq2O0xKxDzJ6ElkE/4tZD0oo5OXJfaSQ9up3J3lVJ+R0k5JtNniVVKscM rY9yM2mW2bSzS0vbt8JsZwnZPMnbqyR9Bu+0NKKmKq+pfaz3wjZ80k3eKwj2tpDiJEdlhVni +8ds8fGcOPgZvsESItMoSSESySSQls9/bNzc5xyabS22yOI5xlLcKWiGkU5pzCB9zBsCGqEE ecDE7XtgaUydIL02lLR8ul8qyvtaQoQPcw6jMG1XwI6SemRaYyBuhPIlUqlqoSo+M1E6H1sR sKOZZ5lniU5j55NCAIdLNlj1+Jd6ti0scAN29UUNGPBGxjIDZj8mSEjqskmz9pZG4KqqVNHj jxJpydLJkkyzEtccPEzcRJrNOc7bsmKIYrJFWQ0skxiOjGkqq2w3VNWLGiZJKIqN2MGkxRmG OaWaTCRpzYnONxxEbhIaRtohNBEOJjCmJknRmmkaUaVJpVVpZJpSzeHI3DxHmaJZJ44cYUky VqbsSaNpKqmVOnJJJ3jYsHo6MFBCwhhkLtCaGgMpeuAmgWCScqqjGeuhZrhak8ODCO5O5sYl 9MzcDu64iC7BCJj+LTqwYpIDAQ2iCHI2hYHKLFO1A5Jyb8OxRjVDhDQcckSHeEnu7/P3e3Hx z2Pf0R6pInVYFVSUjeScns/a3I/nm/zPxplJaLKWVIuIYbSVU00k50oqQ6Qsn+79CTSew9rG Typ63t29umOSD2nuSHyPHdH51b67fZo5elyI/IIcSiQWPE4kU1pEPjGfyzm3pPYnuTexu5mh KlSJuqSfC/YMkTwU+Sk/SeX2z8RE+F+I9r5GiYj2/HUpSlKfC6NlYxu9KpHNurs3Sqh67I3V KqqPFkyTZykGQOpP23NHQ0U/aYthd/ZpSyiV1FllizCykspXYKGmEwmGkkhzUilkTZYk2WSR PMroV1BR9fuWPwvibPMo5BW8K4MY+NOCIyQnVUhp0R8iiSvtST+hVVKqNDm9+DvUrmetWVCO qneqd0SRI1OCWbHwqklUdXzo7baR2bLG5Zmm2yPD4OeNbaFtoke4nNtFmTSYEm0b09jsMeLZ mTNQg0m3sSmpyzZ+UW2OWltpY7K2Km5UOdExUOiVxied8LuTSfwscxOT3nNMKl6sTKuFjCrK pXJhMqKpKUUshpjFPUfMiQ9Lh0J8DQpJDhzKnMk6LI2bKHiqqfdisE+7GPw7mHh73NOvoR6y WlUeDxObUiNzisNQjEKp4QjZNpIjvIkNz4TmdnmYbJ+SntLXc6qKU0jZQ0sSadX68aH31R31 iqqPBySLEpZAyIx4vInNA0Bp85gL9f5p9Sz2RMMShIEZBdyzHkkLcM+anPs00hfSOcnj9N7l 6eiJPTmRj6XJ2Vo2UUvNUw0KsTTEYRPYTmVm5BxCek8Z43NNEhbRuTxebJJ49rzeTSRNImhL aIkSS2SJpbNIjk3EJnjnE4ts57D0HPF2OCqODg5KTYoskUlBX50FcRCxCCB6rVn6Nv6tve5g DVMEvjHWCZ3I06yWWSVPkN3iRp/SpCqn82MQ7UpLLRSJYVlRPdKjaO4iiOhX9SR1SEfwLEkV QrCMUSwpmIrA2i5nIKQiKsJJE0iJtISSbImZNokyTSSaaMiRpokmiRMkkySRES2aEJo00ElN EklsyRim2lhI1MIm00yTNiSTbKbRCSSjbVkhohkhqbSERIkUxJtKWZaJEtsSMppNLBJtlo2N LMkbTRFVFVJH2m6dpYfV+LH7J9YxB4wHjClQpSUlTHRFhKjTvZZsj4znJE7m7bJFERKm0TSf HT5ybbSG0g8JpOFhbCxkFWysfQRZI5HNXi0k5OEmJr1Pe7lcnZyiQ7EfnUMQd6nUeorlLIne juYFlKqltiEyWkiRNSgkyIQWxottNNMkkEkQRSrJSyVKDQqFhEscjZ7PBwzjYYSs3iG7CBFz BH8J8FPJ+2/U8nyf5CMvO8XckeiEgmGJ4KrwNSaShOGHlRJppPhMI//fmfEr2HrkOckirFIr M0lJNLNYtlGTaNbbIViGUwmxZSNrbSxQqQsRZAnN1hEZIhosNxSo5idScnJUqv02mn6aqpyb NbLNm5l68/eVD/nERBxJFD8rIHZ5g9Ts2H+w7zZpSpP9ZDqqqiyRux+cD6R90tn1m+V8SJii sCSK2Vsx630PW/QY3BuTnMWMkjG/8EzImLEmjUQoOayIpT9ZTH85u1N6JsoJXpVHYqcPgcOb rCpzlqrLcUSPzHKeKu9x2iQpONldR/FJDhtCq67qmSZOkkj8yrRIfmaHVPnV3P4i4KryyYw2 elWzSbPamJ0fAvBw+BwVUe09CTuKiqsniwnmiI/VIyLCnneLZiTEySRJPEpGcJiYyOSo4VLs bNG01ioqsbGNGIW1pNMkyaJImmk7iSGdyO09j639Zp+NXzH5mMfeVsrH3mlLKMsv2V36jJZY yspKmzMYYUftLkWS4bKNLlIlCWljC5RwwslwpTJGXC7Rgo0kyTfDERD3JIK/ArJIPmkf5Uo9 b2vUkxiphR8SvaqK32abvaRGoTQVSxVSUSqJW6phLBENHuJ+F9A4fBEjo6w+UskopSosKmyx 3yOrqg+VuT6JFE2R9FEpVVJZRSR2D6X0vmHSHmJShX1sTEqwlWSFWQbqIckTBPnVPqU2BP6b q9T65OyETvSySSqFUSlhKooqdzhyclaMJPJ3SPBukVMR5/U9WMOzZ8DmT2t31p95IOSTSoYF KaGSwz3IcmIWe+9N2zySxIshKQ6IevFmzm6Jw+uQ+UlhAIKtggZA3xBgqDZEeQRQ4BdeTfSz OWVjSZLZbZT3FjdKkmvEM+FUWw8ymFeLTE+VYTESNpZpZEk2RJqEkbTmnNWaTxz6rnjbxBt7 LGLJD4VJkcrCOD3nvk/InI09ySPuQiwe1o98bL87ueaJ6p8rybHwqf9qrFSR6VE/WnV4MkjU j2qj2nDETTEwPvliPQh6Tk6eT5E7Uqpjw2rRsUppT2KUxhkaaaYxK9x1Q9DZyJSjh7MrtY5L tF131NLpMyXJSiPrSvCUSkmPvpcJGnWmyzZGzZZ8Piww52Ys01GxMSspGlKiKKPTK12X1my6 Y++2Mx0YbuG7g6tRyS3jLCWzCMEfFd3bOKbGXJy1ulw2zCOSXNg3Y68mcJRLmcOY4WYbt2ju udHS8ILOSW6UpStKm6SXhKiM81Ojku2LxFRu4dl0KLKiIJ4qEHR91MLHjddphdPVLmQyy5MB SNOiUtzKJlHzRpY2bNlL6Se5U9jxKeyIY/r7E+ORMP7SJUSbo2SOSn7BUTFk9anuVuHon9mx SWIf2EJUkkOzd8j2zxfWrYj98rk3bE+NjZHM/C/aNIT5E+xXnafUr8SLtFNlSpU2StmExoGn 4mG7TdumxMY05mkwm+ybimJon3lTTZhjC330F2raQdST6g0KPrbxEpuulTnCqs+3UWj7Fiea O9kknKQLEj9w5utX5k4bq8Dvf2T53sI4P6QfOGEP+Af0xzdE6t2HqVWHdIR9kqFVZKZEkJCW 2z7WDlhLbYk2aW20LbSzZq2JNLCQyLM32CzbmyeQ3JtujFNyBWJhMaJmkMk8WSI9BE+8VVfY yYqyin3lck+++XkPc3RHRHsfYqijtJUifG71ETUT9ElJDENK+xFSqkdlR9zkTyW2Z7DPtUhN 8g9CRImkkts1rbEWTRbMkISWm2mkmi2Jpk0jaRbaGlmaLCw0STTE0sTRkgxIJCQk2gjIWJpR IS2FtEUmVIR3sjI6pHvVz3c3wtPOzOETE9LHgkklLZSoDovDzcKby/6Bl0OEt4ifkUfeWSei IVJ96Ryb6bDDo576keZOk5MbtMHkYTC0Usj2snRu2NOLbfZLZ40jxOe9OR8LnNBEqTrJDQqC qbKJMUxplVK3KjFVEhsiVEkSok859x5w0WcUrE4dLKsSfA0KZUTd4+uEk+BFGqSTlBGJ61Ke d3yEexueTBiqoUUw73L2OCIOJCTh9pu2cKqK76xhUxWmHoNBjz4TKnCyTFQoqVKFKnCkTiCc 4InZhe52009CsGrEzKxaidSxJJ3nBVB6FNKaVqSGjDwYepU4S7KUUh8US6er0ZdEoiOJQpGH MsFiqaIolBBaYItFCdP5vCfAPc6mHcYHBY/ks4OGFu2r5tg59/dfkO5hgTzzhlqoEUhuykHr QtotgkkSNotiW2xkWIolR63IfUVVPm+MFo+ievUk/ZCyd8d2PtLI4dTD4aTCOimQ71YNCq1g aU42YhSqs3o2XauFSRwrdsw/qJ3Jpw2TFc1KpITjYYiJVSKkq1NnBOCcjZI6LymfR2aze9s0 TTfgM5baxNaNnIUtEFbGMhnW7SLQMUYiGUOWU4kcl4ki2IFGnJENNIqqKVUnRzjcksbqfLs3 aKsY04dEJyTeEWLhEh/1TGJViFQrnyY0mlIrxnj9WQe4+b0b3e4ve1GJozw1yjkXx4v0J1cn Qlqbyswz6+C8OEj9w3cVyVFVKrzqkclTmpvs+tDGseZXwG3OTdYNCqRykwypKlqsJUe4PONh zb07xJJEyWk9OTFkaU2aMGGzGzZViYOym9aKp0MYVEYrJZFWZPE4MNNiVKTUxjdirWpszTkY 3TRRjE0Vpe5FaawUbMKxjhsyTmsm5XJjhphUyyTjGNMY1YZFORs0bbJordWyVpyaxWhomMFq GytjTEpUqpU5ONJspM2VyY0jmim7fhOGw4UVSThvphqMWEtRWnpTGoVVarkyai3pNtaFY3vo 88tJxw9y8uU3apJOMcTNiFK1EZofAe0jmbeq0pLJKRNSkWSaq01iqtUlZF6tc58CT2ubJ62a OhpXV986N3KlSYoyJSwOMbHJ6x5kb7B76Tt5bViihyqsHc5E0kk5MBU/wOyOyfcHrNDumyOY Ts8Z1LSchuitThWJETw1QYABcAfWE6HacOWfzvXiUgdoh4cDtjJf6WUyQj8RRdwfwPR73pD7 0QJIjzbIYUex/OPc2Pa5EnrcmFT4DJ0UsdpLMJZWdHFse1beY3mW3g56R4kTN8960HvJk59+ 8ckEJCY+1G5z1p68eJ7z0doWky00sYuzWwjU2KLGzGzWypWsKNymKpsxifGrSyJU0lYw3FTT TGZH5laUrkYVhu1JlSjZkxusncrRWkVJwaRlbsJzSNEYnzFnDS4ljFTDBSkvJWKFGorJKc5J hyTZipITUne7OSVZPjO9IDaCnlOrxVXUruqaFKxTFFMYJoaP04kWHo5kkzmnDTTU71llWRCy vY2lQnym5w0KqordTCV1UdVMUYqKrxU5M0i0y3OORRJuPT5T6bhOopFG0NLH1NLuaUSJQuj+ o7wsu7+GObSqivAfGr5OqfIp5RPUqB61gmQh3Iokaws6jJJ2lYp+ZjkfGled5GIcrGGjFV/W VWMPa7uHkim71dPcwfhbo/1AnzPP1+72j/EGcmc5yiEQ3R4q9LRy/dvvpo7yT5D3PJjogaeh j34qVE3f2GlTRR6dNKKpSqpGKw2rwbsbMVG2mNlMUkHr2PT0ekki2SZCEk2JZu8c8Q6Oac7m RLeOOmkUqWKTerYmG5s0mg0KaYmJU5NxCczxNvYmb2bc2z1Yi1dmQ2SGow0Kkm6mkkVjdNhJ nOdh+3zbePTm5hD1NpJCnDKjTJJNrJJFo+8x8h2f2HmdyqH1Pmktt+FppYxU9ixinxqTH9y4 ksVwkKMp8bJhuskyVw/tPxntPek9z4M0x7iCSTPv0H5xG3rHRyHCVsNK/kKibpCpK3YqqxWJ 2fQNfHPm53+ch1cuFVLErzMYUqfC+CYkeZFU8zEwLKtRU/Q0P46uaX33uaPNtG0ZI2bLt2lR Dy+o+58PzmIPvpP559pPpVV2VikwqHLUkdkjozZ28fLekq9c5vSeg9MuGVgWMfSJ9otiLZrc Nt7Fps48XhpLI07kiKkDk2Ron7iubYN0hstH5kw1+uop3w+xSL9Lx8Vltn2RliRhRkpTDQos uS2pZLaVxY0l88rmDmxjfZckqq5CyZurebJnLG5wpjDBluvddV1Iwml1LpXWpSLrl1kSVLFV j7R6dbOCuipXHt+L4F/W82OT1K869JizJHomhTWxWK4w2eTdpxtW5pWRpphMY4ySt2NLsjYr hdNoxVVG6ViaM01itFKYXD2KZyYmWOSzuV4q+xQ5ubhodCKmz+WhjTdJOyS6fQycQj+aw+iS VSo/RVDq5rJ3JUNEdW7TUd0JJ0ZJ2kWWEgnNj5VPWrkiuG5WmKk009rbm+stmb7vx8GSSTSJ tiKoj8r4idD0pXVioYqErhkZw9PDxOSHdpznE5yLSQjnpzPG8bjicTx48YSNppKsQqiLCawV XOSOrdozGClIphWDv0sZGybnJiST0TebN2CbqipyT4FZJMbp74Rs2WcJUxGk0yaNJNohQKSN DRskSL3ke5bPNexPDQpGGit5wqEmkcFZDQrqmxpgZMYSjY8xQw0myRqEPsqRg2SpzacP8pg3 QqSd8ZjEnZVcl0eCtSbsm6TIqPSsImyq4JFb7vafOqVSnwN4STZLEjuPDBJ4zTdzh5yT4ERi T+XJXkqd5OqMg+AoVBUcoFkidCp7iyFbu9sTHij7QeKE0/tuH5CqRUhLEiyxYck9YkiRZtbG 28solpMPYZNPXJbYztt2xnyVntirWUqmp1a9BZJHNVYqqweLaQ0KkqypFskWUoqJk+N7xNHD riKFSP1PiSYHvOS1+hh7H3d/n0xyCexlb7/Tt7UpPdXkrs7PQ519dQha65qNfC12lkhW1ZIt WsJNLeH5ZPX6LtjMSvS0aLKNODTURso0aezCb2vUXsvZ91lRGpRcwUuiyyyVKJ856HPRPSSM tnie9IRZGqlVMSSnNXgkriUx4tNDklckMFJMznENmNmzKmhkqtKlaVkqzSo0ppVY0xXwPusY 2N83bRFzgsw4XXSLRCS8mmUqYJ2Iu4ajibq02RtZEFYslbG0SOThi6WESu2XXUppipXJTCkr LRGaUSsi5KUljTRKmLiwm4wwIs3mouGrE0sJODHNWjfdk/uOcI02btxosTCZawx0WNtjZRuw qpWzGMY0aU5msKmxzjiYrZwwoUmloVhDdIUvdRUIwusuoUrdZJu0xK5MmCVvXGmNK0MY3Uhp mMiqm5jTisQVYjhSmxMEJSFAwETg1MphMmYuVKYUZhLJcTDAKDMNGjSRKUyShoYzGhW7YuE0 UolaYbKmGGCYqJoqVTjMNmNmho0dJpjUYbVNLJwVOW0bE0yZa3xs06cMTZTmpixOGMnDUhKb ps2TUqjFViqbOUoxpVVsm5tvJDdJNxUiVUmzBpTaN8aFile5DQqkjRtwbNmMfOqlUqcNCuaZ KGyVq45pqSTvhVKmx/PQp1aeBuiMcmyRiTzd2OSuH80Rg7bGJGhFkTmrsqdFYo3bKyTTiIYU 2ydFxRurFSqrDEbqmixipiTsPcsc90vT09xEm5ucGNxwjUTZDRUUqkqpIbmbqVI59FNG7TRK pKmqm7ZjZFhXMKSbnVJNQGE5rImDoTyxI2czo00/kojk0SlCqUqik+Vj65pjExVVV06Mg0jS sWbco8JkU5yd6tJUxUlTWmFaaY0rUkrCtCqRiGMhKmkSXvOSxE9yg8pukw5OyfMNlQVQTEx1 PUWSRkincdjJdSslKqtKrCJDMXExMVwiqcLIiN2kpIVHqYmzSYmlbI2JBwSCJux7Tk5NkhLY eIzS2bJCI0kttns1vHhzk9Lbbbz07ekOTkx9fDHLbexMjTSiWN1li4WJW8kbtGzxYY0YTcRU cImyVaGMnCaTZWaRRJzKRUagQyRWzdW82GIVqSaRiRUaNba0taDZdmjY0yIq71IjIlNHvp2Y 5JNyzTk7ZnHOPSbrxOnOcb2OckqlUKqK7SO2I8VMUm6a01LWmySeIOiyQ5Z5I1FSTeREU4Dd uxVVySfG5z4oqR6lT42MSqRLJ+RcbT6zifoe48XnmY9LD3T3aKj5KaSwstKbPoY75PQqQ8Hp kHyTg8T6qxjm02EWJaTbTLZMm2gWTIkGiNrYkmNpDQttIjIk5WKkqxIxUDFQN3lEjNzGE9ib

May 03, 2004
On Sun, 02 May 2004 21:29:03 -0400, Mike Swieton <mike@swieton.net> wrote:

>On Sun, 02 May 2004 15:55:58 -0400, Ben Hinkle wrote:
>
>> I've started a project on www.dsource.org for porting Doug Lea's "concurrent" package. The download section has a zip file with the code or you can get it from the svn repository. The doc (converted from the orginal Javadoc and generated using doxygen) is at http://home.comcast.net/~benhinkle/concurrent-doc/
>> 
>> Anyhow, I'm looking for either anyone interested in helping out or any pointers to test suites for synchronization and threading. So far I've done the basic Sync and Barrier classes and implemented a Java-style wait/notify struct. There's just one file that knows about D synchronization internals and has platform-specific code in it.
>> 
>> -Ben
>
>Cool ;) I was actually just minutes from doing just that myself, heh.
>
>I continued doing some more on some of the Executor classes (easy), and started the LinkedQueue class. I made Channel and friends templates, and changed their APIs accordingly. Some input on these changes would be appreciated.

sounds good - where are the changes? I'm using the same public domain license as the original since 90% of the code is unchanged.

>Matthew: what can we expect from the DTL as far as things like thread-safe collections are concerned? I'm not sure what I'm really asking here; I'm just wondering how/when the DTL will affect porting Doug's library.
>
>Currently, it segfaults, and I don't know why. I have to go do other stuff today, and I'll look at it again tomorrow. Right now I am primarily interested in feedback on the API changes and such that I've made.
>
>I have not updated much of the documentation that was copied in, and I am not sure where the InteruptedException fits in yet, as no D analog appears to exist yet.

Instead of using InterruptedException I made wait() throw a new class called WaitException when it fails. I figured that name was more accurate than keeping the InterruptedException since you can't interrupt in D. Also I took out any code that was interrupting threads since the exception gets rethrown.

> And no Windows or multi-processor testing has been done whatsoever.
>I don't have access to either. The latter will probably be a PITA down the line, though...

I've been doing some Windows testing but my machine is single processor. I would like to also get the Fork/Join lightweight task classes going and those would definitely need multi-processor testing. Anyone have, ohh, say, a 30 CPU box lying around unused? :-)

>Mike Swieton
>__
>Our earth is degenerate in these latter days. Bribery and corruption are
>common. Children no longer obey their parents. Every man wants to write a
>book... The end of the world is evidently approaching.
>	- On a stone slab carved in 2800 B.C. in Assyria

May 03, 2004
On Sun, 02 May 2004 21:41:09 -0400, Mike Swieton <mike@swieton.net> wrote:

>I feel dumb. Here's the file that was supposed to be attached to the other ;)

lol - and I feel dumb for posting my reply asking where the code is before getting any new messages... oh well!

>Mike Swieton
>__
>If all the human race's collected information could be made available to
>anyone, anywhere, at any time, for marginal cost, would it be moral to
>restrict access to that informtion?
>	- Eben Moglen
>

May 03, 2004
Hmm. now that I try the attachment it seems truncated. I can't open it. Can you?

"Mike Swieton" <mike@swieton.net> wrote in message news:pan.2004.05.03.01.41.09.6279@swieton.net...
> I feel dumb. Here's the file that was supposed to be attached to the other
;)
>
> Mike Swieton
> __
> If all the human race's collected information could be made available to
> anyone, anywhere, at any time, for marginal cost, would it be moral to
> restrict access to that informtion?
> - Eben Moglen
>
>


May 04, 2004
On Mon, 03 May 2004 13:45:29 -0400, Ben Hinkle wrote:

> Hmm. now that I try the attachment it seems truncated. I can't open it. Can you?

I've posted an updated version (this one doesn't segfault) at http://www.csis.gvsu.edu/~swietonm/concurrent.tar.bz2. I am certain that this one is good as of right now.

I'm still getting used to some of the interesting D-isms ;) My decision to change the Channel interface to be a templated collection is going to necessitate some changes, so I'll hold off on too much further development until people decide whether it's a good idea or not.

Has anyone else started work on this? Would a mailing list be helpful?

By the way, has anyone considered a name for the project other than "That concurrency library for java that Doug Lea wrote"? Are we just calling it Concurrent? libConcurrent? Doug Lea's Lovechild? 8-}

Mike Swieton
__
We owe most of what we know to about one hundred men. We owe most of what we
have suffered to another hundred or so.
	- R. W. Dickson

May 04, 2004
> Has anyone else started work on this? Would a mailing list be helpful?

The forums at dsource are probably the best place to have discussions about it.

> By the way, has anyone considered a name for the project other than "That concurrency library for java that Doug Lea wrote"? Are we just calling it Concurrent? libConcurrent? Doug Lea's Lovechild? 8-}

The project at dsource is just "Concurrent" and the modules are
"concurrent.all", "concurrent.mutex", etc.
One nice thing about "Doug Lea's Lovechild" is that it abbreviates to DLL
;-)


> Mike Swieton
> __
> We owe most of what we know to about one hundred men. We owe most of what
> we have suffered to another hundred or so.
> - R. W. Dickson

May 26, 2004
"Mike Swieton" <mike@swieton.net> wrote in message news:pan.2004.05.04.02.34.38.221062@swieton.net...
> By the way, has anyone considered a name for the project other than "That concurrency library for java that Doug Lea wrote"? Are we just calling it Concurrent? libConcurrent? Doug Lea's Lovechild? 8-}

Why not ask Doug?