Re: Securityfilter + JBoss

"Sverker Abrahamsson" <[email protected]> Thu, 29 Apr 2010 22:16:16 +0200
Newsgroups gmane.comp.java.securityfilter.devel
Message-ID <!&!AAAAAAAAAAAYAAAAAAAAAN5fehIZv/BBsQLx9nhfoL3ihQAAEAAAAJHeQBGfu3VHop4f068sz7sBAAAAAA==@abrahamsson.com>
SSBzb2x2ZWQgYSBwcm9ibGVtIEkgc2F3LCBJIGNvbnRyaWJ1dGVkIHRoZSBzb2x1dGlvbiBiYWNr
IHRvIHRoZSBwcm9qZWN0LiBJdCdzIHlvdXIgY2hvaWNlIGlmIHlvdSB3YW50IHRvIHVzZSBpdCBh
cyBpdCBpcywgbW9kaWZ5IGl0LCBvbmx5IHBhcnRzIG9mIGl0IG9yIG5vdCBhdCBhbGwuCgpJIGtu
b3cgb2YgYXQgbGVhc3QgNSBkaWZmZXJlbnQgcHJvamVjdCB3aGljaCBhbGwgdXNlIHRoZWlyIG93
biBwYXRjaGVkIHNlY3VyaXR5ZmlsdGVyIHRvIHNvbHZlIHRoaXMgc2FtZSBwcm9ibGVtIGJ1dCBu
b25lIHdvcmtzIHZlcnkgd2VsbC4gSSBmb3VuZCBhIHBlcmZlY3RseSB3b3JraW5nIHNvbHV0aW9u
LCBJJ3ZlIHB1Ymxpc2hlZCBpdCBzbyB0aGF0IGlmIGFueWJvZHkgd2FudCB0byB1c2UgaXQgdGhl
biB0aGUgcGF0Y2ggY2FuIGJlIGRvd25sb2FkZWQgZnJvbSBodHRwOi8vd3d3LmFicmFoYW1zc29u
LmNvbS9zZWN1cml0eWZpbHRlci5wYXRjaAoKSSBhbHNvIGZvdW5kIGEgd2F5IHRvIHNvbHZlIHRo
ZSBvcmlnaW5hbCBwcm9ibGVtLCB3aXRob3V0IHVzaW5nIHNlY3VyaXR5IGZpbHRlciBhdCBhbGwu
IEknbGwgcHVibGlzaCBpdCBhdCBhIHN1aXRhYmxlIHBsYWNlIHdoZW4gSSBoYXZlIHRpbWUgZm9y
IGl0LgoKU2VlIHRoZSByZXN0IG9mIHRoZSBjb21tZW50cyBiZWxvdwovU3ZlcmtlcgoKPiAtLS0t
LU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQo+IEZyb206IENocmlzdG9waGVyIFNjaHVsdHogW21haWx0
bzpjaHJpc0BjaHJpc3RvcGhlcnNjaHVsdHoubmV0XQo+IFNlbnQ6IGRlbiAyNyBhcHJpbCAyMDEw
IDU6MDcKPiBUbzogU3ZlcmtlciBBYnJhaGFtc3Nvbgo+IENjOiBzZWN1cml0eWZpbHRlci1kZXZl
bEBsaXN0cy5zb3VyY2Vmb3JnZS5uZXQKPiBTdWJqZWN0OiBSZTogW3NlY3VyaXR5ZmlsdGVyLWRl
dmVsXSBTZWN1cml0eWZpbHRlciArIEpCb3NzCj4gCj4gLS0tLS1CRUdJTiBQR1AgU0lHTkVEIE1F
U1NBR0UtLS0tLQo+IEhhc2g6IFNIQTEKPiAKPiBTdmVya2VyLAo+IAo+IE5vIG5lZWQgdG8gcmVw
bHkgdG8gYm90aCBtZSBhbmQgdGhlIGxpc3Q6IEkgYW0gc3Vic2NyaWJlZCB0byBpdC4KPiAKPiBP
biA0LzI2LzIwMTAgNjo1MyBQTSwgU3ZlcmtlciBBYnJhaGFtc3NvbiB3cm90ZToKPiA+IENvcnJl
Y3QsIFJlcXVlc3QgaXMgdGhlIGludGVybmFsIENhdGFsaW5hIGNsYXNzIGZvciB3aGljaCB0aGV5
Cj4gPiBwcm92aWRlIGEgd3JhcHBlci4gVGhlIHJlYXNvbiBmb3IgdGhpcyBpcyB0aGF0IHRoZSBQ
cmluY2lwYWwgcmV0dXJuZWQKPiA+IGJ5IEpCb3NzIGlzIGEgSkJvc3NHZW5lcmljUHJpbmNpcGFs
IHNvIHRoYXQgaXMgd2hhdCBpcyBzZXQgYXMKPiA+IHByaW5jaXBhbCBpbiB5b3VyIHdyYXBwZXIs
IEkgYmVsaWV2ZSBpdCdzIHRoZSBzYW1lIGZvciBwdXJlIFRvbWNhdCBhcwo+ID4gd2VsbC4gVG8g
Z2V0IHRoZSBVc2VyIFByaW5jaXBhbCBmcm9tIHRoYXQgeW91IG5lZWQgdG8gY2FsbAo+ID4gcHJp
bmNpcGFsLmdldFVzZXJQcmluY2lwYWwoKS4gVGhhdCBpcyB3aHkgSSBjaGVjayBpZiB0aGUgcHJp
bmNpcGFsIGlzCj4gPiBhbiBpbnN0YW5jZSBvZiBHZW5lcmljUHJpbmNpcGFsIGFuZCBpZiBzbyBy
ZXR1cm4gdGhlIGFjdHVhbCBVc2VyCj4gPiBQcmluY2lwYWwuCj4gPgo+ID4gVGhlIHJlZmVyZW5j
ZSB0byBUb21jYXQgUmVxdWVzdCBoZXJlIHdhcyBqdXN0IHRvIHNob3cgdGhhdCBpbnRlcm5hbGx5
Cj4gVG9tY2F0IGRvIHRoZSBzYW1lCj4gCj4gTXkgcXVlc3Rpb24gd2FzOiB3aHkgc2hvdWxkIHdl
IGNoYW5nZSBhbnl0aGluZyBhdCBhbGw/IFdoYXQgaXMgdGhlCj4gcHJvYmxlbSB3aXRoIHRoZSBj
dXJyZW50IGltcGxlbWVudGF0aW9uPwoKSXQgZG9lc24ndCB3b3JrIHdlbGwgd2l0aCBKQm9zcywg
dGhhdCdzIHByb2JsZW0gZW5vdWdoIGZvciBtZS4KIAo+ID4+PiBJZiB0aGUgUGluY2lwYWwgaXMg
YW4gaW5zdGFuY2Ugb2YKPiA+Pj4gR2VuZXJpY1ByaW5jaXBhbCB0aGVuIGl04oCZcyBuZWNlc3Nh
cnkgdG8gY2FsbCBnZXRVc2VyUHJpbmNpcGFsIG9uCj4gdGhlCj4gPj4+IFByaW5jaXBhbCB0byBn
ZXQgdGhlIFVzZXJQcmluY2lwYWwuIEFsc28gYWRkZWQgYSBnZXRQcmluY2lwYWwKPiBtZXRob2QK
PiA+Pj4gd2hpY2ggaXMgdXNlZCBpbnRlcm5hbGx5IHdoZXJlIHRoZSBmdWxsIFByaW5jaXBhbGwg
aXMgbmVlZGVkLgo+ID4+Cj4gPj4gTm9uZSBvZiB0aGlzIGlzIG5lY2Vzc2FyeSBpZiB5b3Ugc2lt
cGx5IGNhbGwKPiBSZXF1ZXN0LmdldFVzZXJQcmluY2lwYWwsCj4gPj4gd2hpY2ggaXMgd2h5IHNm
IGRvZXMgdGhhdC4KPiA+Cj4gPiBUaGVuIHlvdSBnZXQgYSBKYm9zc0dlbmVyaWNQcmluY2lwYWwg
aW5zdGFuY2UgYXMgc2hvd24gYWJvdmUgYW5kIG5vdAo+IG15IHVzZXIgcHJpbmNpcGFsIGluc3Rh
bmNlLgo+IAo+IElmIHlvdSBhcmUgY29ycmVjdGx5IHVzaW5nIFNlY3VyaXR5UmVxdWVzdFdyYXBw
ZXIsIHRoZW4geW91IHNob3VsZCBiZQo+IGdldHRpbmcgdGhlIHByaW5jaXBhbCBjcmVhdGVkIGJ5
IHlvdXIgcmVhbG0uIEFyZSB5b3Ugc2F5aW5nIHRoYXQsIHdoZW4KPiB1c2luZyBhIGN1c3RvbSBy
ZWFsbSwgeW91ciBQcmluY2lwYWwgaXMgYmVpbmcgb3ZlcndyaXR0ZW4gYnkgdGhlCj4gSkJvc3NH
ZW5lcmljUHJpbmNpcGFsPwoKTm8sIGl0J3Mgbm90IG92ZXJ3cml0dGVuLiBNeSBQcmluY2lwYWwg
aXMgY29udGFpbmVkIGluIHRoZSB1c2VyUHJpbmNpcGFsIHByb3BlcnR5IG9mIHRoZSBHZW5lcmlj
UHJpbmNpcGFsIGluc3RhbmNlIHJldHVybmVkIGZyb20gYXV0aGVudGljYXRpb24uCgo+IFdoYXQg
aXMgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBhICJmdWxsIHByaW5jaXBhbCIgYW5kIHdoYXRldmVy
IHlvdQo+IHRoaW5rCj4geW91J3JlIGdldHRpbmcgaW5zdGVhZCBvZiB0aGF0Pwo+IAo+ID4+IElm
IHlvdSBhcmUgdHJ5aW5nIHRvIHByb3RlY3QgYWdhaW5zdCB1c2VycyBtYXNraW5nIHRoZSBVc2Vy
UHJpbmNpcGFsCj4gYnkKPiA+PiByZS13cmFwcGluZyB0aGUgcmVxdWVzdCwgdGhlcmUgYXJlIG90
aGVyIHRlY2huaXF1ZXMgdGhhdCB3aWxsIHdvcmsKPiBhbmQKPiA+PiBhcmUgbW9yZSBhcHByb3By
aWF0ZSBJTU8uCj4gPgo+ID4gTm8sIHRoYXQncyBub3QgdGhlIHB1cnBvc2UgYXQgYWxsIGVzcGVj
aWFsbHkgc2luY2UgZ2V0UHJpbmNpcGFsIGlzCj4gPiBhbHNvIHB1YmxpYy4gVGhhdCBzaG91bGQg
bWF5YmUgYmUgcHJvdGVjdGVkIHRob3VnaC4KPiAKPiBJIHN0aWxsIGRvbid0IHNlZSB0aGUgcG9p
bnQgb2YgYWRkaW5nIHRoaXMgbWV0aG9kIGF0IGFsbC4KCkZvciB0aGUgSkJvc3NSZWFsbSBpdCdz
IG5vdCBuZWNlc3NhcnkgdG8gdXNlIFNlY3VyaXR5UmVxdWVzdFdyYXBwZXIgYXMgdGhlIG5lY2Vz
c2FyeSBmaWVsZHMgYXJlIHNldCBieSBzZWN1cml0eSBmcmFtZXdvcmsgaW4gdGhlIG9yaWdpbmFs
IHJlcXVlc3QuIEhvd2V2ZXIsIHRoYXQgd291bGRuJ3Qgd29yayB3aXRoIG90aGVyIHNlY3VyaXR5
ZmlsdGVyIHJlYWxtcyBhcyB0aGV5IGRlcGVuZHMgb24gdGhhdCBzZWN1cml0eWZpbHRlciBwYXRj
aCBpbiB0aGVpciBwcmluY2lwYWwuIFRoZSBiZXN0IHdheSBtaWdodCBiZSB0aGF0IHRoZSByZWFs
bSBoYXMgYSBtZXRob2QgbGlrZSB0aGlzOgoKcHVibGljIEh0dHBTZXJ2bGV0UmVxdWVzdCBjcmVh
dGVSZXF1ZXN0V3JhcHBlcihIdHRwU2VydmxldFJlcXVlc3QgcmVxdWVzdCkKIApUaGVuIHRoZSBy
ZWFsbSBpcyByZXNwb25zaWJsZSBmb3Igd3JhcHBpbmcgdGhlIHJlcXVlc3QgYW5kIGNhbiByZXR1
cm4gYW4gaW1wbGVtZW50YXRpb24gd2hpY2ggaXMgc3VpdGFibGUuIEhvd2V2ZXIsIHRoYXQgd291
bGQgYmUgYSBiaWdnZXIgY2hhbmdlIG9mIHRoZSBjb2RlLgoKPiA+Pj4gU2VjdXJpdHlGaWx0ZXIK
PiA+Pj4gQ2FsbCBpc1VzZXJJblJvbGUoU3RyaW5nKSBvbiB0aGUgd3JhcHBlZCByZXF1ZXN0IGlu
c3RlYWQgb2YKPiBkaXJlY3RseQo+ID4+PiBvbiB0aGUgcmVhbG0KPiA+Pgo+ID4+IEkgdGhpbmsg
dGhpcyBwcm9iYWJseSBtYWtlcyBzZW5zZS4gSSdsbCBoYXZlIHRvIGxvb2sgbW9yZSBjbG9zZWx5
IGF0Cj4gPj4geW91ciBwYXRjaCBhbmQgdGhlIGNvZGUgdG8gZmlndXJlIG91dCB3aHkgd2UgZGVj
aWRlZCB0byBjYWxsIHRoZQo+IHJlYWxtCj4gPj4gZGlyZWN0bHk6IGl0J3MgcHJvYmFibHkgYmVj
YXVzZSB0aGUgZGVmYXVsdCBpc1VzZXJJblJvbGUgbWV0aG9kCj4gc2ltcGx5Cj4gPj4gcmV0dXJu
cyBmYWxzZS4KPiA+Cj4gPiBJIGNoYW5nZWQgaXQgYmVjYXVzZSBpbiBhbiBlYXJsaWVyIGF0dGVt
cHQgdG8gc29sdmUgdGhlIHByb2JsZW0gaXQKPiA+IHdhcwo+ID4gbmVlZGVkIHRvIGRvIHNvLiBJ
biB0aGUgZmluYWwgaW1wbGVtZW50YXRpb24gaXQncyBub3QgbmVjZXNzYXJ5IGFzCj4gd2hhdAo+
ID4gaXQgZG9lcyBpcyB0byBjYWxsIHRoZSByZWFsbS4gQSBwcm9wZXIgaW1wbGVtZW50YXRpb24g
d291bGQgYmUgdGhhdAo+IGl0Cj4gPiBjYWxsIGlzVXNlckluUm9sZSBvbiB0aGUgdW5kZXJseWlu
ZyByZXF1ZXN0LCBhbmQgdGhhdCB3b3JrcyB3aXRoIHRoZQo+ID4gSkJvc3NSZWFsbSBidXQgSSB0
aG91Z2h0IGl0IG1pZ2h0IGJlIHByb2JsZW1zIHdpdGggb3RoZXIgUmVhbG0KPiA+IGltcGxlbWVu
dGF0aW9ucyBzbyBJIGtlcHQgdGhhdCByZXF1ZXN0d3JhcHBlciBjYWxscyBoYXNVc2VyUm9sZSAo
b3IKPiA+IHdoYXRldmVyIHRoZSBtZXRob2QgbmFtZSBpcykgb24gdGhlIFNlY3VyaXR5ZmlsdGVy
UmVhbG0gaW5zdGFuY2UgYW5kCj4gaW4KPiA+IEpCb3NzUmVhbG0gSSBjYWxsIHRoZSB1bmRlcmx5
aW5nIHJlcXVlc3QgaW5zdGFuY2UgdGhlcmUuCj4gCj4gT2theS4gR2l2ZW4gdGhhdCB0aGlzIGlz
IGEgc2VjdXJpdHktcmVsYXRlZCBwcm9qZWN0LCBwbGVhc2Uga2VlcCB5b3VyCj4gcGF0Y2hlcyB0
byBhIG1pbmltdW0uIFdoaWxlIEkgYXBwcmVjaWF0ZSB0aGUgcGF0Y2gsIEknbSBub3QgaW50ZXJl
c3RlZAo+IGluIGdldHRpbmcgdGhlIGxhc3QgNiBtb250aHMgb2YgeW91ciB0aW5rZXJpbmctYXJv
dW5kIHdpdGggc2YgYWxsIGF0Cj4gb25jZS4gSWYgeW91IGZpbmQgYSBwcm9ibGVtLCBkZW1vbnN0
cmF0ZSBpdCwgZml4IGl0LCBhbmQgc3VibWl0IHRoZQo+IHBhdGNoIChpbmNsdWRpbmcgdGVzdCBj
YXNlcykuCj4KPiA+IFRoYXQgU2VjdXJpdHlGaWx0ZXIgY2FsbCBpc1VzZXJJblJvbGUgb24gcmVx
dWVzdCB3cmFwcGVyIGluc3RlYWQgb2YKPiA+IGRpcmVjdGx5IG9uIHJlYWxtIG1ha2VzIGl0IGNv
bnNpc3RlbnQgd2l0aCBob3cgYW4gYXBwbGljYXRpb24gY2FsbHMKPiBpdC4KPiAKPiBUaGlzIHNl
ZW1zIGxpa2UgYSByZWFzb25hYmxlIGNoYW5nZTogdGhlIGZpbHRlciBzaG91bGQgY2FsbCB0aGUK
PiByZXF1ZXN0J3MgaXNVc2VySW5Sb2xlIG1ldGhvZCwgd2hpY2ggYWxyZWFkeSBkZWxlZ2F0ZXMg
dG8gdGhlIHJlYWxtLgo+IEknbGwgaGF2ZSB0byBhc2sgTWF4IHdoeSBoZSdzIGRvbmUgdGhhdC4K
PiAKPiA+PiBXaHkgZGlkIHlvdSByZW1vdmUgdGhlIG5vLWFyZyBjb25zdHJ1Y3RvciBmb3IgU2lt
cGxlUHJpbmNpcGFsPyBUaGUKPiA+PiBjbGFzcyBpcyBzZXJpYWxpemFibGUgYW5kIHRoZXJlZm9y
ZSBtdXN0IGhhdmUgYSBuby1hcmcgY29uc3RydWN0b3IuCj4gPgo+ID4gVGhhdCBpcyBub3QgY29y
cmVjdAo+IAo+IFlvdSdyZSByaWdodDogSSB3YXMgdGhpbmtpbmcgdGhhdCBTaW1wbGVQcmluY2lw
YWwgd2FzIGJlaW5nIHN1YmNsYXNzZWQKPiBieSBvdGhlciBjbGFzc2VzIGluIHNmLiBJdCdzIG5v
dDogaXQncyBwcm9iYWJseSBiZWluZyBzdWJjbGFzc2VkIGJ5Cj4gb3RoZXJzLCB0aG91Z2gsIGJ1
dCB5b3UncmUgcmlnaHQ6IHRoZSBwcml2YXRlIGNvbnN0cnVjdG9yIGlzIG5vdAo+IHBhcnRpY3Vs
YXJseSB1c2VmdWwuCgpJdCdzIG5vdCBhIHByb2JsZW0gaWYgaXQncyBiZWluZyBzdWJjbGFzc2Vk
LiBUaGUgb25seSB0aW1lIGEgY2xhc3MsIGluIHRoaXMgY29udGV4dCwgaGFzIHRvIGhhdmUgYW4g
YWNjZXNzaWJsZSBuby1hcmcgY29uc3RydWN0b3IgaXMgaWYgaXQgaXMgTk9UIHNlcmlhbGl6YWJs
ZSBhbmQgYSBTVUJDTEFTUyB3YW50cyB0byBiZSBzZXJpYWxpemFibGUuIFRoZW4gYWxsIHBhcmVu
dCBOT04tc2VyaWFsaXphYmxlIGNsYXNzZXMgbXVzdCBoYXZlIGFuIGFjY2Vzc2libGUgbm8tYXJn
IGNvbnN0cnVjdG9yLgogCj4gPj4+IEluIGFkZGl0aW9uIEkgcmVtb3ZlZCBhbGwgY29tcGlsZXIg
d2FybmluZ3MgYW5kIHdpbGRjYXJkIGltcG9ydHMgaW4KPiA+Pj4gYWxsIGNsYXNzZXMuCj4gPj4+
Cj4gPj4+IEl04oCZcyBhbHNvIG5lZWRlZCB0byB1cGRhdGUgY2F0YWxpbmEuamFyIHRvIHZlcnNp
b24gNS41LjEwIG9yIG5ld2VyCj4gPj4gYW5kCj4gPj4+IGFkZCBqYm9zcy13ZWItc2VydmljZS5q
YXIgKEkgYmVsaWV2ZSBpdCB3YXMgbmFtZWQgamJvc3N3ZWItCj4gPj4gc2VydmljZS5qYXIKPiA+
Pj4gaW4gNC4yLjMgdGhlbiBqYm9zcy13ZWItc2VydmljZS5qYXIgZnJvbSA1LjApCj4gPj4+Cj4g
Pj4+IFRoZSBwYXRjaCBjYW4gYmUgZm91bmQgYXQKPiA+Pj4gaHR0cDovL3d3dy5hYnJhaGFtc3Nv
bi5jb20vc2VjdXJpdHlmaWx0ZXIucGF0Y2gKPiA+Pgo+ID4+IFRoaXMgcGF0Y2ggY2Fubm90IGJl
IGFjY2VwdGVkIGluIGl0cyBjdXJyZW50IGZvcm0uIEluIG9yZGVyIHRvCj4gYWNjZXB0LAo+ID4+
IHlvdSdsbCBuZWVkIHRvOgo+ID4+Cj4gPj4gMS4gUmVtb3ZlIGFsbCBjbGFzc2VzIHdoZXJlIG5v
IGNvZGUgd2FzIGNoYW5nZWQuIEkgYXBwcmVjaWF0ZSB0aGUKPiByZS0KPiA+PiBmb3JtYXR0aW5n
IG9mIHRoZSBpbXBvcnRzIHRoYXQgeW91ciBJREUgcGVyZm9ybXMsIGJ1dCB3ZSdyZSBub3QKPiBn
b2luZwo+ID4+IHRvIG1hc3MtcGF0Y2ggZmlsZXMganVzdCBmb3IgdGhlIHNha2Ugb2YgcmUtb3Jk
ZXJpbmcgaW1wb3J0Cj4gc3RhdGVtZW50cy4KPiA+Cj4gPiBUaGUgcmVhc29uIHdhcyBub3QgdG8g
cmUtZm9ybWF0IHRoZSBpbXBvcnRzIGJ1dCB0byByZW1vdmUgYWxsCj4gPiB3aWxkY2FyZCBpbXBv
cnRzLCB3aGljaCBhcmUgbm90IGdvb2QgcHJhY3RpY2UsIGFuZCB0byByZW1vdmUgdW51c2VkLgo+
ID4gSXQgd2FzIHRoZW4gZWFzaWVzdCB0byByZW1vdmUgYWxsIGltcG9ydHMgd2hlcmUgdGhhdCB3
YXMgdGhlIGNhc2UgYW5kCj4gPiBsZXQgRWNsaXBzZSBhZGQgdGhlbSBhdXRvbWF0aWNhbGx5Lgo+
IAo+IEkgd291bGRuJ3Qgc2F5IHRoYXQgdXNpbmcgd2lsZGNhcmQgaW1wb3J0cyBpcyAibm90IGdv
b2QgcHJhY3RpY2UiLiBUaGUKPiByZWFsaXR5IGlzIHRoYXQgSSdkIHJhdGhlciBub3QgY2hhbmdl
IGNsYXNzZXMgdGhhdCBkb24ndCBuZWVkIGNoYW5nZXMuCgpUaGUgY2xhc3NpY2FsIGV4YW1wbGUg
b2Ygd2h5IHdpbGRjYXJkIGltcG9ydHMgYXJlIGJhZCBpcyB0aGlzOgoKSW4gamRrIDEuMSBpdCB3
YXMgcGVyZmVjdGx5IG9rIHRvIGRvIGxpa2UgdGhpczoKaW1wb3J0IGphdmEuYXd0Lio7CmltcG9y
dCBqYXZhLnV0aWwuKjsKCkNvbXBpbGUgdGhlIHNhbWUgY29kZSB3aXRoIGpkayAxLjIgd2lsbCBi
cmVhaywgYXMgaXQgYWRkcyBqYXZhLnV0aWwuTGlzdCB0aGF0IHdpbGwgdGhlbiBjb2xsaWRlIHdp
dGggamF2YS5hd3QuTGlzdC4gV2hpbGUgdGhhdCBpcyBhIHZlcnkgb2xkIGNhc2UsIHRoZXJlIGlz
IG5vIGd1YXJhbnRlZSB0aGF0IGZ1dHVyZSBqZGsncyB3aWxsIG5vdCBhZGQgbmV3IGNsYXNzZXMg
dGhhdCB3aWxsIGJyZWFrIHlvdXIgY29kZSBiZWNhdXNlIG9mIHlvdXIgd2lsZGNhcmQgaW1wb3J0
cy4KCj4gPj4gMy4gUHJvdmlkZSB1bml0IHRlc3RzIHRoYXQgZGVtb25zdHJhdGUgYW55IHByb2Js
ZW1zIHdpdGggdGhlIGN1cnJlbnQKPiA+PiBjb2RlIGFuZCBwcm92ZSB0aGF0IHlvdXIgY2hhbmdl
cyBmaXggdGhvc2UgcHJvYmxlbXMuCj4gPgo+ID4gVGhlIHByb2JsZW0gY2FuIGJlIHRyaXZpYWxs
eSBzaG93biBieQo+ID4gMSkgU2VjdXJpdHlGaWx0ZXIgY2FuJ3QgYXV0aGVudGljYXRlIHByb3Bl
cmx5IG9uIEpCb3NzIGNvbnRhaW5lcgo+ID4gMikgVGhlIHByaW5jaXBhbCB0aGF0IGlzIHJldHVy
bmVkIGJ5IEpCb3NzIGlzIGFuIGluc3RhbmNlIG9mCj4gPiBHZW5lcmljUHJpbmNpcGFsLiBJdCdz
IG5lZWRlZCB0aGF0IHRoZSByZXF1ZXN0IHdyYXBwZXIgaGFuZGxlcwo+ID4gZXh0cmFjdGluZyB0
aGUgdXNlciBwcmluY2lwYWwgZnJvbSBpdCB3aGVuIGNhbGxpbmcgZ2V0VXNlclByaW5jaXBhbCgp
Cj4gCj4gc2YgdHJpZXMgdG8gc3RheSBkZWNvdXBsZWQgZnJvbSBvdGhlciBBUElzLiBZb3UnbGwg
bm90aWNlIHRoYXQgdGhlIG9ubHkKPiBwbGFjZSBHZW5lcmljUHJpbmNpcGFsIGlzIHVzZWQgaXMg
aW4gdGhlIFRyaXZpYWxDYXRhbGluYVJlYWxtLCB3aGljaCBpcwo+IHNlcGFyYXRlIGZyb20gdGhl
IG1haW4gY29kZSAoaW4gZXhhbXBsZXMpLiBMaWtld2lzZSwgdGhlCj4gQ2F0YWxpbmFSZWFsbUFk
YXB0ZXIgaXMgaW4gYSBzZXBhcmF0ZSBzZXQgb2YgcGFja2FnZXMgZnJvbSB0aGUgbWFpbgo+IGNv
ZGUuIFdlJ3JlIG5vdCBnb2luZyB0byByZS13cml0ZSBTZWN1cml0eVJlYWxtV3JhcHBlciB0byBj
cmVhdGUgYQo+IGRlcGVuZGVuY3kgb24gby5hLmMuci5HZW5lcmljUHJpbmNpcGFsLgo+IAo+IElm
IHlvdSB3YW50IHRvIGNyZWF0ZSBhIEpCb3NzUmVhbG1BZGFwdGVyIChvciBqdXN0IHVzZSB0aGUK
PiBDYXRhbGluYVJlYWxtQWRhcHRlciBkaXJlY3RvcnkpLCB5b3UncmUgbW9yZSB0aGFuIHdlbGNv
bWUgdG8gZG8gc28uCgpJbiB0aGUgcGF0Y2ggcmVmZXJlbmNlZCB0byBhYm92ZSBpdCBpcyBpbiBp
dHMgb3duIGRpcmVjdG9yeS4KIAo+ID4gVGhhdCBpcyB0aGUgYWN0dWFsIGNvZGUgY2hhbmdlLCB0
aGUgcmVzdCBpcyBqdXN0IHJlbW92aW5nIGNvbXBpbGVyCj4gPiB3YXJuaW5ncyBhbmQgd2lsZGNh
cmQgaW1wb3J0cyB3aGljaCBpcyBnb29kIGNvZGluZyBwcmFjdGljZS4KPiAKPiBXaGF0IGlmIEkg
dG9sZCB5b3UgdGhhdCBnb29kIGNvZGluZyBwcmFjdGljZSB3YXMgcHV0dGluZyB5b3VyIGN1cmx5
Cj4gYnJhY2VzIGluIGRpZmZlcmVudCBwbGFjZXM/IExldCdzIG5vdCB0cmVhdCBvcGluaW9ucyBh
cyBmYWN0cy4KCldoZXJlIHlvdSBwdXQgeW91ciBjdXJseSBicmFjZXMgZG9lc24ndCBhZmZlY3Qg
dGhlIGNvbXBpbGVkIGNvZGUuIEkndmUgc2VlbiBhbmQgc29sdmVkIGJ1Z3MsIHJlYWwgYnVncywg
dGhhdCB3b3VsZCBoYXZlIGJlZW4gYXZvaWRlZCBpZiB0aGUgcHJvZ3JhbW1lciBoYWQgdGFrZW4g
d2FybmluZ3Mgc2VyaW91c2x5LiBBcyB5b3UgcG9pbnQgb3V0IGFib3ZlLCB0aGlzIGlzIGEgc2Vj
dXJpdHkgcmVsYXRlZCBwcm9qZWN0Li4uCiAKPiA+PiA0LiBSZW1vdmUgdGhlIHNlcmlhbFZlcnNp
b25JZCBmcm9tIFNhdmVkUmVxdWVzdCAoaXQncyBub3QKPiBuZWNlc3NhcnkpLAo+ID4+IHdoaWNo
IHJlbW92ZXMgdGhlIHdob2xlIGNsYXNzIGZyb20gdGhlIHBhdGNoIGR1ZSB0byAjMSBhYm92ZS4K
PiBBY3R1YWxseSwKPiA+PiByZW1vdmUgYWxsIHNlcmlhbFZlcnNpb25JZHMgZnJvbSBhbGwgZmls
ZXMgaW4gdGhlIHBhdGNoLgo+ID4KPiA+IFNlcmlhbGl6YWJsZSBjbGFzc2VzIHdpdGhvdXQgc2Vy
aWFsVmVyc2lvblVJRCBnaXZlcyBhIGNvbXBpbGVyCj4gd2FybmluZy4KPiAKPiBJdCBnaXZlcyBh
IHdhcm5pbmcgZnJvbSB5b3VyIElERS4KCkl0IGdpdmVzIGEgd2FybmluZyBpZiB5b3UgY29tcGls
ZSB3aXRoIGpkayAxLjUgb3IgbGF0ZXIKIAo+ID4gRnJvbSBqYXZhZG9jOiAiSG93ZXZlciwgaXQg
aXMgc3Ryb25nbHkgcmVjb21tZW5kZWQgdGhhdCBhbGwKPiBzZXJpYWxpemFibGUKPiA+IGNsYXNz
ZXMgZXhwbGljaXRseSBkZWNsYXJlIHNlcmlhbFZlcnNpb25VSUQgdmFsdWVzIgo+ID4KPiA+IEhl
bmNlIGl0J3MgZ29vZCBwcmFjdGljZSB0byBoYXZlIGl0IHRoZXJlIChhbHRob3VnaCBub3Qgc3Ry
aWN0bHkKPiA+IG5lZWRlZCkKPiAKPiBXaGF0IGlmIHdlIGRvbid0IHdhbnQgZGlmZmVyZW50IHZl
cnNpb25zIG9mIG91ciBvYmplY3RzIHRvIGJlCj4gY29tcGF0aWJsZQo+IHdoZW4gZGUtc2VyaWFs
aXplZD8gU2V0dGluZyB0aGUgc2VyaWFsVmVyc2lvbklEIGxlYXZlIHlvdSBvbmUgbW9yZQo+IHRo
aW5nCj4gdG8gcmVtZW1iZXIgaWYvd2hlbiB5b3UgbW9kaWZ5IGEgY2xhc3M6IGNoYW5nZSB0aGUg
c2VyaWFsVmVyc2lvblVJRC4KPiAKPiBJZiB5b3UncmUgbG9va2luZyB0byBjb25kdWN0IGEgY2xh
c3Mgb24gY29kZSBjbGVhbmxpbmVzcywgeW91J3ZlIGNvbWUKPiB0bwo+IHRoZSB3cm9uZyBwbGFj
ZS4gSWYgeW91J3JlIGdvdCBzb21ldGhpbmcgdG8gb2ZmZXIgKHdoaWNoIGl0IGxvb2tzIGxpa2UK
PiB5b3UgZG8pLCBwbGVhc2UgZG8gc28uIEkgdGhpbmsgdGhlIGJlc3QgdGhpbmcgZm9yIHlvdSB0
byBkbywgaGVyZSwgaXMKPiB0bwo+IHVzZSBhIGN1c3RvbSByZWFsbSBhbmQvb3IgcmVxdWVzdCB3
cmFwcGVyIHRoYXQgdW4td3JhcHMgdGhlICJ1c2VyIgo+IFByaW5jaXBhbCBmcm9tIHlvdXIgR2Vu
ZXJpY1ByaW5jaXBhbCBvYmplY3QuIFRoaXMgd2F5LCB0aGUgbWFpbiBzZiBjb2RlCj4gZG9lcyBu
b3QgaGF2ZSB0byBjaGFuZ2UuCj4gCj4gLSAtY2hyaXMKPiAtLS0tLUJFR0lOIFBHUCBTSUdOQVRV
UkUtLS0tLQo+IFZlcnNpb246IEdudVBHIHYxLjQuMTAgKE1pbmdXMzIpCj4gQ29tbWVudDogVXNp
bmcgR251UEcgd2l0aCBNb3ppbGxhIC0gaHR0cDovL2VuaWdtYWlsLm1vemRldi5vcmcvCj4gCj4g
aUVZRUFSRUNBQVlGQWt2Vy9hMEFDZ2tROUNhTzUvTHYwUENnTmdDZ3cyNXdPcmhFTTJPQ293eHQ5
cFJiZGRydQo+IEhwd0FuMzhjcDBkSGVYcy83akp4eU9NS2RrSkVTNHhNCj4gPUo3bEUKPiAtLS0t
LUVORCBQR1AgU0lHTkFUVVJFLS0tLS0KCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18Kc2VjdXJpdHlmaWx0ZXItZGV2
ZWwgbWFpbGluZyBsaXN0CnNlY3VyaXR5ZmlsdGVyLWRldmVsQGxpc3RzLnNvdXJjZWZvcmdlLm5l
dApodHRwczovL2xpc3RzLnNvdXJjZWZvcmdlLm5ldC9saXN0cy9saXN0aW5mby9zZWN1cml0eWZp
bHRlci1kZXZlbAo=