Re: [BLACKBOX] Questions about inheritance

From: [at]} <Rainer>
Date: Sat, 19 Mar 2011 15:18:55 +0100

----boundary-LibPST-iamunique-1591926313_-_-
Content-type: text/plain

Dear Wojtek,
thanks a lot for sharing your experience.


>> I am now with CP for some years, but I never had to use OO features.
>> Creating clean modules and applying classes to get abstract data
>> types was sufficient for my projects in the past.
>
> If it was sufficient till now, it will probably suffice in future. The
> point is, that you have conditioned yourself to think in a certain
> way. It
> worked for your project for years. Why do you want to change your
> way of
> thinking, if it worked over the years?

Right now my only motivation is learning. But let me tell ...

In the past I developed software for automatic test equipment. We had
VME-bus systems with 68k CPU's running a unix like real time
operating system. The only language being available was plain C.
After a few small projects it turned out this would lead to a mess,
as the whole language was.
At that time (mid 90ies) I knew about MODULA-2 and had heared about
OBERON-2. So I tried to learn from these languages (concepts,
readability, simplicity) and to port know how from these languages to
programming in C.

E.g. with the use of the preprocessor the source code was made more
readable:
- no "{" and "}" but "BEGIN" and "END"
- no "if (a < b) {" but "IF a < b THEN"
- no "do { ... } while (a < b)" but "REPEAT ... UNTIL (a >= b)"
- no "a && b || c" but "a AND b OR c"
- no "static" but "PRIVATE"
- no "struct" but "RECORD"
- no "++"
- no "--"
and many more.

Simplicity was introduced e.g. by ruling out terms with side effects,
functions with side effects, introduction of well considered naming
conventions and so on.
Structure was introduced by simulating a module construct with
interface file and implementation file, design-by-contract,
information hiding, opaque type export etc.
A subset of OBERON-2 (no OO features of course) was mapped to C and
established as a "department language" and so on.
With this concept we have been very successfull for many years
compared to programming techniques being common to the world of
programming in C (of course this solution suffered from many problems
being inherent when using a C compiler, e.g. weak typing, make
utility etc etc).

For some reason there was a management decision about seven years ago
to give up this platform and we were forced to program in Lab View, a
graphical programming language by National Instruments. Poor control
structures, a constraint to data flow programming, the subroutine
construct being the only concept for structuring the software and the
necessity to store every single subroutine in a separate file: I
guess you can imagine the result of this story.

At the times with the VME-bus systems we had a process control
application which had been implemented in a small number of slightly
different types by a former colleague of mine. Some of these machines
are still in deployment and work very reliable up to date. After the
introduction of Lab View a simplified version of this application had
been reimplemented; this simplified version is again in deployment in
different versions. It shows up unpredictable behaviour from time to
time and in spite of big debugging efforts by several developers
these problems could never be fixed.

Because of these and many many more problems with the "world of Lab
View" in our department there was a decision to reimplement again the
process control application. It has been decided to do the
implementation with C# ("because we need a modern language everybody
knows"); it is our first touch with this language. The project
requirements have been increased: there should be a general solution
which is adaptable to different needs.

Because of my knowledge of the application on the VME-bus systems and
because I was involved in a number of meetings concerning the
requrements of the re-reimplementation I am very familiar with this
topic. So I plan to take this chance to try a design and perhaps a
partial implementation as a home work and to learn how to apply OO
concepts to get a "general solution" which is adaptable a little bit
to different needs.


