[BLACKBOX] Sorting Extended Records
----boundary-LibPST-iamunique-1971002845_-_-
Content-type: text/plain
OK, I'm back again with the same question I had almost two years ago. In addition to the BlackBox Component Pascal documentation, at the recommendation of this list I have gone away and read "Object-Oriented Programming in Oberon-2" by Hanspeter Mössenböck. I also read "Computing Fundamentals: The Theory and Practice of Software Design with BlackBox Component Pascal" by J. Stanley Warford, which I found especially helpful because it covers operational detail that I could not find in the BlackBox documentation.
I have a database which is a single large flat ASCII file, built using a schema which is not under my control. I want to read and parse this file (which is no problem), and from it generate records that I can manipulate to generate reports. I want to store the records in binary trees for efficiency in searching and sorting. There are three types of records, and so three binary trees. The three record types have several fields in common, one of which is a unique alphanumeric label, and then each type has several unique fields. When I wrote an earlier version of this program in Modula-2, I was able to use variant records. This let me write single routines to build the binary trees, level them, and sort them, which would work for all three types of records. But variant records are not allowed in Component Pascal.
In Component Pascal I wrote the common part of the records as an Extensible (base) record type, and then each of the three record types as extensions of that base type. I refer to each of the three binary trees by a root variable which is a pointer to the corresponding extended record type. I can write a single routine using pointers to the base Type to sort each tree, and to balance each tree, because Component Pascal allows assigning the value of a pointer to an extended record, to the pointer to a base record. HOWEVER, in general sorting and balancing a binary tree causes the root to change, and Component Pascal will not allow assigning the value of a pointer to a base record, back to a pointer to an extended record. Apparently this means I have to include three separate but nearly-identical versions of the sorting routine, one for each extended record type, which seems incredibly ugly, inefficient, and error-prone. I am having trouble seeing how this "feature" of BlackBox Component Pascal is an improvement. Has anybody found a way to handle this issue? Any suggestions would be much appreciated.
Steve Troy
---- To unsubscribe, send a message with body "SIGNOFF BLACKBOX" to LISTSERV{([at]})nowhere.xy
----boundary-LibPST-iamunique-1971002845_-_-
Content-type: application/rtf
Content-transfer-encoding: base64
Content-Disposition: attachment; filename="rtf-body.rtf"
e1xydGYxXGFuc2lcYW5zaWNwZzEyNTJcZnJvbWh0bWwxIFxkZWZmMHtcZm9udHRibA0Ke1xmMFxm
c3dpc3NcZmNoYXJzZXQwIEFyaWFsO30NCntcZjFcZm1vZGVybiBDb3VyaWVyIE5ldzt9DQp7XGYy
XGZuaWxcZmNoYXJzZXQyIFN5bWJvbDt9DQp7XGYzXGZtb2Rlcm5cZmNoYXJzZXQwIENvdXJpZXIg
TmV3O319DQp7XGNvbG9ydGJsXHJlZDBcZ3JlZW4wXGJsdWUwO1xyZWQwXGdyZWVuMFxibHVlMjU1
O30NClx1YzFccGFyZFxwbGFpblxkZWZ0YWIzNjAgXGYwXGZzMjQgDQp7XCpcaHRtbHRhZzE5IDxo
dG1sPn0NCntcKlxodG1sdGFnNTAgPGJvZHk+fXtcKlxodG1sdGFnNjR9XGh0bWxydGYge1xodG1s
cnRmMCANCntcKlxodG1sdGFnODQgPHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OlZlcmRhbmE7IGNv
bG9yOiMwMDAwMDA7IGZvbnQtc2l6ZToxMHB0OyI+fVxodG1scnRmIHtcaHRtbHJ0ZjAgXGh0bWxy
dGYgfVxodG1scnRmMCB7XCpcaHRtbHRhZzcyfVxodG1scnRmfVxodG1scnRmMA0KDQp7XCpcaHRt
bHRhZzk2IDxkaXY+fVxodG1scnRmIHtcaHRtbHJ0ZjAgDQp7XCpcaHRtbHRhZzAgXHBhciB9DQp7
XCpcaHRtbHRhZzAgXHBhciB9DQp7XCpcaHRtbHRhZzAgXHBhciB9DQp7XCpcaHRtbHRhZzI0MCBc
dGFiIH0NCntcKlxodG1sdGFnMCBccGFyIH0NCntcKlxodG1sdGFnMjQwIFx0YWIgfQ0Ke1wqXGh0
bWx0YWcwIFxwYXIgfQ0Ke1wqXGh0bWx0YWcyNDAgXHRhYiB9DQp7XCpcaHRtbHRhZzAgXHBhciB9
DQp7XCpcaHRtbHRhZzI0MCBcdGFiIH0NCntcKlxodG1sdGFnMjQwIDxzdHlsZSB0eXBlPSJ0ZXh0
L2NzcyI+fQ0Ke1wqXGh0bWx0YWcyNDAgXHBhciBcdGFiIDwhLS1ccGFyIFx0YWIgXHRhYiBAcGFn
ZSBceyBtYXJnaW46IDAuNzlpbiBcfVxwYXIgXHRhYiBcdGFiIFAgXHsgbWFyZ2luLWJvdHRvbTog
MC4wOGluIFx9XHBhciBcdGFiIC0tPn0NCntcKlxodG1sdGFnMjQ4IDwvc3R5bGU+fXtcKlxodG1s
dGFnNjR9XGh0bWxydGYge1xodG1scnRmMCBcaHRtbHJ0ZiB7XGh0bWxydGYwIE9LLCBJJ20gYmFj
ayBhZ2FpbiB3aXRoIHRoZSBzYW1lDQp7XCpcaHRtbHRhZzQgXHBhciB9XGh0bWxydGYgIFxodG1s
cnRmMCBxdWVzdGlvbiBJIGhhZCBhbG1vc3QgdHdvIHllYXJzIGFnby4NCntcKlxodG1sdGFnODQg
ICB9XGh0bWxydGYgIFxodG1scnRmMCBJbiBhZGRpdGlvbiB0byB0aGUgQmxhY2tCb3gNCntcKlxo
dG1sdGFnNCBccGFyIH1caHRtbHJ0ZiAgXGh0bWxydGYwIENvbXBvbmVudCBQYXNjYWwgZG9jdW1l
bnRhdGlvbiwgYXQgdGhlIHJlY29tbWVuZGF0aW9uIG9mIHRoaXMgbGlzdCBJDQp7XCpcaHRtbHRh
ZzQgXHBhciB9XGh0bWxydGYgIFxodG1scnRmMCBoYXZlIGdvbmUgYXdheSBhbmQgcmVhZCAiT2Jq
ZWN0LU9yaWVudGVkIFByb2dyYW1taW5nIGluDQp7XCpcaHRtbHRhZzQgXHBhciB9XGh0bWxydGYg
IFxodG1scnRmMCBPYmVyb24tMiIgYnkgSGFuc3BldGVyIE1cJ2Y2c3NlbmJcJ2Y2Y2suDQp7XCpc
aHRtbHRhZzg0ICAgfVxodG1scnRmICBcaHRtbHJ0ZjAgSSBhbHNvIHJlYWQgIkNvbXB1dGluZw0K
e1wqXGh0bWx0YWc0IFxwYXIgfVxodG1scnRmICBcaHRtbHJ0ZjAgRnVuZGFtZW50YWxzOiBUaGUg
VGhlb3J5IGFuZCBQcmFjdGljZSBvZiBTb2Z0d2FyZSBEZXNpZ24gd2l0aA0Ke1wqXGh0bWx0YWc0
IFxwYXIgfVxodG1scnRmICBcaHRtbHJ0ZjAgQmxhY2tCb3ggQ29tcG9uZW50IFBhc2NhbCIgYnkg
Si4gU3RhbmxleSBXYXJmb3JkLCB3aGljaCBJIGZvdW5kDQp7XCpcaHRtbHRhZzQgXHBhciB9XGh0
bWxydGYgIFxodG1scnRmMCBlc3BlY2lhbGx5IGhlbHBmdWwgYmVjYXVzZSBpdCBjb3ZlcnMgb3Bl
cmF0aW9uYWwgZGV0YWlsIHRoYXQgSSBjb3VsZA0Ke1wqXGh0bWx0YWc0IFxwYXIgfVxodG1scnRm
ICBcaHRtbHJ0ZjAgbm90IGZpbmQgaW4gdGhlIEJsYWNrQm94IGRvY3VtZW50YXRpb24uDQp7XCpc
aHRtbHRhZzQgXHBhciB9XGh0bWxydGYgIFxodG1scnRmMCBcaHRtbHJ0ZiB9XGh0bWxydGYwIHtc
KlxodG1sdGFnNzJ9XGh0bWxydGZccGFyfVxodG1scnRmMA0KDQp7XCpcaHRtbHRhZzY0IDxwIHN0
eWxlPSJtYXJnaW4tYm90dG9tOiAwaW4iPn1caHRtbHJ0ZiBccGFyDQpcaHRtbHJ0ZjAgXGh0bWxy
dGYge1xodG1scnRmMCBcaHRtbHJ0ZiB7XGh0bWxydGYwIA0Ke1wqXGh0bWx0YWcxMTYgPGJyPn1c
aHRtbHJ0ZiBcbGluZQ0KXGh0bWxydGYwIA0Ke1wqXGh0bWx0YWc0IFxwYXIgfVxodG1scnRmIH1c
aHRtbHJ0ZjAgXGh0bWxydGZccGFyfVxodG1scnRmMA0KDQp7XCpcaHRtbHRhZzEwNCA8L2Rpdj59
XGh0bWxydGYgfVxodG1scnRmMCANCntcKlxodG1sdGFnMCBccGFyIH0NCntcKlxodG1sdGFnOTYg
PGRpdiBzdHlsZT0ibWFyZ2luLWJvdHRvbTogMGluIj59XGh0bWxydGYge1xodG1scnRmMCB7XCpc
aHRtbHRhZzY0fVxodG1scnRmIHtcaHRtbHJ0ZjAgXGh0bWxydGYge1xodG1scnRmMCBJIGhhdmUg
YSBkYXRhYmFzZSB3aGljaCBpcyBhIHNpbmdsZQ0Ke1wqXGh0bWx0YWc0IFxwYXIgfVxodG1scnRm
ICBcaHRtbHJ0ZjAgbGFyZ2UgZmxhdCBBU0NJSSBmaWxlLCBidWlsdCB1c2luZyBhIHNjaGVtYSB3
aGljaCBpcyBub3QgdW5kZXIgbXkNCntcKlxodG1sdGFnNCBccGFyIH1caHRtbHJ0ZiAgXGh0bWxy
dGYwIGNvbnRyb2wuDQp7XCpcaHRtbHRhZzg0ICAgfVxodG1scnRmICBcaHRtbHJ0ZjAgSSB3YW50
IHRvIHJlYWQgYW5kIHBhcnNlIHRoaXMgZmlsZSAod2hpY2ggaXMgbm8gcHJvYmxlbSksDQp7XCpc
aHRtbHRhZzQgXHBhciB9XGh0bWxydGYgIFxodG1scnRmMCBhbmQgZnJvbSBpdCBnZW5lcmF0ZSBy
ZWNvcmRzIHRoYXQgSSBjYW4gbWFuaXB1bGF0ZSB0byBnZW5lcmF0ZQ0Ke1wqXGh0bWx0YWc0IFxw
YXIgfVxodG1scnRmICBcaHRtbHJ0ZjAgcmVwb3J0cy4NCntcKlxodG1sdGFnODQgICB9XGh0bWxy
dGYgIFxodG1scnRmMCBJIHdhbnQgdG8gc3RvcmUgdGhlIHJlY29yZHMgaW4gYmluYXJ5IHRyZWVz
IGZvciBlZmZpY2llbmN5DQp7XCpcaHRtbHRhZzQgXHBhciB9XGh0bWxydGYgIFxodG1scnRmMCBp
biBzZWFyY2hpbmcgYW5kIHNvcnRpbmcuDQp7XCpcaHRtbHRhZzg0ICAgfVxodG1scnRmICBcaHRt
bHJ0ZjAgVGhlcmUgYXJlIHRocmVlIHR5cGVzIG9mIHJlY29yZHMsIGFuZCBzbw0Ke1wqXGh0bWx0
YWc0IFxwYXIgfVxodG1scnRmICBcaHRtbHJ0ZjAgdGhyZWUgYmluYXJ5IHRyZWVzLg0Ke1wqXGh0
bWx0YWc4NCAgIH1caHRtbHJ0ZiAgXGh0bWxydGYwIFRoZSB0aHJlZSByZWNvcmQgdHlwZXMgaGF2
ZSBzZXZlcmFsIGZpZWxkcyBpbg0Ke1wqXGh0bWx0YWc0IFxwYXIgfVxodG1scnRmICBcaHRtbHJ0
ZjAgY29tbW9uLCBvbmUgb2Ygd2hpY2ggaXMgYSB1bmlxdWUgYWxwaGFudW1lcmljIGxhYmVsLCBh
bmQgdGhlbiBlYWNoDQp7XCpcaHRtbHRhZzQgXHBhciB9XGh0bWxydGYgIFxodG1scnRmMCB0eXBl
IGhhcyBzZXZlcmFsIHVuaXF1ZSBmaWVsZHMuDQp7XCpcaHRtbHRhZzg0ICAgfVxodG1scnRmICBc
aHRtbHJ0ZjAgV2hlbiBJIHdyb3RlIGFuIGVhcmxpZXIgdmVyc2lvbiBvZg0Ke1wqXGh0bWx0YWc0
IFxwYXIgfVxodG1scnRmICBcaHRtbHJ0ZjAgdGhpcyBwcm9ncmFtIGluIE1vZHVsYS0yLCBJIHdh
cyBhYmxlIHRvIHVzZSB2YXJpYW50IHJlY29yZHMuDQp7XCpcaHRtbHRhZzg0ICAgfVxodG1scnRm
ICBcaHRtbHJ0ZjAgVGhpcw0Ke1wqXGh0bWx0YWc0IFxwYXIgfVxodG1scnRmICBcaHRtbHJ0ZjAg
bGV0IG1lIHdyaXRlIHNpbmdsZSByb3V0aW5lcyB0byBidWlsZCB0aGUgYmluYXJ5IHRyZWVzLCBs
ZXZlbCB0aGVtLA0Ke1wqXGh0bWx0YWc0IFxwYXIgfVxodG1scnRmICBcaHRtbHJ0ZjAgYW5kIHNv
cnQgdGhlbSwgd2hpY2ggd291bGQgd29yayBmb3IgYWxsIHRocmVlIHR5cGVzIG9mIHJlY29yZHMu
IEJ1dA0Ke1wqXGh0bWx0YWc0IFxwYXIgfVxodG1scnRmICBcaHRtbHJ0ZjAgdmFyaWFudCByZWNv
cmRzIGFyZSBub3QgYWxsb3dlZCBpbiBDb21wb25lbnQgUGFzY2FsLg0Ke1wqXGh0bWx0YWc4NCAg
IH1caHRtbHJ0ZiAgXGh0bWxydGYwIA0Ke1wqXGh0bWx0YWc0IFxwYXIgfVxodG1scnRmIH1caHRt
bHJ0ZjAge1wqXGh0bWx0YWc3Mn1caHRtbHJ0ZlxwYXJ9XGh0bWxydGYwDQoNCntcKlxodG1sdGFn
MTA0IDwvZGl2Pn1caHRtbHJ0ZiB9XGh0bWxydGYwIA0Ke1wqXGh0bWx0YWcwIFxwYXIgfQ0Ke1wq
XGh0bWx0YWc5NiA8ZGl2IHN0eWxlPSJtYXJnaW4tYm90dG9tOiAwaW4iPn1caHRtbHJ0ZiB7XGh0
bWxydGYwIA0Ke1wqXGh0bWx0YWcxMTIgPGJyPn1caHRtbHJ0ZiBccGFyDQpcaHRtbHJ0ZjAgDQp7
XCpcaHRtbHRhZzAgXHBhciB9DQp7XCpcaHRtbHRhZzEwNCA8L2Rpdj59XGh0bWxydGYgfVxodG1s
cnRmMCANCntcKlxodG1sdGFnMCBccGFyIH0NCntcKlxodG1sdGFnOTYgPGRpdiBzdHlsZT0ibWFy
Z2luLWJvdHRvbTogMGluOyI+fVxodG1scnRmIHtcaHRtbHJ0ZjAge1wqXGh0bWx0YWc2NH1caHRt
bHJ0ZiB7XGh0bWxydGYwIFxodG1scnRmIHtcaHRtbHJ0ZjAgSW4gQ29tcG9uZW50IFBhc2NhbCBJ
IHdyb3RlIHRoZSBjb21tb24NCntcKlxodG1sdGFnNCBccGFyIH1caHRtbHJ0ZiAgXGh0bWxydGYw
IHBhcnQgb2YgdGhlIHJlY29yZHMgYXMgYW4gRXh0ZW5zaWJsZSAoYmFzZSkgcmVjb3JkIHR5cGUs
IGFuZCB0aGVuDQp7XCpcaHRtbHRhZzQgXHBhciB9XGh0bWxydGYgIFxodG1scnRmMCBlYWNoIG9m
IHRoZSB0aHJlZSByZWNvcmQgdHlwZXMgYXMgZXh0ZW5zaW9ucyBvZiB0aGF0IGJhc2UgdHlwZS4N
CntcKlxodG1sdGFnODQgICB9XGh0bWxydGYgIFxodG1scnRmMCBJDQp7XCpcaHRtbHRhZzQgXHBh
ciB9XGh0bWxydGYgIFxodG1scnRmMCByZWZlciB0byBlYWNoIG9mIHRoZSB0aHJlZSBiaW5hcnkg
dHJlZXMgYnkgYSByb290IHZhcmlhYmxlIHdoaWNoIGlzIGENCntcKlxodG1sdGFnNCBccGFyIH1c
aHRtbHJ0ZiAgXGh0bWxydGYwIHBvaW50ZXIgdG8gdGhlIGNvcnJlc3BvbmRpbmcgZXh0ZW5kZWQg
cmVjb3JkIHR5cGUuDQp7XCpcaHRtbHRhZzg0ICAgfVxodG1scnRmICBcaHRtbHJ0ZjAgSSBjYW4g
d3JpdGUgYQ0Ke1wqXGh0bWx0YWc0IFxwYXIgfVxodG1scnRmICBcaHRtbHJ0ZjAgc2luZ2xlIHJv
dXRpbmUgdXNpbmcgcG9pbnRlcnMgdG8gdGhlIGJhc2UgVHlwZSB0byBzb3J0IGVhY2ggdHJlZSwg
YW5kDQp7XCpcaHRtbHRhZzQgXHBhciB9XGh0bWxydGYgIFxodG1scnRmMCB0byBiYWxhbmNlIGVh
Y2ggdHJlZSwgYmVjYXVzZSBDb21wb25lbnQgUGFzY2FsIGFsbG93cyBhc3NpZ25pbmcgdGhlDQp7
XCpcaHRtbHRhZzQgXHBhciB9XGh0bWxydGYgIFxodG1scnRmMCB2YWx1ZSBvZiBhIHBvaW50ZXIg
dG8gYW4gZXh0ZW5kZWQgcmVjb3JkLCB0byB0aGUgcG9pbnRlciB0byBhIGJhc2UNCntcKlxodG1s
dGFnNCBccGFyIH1caHRtbHJ0ZiAgXGh0bWxydGYwIHJlY29yZC4NCntcKlxodG1sdGFnODQgICB9
XGh0bWxydGYgIFxodG1scnRmMCBIT1dFVkVSLCBpbiBnZW5lcmFsIHNvcnRpbmcgYW5kIGJhbGFu
Y2luZyBhIGJpbmFyeSB0cmVlDQp7XCpcaHRtbHRhZzQgXHBhciB9XGh0bWxydGYgIFxodG1scnRm
MCBjYXVzZXMgdGhlIHJvb3QgdG8gY2hhbmdlLCBhbmQgQ29tcG9uZW50IFBhc2NhbCB3aWxsIG5v
dCBhbGxvdw0Ke1wqXGh0bWx0YWc0IFxwYXIgfVxodG1scnRmICBcaHRtbHJ0ZjAgYXNzaWduaW5n
IHRoZSB2YWx1ZSBvZiBhIHBvaW50ZXIgdG8gYSBiYXNlIHJlY29yZCwgYmFjayB0byBhIHBvaW50
ZXINCntcKlxodG1sdGFnNCBccGFyIH1caHRtbHJ0ZiAgXGh0bWxydGYwIHRvIGFuIGV4dGVuZGVk
IHJlY29yZC4NCntcKlxodG1sdGFnODQgICB9XGh0bWxydGYgIFxodG1scnRmMCBBcHBhcmVudGx5
IHRoaXMgbWVhbnMgSSBoYXZlIHRvIGluY2x1ZGUgdGhyZWUNCntcKlxodG1sdGFnNCBccGFyIH1c
aHRtbHJ0ZiAgXGh0bWxydGYwIHNlcGFyYXRlIGJ1dCBuZWFybHktaWRlbnRpY2FsIHZlcnNpb25z
IG9mIHRoZSBzb3J0aW5nIHJvdXRpbmUsIG9uZQ0Ke1wqXGh0bWx0YWc0IFxwYXIgfVxodG1scnRm
ICBcaHRtbHJ0ZjAgZm9yIGVhY2ggZXh0ZW5kZWQgcmVjb3JkIHR5cGUsIHdoaWNoIHNlZW1zIGlu
Y3JlZGlibHkgdWdseSwNCntcKlxodG1sdGFnNCBccGFyIH1caHRtbHJ0ZiAgXGh0bWxydGYwIGlu
ZWZmaWNpZW50LCBhbmQgZXJyb3ItcHJvbmUuDQp7XCpcaHRtbHRhZzg0ICAgfVxodG1scnRmICBc
aHRtbHJ0ZjAgSSBhbSBoYXZpbmcgdHJvdWJsZSBzZWVpbmcgaG93IHRoaXMNCntcKlxodG1sdGFn
NCBccGFyIH1caHRtbHJ0ZiAgXGh0bWxydGYwICJmZWF0dXJlIiBvZiBCbGFja0JveCBDb21wb25l
bnQgUGFzY2FsIGlzIGFuIGltcHJvdmVtZW50LiANCntcKlxodG1sdGFnNCBccGFyIH1IYXMgYW55
Ym9keSBmb3VuZCBhIHdheSB0byBoYW5kbGUgdGhpcyBpc3N1ZT8NCntcKlxodG1sdGFnODQgICB9
XGh0bWxydGYgIFxodG1scnRmMCBBbnkgc3VnZ2VzdGlvbnMgd291bGQNCntcKlxodG1sdGFnNCBc
cGFyIH1caHRtbHJ0ZiAgXGh0bWxydGYwIGJlIG11Y2ggYXBwcmVjaWF0ZWQuXGh0bWxydGYgfVxo
dG1scnRmMCB7XCpcaHRtbHRhZzcyfVxodG1scnRmXHBhcn1caHRtbHJ0ZjANCg0Ke1wqXGh0bWx0
YWcxMDQgPC9kaXY+fVxodG1scnRmIH1caHRtbHJ0ZjAgDQp7XCpcaHRtbHRhZzk2IDxkaXYgc3R5
bGU9Im1hcmdpbi1ib3R0b206IDBpbjsiPn1caHRtbHJ0ZiB7XGh0bWxydGYwIHtcKlxodG1sdGFn
NjR9XGh0bWxydGYge1xodG1scnRmMCBcaHRtbHJ0ZiB7XGh0bWxydGYwIFN0ZXZlIFRyb3lcaHRt
bHJ0ZiB9XGh0bWxydGYwIHtcKlxodG1sdGFnNzJ9XGh0bWxydGZccGFyfVxodG1scnRmMA0KDQp7
XCpcaHRtbHRhZzEwNCA8L2Rpdj59XGh0bWxydGYgfVxodG1scnRmMCANCntcKlxodG1sdGFnOTYg
PGRpdiBzdHlsZT0ibWFyZ2luLWJvdHRvbTogMGluOyI+fVxodG1scnRmIHtcaHRtbHJ0ZjAgDQp7
XCpcaHRtbHRhZzExMiA8YnI+fVxodG1scnRmIFxwYXINClxodG1scnRmMCANCntcKlxodG1sdGFn
MTA0IDwvZGl2Pn1caHRtbHJ0ZiB9XGh0bWxydGYwIA0Ke1wqXGh0bWx0YWcwIFxwYXIgfVxodG1s
cnRmIFxwYXINClxodG1scnRmMCANCntcKlxodG1sdGFnNzIgPC9wPn0NCntcKlxodG1sdGFnMjQ4
IDwvc3Bhbj59DQp7XCpcaHRtbHRhZzU4IDwvYm9keT59DQp7XCpcaHRtbHRhZzI3IDwvaHRtbD59
DQp7XCpcaHRtbHRhZzMgXHBhciB9DQp7XCpcaHRtbHRhZzY0IDxwPn1caHRtbHJ0ZiB7XGh0bWxy
dGYwIA0Ke1wqXGh0bWx0YWc0IFxwYXIgfS0tLS0NCntcKlxodG1sdGFnNCBccGFyIH1caHRtbHJ0
ZiAgXGh0bWxydGYwIFRvIHVuc3Vic2NyaWJlLCBzZW5kIGEgbWVzc2FnZSB3aXRoIGJvZHkgIlNJ
R05PRkYgQkxBQ0tCT1giIHRvIExJU1RTRVJWQExJU1RTLk9CRVJPTi5DSA0Ke1wqXGh0bWx0YWc0
IFxwYXIgfVxodG1scnRmICBcaHRtbHJ0ZjAgXGh0bWxydGZ9fQAKY2cwS1hHaDBiV3h5ZA=
----boundary-LibPST-iamunique-1971002845_-_---
Received on Mon Mar 28 2011 - 18:49:19 UTC
This archive was generated by hypermail 2.3.0
: Thu Sep 26 2013 - 06:30:16 UTC