[Ometa] A bunch of new features in OMeta/JS

Justin Chase justin.m.chase at gmail.com
Tue Apr 13 21:38:31 PDT 2010


WWVzIHRoZSBmb3JtZXIgSSBtZWFuLCBJIHJlYWQgeW91ciBkaXNzZXJ0YXRpb24gb24gaG93IHRv
IG1lbW9pemUgdGhlIHJ1bGVzCihhbmQgb3RoZXIgdGhpbmdzKSBhbmQgSSB3YXMgaW50ZXJlc3Rl
ZCBpbiBoZWFyaW5nIGFib3V0IHRoZSBjaGFuZ2VzIHlvdQptYWRlIHRvIGFjY291bnQgZm9yIHRo
ZSBwYXJhbWV0ZXJpemVkIHJ1bGVzLgoKCk9uIFR1ZSwgQXByIDEzLCAyMDEwIGF0IDExOjMwIFBN
LCBBbGVzc2FuZHJvIFdhcnRoIDxhbGV4d2FydGhAZ21haWwuY29tPndyb3RlOgoKPiBodHRwOi8v
dGlubGl6emllLm9yZy9vbWV0YS1qcy8jTWVtb2l6aW5nX1BhcmFtZXRlcml6ZWRfUnVsZXNIaSBK
dXN0aW4sCj4KPiBJbiBNR3JhbW1hciB0aGVyZSBpcyBhIFJhbmdlIE9wZXJhdG9yIHlvdSBtaWdo
dCBjb25zaWRlciBuZXh0Ogo+PiAqCj4+Cj4+ICAgIC0gZGlnaXQgPSAnMCcgfCAnMScgfCAnMicg
fCAnMycgfCAuLi4gfCAnNycgfCAnOCcgfCAnOScKPj4gICAgLSBkaWdpdCA9ICcwJy4uJzknCj4+
ICAgIC0gY2hhciA9ICdhJy4uJ3onCj4+Cj4+IGV0Yy4KPj4gKgo+Pgo+Cj4gWW91IGNhbiBnZXQg
dGhhdCB3aXRob3V0IGV4dGVuZGluZyB0aGUgbGFuZ3VhZ2UsIGJ5IHVzaW5nIHBhcmFtZXRlcml6
ZWQKPiBydWxlczoKPgo+IHJhbmdlIDp4IDp5ID0gY2hhcjpjID8oeCA8PSBjICYmIGMgPD0geSkg
LT4gYwo+Cj4KPiBhbmQgdGhlbi4uLgo+Cj4gZGlnaXQgPSByYW5nZSgnMCcsICc5JykKPgo+Cj4g
SSdsbCBsZWF2ZSB0aGUgdGFzayBvZiBleHRlbmRpbmcgdGhlIE9NZXRhIHBhcnNlciB3aXRoIGEg
c3VnYXIgZm9yIGFwcGx5aW5nCj4gdGhlIHJhbmdlIHJ1bGUgYXMgYW4gZXhlcmNpc2UgZm9yIHRo
ZSByZWFkZXIuIChBZnRlciBhbGwsIG9uZSBvZiB0aGUgbmljZQo+IHRoaW5ncyBhYm91dCBPTWV0
YSBpcyB0aGF0IHlvdSB0YWlsb3IgaXQgdG8geW91ciBuZWVkcy4pCj4KPiAqCj4+IFdoYXQgaXMg
dGhlIHRyaWNrIGZvciBtZW1vaXppbmcgcGFyYW1ldGVyaXplZCBydWxlcz8KPj4gKgo+Pgo+Cj4g
Tm90IHN1cmUgd2hhdCB5b3UncmUgYXNraW5nLi4uIGRvIHlvdSB3YW50IHRvIGtub3cgaG93IEkg
aW1wbGVtZW50ZWQgaXQsIG9yCj4gaG93IHRvIHR1cm4gaXQgb24gZm9yIHlvdXIgZ3JhbW1hcj8g
KFRoZXJlIGlzIGFuIGV4YW1wbGUgb2YgdGhlIGxhdHRlcgo+IGhlcmUgPGh0dHA6Ly90aW5saXp6
aWUub3JnL29tZXRhLWpzLyNNZW1vaXppbmdfUGFyYW1ldGVyaXplZF9SdWxlcz4sIGFuZAo+IGlm
IHlvdSdyZSBpbnRlcmVzdGVkIGluIHRoZSBmb3JtZXIganVzdCBsZXQgbWUga25vdyBhbmQgSSds
bCB3cml0ZSB1cCBhCj4gbGl0dGxlIGV4cGxhbmF0aW9uIHRvbW9ycm93LikKPgo+IENoZWVycywK
PiBBbGV4Cj4KPiAqCj4+Cj4+ICoKPj4KPj4KPj4gT24gVHVlLCBBcHIgMTMsIDIwMTAgYXQgODoy
MiBQTSwgQWxlc3NhbmRybyBXYXJ0aCA8YWxleHdhcnRoQGdtYWlsLmNvbT53cm90ZToKPj4KPj4+
IEhlbGxvIGV2ZXJ5Ym9keSwKPj4+Cj4+PiBIZXJlIGlzIGEgbGlzdCBvZiBuZXcgW2ZlYXR1cmVz
IC8gaW1wcm92ZW1lbnRzXSB0aGF0IEkgaGF2ZSBbYWRkZWQgLwo+Pj4gbWFkZV0gdG8gT01ldGEv
SlMgb3ZlciB0aGUgcGFzdCBjb3VwbGUgb2YgbW9udGhzLiBQbGVhc2UgbGV0IG1lIGtub3cgaWYg
eW91Cj4+PiBoYXZlIGFueSBxdWVzdGlvbnMsIGNvbW1lbnRzLCBldGMuCj4+Pgo+Pj4gKkltcHJv
dmVtZW50cyB0byB0aGUgaW1wbGVtZW50YXRpb246Kgo+Pj4gKgo+Pj4KPj4+ICAgIC0gSSBoYXZl
IHdyaXR0ZW4gYSBqdW1wdGFibGUgb3B0aW1pemF0aW9uIHRoYXQgbWFrZXMgcnVsZXMgbGlrZQo+
Pj4KPj4+ICAgICAgICAgZGlnaXQgPSAnMCcgfCAnMScgfCAnMicgfCAnMycgfCAuLi4gfCAnNycg
fCAnOCcgfCAnOScKPj4+Cj4+PiAgICBhbmQKPj4+Cj4+PiAgICAgICAgIGZvbyA9IGBgYWFhJycg
fCBgYGFhYWInJyB8IC4uLgo+Pj4KPj4+ICAgIGdvIHJlYWxseSBmYXN0LiBUaGlzIG9wdGltaXph
dGlvbiBoYXMgc2lnbmlmaWNhbnRseSBpbXByb3ZlZCB0aGUKPj4+ICAgIHBlcmZvcm1hbmNlIG9m
IG1hbnkgKG9rLCBhbGwpIE9NZXRhL0pTLWJhc2VkIHBhcnNlcnMsIGUuZy4sIHRoZUVDTUFTY3Jp
cHQgNSBwYXJzZXIgd3JpdHRlbiBieSBUb20gVmFuIEN1dHNlbSBldCBhbC4gYXQgR29vZ2xlPGh0
dHA6Ly9lcy1sYWIuZ29vZ2xlY29kZS5jb20vc3ZuL3RydW5rL3NpdGUvZXNwYXJzZXIvaW5kZXgu
aHRtbD4uCj4+PiAgICAoSWYgeW91J3JlIGN1cmlvdXMgYWJvdXQgaG93IHRoaXMgb3B0aW1pemF0
aW9uIHdhcyBpbXBsZW1lbnRlZCwgbG9vawo+Pj4gICAgaGVyZSA8aHR0cDovL3RpbmxpenppZS5v
cmcvb21ldGEtanMvYnMtb21ldGEtb3B0aW1pemVyLnR4dD4uKQo+Pj4KPj4+Cj4+PiAgICAtCj4+
Pgo+Pj4gICAgSSBoYXZlIGFkZGVkIHN1cHBvcnQgZm9yIHRoZSBtZW1vaXphdGlvbiBvZiBwYXJh
bWV0ZXJpemVkIHJ1bGVzIC0tIGFsbCB5b3UgaGF2ZSB0byBkbyBpcyBpbnZva2UgeW91ciBncmFt
bWFyJ3MgbWVtb2l6ZVBhcmFtZXRlcml6ZWRSdWxlcyBtZXRob2QsIGFzIHNob3duIGhlcmUgPGh0
dHA6Ly90aW5saXp6aWUub3JnL29tZXRhLWpzLyNNZW1vaXppbmdfUGFyYW1ldGVyaXplZF9SdWxl
cz4uIFRoaXMgZXZlbiB3b3JrcyBmb3IgbGVmdC1yZWN1cnNpdmUgcnVsZXMhCj4+Pgo+Pj4KPj4+
Cj4+PiAgICAtIE9NZXRhL0pTIG5vdyB3b3JrcyBpbiBJbnRlcm5ldCBFeHBsb3JlciAtLSB0aGFu
a3MgdG8gUnVkaWdlcgo+Pj4gICAgUGxhbnRpa28gZm9yIHNlbmRpbmcgbWUgZGV0YWlsZWQgYnVn
IHJlcG9ydHMgYW5kIGZvciBoaXMgZW5kbGVzcyBwYXRpZW5jZSBhcwo+Pj4gICAgYSBiZXRhIHRl
c3Rlci4KPj4+Cj4+PiAqCj4+PiAqTmV3IG9wZXJhdG9yczoqCj4+Pgo+Pj4gICAgLSAqVGhlIG9w
dGlvbmFsIG9wZXJhdG9yICgqKj8qKikqLiBUaGUgcmVzdWx0IG9mCj4+Pgo+Pj4gICAgZXhwcj8K
Pj4+Cj4+Pgo+Pj4gICAgaXMgdGhlIHZhbHVlIHJldHVybmVkIGJ5IGV4cHIsIGlmIGl0IHN1Y2Nl
ZWRlZCwgb3IgdW5kZWZpbmVkLCBpZiBpdAo+Pj4gICAgZmFpbGVkIChpbiB3aGljaCBjYXNlIG5v
IGlucHV0IGlzIGNvbnN1bWVkKS4KPj4+Cj4+Pgo+Pj4gICAgLSAqVGhlIGludGVybGVhdmUgKCoq
JiYqKikgb3BlcmF0b3IqIGlzIGEgc3BlY2lhbCBraW5kIG9mIGNvbmp1bmN0aW9uCj4+PiAgICB0
aGF0IC0tIHVubGlrZSBPTWV0YSdzIGltcGxpY2l0IEFORCBvcGVyYXRvciAtLSBkb2Vzbid0IGNh
cmUgYWJvdXQgdGhlIG9yZGVyCj4+PiAgICBvZiBpdHMgb3BlcmFuZHM7IGl0IHN1Y2NlZWRzIGFz
IGxvbmcgYXMgZWFjaCBwYXJ0IGNhbiBiZSBtYXRjaGVkIGV4YWN0bHkKPj4+ICAgIG9uY2UuIFRo
ZSByZXN1bHQgaXMgYW4gYXJyYXkgY29udGFpbmluZyB0aGUgcmVzdWx0cyBvZiBlYWNoIG9wZXJh
bmQuIFNvIHRoZQo+Pj4gICAgcmVzdWx0IG9mCj4+Pgo+Pj4gICAgICAgICBleHByMSAmJiBleHBy
MiAmJiBleHByMwo+Pj4KPj4+ICAgIGlzIGEgMy1lbGVtZW50IGFycmF5OiB0aGUgZmlyc3Qgb2Yg
d2hpY2ggaXMgdGhlIHJlc3VsdCBvZiBleHByMSwgYW5kCj4+PiAgICBzbyBvbi4gVGhpcyBvcGVy
YXRvciBpcyBlc3BlY2lhbGx5IHVzZWZ1bCBmb3IgdHJlZSBtYXRjaGluZy4gSXQgaW50ZXJhY3Rz
Cj4+PiAgICBpbnRlcmVzdGluZ2x5IHdpdGggdGhlIGl0ZXJhdGlvbiBhbmQgb3B0aW9uYWwgb3Bl
cmF0b3JzLi4uIEkgd2lsbCB0cnkgdG8KPj4+ICAgIHdyaXRlIHNlbmQgb3V0IGEgZGV0YWlsZWQg
ZXhwbGFuYXRpb24gd2l0aCBhIGZldyBleGFtcGxlcyBieSB0aGUgZW5kIG9mIHRoZQo+Pj4gICAg
d2Vlay4gKFRoaXMgb3BlcmF0b3Igc3VnZ2VzdGVkIGJ5IE1hcmsgTWlsbGVyLikKPj4+Cj4+Pgo+
Pj4gICAgLSAqVGhlIGV4Y2x1c2l2ZS1PUiBvcGVyYXRvciAoKip8fCoqKSAqaXMgYSBzcGVjaWFs
IGtpbmQgb2YKPj4+ICAgIGRpc2p1bmN0aW9uIHRoYXQgZXZhbHVhdGVzIGFsbCBvZiBpdHMgb3Bl
cmFuZHMsIGFuZCBkaXNwbGF5cyBhbiBlcnJvciBpZgo+Pj4gICAgbW9yZSB0aGFuIG9uZSBvZiB0
aGVtIHN1Y2NlZWRzLiAoVGhhbmtzIHRvIE1hcmsgTWlsbGVyIGFuZCBUb20gVmFuIEN1dHNlbQo+
Pj4gICAgZm9yIHN1Z2dlc3RpbmcgdGhpcy4pCj4+Pgo+Pj4gKEkgZG9uJ3QgcmVhbGx5IGxpa2Ug
dGhlIHN5bnRheCB0aGF0IEknbSB1c2luZyBmb3IgaW50ZXJsZWF2ZSBhbmQKPj4+IGV4Y2x1c2l2
ZS1PUiByaWdodCBub3cgLS0gdGhleSBsb29rIHRoZSB3YXkgdGhleSBkbyBiZWNhdXNlIEkgZGlk
bid0IHdhbnQgdG8KPj4+IGJyZWFrIGV4aXN0aW5nIE9NZXRhL0pTIGdyYW1tYXJzLiBTb21ldGlt
ZSBzb29uIEkgaG9wZSB0byByZWxlYXNlIGEgbmV3Cj4+PiB2ZXJzaW9uIG9mIE9NZXRhL0pTIHRo
YXQgaXMgbm90IGJhY2t3YXJkLWNvbXBhdGlibGUsIGFuZCBoYXMgbXVjaCBuaWNlciwKPj4+IEpT
LWZyaWVuZGx5IHN5bnRheC4pCj4+Pgo+Pj4gKk90aGVyIG5ldyBvcGVyYXRvcnM6Kgo+Pj4gKgo+
Pj4gKgo+Pj4gKEJlY2F1c2UgdGhhdCBidWxsZXRlZCBsaXN0IHdhcyBnZXR0aW5nIGFubm95aW5n
LikKPj4+ICoKPj4+ICoKPj4+IEEgd2hpbGUgYWdvIEkgYWRkZWQgdHdvIG9wZXJhdG9ycyB0byB0
aGUgU3F1ZWFrIHZlcnNpb24gb2YgT01ldGEgLS0KPj4+IHRoZXkncmUgY2FsbGVkICJjb25zdW1l
ZC1ieSIgYW5kICJpbmRleC1jb25zdW1lZC1ieSIuIFRoZXNlIG9wZXJhdG9ycyB0dXJuZWQKPj4+
IG91dCB0byBiZSBwcmV0dHkgdXNlZnVsLCBzbyBub3cgdGhleSdyZSBhbHNvIHN1cHBvcnRlZCBp
biBPTWV0YS9KUy4KPj4+Cj4+PiAqQ29uc3VtZWQtQnkqOgo+Pj4KPj4+IFByZXR0eSBvZnRlbiwg
d2hlbiB5b3UncmUgd3JpdGluZyBhIGxleGljYWwgYW5hbHl6ZXIgb3Igc2Nhbm5lcmxlc3MKPj4+
IHBhcnNlciwgeW91IGVuZCB1cCB3cml0aW5nIHJ1bGVzIGxpa2UgdGhpczoKPj4+Cj4+PiBpZGVu
dGlmaWVyID0gbGV0dGVyOnggKGxldHRlciB8IGRpZ2l0KSo6eHMgLT4gLi4uCj4+Pgo+Pj4KPj4+
IC4uLiBhbmQgaW4gdGhlIHNlbWFudGljIGFjdGlvbiwgeW91IGhhdmUgdG8gcHV0IHRoZXNlIGNo
YXJhY3RlcnMgYmFjawo+Pj4gdG9nZXRoZXIgaW50byBhIHN0cmluZy4gSXQgd291bGQgYmUgYSBs
b3QgbmljZXIgaWYgeW91IGNvdWxkIGp1c3Qgc2F5ICJnaXZlCj4+PiBtZSB0aGUgc3Vic3RyaW5n
IG9mIHRoZSBpbnB1dCB0aGF0IHdhcyBjb25zdW1lZCBieSB0aGlzIGV4cHJlc3Npb24iLCBhbmQK
Pj4+IHRoYXQncyBleGFjdGx5IHdoYXQgdGhlIGNvbnN1bWVkLWJ5IG9wZXJhdG9yICg8Li4uPikg
ZG9lcy4gU28gaW5zdGVhZCBvZgo+Pj4gdGhlIGFib3ZlLCB5b3UgY291bGQgd3JpdGUKPj4+Cj4+
PiBpZGVudGlmaWVyID0gPGxldHRlciAobGV0dGVyIHwgZGlnaXQpKj4KPj4+Cj4+Pgo+Pj4gd2hp
Y2ggaXMgbW9yZSBkZWNsYXJhdGl2ZSwgYW5kIGFsc28gcnVucyBhIGxpdHRsZSBiaXQgZmFzdGVy
KiAoYXQgbGVhc3QKPj4+IGluIFNxdWVhayAtLSBJIGhhdmVuJ3QgcHJvZmlsZWQgdGhlIEphdmFT
Y3JpcHQgdmVyc2lvbiwgYnV0IEkgZXhwZWN0IGl0IHdpbGwKPj4+IGJlIGZhc3RlciB0b28pLgo+
Pj4KPj4+IE5vdGUgdGhhdCBjb25zdW1lZC1ieSBkb2Vzbid0IG9ubHkgd29yayB3aGVuIHRoZSBp
bnB1dCBpcyBhIHN0cmluZy4gSWYKPj4+IGl0J3MgYW4gYXJyYXksIHRoZSB2YWx1ZSBvZiA8Li4u
PiB3aWxsIGJlIGEgc3ViLWFycmF5IHdob3NlIGVsZW1lbnRzCj4+PiB3aWxsIGJlIHRoZSBlbGVt
ZW50cyB0aGF0IHdlcmUgY29uc3VtZWQgYnkgdGhlIGV4cHJlc3Npb24gaW5zaWRlIHRoZSBwb2lu
dHkKPj4+IGJyYWNrZXRzLiAoSW4gU21hbGx0YWxrIHBhcmxhbmNlLCB0aGUgdmFsdWUgb2YgPC4u
Lj4gaXMgYWx3YXlzIG9mIHRoZQo+Pj4gc2FtZSAic3BlY2llcyIgYXMgdGhlIGRhdGEgdGhhdCB5
b3UncmUgd29ya2luZyBvbi4pCj4+Pgo+Pj4gKkluZGV4LUNvbnN1bWVkLUJ5KjoKPj4+Cj4+PiBJ
bmRleC1jb25zdW1lZC1ieSAoQDwuLi4+KSB3b3JrcyBsaWtlIGNvbnN1bWVkLWJ5LCBidXQgaXRz
IHJldHVybiB2YWx1ZQo+Pj4gaXMgYW4gb2JqZWN0IHRoYXQgY29udGFpbnMgdGhlIHN0YXJ0IGFu
ZCBlbmQgaW5kaWNlcyBvZiB0aGUgaW5wdXQgdGhhdCB3YXMKPj4+IGNvbnN1bWVkLiBTbyB0aGUg
cmVzdWx0IG9mIG1hdGNoaW5nIHRoZSBpbnB1dCAiYWJjIiB3aXRoIHRoZSBwYXR0ZXJuCj4+PiBA
PGBgYWJjJyc+IGlzIHRoZSBvYmplY3Qge2Zyb21JZHg6IDAsIHRvSWR4OiAzfS4gKHRvSWR4IGlz
IG5vdAo+Pj4gaW5jbHVzaXZlLikKPj4+Cj4+PiBUaGlzIGlzIHJlYWxseSB1c2VmdWwgd2hlbiB5
b3UncmUgd3JpdGluZyBwYXJzZXJzLCBhbmQgd2FudCB0byBkZWNvcmF0ZQo+Pj4gcGFyc2UgdHJl
ZSBub2RlcyB3aXRoIHBvc2l0aW9uYWwgaW5mb3JtYXRpb24gZm9yIHVzZSB3aXRoLCBzYXksIGEg
dG9vbCB0aGF0Cj4+PiBkb2VzIHNvbWUgc3RhdGljIGNoZWNrcyBhbmQgbWF5IHdhbnQgdG8gcmVw
b3J0IGVycm9ycyB0byB0aGUgdXNlci4KPj4+Cj4+Pgo+Pj4gKk90aGVyIGltcHJvdmVtZW50cyB0
byB0aGUgbGFuZ3VhZ2U6Kgo+Pj4KPj4+ICAgIC0gVGhlcmUgaXMgbm93IGEgc3BlY2lhbCBzeW50
YXggZm9yIGZvcmVpZ24gcnVsZSBpbnZvY2F0aW9uczogaW5zdGVhZAo+Pj4gICAgb2Ygd3JpdGlu
Zwo+Pj4KPj4+ICAgICAgICAgZm9yZWlnbihBbm90aGVyR3JhbW1hciwgInJ1bGVOYW1lIiwgYXJn
cy4uLikKPj4+Cj4+PiAgICB5b3UgY2FuIHdyaXRlIHRoZSBtdWNoIG1vcmUgSlMtZnJpZW5keQo+
Pj4KPj4+ICAgICAgICAgQW5vdGhlckdyYW1tYXIucnVsZU5hbWUoYXJncy4uLikKPj4+Cj4+PiAg
ICBOb3RlIHRoYXQgdGhlIGxhdHRlciBpcyBqdXN0IGEgc3ludGFjdGljIHN1Z2FyIGZvciB0aGUg
Zm9ybWVyLCB3aGljaAo+Pj4gICAgaXMgc3RpbGwgc3VwcG9ydGVkLiBBbHNvLCBpZiB5b3UncmUg
bm90IHBhc3NpbmcgYW55IGFyZ3VtZW50cywgdGhlCj4+PiAgICBwYXJlbnRoZXNlcyBhcmUgb3B0
aW9uYWwuCj4+Pgo+Pj4KPj4+ICAgIC0gTm93IHlvdSBjYW4gcmVmZXIgdG8gdGhlIGdyYW1tYXIg
b2JqZWN0IHVzaW5nIEpTJ3MgdGhpcyBrZXl3b3JkLAo+Pj4gICAgaW5zdGVhZCBvZiBzZWxmLiAg
KHNlbGYgaXMgc3RpbGwgc3VwcG9ydGVkIGZvciB0aGUgc2FrZSBvZiBiYWNrd2FyZAo+Pj4gICAg
Y29tcGF0aWJpbGl0eS4pCj4+Pgo+Pj4gSSB0aGluayB0aGF0J3MgaXQgZm9yIG5vdy4KPj4+Cj4+
PiBDaGVlcnMsCj4+PiBBbGV4Cj4+Pgo+Pj4KPj4+IF9fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fCj4+PiBPTWV0YSBtYWlsaW5nIGxpc3QKPj4+IE9NZXRhQHZw
cmkub3JnCj4+PiBodHRwOi8vdnByaS5vcmcvbWFpbG1hbi9saXN0aW5mby9vbWV0YQo+Pj4KPj4+
Cj4+Cj4+Cj4+IC0tCj4+IEp1c3RpbiBDaGFzZQo+PiBodHRwOi8vd3d3Lmp1c3RuYnVzaW5lc3Mu
Y29tCj4+Cj4KPgoKCi0tIApKdXN0aW4gQ2hhc2UKaHR0cDovL3d3dy5qdXN0bmJ1c2luZXNzLmNv
bQotLS0tLS0tLS0tLS0tLSBuZXh0IHBhcnQgLS0tLS0tLS0tLS0tLS0KQW4gSFRNTCBhdHRhY2ht
ZW50IHdhcyBzY3J1YmJlZC4uLgpVUkw6IGh0dHA6Ly92cHJpLm9yZy9waXBlcm1haWwvb21ldGEv
YXR0YWNobWVudHMvMjAxMDA0MTMvOTdlMWRmMmIvYXR0YWNobWVudC5odG0K


More information about the OMeta mailing list