>> The big picture of the technical process to be controlled is always
>> the same. But in reality there are some different types of machines,
>> because they have different number and type of hardware equipment,
>> different types of control algorithms and different types of calls to
>> a relational data base for retrieving data about the parts to be
>> tested automatically and for storing the results of the tests
>> respectively.
>
> The problem with this kind of design is that you will be trying to
> outline
> a system, which has not been developed yet (top-bottom approach).
> You will
> be trying to guess ahead of time the facilities, which you will need
> later. In all likelihood, you will guess sort of righ, but not exactly
> right. This will lead to iterative work: down the road you will
> discover,
> that initial guesses were not quite righ, and you will have to
> revisit the
> assumptions and rewrite large portions of your software. After two or
> three such iterations you will get exhausted.
>
> In my opinion, OO frameworks such as BB itself were never developed
> this
> way. BB was not written on the first attempt. There were predecessors,
> such as the Oberon System, Gadgets, Ethos, etc. At some points the
> experience from these prototypes was refined in the form of the OO
> framework Oberon/F, which then became BlackBox. Therefore, the
> amount of
> top-down guessing was in fact pretty minimal, because most of the
> design
> choices have been tried before.

I agree.
In my case however the project is really small compared to projekts
like Oberon System, Ethos or BB.
The OO structures (if this approach would taken) would be MUCH more
simpler.
The facilities which should be adaptable (the differences between
types of machines) are known in
detail because we already have these different types of machines in
deployment (having been developed with Lab View).
Because of the (missing) language features of Lab View
- the application is able to control just one technical process; we
would like to have two or three of them controlled in a simultaneous
way, but because of the complexity of the code this was never tried
to program
- for every new machine big parts of the code had to be reworked
because of its lack of structure. And changes of code trigger new
changes which trigger changes ...
- the maintainability of the code is extremely poor. The reasons for
misbehaviour are almost impossible to track down and to fix.

So I will take your advice and think about developing a "small
version" first and get it running.

Thanks and best regards,
Rainer


