Re: [jinterface] add erlang term parse/match/bind features

Dmitriy Kargapolov <[email protected]> Thu, 01 Jan 2015 14:26:21 -0500
Newsgroups gmane.comp.lang.erlang.patches
Message-ID <[email protected]>
SGkgVmxhZCwKV2hpbGUgY29udGludWluZyBzdHVkeSB5b3VyIGNvZGUgSSB0cmllZCB0byBhbnN3
ZXIgeW91ciBxdWVzdGlvbnMuClJlYWRpbmcgdGhpcyBwbGVhc2Uga2VlcCBpbiBtaW5kIHRoZSBk
aWZmZXJlbmNlIGluIG91ciBhcHByb2FjaGVzLiBJbiBteQphcHByb2FjaCBleGlzdGluZyBvYmpl
Y3RzIHN0cnVjdHVyZSBpcyByZS11c2VkIHRvIGtlZXAgcGF0dGVybiBlbGVtZW50cy4KVGhpcyB3
YXMgZG9uZSBmb3IgdGhlIHNha2Ugb2Ygc2ltcGxpY2l0eSwgdG8ga2VlcCBjb2RlIGxlc3MgcG9s
bHV0ZWQKd2l0aCBuZXcgY2xhc3NlcyBhbmQgaW50ZXJmYWNlcy4gSkludGVyZmFjZSBpbml0aWFs
bHkgYW5ub3VuY2VkIGFzCmxvdy1sZXZlbCBpbnRlcmZhY2UgdG8gdGhlIEVybGFuZywgYW5kIEkg
dHJpZWQgdG8gZm9sbG93IHRoaXMgd2F5LgoKT24gMDEvMDEvMjAxNSAwOToxMiBBTSwgVmxhZCBE
dW1pdHJlc2N1IHdyb3RlOgo+IEhpIERtaXRyaXksCj4KPiBJJ20gc3RpbGwgZ29pbmcgdGhyb3Vn
aCB5b3VyIGNvZGUsIGJ1dCBJIHdvbmRlciBpZiB5b3UgY291bGQgZXhwbGFpbgo+IHdoeSBlcXVh
bHMgc2hvdWxkIGJlIGltcGxlbWVudGVkIGluIHRlcm1zIG9mIG1hdGNoPyBJIHRoaW5rIHRoZXNl
IGFyZQo+IHR3byBkaWZmZXJlbnQgb3BlcmF0aW9ucyBhbmQgY2FuIGJlIHJlbGV2YW50IG9ubHkg
aWYgY2hlY2tpbmcgZXF1YWxzCj4gYmV0d2VlbiBhIHJlZ3VsYXIgdGVybSBhbmQgYSBwYXR0ZXJu
LCBidXQgSSBjYW4ndCBzZWUgYW55IHJlYXNvbiB0bwo+IHdhbnQgdG8gZG8gdGhhdCBiZWNhdXNl
IHRoZXNlIHNob3VsZCBuZXZlciBiZSBlcXVhbC4gT3IgbWF5YmUgSSBhbQo+IG1pc3NpbmcgYSBm
aW5lIHBvaW50Py4uLgpUaGlzIHdhcyBkb25lIGZvciBzaW1wbGljaXR5LCB0byBhdm9pZCBkdXBs
aWNhdGluZyB0aGUgY29kZSwgZXNwZWNpYWxseQp3aGVuIG9wZXJhdGluZyBvbiBjb21wbGV4IGRh
dGEgbGlrZSBsaXN0cywgdHVwbGVzLCBtYXBzLiBMZXNzIGNvZGUgLQpsZXNzIGVycm9ycy4KVGVy
bSBjb25zaWRlcmVkIHRvIGJlIHBhdHRlcm4gaW4gb3Bwb3NpdGUgdG8gcmVndWxhciBvYmplY3Qg
aWYgaXQKY29udGFpbnMgdmFyaWFibGUgcGxhY2Vob2xkZXJzLiBJbiBzdWNoIGNhc2UgaXQgc2hv
dWxkIG5vdCBiZSB1c2VkIGluCmFueSB3YXkgYnV0IGZvciBtYXRjaGluZyBhZ2FpbnN0IG90aGVy
IHJlZ3VsYXIgdGVybXMuIChSZWd1bGFyIHRlcm0gY2FuCmJlIGNvbnNpZGVyZWQgYXMgYW4gZWRn
ZSBjYXNlIG9mIHBhdHRlcm4gd2l0aCBubyB2YXJpYWJsZXMgYW5kIHRoZXJlZm9yZQpjYW4gYWxz
byBiZSB1c2VkIGFzIGxlZnQgc2lkZSBvZiB0aGUgbWF0Y2ggb3BlcmF0aW9uKS4KSW4gdGhlIGxp
Z2h0IG9mIGFib3ZlLCBjYWxsaW5nIGVxdWFscyBtZXRob2QgZm9yIHRoZSBwYXR0ZXJuKHMpIGRv
ZXMgbm90Cm1ha2UgYW55IHNlbnNlIGFuZCBzaG91bGQgbm90IGJvdGhlciBhbnlvbmUuIEZvciBy
ZWd1bGFyIHRlcm0ocykgbWF0Y2gKYW5kIGVxdWFscyBtZXRob2RzIGNhcnJ5IHNhbWUgc2VtYW50
aWNzLgpJIGtub3cgdGhhdCBlcXVhbHMgbWV0aG9kIG5vdyBoYXMgc29tZSBydW50aW1lIG92ZXJo
ZWFkcy4gSW1obyB0aGlzIGlzCnJlYXNvbmFibGUgc2FjcmlmaWNpbmcuIFRoZSBlcXVhbHMoKSBt
ZXRob2QgaXMgbm90IG11Y2ggaW1wb3J0YW50LiBKYXZhCmNvZGUgbXVzdCBwcmVmZXJhYmx5IHdv
cmsgd2l0aCBKYXZhIG9iamVjdHMsIG5vdCBFcmxhbmcgdGVybXMuIFdoYXQgaXMKcmVhbGx5IGlt
cG9ydGFudCBpcyB0byBoYXZlIGVmZmVjdGl2ZSB3YXkgb2YgaW1wb3J0aW5nIEVybGFuZyB0ZXJt
cwp0cmFuc2xhdGluZyB0aGVtIHRvIHdoYXQgaXMgc3VpdGFibGUgZm9yIEphdmEgY29kZS4gU28g
bXVjaCgpCmltcGxlbWVudGF0aW9uIGlzIGEgcHJpb3JpdHkgb3ZlciBlcXVhbHMoKS4KPgo+IEkg
YW0gYWxzbyB3b25kZXJpbmcgaWYgT0VPYmplY3QgaXRzZWxmIGNvdWxkIGltcGxlbWVudCBPRU1h
dGNoZXIgYW5kCj4ganVzdCBjYWxsIG1hdGNoL2JpbmQgcmVjdXJzaXZlbHkgaW5zdGVhZCBvZiBj
aGVja2luZyAiaW5zdGFuY2VvZgo+IE9FTWF0Y2hlciIgaW4gT0VMaXN0LCBPRU1hcCBhbmQgT0VU
dXBsZS4gSXQgZmVlbHMgZWFzaWVyIHRvIHVuZGVyc3RhbmQKPiAobGVzcyBjb25kaXRpb25hbHMg
aW4gdGhlIGNvZGUpLgpJbiBzdWNoIGNhc2UgbWF0Y2gvYmluIHdvdWxkIGJlIG1ldGhvZHMgb2Yg
YWxsIG9iamVjdHMsIGluY2x1ZGluZyBhdG9tcywKaW50ZWdlcnMsIHN0cmluZ3MgZXRjLiBUaGlz
IGRvZXMgbm90IG1ha2UgbXVjaCBzZW5zZSBpbWhvLiBJIGRvbuKAmXQgdGhpbmsKaXQgaXMgcmVh
c29uYWJsZSB0byByZXBsYWNlIG9uZSBpbXBlcmZlY3Rpb24gYnkgYW5vdGhlciBvbmUuCj4KPiBJ
biBteSBpbXBsZW1lbnRhdGlvbiwgSSBkaWQgaXQgaW4gYSBzbGlnaHRseSBkaWZmZXJlbnQgd2F5
LCBtb3N0bHkgaW4KPiBvcmRlciB0byBtb2RpZnkgZXhpc3RpbmcgY2xhc3NlcyBhcyBsaXR0bGUg
YXMgcG9zc2libGUsIGJ5IHVzaW5nIGFuCj4gdXRpbGl0eSBjbGFzcyB0byB0cmF2ZXJzZSB0ZXJt
cyBhbmQgZG8gbWF0Y2hpbmcgYW5kIGJpbmRpbmcuCk91ciBhcHByb2FjaGVzIGFyZSBmdW5kYW1l
bnRhbGx5IGRpZmZlcmVudC4gSSBhbHNvIHRyaWVkIHRvIGtlZXAgYXMgbXVjaApjb2RlIHVudG91
Y2hlZCBhcyBwb3NzaWJsZSwgYnV0IHdhcyByZWFzb25hYmxlIGxhenkgdG8gcmUtY3JlYXRlIGNv
bXBsZXgKRXJsYW5nIHRlcm1zIHN0cnVjdHVyZSBpbiBzZXBhcmF0ZSBwYXR0ZXJuIG9iamVjdC4g
TXkgYXBwcm9hY2ggaXMgYQpjb21wcm9taXNlLiBJdCBkb2VzIHJlcXVpcmUgdG91Y2hpbmcgdGhl
IGNvcmUgY29kZS4gWW91ciBhcHByb2FjaCBpcwpzbWFydCB3YXkgdG8gaGFuZGxlIHBhdHRlcm4g
bWF0Y2hpbmcgd2l0aG91dCB0b3VjaGluZyBiYXNlIGNvZGUuIEl0IG1heQpiZSAoSSBndWVzcykg
bWFkZSBhcyBhbiBleHRlbnNpb24gdG8gY29yZSBKSW50ZXJmYWNlIGluIHNlcGFyYXRlIGphcgpo
YXZpbmcgSkludGVyZmFjZSBhcyBhIGRlcGVuZGVuY3kuIEZyYW5rbHkgSSBkaWRu4oCZdCBoYXZl
IGVub3VnaCB0aW1lIHRvCmZvbGxvdyB5b3VyIHdheSwgbXkgY29kZSBjb250YWlucyBsZXNzIG1v
ZGlmaWNhdGlvbnMgYW5kIGFkZGl0aW9ucyB0bwp0aGUgSkludGVyZmFjZSBhbmQgcHJvYmFibHkg
dG9vayBsZXNzIGVmZm9ydHMgdG8gaW1wbGVtZW50LgoKPiBJIGFsc28gaGF2ZSBtb3JlIGFkdmFu
Y2VkIGNvbnZlcnNpb24gcm91dGluZXMgYmV0d2VlbiBKYXZhIGFuZCBFcmxhbmcKPiB0eXBlcyAo
bW9zdCB1c2VmdWwgYXJlIGZvciBTdHJpbmdzLCBMaXN0PC0+bGlzdCBhbmQKPiBBcnJheTwtPnR1
cGxlL2JpbmFyeSkuIE1heWJlIHlvdSB3b3VsZCBsaWtlIHRvIGNoZWNrCj4gYXQgaHR0cHM6Ly9n
aXRodWIuY29tL3ZsYWRkdS9vdHAvY29tcGFyZS9lcmxhbmc6bWFzdGVyLi4uamludGVyZmFjZV9u
ZXdfYXBpPwpJIG1hZGUgZm9yIG15IHByb2plY3QgYWRkaXRpb25hbCBhYnN0cmFjdGlvbnMgZm9y
IHR5cGUgY29udmVyc2lvbgppbmNsdWRpbmcgbGlzdHMgb2Ygb2JqZWN0cyBhbmQgbWFwcy4gSeKA
mW0gbm90IHJlYWR5IHRvIHNoYXJlIHRoaXMsIHNpbmNlCml0IGlzIG5vdCBwZXJmZWN0IGF0IGFs
bC4gQW5kIEkgZG9u4oCZdCBzZWUgYW55IGNvbXByZWhlbnNpdmUgZ2VuZXJpYyB3YXkKb2YgbWFw
cGluZyBFcmxhbmcgZGF0YSB0by9mcm9tIEphdmEgZGF0YS4gQW55d2F5LCBJIHRoaW5rIHRoYXQg
c3VjaApzdHVmZiBtYXkgYmUgYSBzZXBhcmF0ZSBsaWJyYXJ5IGRlZGljYXRlZCB0byB0eXBlIGNv
bnZlcnNpb25zIGFuZCBvdGhlcgphc3BlY3RzIG9mIGVuY29kZS9kZWNvZGUgb2YgY29tcGxleCB1
c2Vy4oCZcyBkYXRhLiBKSW50ZXJmYWNlIGFzIGEKbG93LWxldmVsIGxpYnJhcnkgbG9va3MgYmV0
dGVyIHdoZW4gZnJlZSBvZiBzdWNoIGFkZGl0aW9ucy4gSXQgaXMgZW5vdWdoCnRvIGF1dG9tYXRl
IEVybGFuZyB0ZXJtIHN0cnVjdHVyZSBtYXRjaGluZyBtb3ZpbmcgdHlwZSB2ZXJpZmljYXRpb24g
YW5kCmNvbnZlcnNpb24gdG8gdGhlIG5leHQgbGF5ZXIgb2YgYWJzdHJhY3Rpb24gb3IgdG8gdXNl
cuKAmXMgY29kZSAobGlrZQpjdXN0b20gYmluZGVycyBpbiBteSBjYXNlKS4KCj4KPiBNYXliZSB3
ZSBzaG91bGQgdHJ5IHRvIHVuaWZ5IG91ciBjb2RlIGZpcnN0IGFuZCB0aGVuIHN1Ym1pdCBpdCB0
byBPVFA/CkZpcnN0IG9mIGFsbCwgd2UgKGFuZCBjb21tdW5pdHkpIHNob3VsZCB2b3RlIGZvciB0
aGUgY29yZSBhcHByb2FjaCwKYW5zd2VyaW5nIHRoZSBxdWVzdGlvbjogc2hvdWxkIHdlIGludGVy
dmVuZSBpbnRvIHRoZSBiYXNlIGNvZGUgb3IgbWFrZQpwYXJhbGxlbCBwYXR0ZXJucyBvYmplY3Qg
c3RydWN0dXJlPyBNeSBvcGluaW9uIGlzIHRoYXQgbWFraW5nIHBhcmFsbGVsCnN0cnVjdHVyZXMg
aXMgbW9yZSBlcnJvci1wcm9uZSBhbmQgbWFrZXMgbWFpbnRlbmFuY2UgaGFyZGVyIGR1ZSB0byBt
b3JlCnNpbWlsYXIgY29kZSB0byByZXBlYXQgaW4gZGlmZmVyZW50IHBsYWNlcy4KU2Vjb25kIChs
ZXNzIGltcG9ydGFudCB0aG91Z2gpIHF1ZXN0aW9uIHdvdWxkIGJlOiBob3cgcmVhc29uYWJsZSBp
cyB0bwphZGQgZmFuY3kgZGF0YSBjb252ZXJzaW9uIGhlbHBlcnMgdG8gdGhlIGJhc2UgSkludGVy
ZmFjZSBsaWJyYXJ5LgpJbiB0aGUgY29kZSBJIHN1Ym1pdHRlZCB0aGVyZSBpcyBtYXkgYmUgc3Bh
Y2UgZm9yIGltcHJvdmVtZW50cyBpbiB0aGUKT0VQYXJzZXIgY2xhc3MuIElmIHdlJ2QgbGlrZSB0
byBicmluZyBiYXNpYyBkYXRhIHR5cGUKdmVyaWZpY2F0aW9uL2NvbnZlcnNpb25zIHRvIHRoZSBj
b2RlLiBJIHdvdWxkIHByZWZlciB0byBhdm9pZCB0aGlzCnRob3VnaCwgYXQgbGVhc3QgZm9yIHRo
ZSBpbml0aWFsIHZlcnNpb24uCj4KPiBIYXBweSBOZXcgWWVhciBhbmQgSSBndWVzcyB0aGF0IGZv
ciB5b3UgaXQncyBldmVuIE1lcnJ5IENocmlzdG1hcyBpbiBhCj4gd2VlaywgcmlnaHQ/Clllcywg
dGhhbmsgeW91IQoKPiBWbGFkCj4KPgo+IE9uIFdlZCwgRGVjIDMxLCAyMDE0IGF0IDU6MzEgUE0s
IERtaXRyaXkgS2FyZ2Fwb2xvdgo+IDxkbWl0cml5LmthcmdhcG9sb3ZAZ21haWwuY29tIDxtYWls
dG86ZG1pdHJpeS5rYXJnYXBvbG92QGdtYWlsLmNvbT4+Cj4gd3JvdGU6Cj4KPiAgICAgSGkgVmxh
ZCwKPiAgICAgVGhhbmsgeW91IG11Y2ggZm9yIHlvdXIgbm90ZXMuCj4KPiAgICAgSSBhZ3JlZSBz
b21lIG5hbWVzIHdlcmUgbm90IGdvb2QgZW5vdWdoLCBJIGNoYW5nZWQgdGhlc2UgcGVyIHlvdXIK
PiAgICAgc3VnZ2VzdGlvbi4KPiAgICAgT2xkIGNvbW1lbnQgcmVtb3ZlZCBhcyB3ZWxsLgo+Cj4g
ICAgIEFzIHRvIE90cEVyYW5nTWFwIGNsYXNzIC0gSSB3YXMgbm90IGdvaW5nIHRvIHJlLWltcGxl
bWVudCBpdAo+ICAgICBpbml0aWFsbHkuIEJ1dCBpbiBvcmRlciB0byBhZGQgbWF0Y2gvYmluZCBJ
IGhhZCB0byBkbyB0aGlzLiBJCj4gICAgIHRyaWVkIHRvIG5vdCBhZGQgbXVjaCBuZXcgbWV0aG9k
cywga2VlcGluZyBpbXBsZW1lbnRhdGlvbiByYXRoZXIKPiAgICAgImp1c3QgZW5vdWdoIiB0byB3
b3JrIHdpdGggbWFwcy4gWW91IGFyZSB2ZXJ5IHdlbGNvbWUgdG8KPiAgICAgYWRkL2NoYW5nZSB3
aGF0ZXZlciB5b3Ugc2VlIHJlYXNvbmFibGUgaW4gc2VwYXJhdGUgUFIgdGhvdWdoLgo+Cj4gICAg
IEJlc3QgUmVnYXJkcyBhbmQgSGFwcHkgTmV3IFllYXIhCj4gICAgIC0gRG1pdHJpeS4KPgo+ICAg
ICBnaXQgZmV0Y2ggaHR0cHM6Ly9naXRodWIuY29tL3gwaWQvb3RwLmdpdCBqaW50ZXJmYWNlX3Bh
dHRlcm5fbWF0Y2hpbmcKPgo+ICAgICBodHRwczovL2dpdGh1Yi5jb20veDBpZC9vdHAvY29tcGFy
ZS9lcmxhbmc6bWFzdGVyLi4uamludGVyZmFjZV9wYXR0ZXJuX21hdGNoaW5nCj4gICAgIGh0dHBz
Oi8vZ2l0aHViLmNvbS94MGlkL290cC9jb21wYXJlL2VybGFuZzptYXN0ZXIuLi5qaW50ZXJmYWNl
X3BhdHRlcm5fbWF0Y2hpbmcucGF0Y2gKPgo+Cj4KPiAgICAgT24gMTIvMzEvMjAxNCAxMDoyNyBB
TSwgVmxhZCBEdW1pdHJlc2N1IHdyb3RlOgo+PiAgICAgSGkgRG1pdHJpeSwKPj4KPj4gICAgIE5p
Y2UgaW1wbGVtZW50YXRpb24hIEkgaGF2ZSBzb21ldGhpbmcgc2ltaWxhciB0aGF0IEkgd2FudGVk
IHRvCj4+ICAgICBzdWJtaXQsIGJ1dCBJIGxpa2Ugc29tZSBvZiB5b3VyIGRldGFpbHMgYmV0dGVy
Lgo+Pgo+PiAgICAgSSBoYXZlIGEgZmV3IGNvbW1lbnRzLCBhZnRlciBicm93c2luZyB0aGUgY29k
ZSBqdXN0IGJyaWVmbHk6Cj4+Cj4+ICAgICAtIEkgd291bGQgcHJlZmVyIHRvIGhhdmUgdGhlIE9F
TWFwIGNoYW5nZXMgYXMgYSBzZXBhcmF0ZSBQUiwgYXMKPj4gICAgIGl0J3MgYSBzZXBhcmF0ZSBp
c3N1ZSBhbmQgdGhlcmUgYXJlIG1vcmUgdGhpbmdzIHRvIGFkZHJlc3MgdGhlcmUsCj4+ICAgICBs
aWtlIGZvciBleGFtcGxlLCBPRU1hcCBjb3VsZCBhbHNvIGltcGxlbWVudCBNYXAsIGxpa2UgT0VM
aXN0Cj4+ICAgICBpbXBsZW1lbnRzIEl0ZXJhYmxlIChhbmQgbWlnaHQgaW1wbGVtZW50IExpc3Qp
LiAKPj4gICAgIC0gSSBkb24ndCBsaWtlIHRoZSBuYW1lIE9FVmFycmllciwgaXQgZG9lc24ndCBt
ZWFuIGFueXRoaW5nLgo+PiAgICAgTWF5YmUgT0VNYXRjaGVyIHdvdWxkIGJlIGJldHRlcj8KPj4g
ICAgIC0gT0VCaW5kIG1pZ2h0IGJlIGNsZWFyZXIgYXMgT0VCaW5kaW5nLCBhcyBpdCBjb250YWlu
cyBhIHNldCBvZgo+PiAgICAgYmluZGluZ3M/Cj4+ICAgICAtIEkgdGhpbmsgdGhlcmUgYXJlIHN0
aWxsIHNvbWUgbWVyZ2UgaXNzdWVzLCBsaWtlIGZvciBleGFtcGxlCj4+ICAgICBPRUxpc3Q6Mjk5
IHdoZXJlIHRoZSBjb21tZW50IGlzIGZyb20gdGhlIG9sZCBlcXVhbHMgbWV0aG9kCj4+Cj4+ICAg
ICBiZXN0IHJlZ2FyZHMsCj4+ICAgICBWbGFkCj4+Cj4+Cj4+ICAgICBPbiBUdWUsIERlYyAzMCwg
MjAxNCBhdCA5OjU2IFBNLCBEbWl0cml5IEthcmdhcG9sb3YKPj4gICAgIDxkbWl0cml5Lmthcmdh
cG9sb3ZAZ21haWwuY29tCj4+ICAgICA8bWFpbHRvOmRtaXRyaXkua2FyZ2Fwb2xvdkBnbWFpbC5j
b20+PiB3cm90ZToKPj4KPj4gICAgICAgICBUaGlzIGltcGxlbWVudHMgZnVuY3Rpb25hbGl0eSBz
aW1pbGFyIHRvIGZvbGxvd2luZyBDCj4+ICAgICAgICAgZnVuY3Rpb25zLCB3aGljaCBhcmUgcGFy
dCBvZiBlcmxfaW50ZXJmYWNlIGFwcGxpY2F0aW9uOgo+PiAgICAgICAgIC0gRVRFUk0gKmVybF9m
b3JtYXQoRm9ybWF0U3RyLCAuLi4pOwo+PiAgICAgICAgIC0gaW50IGVybF9tYXRjaChFVEVSTSAq
UGF0dGVybiwgRVRFUk0gKlRlcm0pOwo+Pgo+PiAgICAgICAgIFRvIGFjaGV2ZSB0aGlzIG5ldyBj
bGFzc2VzIGludHJvZHVjZWQ6Cj4+ICAgICAgICAgKiBPdHBFcmxhbmdWYXIgLSB2YXJpYWJsZSBw
bGFjZWhvbGRlcjsKPj4gICAgICAgICAqIE90cEVybGFuZ0JpbmQgLSB2YXJpYWJsZSB2YWx1ZXMg
Y29sbGVjdGlvbjsKPj4gICAgICAgICAqIE90cEVybGFuZ1BhcnNlciAtICJlcmxfZm9ybWF0IiBw
YXJzZXIgaW1wbGVtZW50YXRpb247Cj4+ICAgICAgICAgKiBPdHBFcmxhbmdQYXR0ZXJuIC0gcGF0
dGVybiBhYnN0cmFjdGlvbiB3aXRoIG1hdGNoL2JpbmQKPj4gICAgICAgICBmdW5jdGlvbnM7Cj4+
Cj4+ICAgICAgICAgQ2xhc3NlcyByZXByZXNlbnRpbmcgY29tcG9zaXRlIG9iamVjdHMgT3RwRXJs
YW5nTGlzdCwKPj4gICAgICAgICBPdHBFcmxhbmdUdXBsZSwgT3RwRXJsYW5nTWFwIGFuZCBuZXcg
T3RwRXJsYW5nVmFyIGltcGxlbWVudAo+PiAgICAgICAgIGludGVyZmFjZSBPdHBFcmxhbmdWYXJy
aWVyIGRlZmluaW5nIG1hdGNoIGFuZCBiaW5kIGZ1bmN0aW9ucwo+PiAgICAgICAgIGZvciB0aGVz
ZSBvYmplY3RzLgo+Pgo+PiAgICAgICAgIENsYXNzIE90cEVybGFuZ01hcCByZXdvcmtlZCB0byBi
ZSBiYXNlZCBvbiBIYXNoTWFwIGluc3RlYWQgb2YKPj4gICAgICAgICB0d28gc2VwYXJhdGUgbGlz
dHMga2VlcGluZyBrZXlzIGFuZCB2YWx1ZXMuIFRoaXMgaXMgY2xvc2UgdG8KPj4gICAgICAgICBu
YXRpdmUgc2VtYW50aWNzIG9mIG1hcHMgYW5kIG1ha2VzIGVhc2llciBpbXBsZW1lbnRpbmcgYmFz
aWMKPj4gICAgICAgICBtYXAgbWFuaXB1bGF0aW9ucy4KPj4KPj4gICAgICAgICBJdCBhZGRpdGlv
biB0byBPdHBFcmxhbmdCaW5kIGN1c3RvbSB1c2VyJ3MgY2xhc3MgbWF5IGJlIHVzZWQKPj4gICAg
ICAgICBhcyByZWNlaXZlciBvZiBtYXRjaGVkIHZhcmlhYmxlcyB2YWx1ZXMuIEphdmEgcmVmbGVj
dGlvbiBpcwo+PiAgICAgICAgIHVzZWQgdG8gcHJlcGFyZSB2YXJpYWJsZSB2YWx1ZSBzZXR0ZXJz
IGR1cmluZyB0aGUgcGFyc2UKPj4gICAgICAgICBzdGFnZS4gSmF2YSBkb2MgaGFzIG1vcmUgZGV0
YWlscyBhbmQgZXhhbXBsZXMuIFRlc3QgY2FzZXMKPj4gICAgICAgICBpbXBsZW1lbnRlZC4KPj4K
Pj4gICAgICAgICBnaXQgZmV0Y2ggaHR0cHM6Ly9naXRodWIuY29tL3gwaWQvb3RwLmdpdAo+PiAg
ICAgICAgIGppbnRlcmZhY2VfcGF0dGVybl9tYXRjaGluZwo+Pgo+PiAgICAgICAgIFRoYW5rcy4K
Pj4KPj4KPj4KPj4KPj4KPj4gICAgICAgICBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fXwo+PiAgICAgICAgIGVybGFuZy1wYXRjaGVzIG1haWxpbmcgbGlzdAo+
PiAgICAgICAgIGVybGFuZy1wYXRjaGVzQGVybGFuZy5vcmcgPG1haWx0bzplcmxhbmctcGF0Y2hl
c0Blcmxhbmcub3JnPgo+PiAgICAgICAgIGh0dHA6Ly9lcmxhbmcub3JnL21haWxtYW4vbGlzdGlu
Zm8vZXJsYW5nLXBhdGNoZXMKPj4KPj4KPgo+CgoKX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX18KZXJsYW5nLXBhdGNoZXMgbWFpbGluZyBsaXN0CmVybGFuZy1w
YXRjaGVzQGVybGFuZy5vcmcKaHR0cDovL2VybGFuZy5vcmcvbWFpbG1hbi9saXN0aW5mby9lcmxh
bmctcGF0Y2hlcwo=