----
To unsubscribe, send a message with body "SIGNOFF BLACKBOX" to LISTSERV{([at]})nowhere.xy----boundary-LibPST-iamunique-1591926313_-_-
Content-type: application/rtf
Content-transfer-encoding: base64
Content-Disposition: attachment; filename="rtf-body.rtf"
e1xydGYxXGFuc2lcYW5zaWNwZzEyNTJcZnJvbXRleHQgXGRlZmYwe1xmb250dGJsDQp7XGYwXGZz
d2lzcyBBcmlhbDt9DQp7XGYxXGZtb2Rlcm4gQ291cmllciBOZXc7fQ0Ke1xmMlxmbmlsXGZjaGFy
c2V0MiBTeW1ib2w7fQ0Ke1xmM1xmbW9kZXJuXGZjaGFyc2V0MCBDb3VyaWVyIE5ldzt9fQ0Ke1xj
b2xvcnRibFxyZWQwXGdyZWVuMFxibHVlMDtccmVkMFxncmVlbjBcYmx1ZTI1NTt9DQpcdWMxXHBh
cmRccGxhaW5cZGVmdGFiMzYwIFxmMFxmczIwIERlYXIgV29qdGVrLFxwYXINCnRoYW5rcyBhIGxv
dCBmb3Igc2hhcmluZyB5b3VyIGV4cGVyaWVuY2UuXHBhcg0KXHBhcg0KXHBhcg0KPj4gSSBhbSBu
b3cgd2l0aCBDUCBmb3Igc29tZSB5ZWFycywgYnV0IEkgbmV2ZXIgaGFkIHRvIHVzZSBPTyBmZWF0
dXJlcy5ccGFyDQo+PiBDcmVhdGluZyBjbGVhbiBtb2R1bGVzIGFuZCBhcHBseWluZyBjbGFzc2Vz
IHRvIGdldCBhYnN0cmFjdCBkYXRhXHBhcg0KPj4gdHlwZXMgd2FzIHN1ZmZpY2llbnQgZm9yIG15
IHByb2plY3RzIGluIHRoZSBwYXN0LlxwYXINCj5ccGFyDQo+IElmIGl0IHdhcyBzdWZmaWNpZW50
IHRpbGwgbm93LCBpdCB3aWxsIHByb2JhYmx5IHN1ZmZpY2UgaW4gZnV0dXJlLiBUaGVccGFyDQo+
IHBvaW50IGlzLCB0aGF0IHlvdSBoYXZlIGNvbmRpdGlvbmVkIHlvdXJzZWxmIHRvIHRoaW5rIGlu
IGEgY2VydGFpbiAgXHBhcg0KPiB3YXkuIEl0XHBhcg0KPiB3b3JrZWQgZm9yIHlvdXIgcHJvamVj
dCBmb3IgeWVhcnMuIFdoeSBkbyB5b3Ugd2FudCB0byBjaGFuZ2UgeW91ciAgXHBhcg0KPiB3YXkg
b2ZccGFyDQo+IHRoaW5raW5nLCBpZiBpdCB3b3JrZWQgb3ZlciB0aGUgeWVhcnM/XHBhcg0KXHBh
cg0KUmlnaHQgbm93IG15IG9ubHkgbW90aXZhdGlvbiBpcyBsZWFybmluZy4gQnV0IGxldCBtZSB0
ZWxsIC4uLlxwYXINClxwYXINCkluIHRoZSBwYXN0IEkgZGV2ZWxvcGVkIHNvZnR3YXJlIGZvciBh
dXRvbWF0aWMgdGVzdCBlcXVpcG1lbnQuIFdlIGhhZCAgXHBhcg0KVk1FLWJ1cyBzeXN0ZW1zIHdp
dGggNjhrIENQVSdzIHJ1bm5pbmcgYSB1bml4IGxpa2UgcmVhbCB0aW1lICBccGFyDQpvcGVyYXRp
bmcgc3lzdGVtLiBUaGUgb25seSBsYW5ndWFnZSBiZWluZyBhdmFpbGFibGUgd2FzIHBsYWluIEMu
ICBccGFyDQpBZnRlciBhIGZldyBzbWFsbCBwcm9qZWN0cyBpdCB0dXJuZWQgb3V0IHRoaXMgd291
bGQgbGVhZCB0byBhIG1lc3MsICBccGFyDQphcyB0aGUgd2hvbGUgbGFuZ3VhZ2Ugd2FzLlxwYXIN
CkF0IHRoYXQgdGltZSAobWlkIDkwaWVzKSBJIGtuZXcgYWJvdXQgTU9EVUxBLTIgYW5kIGhhZCBo
ZWFyZWQgYWJvdXQgIFxwYXINCk9CRVJPTi0yLiBTbyBJIHRyaWVkIHRvIGxlYXJuIGZyb20gdGhl
c2UgbGFuZ3VhZ2VzIChjb25jZXB0cywgIFxwYXINCnJlYWRhYmlsaXR5LCBzaW1wbGljaXR5KSBh
bmQgdG8gcG9ydCBrbm93IGhvdyBmcm9tIHRoZXNlIGxhbmd1YWdlcyB0byAgXHBhcg0KcHJvZ3Jh
bW1pbmcgaW4gQy5ccGFyDQpccGFyDQpFLmcuIHdpdGggdGhlIHVzZSBvZiB0aGUgcHJlcHJvY2Vz
c29yIHRoZSBzb3VyY2UgY29kZSB3YXMgbWFkZSBtb3JlICBccGFyDQpyZWFkYWJsZTpccGFyDQot
IG5vICAgICJceyIgYW5kICJcfSIgICAgYnV0ICAgICJCRUdJTiIgYW5kICJFTkQiXHBhcg0KLSBu
byAgICAiaWYgKGEgPCBiKSBceyIgICAgYnV0ICAgICJJRiBhIDwgYiBUSEVOIlxwYXINCi0gbm8g
ICAgImRvIFx7IC4uLiBcfSB3aGlsZSAoYSA8IGIpIiAgICBidXQgICAgIlJFUEVBVCAuLi4gVU5U
SUwgKGEgPj0gYikiXHBhcg0KLSBubyAgICAiYSAmJiBiIHx8IGMiICAgIGJ1dCAgICAiYSBBTkQg
YiBPUiBjIlxwYXINCi0gbm8gICAgInN0YXRpYyIgICAgYnV0ICAgICJQUklWQVRFIlxwYXINCi0g
bm8gICAgInN0cnVjdCIgICAgYnV0ICAgICJSRUNPUkQiXHBhcg0KLSBubyAgICAiKysiXHBhcg0K
LSBubyAgICAiLS0iXHBhcg0KYW5kIG1hbnkgbW9yZS5ccGFyDQpccGFyDQpTaW1wbGljaXR5IHdh
cyBpbnRyb2R1Y2VkIGUuZy4gYnkgcnVsaW5nIG91dCB0ZXJtcyB3aXRoIHNpZGUgZWZmZWN0cywg
IFxwYXINCmZ1bmN0aW9ucyB3aXRoIHNpZGUgZWZmZWN0cywgaW50cm9kdWN0aW9uIG9mIHdlbGwg
Y29uc2lkZXJlZCBuYW1pbmcgIFxwYXINCmNvbnZlbnRpb25zIGFuZCBzbyBvbi5ccGFyDQpTdHJ1
Y3R1cmUgd2FzIGludHJvZHVjZWQgYnkgc2ltdWxhdGluZyBhIG1vZHVsZSBjb25zdHJ1Y3Qgd2l0
aCAgXHBhcg0KaW50ZXJmYWNlIGZpbGUgYW5kIGltcGxlbWVudGF0aW9uIGZpbGUsIGRlc2lnbi1i
eS1jb250cmFjdCwgIFxwYXINCmluZm9ybWF0aW9uIGhpZGluZywgb3BhcXVlIHR5cGUgZXhwb3J0
IGV0Yy5ccGFyDQpBIHN1YnNldCBvZiBPQkVST04tMiAobm8gT08gZmVhdHVyZXMgb2YgY291cnNl
KSB3YXMgbWFwcGVkIHRvIEMgYW5kICBccGFyDQplc3RhYmxpc2hlZCBhcyBhICJkZXBhcnRtZW50
IGxhbmd1YWdlIiBhbmQgc28gb24uXHBhcg0KV2l0aCB0aGlzIGNvbmNlcHQgd2UgaGF2ZSBiZWVu
IHZlcnkgc3VjY2Vzc2Z1bGwgZm9yIG1hbnkgeWVhcnMgIFxwYXINCmNvbXBhcmVkIHRvIHByb2dy
YW1taW5nIHRlY2huaXF1ZXMgYmVpbmcgY29tbW9uIHRvIHRoZSB3b3JsZCBvZiAgXHBhcg0KcHJv
Z3JhbW1pbmcgaW4gQyAob2YgY291cnNlIHRoaXMgc29sdXRpb24gc3VmZmVyZWQgZnJvbSBtYW55
IHByb2JsZW1zICBccGFyDQpiZWluZyBpbmhlcmVudCB3aGVuIHVzaW5nIGEgQyBjb21waWxlciwg
ZS5nLiB3ZWFrIHR5cGluZywgbWFrZSAgXHBhcg0KdXRpbGl0eSBldGMgZXRjKS5ccGFyDQpccGFy
DQpGb3Igc29tZSByZWFzb24gdGhlcmUgd2FzIGEgbWFuYWdlbWVudCBkZWNpc2lvbiBhYm91dCBz
ZXZlbiB5ZWFycyBhZ28gIFxwYXINCnRvIGdpdmUgdXAgdGhpcyBwbGF0Zm9ybSBhbmQgd2Ugd2Vy
ZSBmb3JjZWQgdG8gcHJvZ3JhbSBpbiBMYWIgVmlldywgYSAgXHBhcg0KZ3JhcGhpY2FsIHByb2dy
YW1taW5nIGxhbmd1YWdlIGJ5IE5hdGlvbmFsIEluc3RydW1lbnRzLiBQb29yIGNvbnRyb2wgIFxw
YXINCnN0cnVjdHVyZXMsIGEgY29uc3RyYWludCB0byBkYXRhIGZsb3cgcHJvZ3JhbW1pbmcsIHRo
ZSBzdWJyb3V0aW5lICBccGFyDQpjb25zdHJ1Y3QgYmVpbmcgdGhlIG9ubHkgY29uY2VwdCBmb3Ig
c3RydWN0dXJpbmcgdGhlIHNvZnR3YXJlIGFuZCB0aGUgIFxwYXINCm5lY2Vzc2l0eSB0byBzdG9y
ZSBldmVyeSBzaW5nbGUgc3Vicm91dGluZSBpbiBhIHNlcGFyYXRlIGZpbGU6IEkgIFxwYXINCmd1
ZXNzIHlvdSBjYW4gaW1hZ2luZSB0aGUgcmVzdWx0IG9mIHRoaXMgc3RvcnkuXHBhcg0KXHBhcg0K
QXQgdGhlIHRpbWVzIHdpdGggdGhlIFZNRS1idXMgc3lzdGVtcyB3ZSBoYWQgYSBwcm9jZXNzIGNv
bnRyb2wgIFxwYXINCmFwcGxpY2F0aW9uIHdoaWNoIGhhZCBiZWVuIGltcGxlbWVudGVkIGluIGEg
c21hbGwgbnVtYmVyIG9mIHNsaWdodGx5ICBccGFyDQpkaWZmZXJlbnQgdHlwZXMgYnkgYSBmb3Jt
ZXIgY29sbGVhZ3VlIG9mIG1pbmUuIFNvbWUgb2YgdGhlc2UgbWFjaGluZXMgIFxwYXINCmFyZSBz
dGlsbCBpbiBkZXBsb3ltZW50IGFuZCB3b3JrIHZlcnkgcmVsaWFibGUgdXAgdG8gZGF0ZS4gQWZ0
ZXIgdGhlICBccGFyDQppbnRyb2R1Y3Rpb24gb2YgTGFiIFZpZXcgYSBzaW1wbGlmaWVkIHZlcnNp
b24gb2YgdGhpcyBhcHBsaWNhdGlvbiBoYWQgIFxwYXINCmJlZW4gcmVpbXBsZW1lbnRlZDsgdGhp
cyBzaW1wbGlmaWVkIHZlcnNpb24gaXMgYWdhaW4gaW4gZGVwbG95bWVudCBpbiAgXHBhcg0KZGlm
ZmVyZW50IHZlcnNpb25zLiBJdCBzaG93cyB1cCB1bnByZWRpY3RhYmxlIGJlaGF2aW91ciBmcm9t
IHRpbWUgdG8gIFxwYXINCnRpbWUgYW5kIGluIHNwaXRlIG9mIGJpZyBkZWJ1Z2dpbmcgZWZmb3J0
cyBieSBzZXZlcmFsIGRldmVsb3BlcnMgIFxwYXINCnRoZXNlIHByb2JsZW1zIGNvdWxkIG5ldmVy
IGJlIGZpeGVkLlxwYXINClxwYXINCkJlY2F1c2Ugb2YgdGhlc2UgYW5kIG1hbnkgbWFueSBtb3Jl
IHByb2JsZW1zIHdpdGggdGhlICJ3b3JsZCBvZiBMYWIgIFxwYXINClZpZXciIGluIG91ciBkZXBh
cnRtZW50IHRoZXJlIHdhcyBhIGRlY2lzaW9uIHRvIHJlaW1wbGVtZW50IGFnYWluIHRoZSAgXHBh
cg0KcHJvY2VzcyBjb250cm9sIGFwcGxpY2F0aW9uLiBJdCBoYXMgYmVlbiBkZWNpZGVkIHRvIGRv
IHRoZSAgXHBhcg0KaW1wbGVtZW50YXRpb24gd2l0aCBDIyAoImJlY2F1c2Ugd2UgbmVlZCBhIG1v
ZGVybiBsYW5ndWFnZSBldmVyeWJvZHkgIFxwYXINCmtub3dzIik7IGl0IGlzIG91ciBmaXJzdCB0
b3VjaCB3aXRoIHRoaXMgbGFuZ3VhZ2UuIFRoZSBwcm9qZWN0ICBccGFyDQpyZXF1aXJlbWVudHMg
aGF2ZSBiZWVuIGluY3JlYXNlZDogdGhlcmUgc2hvdWxkIGJlIGEgZ2VuZXJhbCBzb2x1dGlvbiAg
XHBhcg0Kd2hpY2ggaXMgYWRhcHRhYmxlIHRvIGRpZmZlcmVudCBuZWVkcy5ccGFyDQpccGFyDQpC
ZWNhdXNlIG9mIG15IGtub3dsZWRnZSBvZiB0aGUgYXBwbGljYXRpb24gb24gdGhlIFZNRS1idXMg
c3lzdGVtcyBhbmQgIFxwYXINCmJlY2F1c2UgSSB3YXMgaW52b2x2ZWQgaW4gYSBudW1iZXIgb2Yg
bWVldGluZ3MgY29uY2VybmluZyB0aGUgIFxwYXINCnJlcXVyZW1lbnRzIG9mIHRoZSByZS1yZWlt
cGxlbWVudGF0aW9uIEkgYW0gdmVyeSBmYW1pbGlhciB3aXRoIHRoaXMgIFxwYXINCnRvcGljLiBT
byBJIHBsYW4gdG8gdGFrZSB0aGlzIGNoYW5jZSB0byB0cnkgYSBkZXNpZ24gYW5kIHBlcmhhcHMg
YSAgXHBhcg0KcGFydGlhbCBpbXBsZW1lbnRhdGlvbiBhcyBhIGhvbWUgd29yayBhbmQgdG8gbGVh
cm4gaG93IHRvIGFwcGx5IE9PICBccGFyDQpjb25jZXB0cyB0byBnZXQgYSAiZ2VuZXJhbCBzb2x1
dGlvbiIgd2hpY2ggaXMgYWRhcHRhYmxlIGEgbGl0dGxlIGJpdCAgXHBhcg0KdG8gZGlmZmVyZW50
IG5lZWRzLlxwYXINClxwYXINClxwYXINCj4+IFRoZSBiaWcgcGljdHVyZSBvZiB0aGUgdGVjaG5p
Y2FsIHByb2Nlc3MgdG8gYmUgY29udHJvbGxlZCBpcyBhbHdheXNccGFyDQo+PiB0aGUgc2FtZS4g
QnV0IGluIHJlYWxpdHkgdGhlcmUgYXJlIHNvbWUgZGlmZmVyZW50IHR5cGVzIG9mIG1hY2hpbmVz
LFxwYXINCj4+IGJlY2F1c2UgdGhleSBoYXZlIGRpZmZlcmVudCBudW1iZXIgYW5kIHR5cGUgb2Yg
aGFyZHdhcmUgZXF1aXBtZW50LFxwYXINCj4+IGRpZmZlcmVudCB0eXBlcyBvZiBjb250cm9sIGFs
Z29yaXRobXMgYW5kIGRpZmZlcmVudCB0eXBlcyBvZiBjYWxscyB0b1xwYXINCj4+IGEgcmVsYXRp
b25hbCBkYXRhIGJhc2UgZm9yIHJldHJpZXZpbmcgZGF0YSBhYm91dCB0aGUgcGFydHMgdG8gYmVc
cGFyDQo+PiB0ZXN0ZWQgYXV0b21hdGljYWxseSBhbmQgZm9yIHN0b3JpbmcgdGhlIHJlc3VsdHMg
b2YgdGhlIHRlc3RzXHBhcg0KPj4gcmVzcGVjdGl2ZWx5LlxwYXINCj5ccGFyDQo+IFRoZSBwcm9i
bGVtIHdpdGggdGhpcyBraW5kIG9mIGRlc2lnbiBpcyB0aGF0IHlvdSB3aWxsIGJlIHRyeWluZyB0
byAgXHBhcg0KPiBvdXRsaW5lXHBhcg0KPiBhIHN5c3RlbSwgd2hpY2ggaGFzIG5vdCBiZWVuIGRl
dmVsb3BlZCB5ZXQgKHRvcC1ib3R0b20gYXBwcm9hY2gpLiAgXHBhcg0KPiBZb3Ugd2lsbFxwYXIN
Cj4gYmUgdHJ5aW5nIHRvIGd1ZXNzIGFoZWFkIG9mIHRpbWUgdGhlIGZhY2lsaXRpZXMsIHdoaWNo
IHlvdSB3aWxsIG5lZWRccGFyDQo+IGxhdGVyLiBJbiBhbGwgbGlrZWxpaG9vZCwgeW91IHdpbGwg
Z3Vlc3Mgc29ydCBvZiByaWdoLCBidXQgbm90IGV4YWN0bHlccGFyDQo+IHJpZ2h0LiBUaGlzIHdp
bGwgbGVhZCB0byBpdGVyYXRpdmUgd29yazogZG93biB0aGUgcm9hZCB5b3Ugd2lsbCAgXHBhcg0K
PiBkaXNjb3ZlcixccGFyDQo+IHRoYXQgaW5pdGlhbCBndWVzc2VzIHdlcmUgbm90IHF1aXRlIHJp
Z2gsIGFuZCB5b3Ugd2lsbCBoYXZlIHRvICBccGFyDQo+IHJldmlzaXQgdGhlXHBhcg0KPiBhc3N1
bXB0aW9ucyBhbmQgcmV3cml0ZSBsYXJnZSBwb3J0aW9ucyBvZiB5b3VyIHNvZnR3YXJlLiBBZnRl
ciB0d28gb3JccGFyDQo+IHRocmVlIHN1Y2ggaXRlcmF0aW9ucyB5b3Ugd2lsbCBnZXQgZXhoYXVz
dGVkLlxwYXINCj5ccGFyDQo+IEluIG15IG9waW5pb24sIE9PIGZyYW1ld29ya3Mgc3VjaCBhcyBC
QiBpdHNlbGYgd2VyZSBuZXZlciBkZXZlbG9wZWQgIFxwYXINCj4gdGhpc1xwYXINCj4gd2F5LiBC
QiB3YXMgbm90IHdyaXR0ZW4gb24gdGhlIGZpcnN0IGF0dGVtcHQuIFRoZXJlIHdlcmUgcHJlZGVj
ZXNzb3JzLFxwYXINCj4gc3VjaCBhcyB0aGUgT2Jlcm9uIFN5c3RlbSwgR2FkZ2V0cywgRXRob3Ms
IGV0Yy4gQXQgc29tZSBwb2ludHMgdGhlXHBhcg0KPiBleHBlcmllbmNlIGZyb20gdGhlc2UgcHJv
dG90eXBlcyB3YXMgcmVmaW5lZCBpbiB0aGUgZm9ybSBvZiB0aGUgT09ccGFyDQo+IGZyYW1ld29y
ayBPYmVyb24vRiwgd2hpY2ggdGhlbiBiZWNhbWUgQmxhY2tCb3guIFRoZXJlZm9yZSwgdGhlICBc
cGFyDQo+IGFtb3VudCBvZlxwYXINCj4gdG9wLWRvd24gZ3Vlc3Npbmcgd2FzIGluIGZhY3QgcHJl
dHR5IG1pbmltYWwsIGJlY2F1c2UgbW9zdCBvZiB0aGUgIFxwYXINCj4gZGVzaWduXHBhcg0KPiBj
aG9pY2VzIGhhdmUgYmVlbiB0cmllZCBiZWZvcmUuXHBhcg0KXHBhcg0KSSBhZ3JlZS5ccGFyDQpJ
biBteSBjYXNlIGhvd2V2ZXIgdGhlIHByb2plY3QgaXMgcmVhbGx5IHNtYWxsIGNvbXBhcmVkIHRv
IHByb2pla3RzICBccGFyDQpsaWtlIE9iZXJvbiBTeXN0ZW0sIEV0aG9zIG9yIEJCLlxwYXINClRo
ZSBPTyBzdHJ1Y3R1cmVzIChpZiB0aGlzIGFwcHJvYWNoIHdvdWxkIHRha2VuKSB3b3VsZCBiZSBN
VUNIIG1vcmUgIFxwYXINCnNpbXBsZXIuXHBhcg0KVGhlIGZhY2lsaXRpZXMgd2hpY2ggc2hvdWxk
IGJlIGFkYXB0YWJsZSAodGhlIGRpZmZlcmVuY2VzIGJldHdlZW4gIFxwYXINCnR5cGVzIG9mIG1h
Y2hpbmVzKSBhcmUga25vd24gaW5ccGFyDQpkZXRhaWwgYmVjYXVzZSB3ZSBhbHJlYWR5IGhhdmUg
dGhlc2UgZGlmZmVyZW50IHR5cGVzIG9mIG1hY2hpbmVzIGluICBccGFyDQpkZXBsb3ltZW50ICho
YXZpbmcgYmVlbiBkZXZlbG9wZWQgd2l0aCBMYWIgVmlldykuXHBhcg0KQmVjYXVzZSBvZiB0aGUg
KG1pc3NpbmcpIGxhbmd1YWdlIGZlYXR1cmVzIG9mIExhYiBWaWV3XHBhcg0KLSB0aGUgYXBwbGlj
YXRpb24gaXMgYWJsZSB0byBjb250cm9sIGp1c3Qgb25lIHRlY2huaWNhbCBwcm9jZXNzOyB3ZSAg
XHBhcg0Kd291bGQgbGlrZSB0byBoYXZlIHR3byBvciB0aHJlZSBvZiB0aGVtIGNvbnRyb2xsZWQg
aW4gYSBzaW11bHRhbmVvdXMgIFxwYXINCndheSwgYnV0IGJlY2F1c2Ugb2YgdGhlIGNvbXBsZXhp
dHkgb2YgdGhlIGNvZGUgdGhpcyB3YXMgbmV2ZXIgdHJpZWQgIFxwYXINCnRvIHByb2dyYW1ccGFy
DQotIGZvciBldmVyeSBuZXcgbWFjaGluZSBiaWcgcGFydHMgb2YgdGhlIGNvZGUgaGFkIHRvIGJl
IHJld29ya2VkICBccGFyDQpiZWNhdXNlIG9mIGl0cyBsYWNrIG9mIHN0cnVjdHVyZS4gQW5kIGNo
YW5nZXMgb2YgY29kZSB0cmlnZ2VyIG5ldyAgXHBhcg0KY2hhbmdlcyB3aGljaCB0cmlnZ2VyIGNo
YW5nZXMgLi4uXHBhcg0KLSB0aGUgbWFpbnRhaW5hYmlsaXR5IG9mIHRoZSBjb2RlIGlzIGV4dHJl
bWVseSBwb29yLiBUaGUgcmVhc29ucyBmb3IgIFxwYXINCm1pc2JlaGF2aW91ciBhcmUgYWxtb3N0
IGltcG9zc2libGUgdG8gdHJhY2sgZG93biBhbmQgdG8gZml4LlxwYXINClxwYXINClNvIEkgd2ls
bCB0YWtlIHlvdXIgYWR2aWNlIGFuZCB0aGluayBhYm91dCBkZXZlbG9waW5nIGEgInNtYWxsICBc
cGFyDQp2ZXJzaW9uIiBmaXJzdCBhbmQgZ2V0IGl0IHJ1bm5pbmcuXHBhcg0KXHBhcg0KVGhhbmtz
IGFuZCBiZXN0IHJlZ2FyZHMsXHBhcg0KUmFpbmVyXHBhcg0KXHBhcg0KXHBhcg0KLS0tLVxwYXIN
ClRvIHVuc3Vic2NyaWJlLCBzZW5kIGEgbWVzc2FnZSB3aXRoIGJvZHkgIlNJR05PRkYgQkxBQ0tC
T1giIHRvIExJU1RTRVJWQExJU1RTLk9CRVJPTi5DSH19AFNuYjk=
----boundary-LibPST-iamunique-1591926313_-_---
Received on Sat Mar 19 2011 - 15:18:55 UTC

This archive was generated by hypermail 2.3.0 : Thu Sep 26 2013 - 06:30:16 UTC