RE: Beagle XML/Unix API & Java

<[email protected]> Mon, 1 Mar 2010 12:12:14 +0100
Newsgroups gmane.comp.gnome.dashboard.devel
Message-ID <774_1267441990_4B8BA146_774_7_1_2CAE5634D52E194BA393187E0568E1AC046B54DC@ftrdmel1>
This is a multi-part message in MIME format.

------_=_NextPart_001_01CAB930.0C44FECC
Content-Type: text/plain;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable


Better with the files...=20

-----Message d'origine-----
De : [email protected] [mailto:dashboard-hackers-bounces@=
gnome.org] De la part de [email protected]
Envoy=E9 : lundi 1 mars 2010 12:10
=C0 : [email protected]
Objet : RE: Beagle XML/Unix API & Java

Hi All,

I have captured the XML message when using the Beagle Web. From this XML, I=
 tried to write an XML Schema. The XSD file is attached, what do you think =
about this schema ? Is it well written ?
Then, I used Jaxb to generate the Java Binding Classes (ResponseWrapper.jav=
a).

In SearchManager.java, it's a sample to use the API with Java.

St=E9phane

-----Message d'origine-----
De : Joe Shaw [mailto:[email protected]]
Envoy=E9 : lundi 22 f=E9vrier 2010 15:27
=C0 : zze-BLB JEANJEAN S ext RD-BIZZ-SOP
Cc : [email protected]
Objet : Re: Beagle XML/Unix API

Hi,

On Mon, Feb 22, 2010 at 8:57 AM,  <[email protected]> wrote:
> Is there any documentation about the Beagle XML/Unix API, please ? I=20
> think it's used by the web user interface.

There's no documentation for it, sadly.  Generally apps should use either t=
he C# classes or one of the C-based language bindings.  If you're looking t=
o implement a client library yourself, building it on top of the C one is t=
he easiest as it is an easily-bindable GObject-based API.

If you can't go one of these routes for whatever reason, your best bet is t=
o look at the C code itself.  It's fairly simply broken into request and re=
sponse classes, and I think the XML generation in it is pretty clean:

http://git.gnome.org/browse/beagle/tree/libbeagle/beagle

The socat tool might also be helpful to you, as you can wedge yourself in a=
s a man-in-the-middle and watch the traffic going by.

Joe

*********************************
This message and any attachments (the "message") are confidential and inten=
ded solely for the addressees.=20
Any unauthorised use or dissemination is prohibited.
Messages are susceptible to alteration.=20
France Telecom Group shall not be liable for the message if altered, change=
d or falsified.
If you are not the intended addressee of this message, please cancel it imm=
ediately and inform the sender.
********************************

_______________________________________________
Dashboard-hackers mailing list
[email protected]
http://mail.gnome.org/mailman/listinfo/dashboard-hackers

*********************************
This message and any attachments (the "message") are confidential and inten=
ded solely for the addressees.=20
Any unauthorised use or dissemination is prohibited.
Messages are susceptible to alteration.=20
France Telecom Group shall not be liable for the message if altered, change=
d or falsified.
If you are not the intended addressee of this message, please cancel it imm=
ediately and inform the sender.
********************************


------_=_NextPart_001_01CAB930.0C44FECC
Content-Type: application/octet-stream;
	name="ResponseWrapper.java"
Content-Transfer-Encoding: base64
Content-Description: ResponseWrapper.java
Content-Disposition: attachment;
	filename="ResponseWrapper.java"

Ly8NCi8vIFRoaXMgZmlsZSB3YXMgZ2VuZXJhdGVkIGJ5IHRoZSBKYXZhVE0gQXJjaGl0ZWN0dXJl
IGZvciBYTUwgQmluZGluZyhKQVhCKSBSZWZlcmVuY2UgSW1wbGVtZW50YXRpb24sIHZKQVhCIDIu
MS4zIGluIEpESyAxLjYgDQovLyBTZWUgPGEgaHJlZj0iaHR0cDovL2phdmEuc3VuLmNvbS94bWwv
amF4YiI+aHR0cDovL2phdmEuc3VuLmNvbS94bWwvamF4YjwvYT4gDQovLyBBbnkgbW9kaWZpY2F0
aW9ucyB0byB0aGlzIGZpbGUgd2lsbCBiZSBsb3N0IHVwb24gcmVjb21waWxhdGlvbiBvZiB0aGUg
c291cmNlIHNjaGVtYS4gDQovLyBHZW5lcmF0ZWQgb246IDIwMTAuMDIuMjYgYXQgMDM6MDA6MDQg
UE0gQ0VUIA0KLy8NCg0KDQpwYWNrYWdlIG9yZy5iZWFnbGUueG1sOw0KDQppbXBvcnQgamF2YS51
dGlsLkFycmF5TGlzdDsNCmltcG9ydCBqYXZhLnV0aWwuTGlzdDsNCmltcG9ydCBqYXZheC54bWwu
YmluZC5hbm5vdGF0aW9uLlhtbEFjY2Vzc1R5cGU7DQppbXBvcnQgamF2YXgueG1sLmJpbmQuYW5u
b3RhdGlvbi5YbWxBY2Nlc3NvclR5cGU7DQppbXBvcnQgamF2YXgueG1sLmJpbmQuYW5ub3RhdGlv
bi5YbWxBdHRyaWJ1dGU7DQppbXBvcnQgamF2YXgueG1sLmJpbmQuYW5ub3RhdGlvbi5YbWxFbGVt
ZW50Ow0KaW1wb3J0IGphdmF4LnhtbC5iaW5kLmFubm90YXRpb24uWG1sUm9vdEVsZW1lbnQ7DQpp
bXBvcnQgamF2YXgueG1sLmJpbmQuYW5ub3RhdGlvbi5YbWxUeXBlOw0KDQoNCi8qKg0KICogPHA+
SmF2YSBjbGFzcyBmb3IgYW5vbnltb3VzIGNvbXBsZXggdHlwZS4NCiAqIA0KICogPHA+VGhlIGZv
bGxvd2luZyBzY2hlbWEgZnJhZ21lbnQgc3BlY2lmaWVzIHRoZSBleHBlY3RlZCBjb250ZW50IGNv
bnRhaW5lZCB3aXRoaW4gdGhpcyBjbGFzcy4NCiAqIA0KICogPHByZT4NCiAqICZsdDtjb21wbGV4
VHlwZT4NCiAqICAgJmx0O2NvbXBsZXhDb250ZW50Pg0KICogICAgICZsdDtyZXN0cmljdGlvbiBi
YXNlPSJ7aHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWF9YW55VHlwZSI+DQogKiAgICAg
ICAmbHQ7c2VxdWVuY2U+DQogKiAgICAgICAgICZsdDtlbGVtZW50IG5hbWU9Ik1lc3NhZ2UiPg0K
ICogICAgICAgICAgICZsdDtjb21wbGV4VHlwZT4NCiAqICAgICAgICAgICAgICZsdDtjb21wbGV4
Q29udGVudD4NCiAqICAgICAgICAgICAgICAgJmx0O3Jlc3RyaWN0aW9uIGJhc2U9IntodHRwOi8v
d3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYX1hbnlUeXBlIj4NCiAqICAgICAgICAgICAgICAgICAm
bHQ7c2VxdWVuY2U+DQogKiAgICAgICAgICAgICAgICAgICAmbHQ7ZWxlbWVudCBuYW1lPSJOdW1N
YXRjaGVzIiB0eXBlPSJ7aHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWF9c3RyaW5nIiBt
aW5PY2N1cnM9IjAiLz4NCiAqICAgICAgICAgICAgICAgICAgICZsdDtlbGVtZW50IG5hbWU9Ikhp
dHMiIG1pbk9jY3Vycz0iMCI+DQogKiAgICAgICAgICAgICAgICAgICAgICZsdDtjb21wbGV4VHlw
ZT4NCiAqICAgICAgICAgICAgICAgICAgICAgICAmbHQ7Y29tcGxleENvbnRlbnQ+DQogKiAgICAg
ICAgICAgICAgICAgICAgICAgICAmbHQ7cmVzdHJpY3Rpb24gYmFzZT0ie2h0dHA6Ly93d3cudzMu
b3JnLzIwMDEvWE1MU2NoZW1hfWFueVR5cGUiPg0KICogICAgICAgICAgICAgICAgICAgICAgICAg
ICAmbHQ7c2VxdWVuY2U+DQogKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmx0O2VsZW1l
bnQgbmFtZT0iSGl0IiBtYXhPY2N1cnM9InVuYm91bmRlZCIgbWluT2NjdXJzPSIwIj4NCiAqICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICZsdDtjb21wbGV4VHlwZT4NCiAqICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJmx0O2NvbXBsZXhDb250ZW50Pg0KICogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICZsdDtyZXN0cmljdGlvbiBiYXNlPSJ7aHR0cDovL3d3
dy53My5vcmcvMjAwMS9YTUxTY2hlbWF9YW55VHlwZSI+DQogKiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAmbHQ7c2VxdWVuY2U+DQogKiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICZsdDtlbGVtZW50IG5hbWU9IlByb3BlcnRpZXMiPg0KICogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZsdDtjb21wbGV4VHlwZT4NCiAqICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZsdDtjb21wbGV4Q29udGVu
dD4NCiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmx0O3Jl
c3RyaWN0aW9uIGJhc2U9IntodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYX1hbnlUeXBl
Ij4NCiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbHQ7
c2VxdWVuY2U+DQogKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAmbHQ7ZWxlbWVudCBuYW1lPSJQcm9wZXJ0eSIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIG1p
bk9jY3Vycz0iMCI+DQogKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICZsdDtjb21wbGV4VHlwZT4NCiAqICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAmbHQ7Y29tcGxleENvbnRlbnQ+DQogKiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbHQ7cmVzdHJp
Y3Rpb24gYmFzZT0ie2h0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hfWFueVR5cGUiPg0K
ICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAmbHQ7YXR0cmlidXRlIG5hbWU9IlR5cGUiIHR5cGU9IntodHRwOi8vd3d3LnczLm9yZy8yMDAx
L1hNTFNjaGVtYX1zdHJpbmciIC8+DQogKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICZsdDthdHRyaWJ1dGUgbmFtZT0iS2V5IiB0eXBlPSJ7
aHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWF9c3RyaW5nIiAvPg0KICogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbHQ7YXR0cmli
dXRlIG5hbWU9IlZhbHVlIiB0eXBlPSJ7aHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWF9
c3RyaW5nIiAvPg0KICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAmbHQ7YXR0cmlidXRlIG5hbWU9IklzU2VhcmNoZWQiIHR5cGU9IntodHRw
Oi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYX1zdHJpbmciIC8+DQogKiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZsdDthdHRyaWJ1dGUg
bmFtZT0iSXNNdXRhYmxlIiB0eXBlPSJ7aHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWF9
c3RyaW5nIiAvPg0KICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAmbHQ7YXR0cmlidXRlIG5hbWU9IklzU3RvcmVkIiB0eXBlPSJ7aHR0cDov
L3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWF9c3RyaW5nIiAvPg0KICogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbHQ7YXR0cmlidXRlIG5h
bWU9IklzUGVyc2lzdGVudCIgdHlwZT0ie2h0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1h
fXN0cmluZyIgLz4NCiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICZsdDsvcmVzdHJpY3Rpb24+DQogKiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmx0Oy9jb21wbGV4Q29udGVudD4NCiAqICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmx0Oy9jb21w
bGV4VHlwZT4NCiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICZsdDsvZWxlbWVudD4NCiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAmbHQ7L3NlcXVlbmNlPg0KICogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAmbHQ7L3Jlc3RyaWN0aW9uPg0KICogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJmx0Oy9jb21wbGV4Q29udGVudD4NCiAqICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbHQ7L2NvbXBsZXhUeXBlPg0KICogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbHQ7L2VsZW1lbnQ+DQogKiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbHQ7L3NlcXVlbmNlPg0KICogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmx0O2F0dHJpYnV0ZSBuYW1lPSJUaW1lc3Rh
bXAiIHR5cGU9IntodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYX1zdHJpbmciIC8+DQog
KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbHQ7YXR0cmlidXRlIG5hbWU9
IlVyaSIgdHlwZT0ie2h0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hfXN0cmluZyIgLz4N
CiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZsdDthdHRyaWJ1dGUgbmFt
ZT0iU2NvcmUiIHR5cGU9IntodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYX1zdHJpbmci
IC8+DQogKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmx0Oy9yZXN0cmljdGlv
bj4NCiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmx0Oy9jb21wbGV4Q29udGVu
dD4NCiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZsdDsvY29tcGxleFR5cGU+DQog
KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmx0Oy9lbGVtZW50Pg0KICogICAgICAgICAg
ICAgICAgICAgICAgICAgICAmbHQ7L3NlcXVlbmNlPg0KICogICAgICAgICAgICAgICAgICAgICAg
ICAgJmx0Oy9yZXN0cmljdGlvbj4NCiAqICAgICAgICAgICAgICAgICAgICAgICAmbHQ7L2NvbXBs
ZXhDb250ZW50Pg0KICogICAgICAgICAgICAgICAgICAgICAmbHQ7L2NvbXBsZXhUeXBlPg0KICog
ICAgICAgICAgICAgICAgICAgJmx0Oy9lbGVtZW50Pg0KICogICAgICAgICAgICAgICAgICAgJmx0
O2VsZW1lbnQgbmFtZT0iRXhhY3QiIG1heE9jY3Vycz0idW5ib3VuZGVkIiBtaW5PY2N1cnM9IjAi
Pg0KICogICAgICAgICAgICAgICAgICAgICAmbHQ7Y29tcGxleFR5cGU+DQogKiAgICAgICAgICAg
ICAgICAgICAgICAgJmx0O2NvbXBsZXhDb250ZW50Pg0KICogICAgICAgICAgICAgICAgICAgICAg
ICAgJmx0O3Jlc3RyaWN0aW9uIGJhc2U9IntodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVt
YX1hbnlUeXBlIj4NCiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgJmx0O3NlcXVlbmNlPg0K
ICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICZsdDtlbGVtZW50IG5hbWU9IlRleHQiIHR5
cGU9IntodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYX1zdHJpbmciIG1pbk9jY3Vycz0i
MCIvPg0KICogICAgICAgICAgICAgICAgICAgICAgICAgICAmbHQ7L3NlcXVlbmNlPg0KICogICAg
ICAgICAgICAgICAgICAgICAgICAgJmx0Oy9yZXN0cmljdGlvbj4NCiAqICAgICAgICAgICAgICAg
ICAgICAgICAmbHQ7L2NvbXBsZXhDb250ZW50Pg0KICogICAgICAgICAgICAgICAgICAgICAmbHQ7
L2NvbXBsZXhUeXBlPg0KICogICAgICAgICAgICAgICAgICAgJmx0Oy9lbGVtZW50Pg0KICogICAg
ICAgICAgICAgICAgICAgJmx0O2VsZW1lbnQgbmFtZT0iU3RlbW1lZCIgbWF4T2NjdXJzPSJ1bmJv
dW5kZWQiIG1pbk9jY3Vycz0iMCI+DQogKiAgICAgICAgICAgICAgICAgICAgICZsdDtjb21wbGV4
VHlwZT4NCiAqICAgICAgICAgICAgICAgICAgICAgICAmbHQ7Y29tcGxleENvbnRlbnQ+DQogKiAg
ICAgICAgICAgICAgICAgICAgICAgICAmbHQ7cmVzdHJpY3Rpb24gYmFzZT0ie2h0dHA6Ly93d3cu
dzMub3JnLzIwMDEvWE1MU2NoZW1hfWFueVR5cGUiPg0KICogICAgICAgICAgICAgICAgICAgICAg
ICAgICAmbHQ7c2VxdWVuY2U+DQogKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmx0O2Vs
ZW1lbnQgbmFtZT0iVGV4dCIgdHlwZT0ie2h0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1h
fXN0cmluZyIgbWluT2NjdXJzPSIwIi8+DQogKiAgICAgICAgICAgICAgICAgICAgICAgICAgICZs
dDsvc2VxdWVuY2U+DQogKiAgICAgICAgICAgICAgICAgICAgICAgICAmbHQ7L3Jlc3RyaWN0aW9u
Pg0KICogICAgICAgICAgICAgICAgICAgICAgICZsdDsvY29tcGxleENvbnRlbnQ+DQogKiAgICAg
ICAgICAgICAgICAgICAgICZsdDsvY29tcGxleFR5cGU+DQogKiAgICAgICAgICAgICAgICAgICAm
bHQ7L2VsZW1lbnQ+DQogKiAgICAgICAgICAgICAgICAgJmx0Oy9zZXF1ZW5jZT4NCiAqICAgICAg
ICAgICAgICAgJmx0Oy9yZXN0cmljdGlvbj4NCiAqICAgICAgICAgICAgICZsdDsvY29tcGxleENv
bnRlbnQ+DQogKiAgICAgICAgICAgJmx0Oy9jb21wbGV4VHlwZT4NCiAqICAgICAgICAgJmx0Oy9l
bGVtZW50Pg0KICogICAgICAgJmx0Oy9zZXF1ZW5jZT4NCiAqICAgICAmbHQ7L3Jlc3RyaWN0aW9u
Pg0KICogICAmbHQ7L2NvbXBsZXhDb250ZW50Pg0KICogJmx0Oy9jb21wbGV4VHlwZT4NCiAqIDwv
cHJlPg0KICogDQogKiANCiAqLw0KQFhtbEFjY2Vzc29yVHlwZShYbWxBY2Nlc3NUeXBlLkZJRUxE
KQ0KQFhtbFR5cGUobmFtZSA9ICIiLCBwcm9wT3JkZXIgPSB7DQogICAgIm1lc3NhZ2UiDQp9KQ0K
QFhtbFJvb3RFbGVtZW50KG5hbWUgPSAiUmVzcG9uc2VXcmFwcGVyIikNCnB1YmxpYyBjbGFzcyBS
ZXNwb25zZVdyYXBwZXIgew0KDQogICAgQFhtbEVsZW1lbnQobmFtZSA9ICJNZXNzYWdlIiwgcmVx
dWlyZWQgPSB0cnVlKQ0KICAgIHByb3RlY3RlZCBSZXNwb25zZVdyYXBwZXIuTWVzc2FnZSBtZXNz
YWdlOw0KDQogICAgLyoqDQogICAgICogR2V0cyB0aGUgdmFsdWUgb2YgdGhlIG1lc3NhZ2UgcHJv
cGVydHkuDQogICAgICogDQogICAgICogQHJldHVybg0KICAgICAqICAgICBwb3NzaWJsZSBvYmpl
Y3QgaXMNCiAgICAgKiAgICAge0BsaW5rIFJlc3BvbnNlV3JhcHBlci5NZXNzYWdlIH0NCiAgICAg
KiAgICAgDQogICAgICovDQogICAgcHVibGljIFJlc3BvbnNlV3JhcHBlci5NZXNzYWdlIGdldE1l
c3NhZ2UoKSB7DQogICAgICAgIHJldHVybiBtZXNzYWdlOw0KICAgIH0NCg0KICAgIC8qKg0KICAg
ICAqIFNldHMgdGhlIHZhbHVlIG9mIHRoZSBtZXNzYWdlIHByb3BlcnR5Lg0KICAgICAqIA0KICAg
ICAqIEBwYXJhbSB2YWx1ZQ0KICAgICAqICAgICBhbGxvd2VkIG9iamVjdCBpcw0KICAgICAqICAg
ICB7QGxpbmsgUmVzcG9uc2VXcmFwcGVyLk1lc3NhZ2UgfQ0KICAgICAqICAgICANCiAgICAgKi8N
CiAgICBwdWJsaWMgdm9pZCBzZXRNZXNzYWdlKFJlc3BvbnNlV3JhcHBlci5NZXNzYWdlIHZhbHVl
KSB7DQogICAgICAgIHRoaXMubWVzc2FnZSA9IHZhbHVlOw0KICAgIH0NCg0KDQogICAgLyoqDQog
ICAgICogPHA+SmF2YSBjbGFzcyBmb3IgYW5vbnltb3VzIGNvbXBsZXggdHlwZS4NCiAgICAgKiAN
CiAgICAgKiA8cD5UaGUgZm9sbG93aW5nIHNjaGVtYSBmcmFnbWVudCBzcGVjaWZpZXMgdGhlIGV4
cGVjdGVkIGNvbnRlbnQgY29udGFpbmVkIHdpdGhpbiB0aGlzIGNsYXNzLg0KICAgICAqIA0KICAg
ICAqIDxwcmU+DQogICAgICogJmx0O2NvbXBsZXhUeXBlPg0KICAgICAqICAgJmx0O2NvbXBsZXhD
b250ZW50Pg0KICAgICAqICAgICAmbHQ7cmVzdHJpY3Rpb24gYmFzZT0ie2h0dHA6Ly93d3cudzMu
b3JnLzIwMDEvWE1MU2NoZW1hfWFueVR5cGUiPg0KICAgICAqICAgICAgICZsdDtzZXF1ZW5jZT4N
CiAgICAgKiAgICAgICAgICZsdDtlbGVtZW50IG5hbWU9Ik51bU1hdGNoZXMiIHR5cGU9IntodHRw
Oi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYX1zdHJpbmciIG1pbk9jY3Vycz0iMCIvPg0KICAg
ICAqICAgICAgICAgJmx0O2VsZW1lbnQgbmFtZT0iSGl0cyIgbWluT2NjdXJzPSIwIj4NCiAgICAg
KiAgICAgICAgICAgJmx0O2NvbXBsZXhUeXBlPg0KICAgICAqICAgICAgICAgICAgICZsdDtjb21w
bGV4Q29udGVudD4NCiAgICAgKiAgICAgICAgICAgICAgICZsdDtyZXN0cmljdGlvbiBiYXNlPSJ7
aHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWF9YW55VHlwZSI+DQogICAgICogICAgICAg
ICAgICAgICAgICZsdDtzZXF1ZW5jZT4NCiAgICAgKiAgICAgICAgICAgICAgICAgICAmbHQ7ZWxl
bWVudCBuYW1lPSJIaXQiIG1heE9jY3Vycz0idW5ib3VuZGVkIiBtaW5PY2N1cnM9IjAiPg0KICAg
ICAqICAgICAgICAgICAgICAgICAgICAgJmx0O2NvbXBsZXhUeXBlPg0KICAgICAqICAgICAgICAg
ICAgICAgICAgICAgICAmbHQ7Y29tcGxleENvbnRlbnQ+DQogICAgICogICAgICAgICAgICAgICAg
ICAgICAgICAgJmx0O3Jlc3RyaWN0aW9uIGJhc2U9IntodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hN
TFNjaGVtYX1hbnlUeXBlIj4NCiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICZsdDtz
ZXF1ZW5jZT4NCiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmx0O2VsZW1lbnQg
bmFtZT0iUHJvcGVydGllcyI+DQogICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Jmx0O2NvbXBsZXhUeXBlPg0KICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Jmx0O2NvbXBsZXhDb250ZW50Pg0KICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAmbHQ7cmVzdHJpY3Rpb24gYmFzZT0ie2h0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2No
ZW1hfWFueVR5cGUiPg0KICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICZsdDtzZXF1ZW5jZT4NCiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICZsdDtlbGVtZW50IG5hbWU9IlByb3BlcnR5IiBtYXhPY2N1cnM9InVuYm91bmRlZCIgbWlu
T2NjdXJzPSIwIj4NCiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJmx0O2NvbXBsZXhUeXBlPg0KICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICZsdDtjb21wbGV4Q29udGVudD4NCiAgICAgKiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICZsdDtyZXN0cmljdGlvbiBiYXNlPSJ7aHR0cDov
L3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWF9YW55VHlwZSI+DQogICAgICogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZsdDthdHRyaWJ1dGUgbmFtZT0iVHlw
ZSIgdHlwZT0ie2h0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hfXN0cmluZyIgLz4NCiAg
ICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmx0O2F0
dHJpYnV0ZSBuYW1lPSJLZXkiIHR5cGU9IntodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVt
YX1zdHJpbmciIC8+DQogICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICZsdDthdHRyaWJ1dGUgbmFtZT0iVmFsdWUiIHR5cGU9IntodHRwOi8vd3d3Lncz
Lm9yZy8yMDAxL1hNTFNjaGVtYX1zdHJpbmciIC8+DQogICAgICogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICZsdDthdHRyaWJ1dGUgbmFtZT0iSXNTZWFyY2hl
ZCIgdHlwZT0ie2h0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hfXN0cmluZyIgLz4NCiAg
ICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmx0O2F0
dHJpYnV0ZSBuYW1lPSJJc011dGFibGUiIHR5cGU9IntodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hN
TFNjaGVtYX1zdHJpbmciIC8+DQogICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICZsdDthdHRyaWJ1dGUgbmFtZT0iSXNTdG9yZWQiIHR5cGU9IntodHRw
Oi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYX1zdHJpbmciIC8+DQogICAgICogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZsdDthdHRyaWJ1dGUgbmFtZT0i
SXNQZXJzaXN0ZW50IiB0eXBlPSJ7aHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWF9c3Ry
aW5nIiAvPg0KICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJmx0Oy9yZXN0cmljdGlvbj4NCiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAmbHQ7L2NvbXBsZXhDb250ZW50Pg0KICAgICAqICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAmbHQ7L2NvbXBsZXhUeXBlPg0KICAgICAqICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmx0Oy9lbGVtZW50Pg0KICAgICAqICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZsdDsvc2VxdWVuY2U+DQogICAgICog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZsdDsvcmVzdHJpY3Rpb24+DQogICAg
ICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbHQ7L2NvbXBsZXhDb250ZW50Pg0K
ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZsdDsvY29tcGxleFR5cGU+DQog
ICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICZsdDsvZWxlbWVudD4NCiAgICAgKiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICZsdDsvc2VxdWVuY2U+DQogICAgICogICAgICAgICAg
ICAgICAgICAgICAgICAgICAmbHQ7YXR0cmlidXRlIG5hbWU9IlRpbWVzdGFtcCIgdHlwZT0ie2h0
dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hfXN0cmluZyIgLz4NCiAgICAgKiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICZsdDthdHRyaWJ1dGUgbmFtZT0iVXJpIiB0eXBlPSJ7aHR0cDov
L3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWF9c3RyaW5nIiAvPg0KICAgICAqICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJmx0O2F0dHJpYnV0ZSBuYW1lPSJTY29yZSIgdHlwZT0ie2h0dHA6Ly93
d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hfXN0cmluZyIgLz4NCiAgICAgKiAgICAgICAgICAgICAg
ICAgICAgICAgICAmbHQ7L3Jlc3RyaWN0aW9uPg0KICAgICAqICAgICAgICAgICAgICAgICAgICAg
ICAmbHQ7L2NvbXBsZXhDb250ZW50Pg0KICAgICAqICAgICAgICAgICAgICAgICAgICAgJmx0Oy9j
b21wbGV4VHlwZT4NCiAgICAgKiAgICAgICAgICAgICAgICAgICAmbHQ7L2VsZW1lbnQ+DQogICAg
ICogICAgICAgICAgICAgICAgICZsdDsvc2VxdWVuY2U+DQogICAgICogICAgICAgICAgICAgICAm
bHQ7L3Jlc3RyaWN0aW9uPg0KICAgICAqICAgICAgICAgICAgICZsdDsvY29tcGxleENvbnRlbnQ+
DQogICAgICogICAgICAgICAgICZsdDsvY29tcGxleFR5cGU+DQogICAgICogICAgICAgICAmbHQ7
L2VsZW1lbnQ+DQogICAgICogICAgICAgICAmbHQ7ZWxlbWVudCBuYW1lPSJFeGFjdCIgbWF4T2Nj
dXJzPSJ1bmJvdW5kZWQiIG1pbk9jY3Vycz0iMCI+DQogICAgICogICAgICAgICAgICZsdDtjb21w
bGV4VHlwZT4NCiAgICAgKiAgICAgICAgICAgICAmbHQ7Y29tcGxleENvbnRlbnQ+DQogICAgICog
ICAgICAgICAgICAgICAmbHQ7cmVzdHJpY3Rpb24gYmFzZT0ie2h0dHA6Ly93d3cudzMub3JnLzIw
MDEvWE1MU2NoZW1hfWFueVR5cGUiPg0KICAgICAqICAgICAgICAgICAgICAgICAmbHQ7c2VxdWVu
Y2U+DQogICAgICogICAgICAgICAgICAgICAgICAgJmx0O2VsZW1lbnQgbmFtZT0iVGV4dCIgdHlw
ZT0ie2h0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hfXN0cmluZyIgbWluT2NjdXJzPSIw
Ii8+DQogICAgICogICAgICAgICAgICAgICAgICZsdDsvc2VxdWVuY2U+DQogICAgICogICAgICAg
ICAgICAgICAmbHQ7L3Jlc3RyaWN0aW9uPg0KICAgICAqICAgICAgICAgICAgICZsdDsvY29tcGxl
eENvbnRlbnQ+DQogICAgICogICAgICAgICAgICZsdDsvY29tcGxleFR5cGU+DQogICAgICogICAg
ICAgICAmbHQ7L2VsZW1lbnQ+DQogICAgICogICAgICAgICAmbHQ7ZWxlbWVudCBuYW1lPSJTdGVt
bWVkIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgbWluT2NjdXJzPSIwIj4NCiAgICAgKiAgICAgICAg
ICAgJmx0O2NvbXBsZXhUeXBlPg0KICAgICAqICAgICAgICAgICAgICZsdDtjb21wbGV4Q29udGVu
dD4NCiAgICAgKiAgICAgICAgICAgICAgICZsdDtyZXN0cmljdGlvbiBiYXNlPSJ7aHR0cDovL3d3
dy53My5vcmcvMjAwMS9YTUxTY2hlbWF9YW55VHlwZSI+DQogICAgICogICAgICAgICAgICAgICAg
ICZsdDtzZXF1ZW5jZT4NCiAgICAgKiAgICAgICAgICAgICAgICAgICAmbHQ7ZWxlbWVudCBuYW1l
PSJUZXh0IiB0eXBlPSJ7aHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWF9c3RyaW5nIiBt
aW5PY2N1cnM9IjAiLz4NCiAgICAgKiAgICAgICAgICAgICAgICAgJmx0Oy9zZXF1ZW5jZT4NCiAg
ICAgKiAgICAgICAgICAgICAgICZsdDsvcmVzdHJpY3Rpb24+DQogICAgICogICAgICAgICAgICAg
Jmx0Oy9jb21wbGV4Q29udGVudD4NCiAgICAgKiAgICAgICAgICAgJmx0Oy9jb21wbGV4VHlwZT4N
CiAgICAgKiAgICAgICAgICZsdDsvZWxlbWVudD4NCiAgICAgKiAgICAgICAmbHQ7L3NlcXVlbmNl
Pg0KICAgICAqICAgICAmbHQ7L3Jlc3RyaWN0aW9uPg0KICAgICAqICAgJmx0Oy9jb21wbGV4Q29u
dGVudD4NCiAgICAgKiAmbHQ7L2NvbXBsZXhUeXBlPg0KICAgICAqIDwvcHJlPg0KICAgICAqIA0K
ICAgICAqIA0KICAgICAqLw0KICAgIEBYbWxBY2Nlc3NvclR5cGUoWG1sQWNjZXNzVHlwZS5GSUVM
RCkNCiAgICBAWG1sVHlwZShuYW1lID0gIiIsIHByb3BPcmRlciA9IHsNCiAgICAgICAgIm51bU1h
dGNoZXMiLA0KICAgICAgICAiaGl0cyIsDQogICAgICAgICJleGFjdCIsDQogICAgICAgICJzdGVt
bWVkIg0KICAgIH0pDQogICAgcHVibGljIHN0YXRpYyBjbGFzcyBNZXNzYWdlIHsNCg0KICAgICAg
ICBAWG1sRWxlbWVudChuYW1lID0gIk51bU1hdGNoZXMiKQ0KICAgICAgICBwcm90ZWN0ZWQgU3Ry
aW5nIG51bU1hdGNoZXM7DQogICAgICAgIEBYbWxFbGVtZW50KG5hbWUgPSAiSGl0cyIpDQogICAg
ICAgIHByb3RlY3RlZCBSZXNwb25zZVdyYXBwZXIuTWVzc2FnZS5IaXRzIGhpdHM7DQogICAgICAg
IEBYbWxFbGVtZW50KG5hbWUgPSAiRXhhY3QiKQ0KICAgICAgICBwcm90ZWN0ZWQgTGlzdDxSZXNw
b25zZVdyYXBwZXIuTWVzc2FnZS5FeGFjdD4gZXhhY3Q7DQogICAgICAgIEBYbWxFbGVtZW50KG5h
bWUgPSAiU3RlbW1lZCIpDQogICAgICAgIHByb3RlY3RlZCBMaXN0PFJlc3BvbnNlV3JhcHBlci5N
ZXNzYWdlLlN0ZW1tZWQ+IHN0ZW1tZWQ7DQoNCiAgICAgICAgLyoqDQogICAgICAgICAqIEdldHMg
dGhlIHZhbHVlIG9mIHRoZSBudW1NYXRjaGVzIHByb3BlcnR5Lg0KICAgICAgICAgKiANCiAgICAg
ICAgICogQHJldHVybg0KICAgICAgICAgKiAgICAgcG9zc2libGUgb2JqZWN0IGlzDQogICAgICAg
ICAqICAgICB7QGxpbmsgU3RyaW5nIH0NCiAgICAgICAgICogICAgIA0KICAgICAgICAgKi8NCiAg
ICAgICAgcHVibGljIFN0cmluZyBnZXROdW1NYXRjaGVzKCkgew0KICAgICAgICAgICAgcmV0dXJu
IG51bU1hdGNoZXM7DQogICAgICAgIH0NCg0KICAgICAgICAvKioNCiAgICAgICAgICogU2V0cyB0
aGUgdmFsdWUgb2YgdGhlIG51bU1hdGNoZXMgcHJvcGVydHkuDQogICAgICAgICAqIA0KICAgICAg
ICAgKiBAcGFyYW0gdmFsdWUNCiAgICAgICAgICogICAgIGFsbG93ZWQgb2JqZWN0IGlzDQogICAg
ICAgICAqICAgICB7QGxpbmsgU3RyaW5nIH0NCiAgICAgICAgICogICAgIA0KICAgICAgICAgKi8N
CiAgICAgICAgcHVibGljIHZvaWQgc2V0TnVtTWF0Y2hlcyhTdHJpbmcgdmFsdWUpIHsNCiAgICAg
ICAgICAgIHRoaXMubnVtTWF0Y2hlcyA9IHZhbHVlOw0KICAgICAgICB9DQoNCiAgICAgICAgLyoq
DQogICAgICAgICAqIEdldHMgdGhlIHZhbHVlIG9mIHRoZSBoaXRzIHByb3BlcnR5Lg0KICAgICAg
ICAgKiANCiAgICAgICAgICogQHJldHVybg0KICAgICAgICAgKiAgICAgcG9zc2libGUgb2JqZWN0
IGlzDQogICAgICAgICAqICAgICB7QGxpbmsgUmVzcG9uc2VXcmFwcGVyLk1lc3NhZ2UuSGl0cyB9
DQogICAgICAgICAqICAgICANCiAgICAgICAgICovDQogICAgICAgIHB1YmxpYyBSZXNwb25zZVdy
YXBwZXIuTWVzc2FnZS5IaXRzIGdldEhpdHMoKSB7DQogICAgICAgICAgICByZXR1cm4gaGl0czsN
CiAgICAgICAgfQ0KDQogICAgICAgIC8qKg0KICAgICAgICAgKiBTZXRzIHRoZSB2YWx1ZSBvZiB0
aGUgaGl0cyBwcm9wZXJ0eS4NCiAgICAgICAgICogDQogICAgICAgICAqIEBwYXJhbSB2YWx1ZQ0K
ICAgICAgICAgKiAgICAgYWxsb3dlZCBvYmplY3QgaXMNCiAgICAgICAgICogICAgIHtAbGluayBS
ZXNwb25zZVdyYXBwZXIuTWVzc2FnZS5IaXRzIH0NCiAgICAgICAgICogICAgIA0KICAgICAgICAg
Ki8NCiAgICAgICAgcHVibGljIHZvaWQgc2V0SGl0cyhSZXNwb25zZVdyYXBwZXIuTWVzc2FnZS5I
aXRzIHZhbHVlKSB7DQogICAgICAgICAgICB0aGlzLmhpdHMgPSB2YWx1ZTsNCiAgICAgICAgfQ0K
DQogICAgICAgIC8qKg0KICAgICAgICAgKiBHZXRzIHRoZSB2YWx1ZSBvZiB0aGUgZXhhY3QgcHJv
cGVydHkuDQogICAgICAgICAqIA0KICAgICAgICAgKiA8cD4NCiAgICAgICAgICogVGhpcyBhY2Nl
c3NvciBtZXRob2QgcmV0dXJucyBhIHJlZmVyZW5jZSB0byB0aGUgbGl2ZSBsaXN0LA0KICAgICAg
ICAgKiBub3QgYSBzbmFwc2hvdC4gVGhlcmVmb3JlIGFueSBtb2RpZmljYXRpb24geW91IG1ha2Ug
dG8gdGhlDQogICAgICAgICAqIHJldHVybmVkIGxpc3Qgd2lsbCBiZSBwcmVzZW50IGluc2lkZSB0
aGUgSkFYQiBvYmplY3QuDQogICAgICAgICAqIFRoaXMgaXMgd2h5IHRoZXJlIGlzIG5vdCBhIDxD
T0RFPnNldDwvQ09ERT4gbWV0aG9kIGZvciB0aGUgZXhhY3QgcHJvcGVydHkuDQogICAgICAgICAq
IA0KICAgICAgICAgKiA8cD4NCiAgICAgICAgICogRm9yIGV4YW1wbGUsIHRvIGFkZCBhIG5ldyBp
dGVtLCBkbyBhcyBmb2xsb3dzOg0KICAgICAgICAgKiA8cHJlPg0KICAgICAgICAgKiAgICBnZXRF
eGFjdCgpLmFkZChuZXdJdGVtKTsNCiAgICAgICAgICogPC9wcmU+DQogICAgICAgICAqIA0KICAg
ICAgICAgKiANCiAgICAgICAgICogPHA+DQogICAgICAgICAqIE9iamVjdHMgb2YgdGhlIGZvbGxv
d2luZyB0eXBlKHMpIGFyZSBhbGxvd2VkIGluIHRoZSBsaXN0DQogICAgICAgICAqIHtAbGluayBS
ZXNwb25zZVdyYXBwZXIuTWVzc2FnZS5FeGFjdCB9DQogICAgICAgICAqIA0KICAgICAgICAgKiAN
CiAgICAgICAgICovDQogICAgICAgIHB1YmxpYyBMaXN0PFJlc3BvbnNlV3JhcHBlci5NZXNzYWdl
LkV4YWN0PiBnZXRFeGFjdCgpIHsNCiAgICAgICAgICAgIGlmIChleGFjdCA9PSBudWxsKSB7DQog
ICAgICAgICAgICAgICAgZXhhY3QgPSBuZXcgQXJyYXlMaXN0PFJlc3BvbnNlV3JhcHBlci5NZXNz
YWdlLkV4YWN0PigpOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXhh
Y3Q7DQogICAgICAgIH0NCg0KICAgICAgICAvKioNCiAgICAgICAgICogR2V0cyB0aGUgdmFsdWUg
b2YgdGhlIHN0ZW1tZWQgcHJvcGVydHkuDQogICAgICAgICAqIA0KICAgICAgICAgKiA8cD4NCiAg
ICAgICAgICogVGhpcyBhY2Nlc3NvciBtZXRob2QgcmV0dXJucyBhIHJlZmVyZW5jZSB0byB0aGUg
bGl2ZSBsaXN0LA0KICAgICAgICAgKiBub3QgYSBzbmFwc2hvdC4gVGhlcmVmb3JlIGFueSBtb2Rp
ZmljYXRpb24geW91IG1ha2UgdG8gdGhlDQogICAgICAgICAqIHJldHVybmVkIGxpc3Qgd2lsbCBi
ZSBwcmVzZW50IGluc2lkZSB0aGUgSkFYQiBvYmplY3QuDQogICAgICAgICAqIFRoaXMgaXMgd2h5
IHRoZXJlIGlzIG5vdCBhIDxDT0RFPnNldDwvQ09ERT4gbWV0aG9kIGZvciB0aGUgc3RlbW1lZCBw
cm9wZXJ0eS4NCiAgICAgICAgICogDQogICAgICAgICAqIDxwPg0KICAgICAgICAgKiBGb3IgZXhh
bXBsZSwgdG8gYWRkIGEgbmV3IGl0ZW0sIGRvIGFzIGZvbGxvd3M6DQogICAgICAgICAqIDxwcmU+
DQogICAgICAgICAqICAgIGdldFN0ZW1tZWQoKS5hZGQobmV3SXRlbSk7DQogICAgICAgICAqIDwv
cHJlPg0KICAgICAgICAgKiANCiAgICAgICAgICogDQogICAgICAgICAqIDxwPg0KICAgICAgICAg
KiBPYmplY3RzIG9mIHRoZSBmb2xsb3dpbmcgdHlwZShzKSBhcmUgYWxsb3dlZCBpbiB0aGUgbGlz
dA0KICAgICAgICAgKiB7QGxpbmsgUmVzcG9uc2VXcmFwcGVyLk1lc3NhZ2UuU3RlbW1lZCB9DQog
ICAgICAgICAqIA0KICAgICAgICAgKiANCiAgICAgICAgICovDQogICAgICAgIHB1YmxpYyBMaXN0
PFJlc3BvbnNlV3JhcHBlci5NZXNzYWdlLlN0ZW1tZWQ+IGdldFN0ZW1tZWQoKSB7DQogICAgICAg
ICAgICBpZiAoc3RlbW1lZCA9PSBudWxsKSB7DQogICAgICAgICAgICAgICAgc3RlbW1lZCA9IG5l
dyBBcnJheUxpc3Q8UmVzcG9uc2VXcmFwcGVyLk1lc3NhZ2UuU3RlbW1lZD4oKTsNCiAgICAgICAg
ICAgIH0NCiAgICAgICAgICAgIHJldHVybiB0aGlzLnN0ZW1tZWQ7DQogICAgICAgIH0NCg0KDQog
ICAgICAgIC8qKg0KICAgICAgICAgKiA8cD5KYXZhIGNsYXNzIGZvciBhbm9ueW1vdXMgY29tcGxl
eCB0eXBlLg0KICAgICAgICAgKiANCiAgICAgICAgICogPHA+VGhlIGZvbGxvd2luZyBzY2hlbWEg
ZnJhZ21lbnQgc3BlY2lmaWVzIHRoZSBleHBlY3RlZCBjb250ZW50IGNvbnRhaW5lZCB3aXRoaW4g
dGhpcyBjbGFzcy4NCiAgICAgICAgICogDQogICAgICAgICAqIDxwcmU+DQogICAgICAgICAqICZs
dDtjb21wbGV4VHlwZT4NCiAgICAgICAgICogICAmbHQ7Y29tcGxleENvbnRlbnQ+DQogICAgICAg
ICAqICAgICAmbHQ7cmVzdHJpY3Rpb24gYmFzZT0ie2h0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1M
U2NoZW1hfWFueVR5cGUiPg0KICAgICAgICAgKiAgICAgICAmbHQ7c2VxdWVuY2U+DQogICAgICAg
ICAqICAgICAgICAgJmx0O2VsZW1lbnQgbmFtZT0iVGV4dCIgdHlwZT0ie2h0dHA6Ly93d3cudzMu
b3JnLzIwMDEvWE1MU2NoZW1hfXN0cmluZyIgbWluT2NjdXJzPSIwIi8+DQogICAgICAgICAqICAg
ICAgICZsdDsvc2VxdWVuY2U+DQogICAgICAgICAqICAgICAmbHQ7L3Jlc3RyaWN0aW9uPg0KICAg
ICAgICAgKiAgICZsdDsvY29tcGxleENvbnRlbnQ+DQogICAgICAgICAqICZsdDsvY29tcGxleFR5
cGU+DQogICAgICAgICAqIDwvcHJlPg0KICAgICAgICAgKiANCiAgICAgICAgICogDQogICAgICAg
ICAqLw0KICAgICAgICBAWG1sQWNjZXNzb3JUeXBlKFhtbEFjY2Vzc1R5cGUuRklFTEQpDQogICAg
ICAgIEBYbWxUeXBlKG5hbWUgPSAiIiwgcHJvcE9yZGVyID0gew0KICAgICAgICAgICAgInRleHQi
DQogICAgICAgIH0pDQogICAgICAgIHB1YmxpYyBzdGF0aWMgY2xhc3MgRXhhY3Qgew0KDQogICAg
ICAgICAgICBAWG1sRWxlbWVudChuYW1lID0gIlRleHQiKQ0KICAgICAgICAgICAgcHJvdGVjdGVk
IFN0cmluZyB0ZXh0Ow0KDQogICAgICAgICAgICAvKioNCiAgICAgICAgICAgICAqIEdldHMgdGhl
IHZhbHVlIG9mIHRoZSB0ZXh0IHByb3BlcnR5Lg0KICAgICAgICAgICAgICogDQogICAgICAgICAg
ICAgKiBAcmV0dXJuDQogICAgICAgICAgICAgKiAgICAgcG9zc2libGUgb2JqZWN0IGlzDQogICAg
ICAgICAgICAgKiAgICAge0BsaW5rIFN0cmluZyB9DQogICAgICAgICAgICAgKiAgICAgDQogICAg
ICAgICAgICAgKi8NCiAgICAgICAgICAgIHB1YmxpYyBTdHJpbmcgZ2V0VGV4dCgpIHsNCiAgICAg
ICAgICAgICAgICByZXR1cm4gdGV4dDsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgLyoq
DQogICAgICAgICAgICAgKiBTZXRzIHRoZSB2YWx1ZSBvZiB0aGUgdGV4dCBwcm9wZXJ0eS4NCiAg
ICAgICAgICAgICAqIA0KICAgICAgICAgICAgICogQHBhcmFtIHZhbHVlDQogICAgICAgICAgICAg
KiAgICAgYWxsb3dlZCBvYmplY3QgaXMNCiAgICAgICAgICAgICAqICAgICB7QGxpbmsgU3RyaW5n
IH0NCiAgICAgICAgICAgICAqICAgICANCiAgICAgICAgICAgICAqLw0KICAgICAgICAgICAgcHVi
bGljIHZvaWQgc2V0VGV4dChTdHJpbmcgdmFsdWUpIHsNCiAgICAgICAgICAgICAgICB0aGlzLnRl
eHQgPSB2YWx1ZTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICB9DQoNCg0KICAgICAgICAvKioN
CiAgICAgICAgICogPHA+SmF2YSBjbGFzcyBmb3IgYW5vbnltb3VzIGNvbXBsZXggdHlwZS4NCiAg
ICAgICAgICogDQogICAgICAgICAqIDxwPlRoZSBmb2xsb3dpbmcgc2NoZW1hIGZyYWdtZW50IHNw
ZWNpZmllcyB0aGUgZXhwZWN0ZWQgY29udGVudCBjb250YWluZWQgd2l0aGluIHRoaXMgY2xhc3Mu
DQogICAgICAgICAqIA0KICAgICAgICAgKiA8cHJlPg0KICAgICAgICAgKiAmbHQ7Y29tcGxleFR5
cGU+DQogICAgICAgICAqICAgJmx0O2NvbXBsZXhDb250ZW50Pg0KICAgICAgICAgKiAgICAgJmx0
O3Jlc3RyaWN0aW9uIGJhc2U9IntodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYX1hbnlU
eXBlIj4NCiAgICAgICAgICogICAgICAgJmx0O3NlcXVlbmNlPg0KICAgICAgICAgKiAgICAgICAg
ICZsdDtlbGVtZW50IG5hbWU9IkhpdCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIG1pbk9jY3Vycz0i
MCI+DQogICAgICAgICAqICAgICAgICAgICAmbHQ7Y29tcGxleFR5cGU+DQogICAgICAgICAqICAg
ICAgICAgICAgICZsdDtjb21wbGV4Q29udGVudD4NCiAgICAgICAgICogICAgICAgICAgICAgICAm
bHQ7cmVzdHJpY3Rpb24gYmFzZT0ie2h0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hfWFu
eVR5cGUiPg0KICAgICAgICAgKiAgICAgICAgICAgICAgICAgJmx0O3NlcXVlbmNlPg0KICAgICAg
ICAgKiAgICAgICAgICAgICAgICAgICAmbHQ7ZWxlbWVudCBuYW1lPSJQcm9wZXJ0aWVzIj4NCiAg
ICAgICAgICogICAgICAgICAgICAgICAgICAgICAmbHQ7Y29tcGxleFR5cGU+DQogICAgICAgICAq
ICAgICAgICAgICAgICAgICAgICAgICAmbHQ7Y29tcGxleENvbnRlbnQ+DQogICAgICAgICAqICAg
ICAgICAgICAgICAgICAgICAgICAgICZsdDtyZXN0cmljdGlvbiBiYXNlPSJ7aHR0cDovL3d3dy53
My5vcmcvMjAwMS9YTUxTY2hlbWF9YW55VHlwZSI+DQogICAgICAgICAqICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJmx0O3NlcXVlbmNlPg0KICAgICAgICAgKiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJmx0O2VsZW1lbnQgbmFtZT0iUHJvcGVydHkiIG1heE9jY3Vycz0idW5ib3VuZGVk
IiBtaW5PY2N1cnM9IjAiPg0KICAgICAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAmbHQ7Y29tcGxleFR5cGU+DQogICAgICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJmx0O2NvbXBsZXhDb250ZW50Pg0KICAgICAgICAgKiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJmx0O3Jlc3RyaWN0aW9uIGJhc2U9IntodHRwOi8vd3d3LnczLm9yZy8y
MDAxL1hNTFNjaGVtYX1hbnlUeXBlIj4NCiAgICAgICAgICogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJmx0O2F0dHJpYnV0ZSBuYW1lPSJUeXBlIiB0eXBlPSJ7aHR0cDovL3d3
dy53My5vcmcvMjAwMS9YTUxTY2hlbWF9c3RyaW5nIiAvPg0KICAgICAgICAgKiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAmbHQ7YXR0cmlidXRlIG5hbWU9IktleSIgdHlwZT0i
e2h0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hfXN0cmluZyIgLz4NCiAgICAgICAgICog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmx0O2F0dHJpYnV0ZSBuYW1lPSJW
YWx1ZSIgdHlwZT0ie2h0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hfXN0cmluZyIgLz4N
CiAgICAgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmx0O2F0dHJp
YnV0ZSBuYW1lPSJJc1NlYXJjaGVkIiB0eXBlPSJ7aHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxT
Y2hlbWF9c3RyaW5nIiAvPg0KICAgICAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAmbHQ7YXR0cmlidXRlIG5hbWU9IklzTXV0YWJsZSIgdHlwZT0ie2h0dHA6Ly93d3cu
dzMub3JnLzIwMDEvWE1MU2NoZW1hfXN0cmluZyIgLz4NCiAgICAgICAgICogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJmx0O2F0dHJpYnV0ZSBuYW1lPSJJc1N0b3JlZCIgdHlw
ZT0ie2h0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hfXN0cmluZyIgLz4NCiAgICAgICAg
ICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmx0O2F0dHJpYnV0ZSBuYW1l
PSJJc1BlcnNpc3RlbnQiIHR5cGU9IntodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYX1z
dHJpbmciIC8+DQogICAgICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAm
bHQ7L3Jlc3RyaWN0aW9uPg0KICAgICAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICZsdDsvY29tcGxleENvbnRlbnQ+DQogICAgICAgICAqICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICZsdDsvY29tcGxleFR5cGU+DQogICAgICAgICAqICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAmbHQ7L2VsZW1lbnQ+DQogICAgICAgICAqICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJmx0Oy9zZXF1ZW5jZT4NCiAgICAgICAgICogICAgICAgICAgICAgICAgICAgICAgICAg
Jmx0Oy9yZXN0cmljdGlvbj4NCiAgICAgICAgICogICAgICAgICAgICAgICAgICAgICAgICZsdDsv
Y29tcGxleENvbnRlbnQ+DQogICAgICAgICAqICAgICAgICAgICAgICAgICAgICAgJmx0Oy9jb21w
bGV4VHlwZT4NCiAgICAgICAgICogICAgICAgICAgICAgICAgICAgJmx0Oy9lbGVtZW50Pg0KICAg
ICAgICAgKiAgICAgICAgICAgICAgICAgJmx0Oy9zZXF1ZW5jZT4NCiAgICAgICAgICogICAgICAg
ICAgICAgICAgICZsdDthdHRyaWJ1dGUgbmFtZT0iVGltZXN0YW1wIiB0eXBlPSJ7aHR0cDovL3d3
dy53My5vcmcvMjAwMS9YTUxTY2hlbWF9c3RyaW5nIiAvPg0KICAgICAgICAgKiAgICAgICAgICAg
ICAgICAgJmx0O2F0dHJpYnV0ZSBuYW1lPSJVcmkiIHR5cGU9IntodHRwOi8vd3d3LnczLm9yZy8y
MDAxL1hNTFNjaGVtYX1zdHJpbmciIC8+DQogICAgICAgICAqICAgICAgICAgICAgICAgICAmbHQ7
YXR0cmlidXRlIG5hbWU9IlNjb3JlIiB0eXBlPSJ7aHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxT
Y2hlbWF9c3RyaW5nIiAvPg0KICAgICAgICAgKiAgICAgICAgICAgICAgICZsdDsvcmVzdHJpY3Rp
b24+DQogICAgICAgICAqICAgICAgICAgICAgICZsdDsvY29tcGxleENvbnRlbnQ+DQogICAgICAg
ICAqICAgICAgICAgICAmbHQ7L2NvbXBsZXhUeXBlPg0KICAgICAgICAgKiAgICAgICAgICZsdDsv
ZWxlbWVudD4NCiAgICAgICAgICogICAgICAgJmx0Oy9zZXF1ZW5jZT4NCiAgICAgICAgICogICAg
ICZsdDsvcmVzdHJpY3Rpb24+DQogICAgICAgICAqICAgJmx0Oy9jb21wbGV4Q29udGVudD4NCiAg
ICAgICAgICogJmx0Oy9jb21wbGV4VHlwZT4NCiAgICAgICAgICogPC9wcmU+DQogICAgICAgICAq
IA0KICAgICAgICAgKiANCiAgICAgICAgICovDQogICAgICAgIEBYbWxBY2Nlc3NvclR5cGUoWG1s
QWNjZXNzVHlwZS5GSUVMRCkNCiAgICAgICAgQFhtbFR5cGUobmFtZSA9ICIiLCBwcm9wT3JkZXIg
PSB7DQogICAgICAgICAgICAiaGl0Ig0KICAgICAgICB9KQ0KICAgICAgICBwdWJsaWMgc3RhdGlj
IGNsYXNzIEhpdHMgew0KDQogICAgICAgICAgICBAWG1sRWxlbWVudChuYW1lID0gIkhpdCIpDQog
ICAgICAgICAgICBwcm90ZWN0ZWQgTGlzdDxSZXNwb25zZVdyYXBwZXIuTWVzc2FnZS5IaXRzLkhp
dD4gaGl0Ow0KDQogICAgICAgICAgICAvKioNCiAgICAgICAgICAgICAqIEdldHMgdGhlIHZhbHVl
IG9mIHRoZSBoaXQgcHJvcGVydHkuDQogICAgICAgICAgICAgKiANCiAgICAgICAgICAgICAqIDxw
Pg0KICAgICAgICAgICAgICogVGhpcyBhY2Nlc3NvciBtZXRob2QgcmV0dXJucyBhIHJlZmVyZW5j
ZSB0byB0aGUgbGl2ZSBsaXN0LA0KICAgICAgICAgICAgICogbm90IGEgc25hcHNob3QuIFRoZXJl
Zm9yZSBhbnkgbW9kaWZpY2F0aW9uIHlvdSBtYWtlIHRvIHRoZQ0KICAgICAgICAgICAgICogcmV0
dXJuZWQgbGlzdCB3aWxsIGJlIHByZXNlbnQgaW5zaWRlIHRoZSBKQVhCIG9iamVjdC4NCiAgICAg
ICAgICAgICAqIFRoaXMgaXMgd2h5IHRoZXJlIGlzIG5vdCBhIDxDT0RFPnNldDwvQ09ERT4gbWV0
aG9kIGZvciB0aGUgaGl0IHByb3BlcnR5Lg0KICAgICAgICAgICAgICogDQogICAgICAgICAgICAg
KiA8cD4NCiAgICAgICAgICAgICAqIEZvciBleGFtcGxlLCB0byBhZGQgYSBuZXcgaXRlbSwgZG8g
YXMgZm9sbG93czoNCiAgICAgICAgICAgICAqIDxwcmU+DQogICAgICAgICAgICAgKiAgICBnZXRI
aXQoKS5hZGQobmV3SXRlbSk7DQogICAgICAgICAgICAgKiA8L3ByZT4NCiAgICAgICAgICAgICAq
IA0KICAgICAgICAgICAgICogDQogICAgICAgICAgICAgKiA8cD4NCiAgICAgICAgICAgICAqIE9i
amVjdHMgb2YgdGhlIGZvbGxvd2luZyB0eXBlKHMpIGFyZSBhbGxvd2VkIGluIHRoZSBsaXN0DQog
ICAgICAgICAgICAgKiB7QGxpbmsgUmVzcG9uc2VXcmFwcGVyLk1lc3NhZ2UuSGl0cy5IaXQgfQ0K
ICAgICAgICAgICAgICogDQogICAgICAgICAgICAgKiANCiAgICAgICAgICAgICAqLw0KICAgICAg
ICAgICAgcHVibGljIExpc3Q8UmVzcG9uc2VXcmFwcGVyLk1lc3NhZ2UuSGl0cy5IaXQ+IGdldEhp
dCgpIHsNCiAgICAgICAgICAgICAgICBpZiAoaGl0ID09IG51bGwpIHsNCiAgICAgICAgICAgICAg
ICAgICAgaGl0ID0gbmV3IEFycmF5TGlzdDxSZXNwb25zZVdyYXBwZXIuTWVzc2FnZS5IaXRzLkhp
dD4oKTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuaGl0
Ow0KICAgICAgICAgICAgfQ0KDQoNCiAgICAgICAgICAgIC8qKg0KICAgICAgICAgICAgICogPHA+
SmF2YSBjbGFzcyBmb3IgYW5vbnltb3VzIGNvbXBsZXggdHlwZS4NCiAgICAgICAgICAgICAqIA0K
ICAgICAgICAgICAgICogPHA+VGhlIGZvbGxvd2luZyBzY2hlbWEgZnJhZ21lbnQgc3BlY2lmaWVz
IHRoZSBleHBlY3RlZCBjb250ZW50IGNvbnRhaW5lZCB3aXRoaW4gdGhpcyBjbGFzcy4NCiAgICAg
ICAgICAgICAqIA0KICAgICAgICAgICAgICogPHByZT4NCiAgICAgICAgICAgICAqICZsdDtjb21w
bGV4VHlwZT4NCiAgICAgICAgICAgICAqICAgJmx0O2NvbXBsZXhDb250ZW50Pg0KICAgICAgICAg
ICAgICogICAgICZsdDtyZXN0cmljdGlvbiBiYXNlPSJ7aHR0cDovL3d3dy53My5vcmcvMjAwMS9Y
TUxTY2hlbWF9YW55VHlwZSI+DQogICAgICAgICAgICAgKiAgICAgICAmbHQ7c2VxdWVuY2U+DQog
ICAgICAgICAgICAgKiAgICAgICAgICZsdDtlbGVtZW50IG5hbWU9IlByb3BlcnRpZXMiPg0KICAg
ICAgICAgICAgICogICAgICAgICAgICZsdDtjb21wbGV4VHlwZT4NCiAgICAgICAgICAgICAqICAg
ICAgICAgICAgICZsdDtjb21wbGV4Q29udGVudD4NCiAgICAgICAgICAgICAqICAgICAgICAgICAg
ICAgJmx0O3Jlc3RyaWN0aW9uIGJhc2U9IntodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVt
YX1hbnlUeXBlIj4NCiAgICAgICAgICAgICAqICAgICAgICAgICAgICAgICAmbHQ7c2VxdWVuY2U+
DQogICAgICAgICAgICAgKiAgICAgICAgICAgICAgICAgICAmbHQ7ZWxlbWVudCBuYW1lPSJQcm9w
ZXJ0eSIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIG1pbk9jY3Vycz0iMCI+DQogICAgICAgICAgICAg
KiAgICAgICAgICAgICAgICAgICAgICZsdDtjb21wbGV4VHlwZT4NCiAgICAgICAgICAgICAqICAg
ICAgICAgICAgICAgICAgICAgICAmbHQ7Y29tcGxleENvbnRlbnQ+DQogICAgICAgICAgICAgKiAg
ICAgICAgICAgICAgICAgICAgICAgICAmbHQ7cmVzdHJpY3Rpb24gYmFzZT0ie2h0dHA6Ly93d3cu
dzMub3JnLzIwMDEvWE1MU2NoZW1hfWFueVR5cGUiPg0KICAgICAgICAgICAgICogICAgICAgICAg
ICAgICAgICAgICAgICAgICAmbHQ7YXR0cmlidXRlIG5hbWU9IlR5cGUiIHR5cGU9IntodHRwOi8v
d3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYX1zdHJpbmciIC8+DQogICAgICAgICAgICAgKiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICZsdDthdHRyaWJ1dGUgbmFtZT0iS2V5IiB0eXBlPSJ7aHR0
cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWF9c3RyaW5nIiAvPg0KICAgICAgICAgICAgICog
ICAgICAgICAgICAgICAgICAgICAgICAgICAmbHQ7YXR0cmlidXRlIG5hbWU9IlZhbHVlIiB0eXBl
PSJ7aHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWF9c3RyaW5nIiAvPg0KICAgICAgICAg
ICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAmbHQ7YXR0cmlidXRlIG5hbWU9IklzU2Vh
cmNoZWQiIHR5cGU9IntodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYX1zdHJpbmciIC8+
DQogICAgICAgICAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICZsdDthdHRyaWJ1dGUg
bmFtZT0iSXNNdXRhYmxlIiB0eXBlPSJ7aHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWF9
c3RyaW5nIiAvPg0KICAgICAgICAgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAmbHQ7
YXR0cmlidXRlIG5hbWU9IklzU3RvcmVkIiB0eXBlPSJ7aHR0cDovL3d3dy53My5vcmcvMjAwMS9Y
TUxTY2hlbWF9c3RyaW5nIiAvPg0KICAgICAgICAgICAgICogICAgICAgICAgICAgICAgICAgICAg
ICAgICAmbHQ7YXR0cmlidXRlIG5hbWU9IklzUGVyc2lzdGVudCIgdHlwZT0ie2h0dHA6Ly93d3cu
dzMub3JnLzIwMDEvWE1MU2NoZW1hfXN0cmluZyIgLz4NCiAgICAgICAgICAgICAqICAgICAgICAg
ICAgICAgICAgICAgICAgICZsdDsvcmVzdHJpY3Rpb24+DQogICAgICAgICAgICAgKiAgICAgICAg
ICAgICAgICAgICAgICAgJmx0Oy9jb21wbGV4Q29udGVudD4NCiAgICAgICAgICAgICAqICAgICAg
ICAgICAgICAgICAgICAgJmx0Oy9jb21wbGV4VHlwZT4NCiAgICAgICAgICAgICAqICAgICAgICAg
ICAgICAgICAgICZsdDsvZWxlbWVudD4NCiAgICAgICAgICAgICAqICAgICAgICAgICAgICAgICAm
bHQ7L3NlcXVlbmNlPg0KICAgICAgICAgICAgICogICAgICAgICAgICAgICAmbHQ7L3Jlc3RyaWN0
aW9uPg0KICAgICAgICAgICAgICogICAgICAgICAgICAgJmx0Oy9jb21wbGV4Q29udGVudD4NCiAg
ICAgICAgICAgICAqICAgICAgICAgICAmbHQ7L2NvbXBsZXhUeXBlPg0KICAgICAgICAgICAgICog
ICAgICAgICAmbHQ7L2VsZW1lbnQ+DQogICAgICAgICAgICAgKiAgICAgICAmbHQ7L3NlcXVlbmNl
Pg0KICAgICAgICAgICAgICogICAgICAgJmx0O2F0dHJpYnV0ZSBuYW1lPSJUaW1lc3RhbXAiIHR5
cGU9IntodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYX1zdHJpbmciIC8+DQogICAgICAg
ICAgICAgKiAgICAgICAmbHQ7YXR0cmlidXRlIG5hbWU9IlVyaSIgdHlwZT0ie2h0dHA6Ly93d3cu
dzMub3JnLzIwMDEvWE1MU2NoZW1hfXN0cmluZyIgLz4NCiAgICAgICAgICAgICAqICAgICAgICZs
dDthdHRyaWJ1dGUgbmFtZT0iU2NvcmUiIHR5cGU9IntodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hN
TFNjaGVtYX1zdHJpbmciIC8+DQogICAgICAgICAgICAgKiAgICAgJmx0Oy9yZXN0cmljdGlvbj4N
CiAgICAgICAgICAgICAqICAgJmx0Oy9jb21wbGV4Q29udGVudD4NCiAgICAgICAgICAgICAqICZs
dDsvY29tcGxleFR5cGU+DQogICAgICAgICAgICAgKiA8L3ByZT4NCiAgICAgICAgICAgICAqIA0K
ICAgICAgICAgICAgICogDQogICAgICAgICAgICAgKi8NCiAgICAgICAgICAgIEBYbWxBY2Nlc3Nv
clR5cGUoWG1sQWNjZXNzVHlwZS5GSUVMRCkNCiAgICAgICAgICAgIEBYbWxUeXBlKG5hbWUgPSAi
IiwgcHJvcE9yZGVyID0gew0KICAgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIg0KICAgICAgICAg
ICAgfSkNCiAgICAgICAgICAgIHB1YmxpYyBzdGF0aWMgY2xhc3MgSGl0IHsNCg0KICAgICAgICAg
ICAgICAgIEBYbWxFbGVtZW50KG5hbWUgPSAiUHJvcGVydGllcyIsIHJlcXVpcmVkID0gdHJ1ZSkN
CiAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgUmVzcG9uc2VXcmFwcGVyLk1lc3NhZ2UuSGl0cy5I
aXQuUHJvcGVydGllcyBwcm9wZXJ0aWVzOw0KICAgICAgICAgICAgICAgIEBYbWxBdHRyaWJ1dGUo
bmFtZSA9ICJUaW1lc3RhbXAiKQ0KICAgICAgICAgICAgICAgIHByb3RlY3RlZCBTdHJpbmcgdGlt
ZXN0YW1wOw0KICAgICAgICAgICAgICAgIEBYbWxBdHRyaWJ1dGUobmFtZSA9ICJVcmkiKQ0KICAg
ICAgICAgICAgICAgIHByb3RlY3RlZCBTdHJpbmcgdXJpOw0KICAgICAgICAgICAgICAgIEBYbWxB
dHRyaWJ1dGUobmFtZSA9ICJTY29yZSIpDQogICAgICAgICAgICAgICAgcHJvdGVjdGVkIFN0cmlu
ZyBzY29yZTsNCg0KICAgICAgICAgICAgICAgIC8qKg0KICAgICAgICAgICAgICAgICAqIEdldHMg
dGhlIHZhbHVlIG9mIHRoZSBwcm9wZXJ0aWVzIHByb3BlcnR5Lg0KICAgICAgICAgICAgICAgICAq
IA0KICAgICAgICAgICAgICAgICAqIEByZXR1cm4NCiAgICAgICAgICAgICAgICAgKiAgICAgcG9z
c2libGUgb2JqZWN0IGlzDQogICAgICAgICAgICAgICAgICogICAgIHtAbGluayBSZXNwb25zZVdy
YXBwZXIuTWVzc2FnZS5IaXRzLkhpdC5Qcm9wZXJ0aWVzIH0NCiAgICAgICAgICAgICAgICAgKiAg
ICAgDQogICAgICAgICAgICAgICAgICovDQogICAgICAgICAgICAgICAgcHVibGljIFJlc3BvbnNl
V3JhcHBlci5NZXNzYWdlLkhpdHMuSGl0LlByb3BlcnRpZXMgZ2V0UHJvcGVydGllcygpIHsNCiAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIHByb3BlcnRpZXM7DQogICAgICAgICAgICAgICAgfQ0K
DQogICAgICAgICAgICAgICAgLyoqDQogICAgICAgICAgICAgICAgICogU2V0cyB0aGUgdmFsdWUg
b2YgdGhlIHByb3BlcnRpZXMgcHJvcGVydHkuDQogICAgICAgICAgICAgICAgICogDQogICAgICAg
ICAgICAgICAgICogQHBhcmFtIHZhbHVlDQogICAgICAgICAgICAgICAgICogICAgIGFsbG93ZWQg
b2JqZWN0IGlzDQogICAgICAgICAgICAgICAgICogICAgIHtAbGluayBSZXNwb25zZVdyYXBwZXIu
TWVzc2FnZS5IaXRzLkhpdC5Qcm9wZXJ0aWVzIH0NCiAgICAgICAgICAgICAgICAgKiAgICAgDQog
ICAgICAgICAgICAgICAgICovDQogICAgICAgICAgICAgICAgcHVibGljIHZvaWQgc2V0UHJvcGVy
dGllcyhSZXNwb25zZVdyYXBwZXIuTWVzc2FnZS5IaXRzLkhpdC5Qcm9wZXJ0aWVzIHZhbHVlKSB7
DQogICAgICAgICAgICAgICAgICAgIHRoaXMucHJvcGVydGllcyA9IHZhbHVlOw0KICAgICAgICAg
ICAgICAgIH0NCg0KICAgICAgICAgICAgICAgIC8qKg0KICAgICAgICAgICAgICAgICAqIEdldHMg
dGhlIHZhbHVlIG9mIHRoZSB0aW1lc3RhbXAgcHJvcGVydHkuDQogICAgICAgICAgICAgICAgICog
DQogICAgICAgICAgICAgICAgICogQHJldHVybg0KICAgICAgICAgICAgICAgICAqICAgICBwb3Nz
aWJsZSBvYmplY3QgaXMNCiAgICAgICAgICAgICAgICAgKiAgICAge0BsaW5rIFN0cmluZyB9DQog
ICAgICAgICAgICAgICAgICogICAgIA0KICAgICAgICAgICAgICAgICAqLw0KICAgICAgICAgICAg
ICAgIHB1YmxpYyBTdHJpbmcgZ2V0VGltZXN0YW1wKCkgew0KICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gdGltZXN0YW1wOw0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgIC8q
Kg0KICAgICAgICAgICAgICAgICAqIFNldHMgdGhlIHZhbHVlIG9mIHRoZSB0aW1lc3RhbXAgcHJv
cGVydHkuDQogICAgICAgICAgICAgICAgICogDQogICAgICAgICAgICAgICAgICogQHBhcmFtIHZh
bHVlDQogICAgICAgICAgICAgICAgICogICAgIGFsbG93ZWQgb2JqZWN0IGlzDQogICAgICAgICAg
ICAgICAgICogICAgIHtAbGluayBTdHJpbmcgfQ0KICAgICAgICAgICAgICAgICAqICAgICANCiAg
ICAgICAgICAgICAgICAgKi8NCiAgICAgICAgICAgICAgICBwdWJsaWMgdm9pZCBzZXRUaW1lc3Rh
bXAoU3RyaW5nIHZhbHVlKSB7DQogICAgICAgICAgICAgICAgICAgIHRoaXMudGltZXN0YW1wID0g
dmFsdWU7DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgLyoqDQogICAgICAg
ICAgICAgICAgICogR2V0cyB0aGUgdmFsdWUgb2YgdGhlIHVyaSBwcm9wZXJ0eS4NCiAgICAgICAg
ICAgICAgICAgKiANCiAgICAgICAgICAgICAgICAgKiBAcmV0dXJuDQogICAgICAgICAgICAgICAg
ICogICAgIHBvc3NpYmxlIG9iamVjdCBpcw0KICAgICAgICAgICAgICAgICAqICAgICB7QGxpbmsg
U3RyaW5nIH0NCiAgICAgICAgICAgICAgICAgKiAgICAgDQogICAgICAgICAgICAgICAgICovDQog
ICAgICAgICAgICAgICAgcHVibGljIFN0cmluZyBnZXRVcmkoKSB7DQogICAgICAgICAgICAgICAg
ICAgIHJldHVybiB1cmk7DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgLyoq
DQogICAgICAgICAgICAgICAgICogU2V0cyB0aGUgdmFsdWUgb2YgdGhlIHVyaSBwcm9wZXJ0eS4N
CiAgICAgICAgICAgICAgICAgKiANCiAgICAgICAgICAgICAgICAgKiBAcGFyYW0gdmFsdWUNCiAg
ICAgICAgICAgICAgICAgKiAgICAgYWxsb3dlZCBvYmplY3QgaXMNCiAgICAgICAgICAgICAgICAg
KiAgICAge0BsaW5rIFN0cmluZyB9DQogICAgICAgICAgICAgICAgICogICAgIA0KICAgICAgICAg
ICAgICAgICAqLw0KICAgICAgICAgICAgICAgIHB1YmxpYyB2b2lkIHNldFVyaShTdHJpbmcgdmFs
dWUpIHsNCiAgICAgICAgICAgICAgICAgICAgdGhpcy51cmkgPSB2YWx1ZTsNCiAgICAgICAgICAg
ICAgICB9DQoNCiAgICAgICAgICAgICAgICAvKioNCiAgICAgICAgICAgICAgICAgKiBHZXRzIHRo
ZSB2YWx1ZSBvZiB0aGUgc2NvcmUgcHJvcGVydHkuDQogICAgICAgICAgICAgICAgICogDQogICAg
ICAgICAgICAgICAgICogQHJldHVybg0KICAgICAgICAgICAgICAgICAqICAgICBwb3NzaWJsZSBv
YmplY3QgaXMNCiAgICAgICAgICAgICAgICAgKiAgICAge0BsaW5rIFN0cmluZyB9DQogICAgICAg
ICAgICAgICAgICogICAgIA0KICAgICAgICAgICAgICAgICAqLw0KICAgICAgICAgICAgICAgIHB1
YmxpYyBTdHJpbmcgZ2V0U2NvcmUoKSB7DQogICAgICAgICAgICAgICAgICAgIHJldHVybiBzY29y
ZTsNCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICAvKioNCiAgICAgICAgICAg
ICAgICAgKiBTZXRzIHRoZSB2YWx1ZSBvZiB0aGUgc2NvcmUgcHJvcGVydHkuDQogICAgICAgICAg
ICAgICAgICogDQogICAgICAgICAgICAgICAgICogQHBhcmFtIHZhbHVlDQogICAgICAgICAgICAg
ICAgICogICAgIGFsbG93ZWQgb2JqZWN0IGlzDQogICAgICAgICAgICAgICAgICogICAgIHtAbGlu
ayBTdHJpbmcgfQ0KICAgICAgICAgICAgICAgICAqICAgICANCiAgICAgICAgICAgICAgICAgKi8N
CiAgICAgICAgICAgICAgICBwdWJsaWMgdm9pZCBzZXRTY29yZShTdHJpbmcgdmFsdWUpIHsNCiAg
ICAgICAgICAgICAgICAgICAgdGhpcy5zY29yZSA9IHZhbHVlOw0KICAgICAgICAgICAgICAgIH0N
Cg0KDQogICAgICAgICAgICAgICAgLyoqDQogICAgICAgICAgICAgICAgICogPHA+SmF2YSBjbGFz
cyBmb3IgYW5vbnltb3VzIGNvbXBsZXggdHlwZS4NCiAgICAgICAgICAgICAgICAgKiANCiAgICAg
ICAgICAgICAgICAgKiA8cD5UaGUgZm9sbG93aW5nIHNjaGVtYSBmcmFnbWVudCBzcGVjaWZpZXMg
dGhlIGV4cGVjdGVkIGNvbnRlbnQgY29udGFpbmVkIHdpdGhpbiB0aGlzIGNsYXNzLg0KICAgICAg
ICAgICAgICAgICAqIA0KICAgICAgICAgICAgICAgICAqIDxwcmU+DQogICAgICAgICAgICAgICAg
ICogJmx0O2NvbXBsZXhUeXBlPg0KICAgICAgICAgICAgICAgICAqICAgJmx0O2NvbXBsZXhDb250
ZW50Pg0KICAgICAgICAgICAgICAgICAqICAgICAmbHQ7cmVzdHJpY3Rpb24gYmFzZT0ie2h0dHA6
Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hfWFueVR5cGUiPg0KICAgICAgICAgICAgICAgICAq
ICAgICAgICZsdDtzZXF1ZW5jZT4NCiAgICAgICAgICAgICAgICAgKiAgICAgICAgICZsdDtlbGVt
ZW50IG5hbWU9IlByb3BlcnR5IiBtYXhPY2N1cnM9InVuYm91bmRlZCIgbWluT2NjdXJzPSIwIj4N
CiAgICAgICAgICAgICAgICAgKiAgICAgICAgICAgJmx0O2NvbXBsZXhUeXBlPg0KICAgICAgICAg
ICAgICAgICAqICAgICAgICAgICAgICZsdDtjb21wbGV4Q29udGVudD4NCiAgICAgICAgICAgICAg
ICAgKiAgICAgICAgICAgICAgICZsdDtyZXN0cmljdGlvbiBiYXNlPSJ7aHR0cDovL3d3dy53My5v
cmcvMjAwMS9YTUxTY2hlbWF9YW55VHlwZSI+DQogICAgICAgICAgICAgICAgICogICAgICAgICAg
ICAgICAgICZsdDthdHRyaWJ1dGUgbmFtZT0iVHlwZSIgdHlwZT0ie2h0dHA6Ly93d3cudzMub3Jn
LzIwMDEvWE1MU2NoZW1hfXN0cmluZyIgLz4NCiAgICAgICAgICAgICAgICAgKiAgICAgICAgICAg
ICAgICAgJmx0O2F0dHJpYnV0ZSBuYW1lPSJLZXkiIHR5cGU9IntodHRwOi8vd3d3LnczLm9yZy8y
MDAxL1hNTFNjaGVtYX1zdHJpbmciIC8+DQogICAgICAgICAgICAgICAgICogICAgICAgICAgICAg
ICAgICZsdDthdHRyaWJ1dGUgbmFtZT0iVmFsdWUiIHR5cGU9IntodHRwOi8vd3d3LnczLm9yZy8y
MDAxL1hNTFNjaGVtYX1zdHJpbmciIC8+DQogICAgICAgICAgICAgICAgICogICAgICAgICAgICAg
ICAgICZsdDthdHRyaWJ1dGUgbmFtZT0iSXNTZWFyY2hlZCIgdHlwZT0ie2h0dHA6Ly93d3cudzMu
b3JnLzIwMDEvWE1MU2NoZW1hfXN0cmluZyIgLz4NCiAgICAgICAgICAgICAgICAgKiAgICAgICAg
ICAgICAgICAgJmx0O2F0dHJpYnV0ZSBuYW1lPSJJc011dGFibGUiIHR5cGU9IntodHRwOi8vd3d3
LnczLm9yZy8yMDAxL1hNTFNjaGVtYX1zdHJpbmciIC8+DQogICAgICAgICAgICAgICAgICogICAg
ICAgICAgICAgICAgICZsdDthdHRyaWJ1dGUgbmFtZT0iSXNTdG9yZWQiIHR5cGU9IntodHRwOi8v
d3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYX1zdHJpbmciIC8+DQogICAgICAgICAgICAgICAgICog
ICAgICAgICAgICAgICAgICZsdDthdHRyaWJ1dGUgbmFtZT0iSXNQZXJzaXN0ZW50IiB0eXBlPSJ7
aHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWF9c3RyaW5nIiAvPg0KICAgICAgICAgICAg
ICAgICAqICAgICAgICAgICAgICAgJmx0Oy9yZXN0cmljdGlvbj4NCiAgICAgICAgICAgICAgICAg
KiAgICAgICAgICAgICAmbHQ7L2NvbXBsZXhDb250ZW50Pg0KICAgICAgICAgICAgICAgICAqICAg
ICAgICAgICAmbHQ7L2NvbXBsZXhUeXBlPg0KICAgICAgICAgICAgICAgICAqICAgICAgICAgJmx0
Oy9lbGVtZW50Pg0KICAgICAgICAgICAgICAgICAqICAgICAgICZsdDsvc2VxdWVuY2U+DQogICAg
ICAgICAgICAgICAgICogICAgICZsdDsvcmVzdHJpY3Rpb24+DQogICAgICAgICAgICAgICAgICog
ICAmbHQ7L2NvbXBsZXhDb250ZW50Pg0KICAgICAgICAgICAgICAgICAqICZsdDsvY29tcGxleFR5
cGU+DQogICAgICAgICAgICAgICAgICogPC9wcmU+DQogICAgICAgICAgICAgICAgICogDQogICAg
ICAgICAgICAgICAgICogDQogICAgICAgICAgICAgICAgICovDQogICAgICAgICAgICAgICAgQFht
bEFjY2Vzc29yVHlwZShYbWxBY2Nlc3NUeXBlLkZJRUxEKQ0KICAgICAgICAgICAgICAgIEBYbWxU
eXBlKG5hbWUgPSAiIiwgcHJvcE9yZGVyID0gew0KICAgICAgICAgICAgICAgICAgICAicHJvcGVy
dHkiDQogICAgICAgICAgICAgICAgfSkNCiAgICAgICAgICAgICAgICBwdWJsaWMgc3RhdGljIGNs
YXNzIFByb3BlcnRpZXMgew0KDQogICAgICAgICAgICAgICAgICAgIEBYbWxFbGVtZW50KG5hbWUg
PSAiUHJvcGVydHkiKQ0KICAgICAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgTGlzdDxSZXNwb25z
ZVdyYXBwZXIuTWVzc2FnZS5IaXRzLkhpdC5Qcm9wZXJ0aWVzLlByb3BlcnR5PiBwcm9wZXJ0eTsN
Cg0KICAgICAgICAgICAgICAgICAgICAvKioNCiAgICAgICAgICAgICAgICAgICAgICogR2V0cyB0
aGUgdmFsdWUgb2YgdGhlIHByb3BlcnR5IHByb3BlcnR5Lg0KICAgICAgICAgICAgICAgICAgICAg
KiANCiAgICAgICAgICAgICAgICAgICAgICogPHA+DQogICAgICAgICAgICAgICAgICAgICAqIFRo
aXMgYWNjZXNzb3IgbWV0aG9kIHJldHVybnMgYSByZWZlcmVuY2UgdG8gdGhlIGxpdmUgbGlzdCwN
CiAgICAgICAgICAgICAgICAgICAgICogbm90IGEgc25hcHNob3QuIFRoZXJlZm9yZSBhbnkgbW9k
aWZpY2F0aW9uIHlvdSBtYWtlIHRvIHRoZQ0KICAgICAgICAgICAgICAgICAgICAgKiByZXR1cm5l
ZCBsaXN0IHdpbGwgYmUgcHJlc2VudCBpbnNpZGUgdGhlIEpBWEIgb2JqZWN0Lg0KICAgICAgICAg
ICAgICAgICAgICAgKiBUaGlzIGlzIHdoeSB0aGVyZSBpcyBub3QgYSA8Q09ERT5zZXQ8L0NPREU+
IG1ldGhvZCBmb3IgdGhlIHByb3BlcnR5IHByb3BlcnR5Lg0KICAgICAgICAgICAgICAgICAgICAg
KiANCiAgICAgICAgICAgICAgICAgICAgICogPHA+DQogICAgICAgICAgICAgICAgICAgICAqIEZv
ciBleGFtcGxlLCB0byBhZGQgYSBuZXcgaXRlbSwgZG8gYXMgZm9sbG93czoNCiAgICAgICAgICAg
ICAgICAgICAgICogPHByZT4NCiAgICAgICAgICAgICAgICAgICAgICogICAgZ2V0UHJvcGVydHko
KS5hZGQobmV3SXRlbSk7DQogICAgICAgICAgICAgICAgICAgICAqIDwvcHJlPg0KICAgICAgICAg
ICAgICAgICAgICAgKiANCiAgICAgICAgICAgICAgICAgICAgICogDQogICAgICAgICAgICAgICAg
ICAgICAqIDxwPg0KICAgICAgICAgICAgICAgICAgICAgKiBPYmplY3RzIG9mIHRoZSBmb2xsb3dp
bmcgdHlwZShzKSBhcmUgYWxsb3dlZCBpbiB0aGUgbGlzdA0KICAgICAgICAgICAgICAgICAgICAg
KiB7QGxpbmsgUmVzcG9uc2VXcmFwcGVyLk1lc3NhZ2UuSGl0cy5IaXQuUHJvcGVydGllcy5Qcm9w
ZXJ0eSB9DQogICAgICAgICAgICAgICAgICAgICAqIA0KICAgICAgICAgICAgICAgICAgICAgKiAN
CiAgICAgICAgICAgICAgICAgICAgICovDQogICAgICAgICAgICAgICAgICAgIHB1YmxpYyBMaXN0
PFJlc3BvbnNlV3JhcHBlci5NZXNzYWdlLkhpdHMuSGl0LlByb3BlcnRpZXMuUHJvcGVydHk+IGdl
dFByb3BlcnR5KCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHByb3BlcnR5ID09IG51
bGwpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eSA9IG5ldyBBcnJheUxp
c3Q8UmVzcG9uc2VXcmFwcGVyLk1lc3NhZ2UuSGl0cy5IaXQuUHJvcGVydGllcy5Qcm9wZXJ0eT4o
KTsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiB0aGlzLnByb3BlcnR5Ow0KICAgICAgICAgICAgICAgICAgICB9DQoNCg0KICAgICAgICAg
ICAgICAgICAgICAvKioNCiAgICAgICAgICAgICAgICAgICAgICogPHA+SmF2YSBjbGFzcyBmb3Ig
YW5vbnltb3VzIGNvbXBsZXggdHlwZS4NCiAgICAgICAgICAgICAgICAgICAgICogDQogICAgICAg
ICAgICAgICAgICAgICAqIDxwPlRoZSBmb2xsb3dpbmcgc2NoZW1hIGZyYWdtZW50IHNwZWNpZmll
cyB0aGUgZXhwZWN0ZWQgY29udGVudCBjb250YWluZWQgd2l0aGluIHRoaXMgY2xhc3MuDQogICAg
ICAgICAgICAgICAgICAgICAqIA0KICAgICAgICAgICAgICAgICAgICAgKiA8cHJlPg0KICAgICAg
ICAgICAgICAgICAgICAgKiAmbHQ7Y29tcGxleFR5cGU+DQogICAgICAgICAgICAgICAgICAgICAq
ICAgJmx0O2NvbXBsZXhDb250ZW50Pg0KICAgICAgICAgICAgICAgICAgICAgKiAgICAgJmx0O3Jl
c3RyaWN0aW9uIGJhc2U9IntodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYX1hbnlUeXBl
Ij4NCiAgICAgICAgICAgICAgICAgICAgICogICAgICAgJmx0O2F0dHJpYnV0ZSBuYW1lPSJUeXBl
IiB0eXBlPSJ7aHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWF9c3RyaW5nIiAvPg0KICAg
ICAgICAgICAgICAgICAgICAgKiAgICAgICAmbHQ7YXR0cmlidXRlIG5hbWU9IktleSIgdHlwZT0i
e2h0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hfXN0cmluZyIgLz4NCiAgICAgICAgICAg
ICAgICAgICAgICogICAgICAgJmx0O2F0dHJpYnV0ZSBuYW1lPSJWYWx1ZSIgdHlwZT0ie2h0dHA6
Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hfXN0cmluZyIgLz4NCiAgICAgICAgICAgICAgICAg
ICAgICogICAgICAgJmx0O2F0dHJpYnV0ZSBuYW1lPSJJc1NlYXJjaGVkIiB0eXBlPSJ7aHR0cDov
L3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWF9c3RyaW5nIiAvPg0KICAgICAgICAgICAgICAgICAg
ICAgKiAgICAgICAmbHQ7YXR0cmlidXRlIG5hbWU9IklzTXV0YWJsZSIgdHlwZT0ie2h0dHA6Ly93
d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hfXN0cmluZyIgLz4NCiAgICAgICAgICAgICAgICAgICAg
ICogICAgICAgJmx0O2F0dHJpYnV0ZSBuYW1lPSJJc1N0b3JlZCIgdHlwZT0ie2h0dHA6Ly93d3cu
dzMub3JnLzIwMDEvWE1MU2NoZW1hfXN0cmluZyIgLz4NCiAgICAgICAgICAgICAgICAgICAgICog
ICAgICAgJmx0O2F0dHJpYnV0ZSBuYW1lPSJJc1BlcnNpc3RlbnQiIHR5cGU9IntodHRwOi8vd3d3
LnczLm9yZy8yMDAxL1hNTFNjaGVtYX1zdHJpbmciIC8+DQogICAgICAgICAgICAgICAgICAgICAq
ICAgICAmbHQ7L3Jlc3RyaWN0aW9uPg0KICAgICAgICAgICAgICAgICAgICAgKiAgICZsdDsvY29t
cGxleENvbnRlbnQ+DQogICAgICAgICAgICAgICAgICAgICAqICZsdDsvY29tcGxleFR5cGU+DQog
ICAgICAgICAgICAgICAgICAgICAqIDwvcHJlPg0KICAgICAgICAgICAgICAgICAgICAgKiANCiAg
ICAgICAgICAgICAgICAgICAgICogDQogICAgICAgICAgICAgICAgICAgICAqLw0KICAgICAgICAg
ICAgICAgICAgICBAWG1sQWNjZXNzb3JUeXBlKFhtbEFjY2Vzc1R5cGUuRklFTEQpDQogICAgICAg
ICAgICAgICAgICAgIEBYbWxUeXBlKG5hbWUgPSAiIikNCiAgICAgICAgICAgICAgICAgICAgcHVi
bGljIHN0YXRpYyBjbGFzcyBQcm9wZXJ0eSB7DQoNCiAgICAgICAgICAgICAgICAgICAgICAgIEBY
bWxBdHRyaWJ1dGUobmFtZSA9ICJUeXBlIikNCiAgICAgICAgICAgICAgICAgICAgICAgIHByb3Rl
Y3RlZCBTdHJpbmcgdHlwZTsNCiAgICAgICAgICAgICAgICAgICAgICAgIEBYbWxBdHRyaWJ1dGUo
bmFtZSA9ICJLZXkiKQ0KICAgICAgICAgICAgICAgICAgICAgICAgcHJvdGVjdGVkIFN0cmluZyBr
ZXk7DQogICAgICAgICAgICAgICAgICAgICAgICBAWG1sQXR0cmlidXRlKG5hbWUgPSAiVmFsdWUi
KQ0KICAgICAgICAgICAgICAgICAgICAgICAgcHJvdGVjdGVkIFN0cmluZyB2YWx1ZTsNCiAgICAg
ICAgICAgICAgICAgICAgICAgIEBYbWxBdHRyaWJ1dGUobmFtZSA9ICJJc1NlYXJjaGVkIikNCiAg
ICAgICAgICAgICAgICAgICAgICAgIHByb3RlY3RlZCBTdHJpbmcgaXNTZWFyY2hlZDsNCiAgICAg
ICAgICAgICAgICAgICAgICAgIEBYbWxBdHRyaWJ1dGUobmFtZSA9ICJJc011dGFibGUiKQ0KICAg
ICAgICAgICAgICAgICAgICAgICAgcHJvdGVjdGVkIFN0cmluZyBpc011dGFibGU7DQogICAgICAg
ICAgICAgICAgICAgICAgICBAWG1sQXR0cmlidXRlKG5hbWUgPSAiSXNTdG9yZWQiKQ0KICAgICAg
ICAgICAgICAgICAgICAgICAgcHJvdGVjdGVkIFN0cmluZyBpc1N0b3JlZDsNCiAgICAgICAgICAg
ICAgICAgICAgICAgIEBYbWxBdHRyaWJ1dGUobmFtZSA9ICJJc1BlcnNpc3RlbnQiKQ0KICAgICAg
ICAgICAgICAgICAgICAgICAgcHJvdGVjdGVkIFN0cmluZyBpc1BlcnNpc3RlbnQ7DQoNCiAgICAg
ICAgICAgICAgICAgICAgICAgIC8qKg0KICAgICAgICAgICAgICAgICAgICAgICAgICogR2V0cyB0
aGUgdmFsdWUgb2YgdGhlIHR5cGUgcHJvcGVydHkuDQogICAgICAgICAgICAgICAgICAgICAgICAg
KiANCiAgICAgICAgICAgICAgICAgICAgICAgICAqIEByZXR1cm4NCiAgICAgICAgICAgICAgICAg
ICAgICAgICAqICAgICBwb3NzaWJsZSBvYmplY3QgaXMNCiAgICAgICAgICAgICAgICAgICAgICAg
ICAqICAgICB7QGxpbmsgU3RyaW5nIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAqICAgICAN
CiAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KICAgICAgICAgICAgICAgICAgICAgICAgcHVi
bGljIFN0cmluZyBnZXRUeXBlKCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biB0eXBlOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgICAg
ICAgICAvKioNCiAgICAgICAgICAgICAgICAgICAgICAgICAqIFNldHMgdGhlIHZhbHVlIG9mIHRo
ZSB0eXBlIHByb3BlcnR5Lg0KICAgICAgICAgICAgICAgICAgICAgICAgICogDQogICAgICAgICAg
ICAgICAgICAgICAgICAgKiBAcGFyYW0gdmFsdWUNCiAgICAgICAgICAgICAgICAgICAgICAgICAq
ICAgICBhbGxvd2VkIG9iamVjdCBpcw0KICAgICAgICAgICAgICAgICAgICAgICAgICogICAgIHtA
bGluayBTdHJpbmcgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICogICAgIA0KICAgICAgICAg
ICAgICAgICAgICAgICAgICovDQogICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgdm9pZCBz
ZXRUeXBlKFN0cmluZyB2YWx1ZSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMu
dHlwZSA9IHZhbHVlOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAg
ICAgICAgICAgICAvKioNCiAgICAgICAgICAgICAgICAgICAgICAgICAqIEdldHMgdGhlIHZhbHVl
IG9mIHRoZSBrZXkgcHJvcGVydHkuDQogICAgICAgICAgICAgICAgICAgICAgICAgKiANCiAgICAg
ICAgICAgICAgICAgICAgICAgICAqIEByZXR1cm4NCiAgICAgICAgICAgICAgICAgICAgICAgICAq
ICAgICBwb3NzaWJsZSBvYmplY3QgaXMNCiAgICAgICAgICAgICAgICAgICAgICAgICAqICAgICB7
QGxpbmsgU3RyaW5nIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAqICAgICANCiAgICAgICAg
ICAgICAgICAgICAgICAgICAqLw0KICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIFN0cmlu
ZyBnZXRLZXkoKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGtleTsNCiAg
ICAgICAgICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgICAgICAgICAgLyoqDQog
ICAgICAgICAgICAgICAgICAgICAgICAgKiBTZXRzIHRoZSB2YWx1ZSBvZiB0aGUga2V5IHByb3Bl
cnR5Lg0KICAgICAgICAgICAgICAgICAgICAgICAgICogDQogICAgICAgICAgICAgICAgICAgICAg
ICAgKiBAcGFyYW0gdmFsdWUNCiAgICAgICAgICAgICAgICAgICAgICAgICAqICAgICBhbGxvd2Vk
IG9iamVjdCBpcw0KICAgICAgICAgICAgICAgICAgICAgICAgICogICAgIHtAbGluayBTdHJpbmcg
fQ0KICAgICAgICAgICAgICAgICAgICAgICAgICogICAgIA0KICAgICAgICAgICAgICAgICAgICAg
ICAgICovDQogICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgdm9pZCBzZXRLZXkoU3RyaW5n
IHZhbHVlKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5rZXkgPSB2YWx1ZTsN
CiAgICAgICAgICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgICAgICAgICAgLyoq
DQogICAgICAgICAgICAgICAgICAgICAgICAgKiBHZXRzIHRoZSB2YWx1ZSBvZiB0aGUgdmFsdWUg
cHJvcGVydHkuDQogICAgICAgICAgICAgICAgICAgICAgICAgKiANCiAgICAgICAgICAgICAgICAg
ICAgICAgICAqIEByZXR1cm4NCiAgICAgICAgICAgICAgICAgICAgICAgICAqICAgICBwb3NzaWJs
ZSBvYmplY3QgaXMNCiAgICAgICAgICAgICAgICAgICAgICAgICAqICAgICB7QGxpbmsgU3RyaW5n
IH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAqICAgICANCiAgICAgICAgICAgICAgICAgICAg
ICAgICAqLw0KICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIFN0cmluZyBnZXRWYWx1ZSgp
IHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWU7DQogICAgICAgICAg
ICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICAgICAgICAgIC8qKg0KICAgICAgICAg
ICAgICAgICAgICAgICAgICogU2V0cyB0aGUgdmFsdWUgb2YgdGhlIHZhbHVlIHByb3BlcnR5Lg0K
ICAgICAgICAgICAgICAgICAgICAgICAgICogDQogICAgICAgICAgICAgICAgICAgICAgICAgKiBA
cGFyYW0gdmFsdWUNCiAgICAgICAgICAgICAgICAgICAgICAgICAqICAgICBhbGxvd2VkIG9iamVj
dCBpcw0KICAgICAgICAgICAgICAgICAgICAgICAgICogICAgIHtAbGluayBTdHJpbmcgfQ0KICAg
ICAgICAgICAgICAgICAgICAgICAgICogICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgICov
DQogICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgdm9pZCBzZXRWYWx1ZShTdHJpbmcgdmFs
dWUpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWU7DQog
ICAgICAgICAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICAgICAgICAgIC8qKg0K
ICAgICAgICAgICAgICAgICAgICAgICAgICogR2V0cyB0aGUgdmFsdWUgb2YgdGhlIGlzU2VhcmNo
ZWQgcHJvcGVydHkuDQogICAgICAgICAgICAgICAgICAgICAgICAgKiANCiAgICAgICAgICAgICAg
ICAgICAgICAgICAqIEByZXR1cm4NCiAgICAgICAgICAgICAgICAgICAgICAgICAqICAgICBwb3Nz
aWJsZSBvYmplY3QgaXMNCiAgICAgICAgICAgICAgICAgICAgICAgICAqICAgICB7QGxpbmsgU3Ry
aW5nIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAqICAgICANCiAgICAgICAgICAgICAgICAg
ICAgICAgICAqLw0KICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIFN0cmluZyBnZXRJc1Nl
YXJjaGVkKCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpc1NlYXJjaGVk
Ow0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgICAgICAgICAv
KioNCiAgICAgICAgICAgICAgICAgICAgICAgICAqIFNldHMgdGhlIHZhbHVlIG9mIHRoZSBpc1Nl
YXJjaGVkIHByb3BlcnR5Lg0KICAgICAgICAgICAgICAgICAgICAgICAgICogDQogICAgICAgICAg
ICAgICAgICAgICAgICAgKiBAcGFyYW0gdmFsdWUNCiAgICAgICAgICAgICAgICAgICAgICAgICAq
ICAgICBhbGxvd2VkIG9iamVjdCBpcw0KICAgICAgICAgICAgICAgICAgICAgICAgICogICAgIHtA
bGluayBTdHJpbmcgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICogICAgIA0KICAgICAgICAg
ICAgICAgICAgICAgICAgICovDQogICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgdm9pZCBz
ZXRJc1NlYXJjaGVkKFN0cmluZyB2YWx1ZSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHRoaXMuaXNTZWFyY2hlZCA9IHZhbHVlOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KDQog
ICAgICAgICAgICAgICAgICAgICAgICAvKioNCiAgICAgICAgICAgICAgICAgICAgICAgICAqIEdl
dHMgdGhlIHZhbHVlIG9mIHRoZSBpc011dGFibGUgcHJvcGVydHkuDQogICAgICAgICAgICAgICAg
ICAgICAgICAgKiANCiAgICAgICAgICAgICAgICAgICAgICAgICAqIEByZXR1cm4NCiAgICAgICAg
ICAgICAgICAgICAgICAgICAqICAgICBwb3NzaWJsZSBvYmplY3QgaXMNCiAgICAgICAgICAgICAg
ICAgICAgICAgICAqICAgICB7QGxpbmsgU3RyaW5nIH0NCiAgICAgICAgICAgICAgICAgICAgICAg
ICAqICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KICAgICAgICAgICAgICAgICAg
ICAgICAgcHVibGljIFN0cmluZyBnZXRJc011dGFibGUoKSB7DQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIGlzTXV0YWJsZTsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCg0K
ICAgICAgICAgICAgICAgICAgICAgICAgLyoqDQogICAgICAgICAgICAgICAgICAgICAgICAgKiBT
ZXRzIHRoZSB2YWx1ZSBvZiB0aGUgaXNNdXRhYmxlIHByb3BlcnR5Lg0KICAgICAgICAgICAgICAg
ICAgICAgICAgICogDQogICAgICAgICAgICAgICAgICAgICAgICAgKiBAcGFyYW0gdmFsdWUNCiAg
ICAgICAgICAgICAgICAgICAgICAgICAqICAgICBhbGxvd2VkIG9iamVjdCBpcw0KICAgICAgICAg
ICAgICAgICAgICAgICAgICogICAgIHtAbGluayBTdHJpbmcgfQ0KICAgICAgICAgICAgICAgICAg
ICAgICAgICogICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgICovDQogICAgICAgICAgICAg
ICAgICAgICAgICBwdWJsaWMgdm9pZCBzZXRJc011dGFibGUoU3RyaW5nIHZhbHVlKSB7DQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pc011dGFibGUgPSB2YWx1ZTsNCiAgICAgICAg
ICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgICAgICAgICAgLyoqDQogICAgICAg
ICAgICAgICAgICAgICAgICAgKiBHZXRzIHRoZSB2YWx1ZSBvZiB0aGUgaXNTdG9yZWQgcHJvcGVy
dHkuDQogICAgICAgICAgICAgICAgICAgICAgICAgKiANCiAgICAgICAgICAgICAgICAgICAgICAg
ICAqIEByZXR1cm4NCiAgICAgICAgICAgICAgICAgICAgICAgICAqICAgICBwb3NzaWJsZSBvYmpl
Y3QgaXMNCiAgICAgICAgICAgICAgICAgICAgICAgICAqICAgICB7QGxpbmsgU3RyaW5nIH0NCiAg
ICAgICAgICAgICAgICAgICAgICAgICAqICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgICAq
Lw0KICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIFN0cmluZyBnZXRJc1N0b3JlZCgpIHsN
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaXNTdG9yZWQ7DQogICAgICAgICAg
ICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICAgICAgICAgIC8qKg0KICAgICAgICAg
ICAgICAgICAgICAgICAgICogU2V0cyB0aGUgdmFsdWUgb2YgdGhlIGlzU3RvcmVkIHByb3BlcnR5
Lg0KICAgICAgICAgICAgICAgICAgICAgICAgICogDQogICAgICAgICAgICAgICAgICAgICAgICAg
KiBAcGFyYW0gdmFsdWUNCiAgICAgICAgICAgICAgICAgICAgICAgICAqICAgICBhbGxvd2VkIG9i
amVjdCBpcw0KICAgICAgICAgICAgICAgICAgICAgICAgICogICAgIHtAbGluayBTdHJpbmcgfQ0K
ICAgICAgICAgICAgICAgICAgICAgICAgICogICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAg
ICovDQogICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgdm9pZCBzZXRJc1N0b3JlZChTdHJp
bmcgdmFsdWUpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmlzU3RvcmVkID0g
dmFsdWU7DQogICAgICAgICAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICAgICAg
ICAgIC8qKg0KICAgICAgICAgICAgICAgICAgICAgICAgICogR2V0cyB0aGUgdmFsdWUgb2YgdGhl
IGlzUGVyc2lzdGVudCBwcm9wZXJ0eS4NCiAgICAgICAgICAgICAgICAgICAgICAgICAqIA0KICAg
ICAgICAgICAgICAgICAgICAgICAgICogQHJldHVybg0KICAgICAgICAgICAgICAgICAgICAgICAg
ICogICAgIHBvc3NpYmxlIG9iamVjdCBpcw0KICAgICAgICAgICAgICAgICAgICAgICAgICogICAg
IHtAbGluayBTdHJpbmcgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICogICAgIA0KICAgICAg
ICAgICAgICAgICAgICAgICAgICovDQogICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgU3Ry
aW5nIGdldElzUGVyc2lzdGVudCgpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gaXNQZXJzaXN0ZW50Ow0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAg
ICAgICAgICAgICAgICAvKioNCiAgICAgICAgICAgICAgICAgICAgICAgICAqIFNldHMgdGhlIHZh
bHVlIG9mIHRoZSBpc1BlcnNpc3RlbnQgcHJvcGVydHkuDQogICAgICAgICAgICAgICAgICAgICAg
ICAgKiANCiAgICAgICAgICAgICAgICAgICAgICAgICAqIEBwYXJhbSB2YWx1ZQ0KICAgICAgICAg
ICAgICAgICAgICAgICAgICogICAgIGFsbG93ZWQgb2JqZWN0IGlzDQogICAgICAgICAgICAgICAg
ICAgICAgICAgKiAgICAge0BsaW5rIFN0cmluZyB9DQogICAgICAgICAgICAgICAgICAgICAgICAg
KiAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICAgKi8NCiAgICAgICAgICAgICAgICAgICAg
ICAgIHB1YmxpYyB2b2lkIHNldElzUGVyc2lzdGVudChTdHJpbmcgdmFsdWUpIHsNCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB0aGlzLmlzUGVyc2lzdGVudCA9IHZhbHVlOw0KICAgICAgICAg
ICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAg
ICAgIH0NCg0KICAgICAgICAgICAgfQ0KDQogICAgICAgIH0NCg0KDQogICAgICAgIC8qKg0KICAg
ICAgICAgKiA8cD5KYXZhIGNsYXNzIGZvciBhbm9ueW1vdXMgY29tcGxleCB0eXBlLg0KICAgICAg
ICAgKiANCiAgICAgICAgICogPHA+VGhlIGZvbGxvd2luZyBzY2hlbWEgZnJhZ21lbnQgc3BlY2lm
aWVzIHRoZSBleHBlY3RlZCBjb250ZW50IGNvbnRhaW5lZCB3aXRoaW4gdGhpcyBjbGFzcy4NCiAg
ICAgICAgICogDQogICAgICAgICAqIDxwcmU+DQogICAgICAgICAqICZsdDtjb21wbGV4VHlwZT4N
CiAgICAgICAgICogICAmbHQ7Y29tcGxleENvbnRlbnQ+DQogICAgICAgICAqICAgICAmbHQ7cmVz
dHJpY3Rpb24gYmFzZT0ie2h0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hfWFueVR5cGUi
Pg0KICAgICAgICAgKiAgICAgICAmbHQ7c2VxdWVuY2U+DQogICAgICAgICAqICAgICAgICAgJmx0
O2VsZW1lbnQgbmFtZT0iVGV4dCIgdHlwZT0ie2h0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2No
ZW1hfXN0cmluZyIgbWluT2NjdXJzPSIwIi8+DQogICAgICAgICAqICAgICAgICZsdDsvc2VxdWVu
Y2U+DQogICAgICAgICAqICAgICAmbHQ7L3Jlc3RyaWN0aW9uPg0KICAgICAgICAgKiAgICZsdDsv
Y29tcGxleENvbnRlbnQ+DQogICAgICAgICAqICZsdDsvY29tcGxleFR5cGU+DQogICAgICAgICAq
IDwvcHJlPg0KICAgICAgICAgKiANCiAgICAgICAgICogDQogICAgICAgICAqLw0KICAgICAgICBA
WG1sQWNjZXNzb3JUeXBlKFhtbEFjY2Vzc1R5cGUuRklFTEQpDQogICAgICAgIEBYbWxUeXBlKG5h
bWUgPSAiIiwgcHJvcE9yZGVyID0gew0KICAgICAgICAgICAgInRleHQiDQogICAgICAgIH0pDQog
ICAgICAgIHB1YmxpYyBzdGF0aWMgY2xhc3MgU3RlbW1lZCB7DQoNCiAgICAgICAgICAgIEBYbWxF
bGVtZW50KG5hbWUgPSAiVGV4dCIpDQogICAgICAgICAgICBwcm90ZWN0ZWQgU3RyaW5nIHRleHQ7
DQoNCiAgICAgICAgICAgIC8qKg0KICAgICAgICAgICAgICogR2V0cyB0aGUgdmFsdWUgb2YgdGhl
IHRleHQgcHJvcGVydHkuDQogICAgICAgICAgICAgKiANCiAgICAgICAgICAgICAqIEByZXR1cm4N
CiAgICAgICAgICAgICAqICAgICBwb3NzaWJsZSBvYmplY3QgaXMNCiAgICAgICAgICAgICAqICAg
ICB7QGxpbmsgU3RyaW5nIH0NCiAgICAgICAgICAgICAqICAgICANCiAgICAgICAgICAgICAqLw0K
ICAgICAgICAgICAgcHVibGljIFN0cmluZyBnZXRUZXh0KCkgew0KICAgICAgICAgICAgICAgIHJl
dHVybiB0ZXh0Ow0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAvKioNCiAgICAgICAgICAg
ICAqIFNldHMgdGhlIHZhbHVlIG9mIHRoZSB0ZXh0IHByb3BlcnR5Lg0KICAgICAgICAgICAgICog
DQogICAgICAgICAgICAgKiBAcGFyYW0gdmFsdWUNCiAgICAgICAgICAgICAqICAgICBhbGxvd2Vk
IG9iamVjdCBpcw0KICAgICAgICAgICAgICogICAgIHtAbGluayBTdHJpbmcgfQ0KICAgICAgICAg
ICAgICogICAgIA0KICAgICAgICAgICAgICovDQogICAgICAgICAgICBwdWJsaWMgdm9pZCBzZXRU
ZXh0KFN0cmluZyB2YWx1ZSkgew0KICAgICAgICAgICAgICAgIHRoaXMudGV4dCA9IHZhbHVlOw0K
ICAgICAgICAgICAgfQ0KDQogICAgICAgIH0NCg0KICAgIH0NCg0KfQ0K

------_=_NextPart_001_01CAB930.0C44FECC
Content-Type: application/octet-stream;
	name="SearchManager.java"
Content-Transfer-Encoding: base64
Content-Description: SearchManager.java
Content-Disposition: attachment;
	filename="SearchManager.java"

cGFja2FnZSBvcmcuYmVhZ2xlLnhtbDsNCg0KaW1wb3J0IGphdmEuaW8uQnVmZmVyZWRSZWFkZXI7
DQppbXBvcnQgamF2YS5pby5CeXRlQXJyYXlJbnB1dFN0cmVhbTsNCmltcG9ydCBqYXZhLmlvLklP
RXhjZXB0aW9uOw0KaW1wb3J0IGphdmEuaW8uSW5wdXRTdHJlYW1SZWFkZXI7DQppbXBvcnQgamF2
YS5pby5PdXRwdXRTdHJlYW1Xcml0ZXI7DQppbXBvcnQgamF2YS5pby5VbnN1cHBvcnRlZEVuY29k
aW5nRXhjZXB0aW9uOw0KaW1wb3J0IGphdmEubmV0Lk1hbGZvcm1lZFVSTEV4Y2VwdGlvbjsNCmlt
cG9ydCBqYXZhLm5ldC5VUkw7DQppbXBvcnQgamF2YS5uZXQuVVJMQ29ubmVjdGlvbjsNCmltcG9y
dCBqYXZhLnV0aWwuQXJyYXlMaXN0Ow0KaW1wb3J0IGphdmEudXRpbC5MaXN0Ow0KDQppbXBvcnQg
amF2YXgueG1sLmJpbmQuSkFYQkNvbnRleHQ7DQppbXBvcnQgamF2YXgueG1sLmJpbmQuSkFYQkV4
Y2VwdGlvbjsNCmltcG9ydCBqYXZheC54bWwuYmluZC5Vbm1hcnNoYWxsZXI7DQoNCg0KcHVibGlj
IGNsYXNzIFNlYXJjaE1hbmFnZXIgew0KDQoJc3RhdGljIHByaXZhdGUgU2VhcmNoTWFuYWdlciBv
dXJJbnN0YW5jZTsNCg0KCXB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEJFQUdMRV9IT1NUX05B
TUUgPSAiYmVhZ2xlIjsNCglwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBCRUFHTEVfUE9SVCA9
ICI0MDAwIjsNCgkNCgkNCglwdWJsaWMgc3RhdGljIHN5bmNocm9uaXplZCBTZWFyY2hNYW5hZ2Vy
IGdldEluc3RhbmNlKCkgew0KCQlpZihvdXJJbnN0YW5jZT09bnVsbCkNCgkJCW91ckluc3RhbmNl
ID0gbmV3IFNlYXJjaE1hbmFnZXIoKTsNCgkJDQoJCXJldHVybiBvdXJJbnN0YW5jZTsNCgl9DQoJ
DQoJcHVibGljIExpc3Q8SGl0PiBzZWFyY2goU3RyaW5nIHF1ZXJ5KSB7DQoJCXJldHVybiBwYXJz
ZVJlc3BvbnNlKHNlYXJjaFJlcXVlc3QocXVlcnkpKTsNCgl9DQoJDQoJcHJvdGVjdGVkIFN0cmlu
Z1tdIHNlYXJjaFJlcXVlc3QoU3RyaW5nIHF1ZXJ5KSB7DQoJCWludCBNYXhSZXN1bHRzUGVyQmFj
a2VuZCA9IDMwOw0KCQlTdHJpbmcgcmVxX3N0cmluZyA9ICI8P3htbCB2ZXJzaW9uPVwiMS4wXCIg
ZW5jb2Rpbmc9XCJ1dGYtOFwiPz4gPFJlcXVlc3RXcmFwcGVyIHhtbG5zOnhzaT1cImh0dHA6Ly93
d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlXCIgeG1sbnM6eHNkPVwiaHR0cDovL3d3
dy53My5vcmcvMjAwMS9YTUxTY2hlbWFcIj4gPE1lc3NhZ2UgeHNpOnR5cGU9XCJRdWVyeVwiPiA8
SXNJbmRleExpc3RlbmVyPmZhbHNlPC9Jc0luZGV4TGlzdGVuZXI+IDxQYXJ0cz4gPFBhcnQgeHNp
OnR5cGU9XCJRdWVyeVBhcnRfSHVtYW5cIj4gPExvZ2ljPlJlcXVpcmVkPC9Mb2dpYz4gPFF1ZXJ5
U3RyaW5nPiIgKyBxdWVyeSArICI8L1F1ZXJ5U3RyaW5nPiA8L1BhcnQ+IDwvUGFydHM+IDxRdWVy
eURvbWFpbj5Mb2NhbCBTeXN0ZW08L1F1ZXJ5RG9tYWluPiA8TWF4SGl0cz4iICsgTWF4UmVzdWx0
c1BlckJhY2tlbmQgKyAiPC9NYXhIaXRzPiA8L01lc3NhZ2U+IDwvUmVxdWVzdFdyYXBwZXI+IjsN
Cg0KCQlTdHJpbmcgcmVzcD0iIjsNCgkJdHJ5IHsNCgkJCVVSTCBiZWFnbGVVcmwgPSBuZXcgVVJM
KCJodHRwOi8vIitCRUFHTEVfSE9TVF9OQU1FKyI6IitCRUFHTEVfUE9SVCsiLyIpOw0KCQkJVVJM
Q29ubmVjdGlvbiBiZWFnbGVDb25uID0gYmVhZ2xlVXJsLm9wZW5Db25uZWN0aW9uKCk7DQoJCQkN
CgkJCWJlYWdsZUNvbm4uc2V0RG9PdXRwdXQodHJ1ZSk7DQoNCgkJCU91dHB1dFN0cmVhbVdyaXRl
ciBvdXQgPSBuZXcgT3V0cHV0U3RyZWFtV3JpdGVyKA0KCQkJCQliZWFnbGVDb25uLmdldE91dHB1
dFN0cmVhbSgpKTsNCgkJCW91dC53cml0ZShyZXFfc3RyaW5nKTsNCgkJCW91dC5jbG9zZSgpOw0K
DQoJCQkNCgkJCUJ1ZmZlcmVkUmVhZGVyIGluID0gbmV3IEJ1ZmZlcmVkUmVhZGVyKA0KCQkJICAg
ICAgICBuZXcgSW5wdXRTdHJlYW1SZWFkZXIoDQoJCQkgICAgICAgIGJlYWdsZUNvbm4uZ2V0SW5w
dXRTdHJlYW0oKSkpOw0KCQkJU3RyaW5nIGlucHV0TGluZTsNCg0KCQkJDQoJCQl3aGlsZSAoKGlu
cHV0TGluZSA9IGluLnJlYWRMaW5lKCkpICE9IG51bGwpIHsgDQoJCQkJcmVzcCs9aW5wdXRMaW5l
Ow0KCQkJfQ0KCQkJaW4uY2xvc2UoKTsNCgkJCQ0KDQoJCX0gY2F0Y2ggKE1hbGZvcm1lZFVSTEV4
Y2VwdGlvbiBlKSB7DQoJCQkvLyBUT0RPIEF1dG8tZ2VuZXJhdGVkIGNhdGNoIGJsb2NrDQoJCQll
LnByaW50U3RhY2tUcmFjZSgpOw0KCQl9IGNhdGNoIChJT0V4Y2VwdGlvbiBlKSB7DQoJCQkvLyBU
T0RPIEF1dG8tZ2VuZXJhdGVkIGNhdGNoIGJsb2NrDQoJCQllLnByaW50U3RhY2tUcmFjZSgpOw0K
CQl9DQoNCgkJU3RyaW5nW10gcmVzcG9uc2VzID0gcmVzcC5zcGxpdCgi/++7vyIpOw0KCQlyZXR1
cm4gcmVzcG9uc2VzOw0KCX0NCgkNCglwcm90ZWN0ZWQgTGlzdDxIaXQ+IHBhcnNlUmVzcG9uc2Uo
U3RyaW5nW10gcmVzcG9uc2VzKSB7DQoJCUxpc3Q8SGl0PiBoaXRzPW5ldyBBcnJheUxpc3Q8SGl0
PigpOw0KCQkNCgkJdHJ5IHsNCg0KCQkJZm9yIChTdHJpbmcgcmVzcG9uc2UgOiByZXNwb25zZXMp
IHsNCgkJCQkNCgkJCQlyZXNwb25zZSA9IHJlc3BvbnNlLnJlcGxhY2UoIu+7vyIsICIiKTsNCgkJ
CQlyZXNwb25zZSA9IHJlc3BvbnNlLnJlcGxhY2UoIv8iLCAiIik7DQoNCgkJCQkNCgkJCQlKQVhC
Q29udGV4dCBqYyA9IEpBWEJDb250ZXh0Lm5ld0luc3RhbmNlKFJlc3BvbnNlV3JhcHBlci5jbGFz
cyk7DQoJCQkJVW5tYXJzaGFsbGVyIHVubWFyc2hhbGxlciA9IGpjLmNyZWF0ZVVubWFyc2hhbGxl
cigpOw0KCQkJCVJlc3BvbnNlV3JhcHBlciB1UmVzcCA9IChSZXNwb25zZVdyYXBwZXIpdW5tYXJz
aGFsbGVyLnVubWFyc2hhbChuZXcgQnl0ZUFycmF5SW5wdXRTdHJlYW0ocmVzcG9uc2UuZ2V0Qnl0
ZXMoIlVURi04IikpKTsJDQoJCQkJDQoJCQkJaWYodVJlc3AuZ2V0TWVzc2FnZSgpICE9IG51bGwp
DQoJCQkJCWlmKHVSZXNwLmdldE1lc3NhZ2UoKS5nZXRIaXRzKCkgIT1udWxsKQ0KCQkJCQkJaGl0
cy5hZGRBbGwodVJlc3AuZ2V0TWVzc2FnZSgpLmdldEhpdHMoKS5nZXRIaXQoKSk7DQoJCQkNCgkJ
CX0NCg0KCQl9IGNhdGNoIChVbnN1cHBvcnRlZEVuY29kaW5nRXhjZXB0aW9uIGUpIHsNCgkJCS8v
IFRPRE8gQXV0by1nZW5lcmF0ZWQgY2F0Y2ggYmxvY2sNCgkJCWUucHJpbnRTdGFja1RyYWNlKCk7
DQoJCX0gY2F0Y2ggKEpBWEJFeGNlcHRpb24gZSkgew0KCQkJLy8gVE9ETyBBdXRvLWdlbmVyYXRl
ZCBjYXRjaCBibG9jaw0KCQkJZS5wcmludFN0YWNrVHJhY2UoKTsNCgkJfQ0KDQoJCXJldHVybiBo
aXRzOw0KCX0NCgkNCgkNCgkNCglwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdz
KSB7DQoJCVNlYXJjaE1hbmFnZXIgc2VhcmNoID0gbmV3IFNlYXJjaE1hbmFnZXIoKTsNCgkJTGlz
dDxIaXQ+IGhpdHMgPSBuZXcgU2VhcmNoTWFuYWdlcigpLnNlYXJjaCgidGVzdCIpOw0KCQkNCgkJ
Zm9yIChIaXQgaGl0IDogaGl0cykgew0KCQkJU3lzdGVtLm91dC5wcmludGxuKGhpdC5nZXRVcmko
KSk7DQoJCX0NCg0KCQ0KCQ0KCX0NCg0KfQ0K

------_=_NextPart_001_01CAB930.0C44FECC
Content-Type: application/octet-stream;
	name="beagleResponse.xsd"
Content-Transfer-Encoding: base64
Content-Description: beagleResponse.xsd
Content-Disposition: attachment;
	filename="beagleResponse.xsd"

PD94bWwgdmVyc2lvbj0iMS4wIj8+DQo8IS0tIEdlbmVyYXRlZCB1c2luZyBGbGFtZS1XYXJlIFNv
bHV0aW9ucyBYTUwtMi1YU0QgdjIuMCBhdCBodHRwOi8vd3d3LmZsYW1lLXdhcmUuY29tL1Byb2R1
Y3RzL1hNTC0yLVhTRC8gLS0+DQo8eHM6c2NoZW1hIHhtbG5zPSIiIHhtbG5zOnhzPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6bXNkYXRhPSJ1cm46c2NoZW1hcy1taWNy
b3NvZnQtY29tOnhtbC1tc2RhdGEiIGlkPSJSZXNwb25zZVdyYXBwZXIiPg0KCTx4czplbGVtZW50
IG5hbWU9IlJlc3BvbnNlV3JhcHBlciIgbXNkYXRhOklzRGF0YVNldD0idHJ1ZSIgbXNkYXRhOlVz
ZUN1cnJlbnRMb2NhbGU9InRydWUiPg0KCQk8eHM6Y29tcGxleFR5cGU+DQoJCQk8eHM6c2VxdWVu
Y2U+DQoJCQkJPHhzOmVsZW1lbnQgbmFtZT0iTWVzc2FnZSI+DQoJCQkJCTx4czpjb21wbGV4VHlw
ZT4NCgkJCQkJCTx4czpzZXF1ZW5jZT4NCgkJCQkJCQk8eHM6ZWxlbWVudCBuYW1lPSJOdW1NYXRj
aGVzIiB0eXBlPSJ4czpzdHJpbmciIG1pbk9jY3Vycz0iMCIvPg0KCQkJCQkJCTx4czplbGVtZW50
IG5hbWU9IkhpdHMiIG1pbk9jY3Vycz0iMCI+DQoJCQkJCQkJCTx4czpjb21wbGV4VHlwZT4NCgkJ
CQkJCQkJCTx4czpzZXF1ZW5jZT4NCgkJCQkJCQkJCQk8eHM6ZWxlbWVudCBuYW1lPSJIaXQiIG1p
bk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPg0KCQkJCQkJCQkJCQk8eHM6Y29tcGxl
eFR5cGU+DQoJCQkJCQkJCQkJCQk8eHM6c2VxdWVuY2U+DQoJCQkJCQkJCQkJCQkJPHhzOmVsZW1l
bnQgbmFtZT0iUHJvcGVydGllcyI+DQoJCQkJCQkJCQkJCQkJCTx4czpjb21wbGV4VHlwZT4NCgkJ
CQkJCQkJCQkJCQkJCTx4czpzZXF1ZW5jZT4NCgkJCQkJCQkJCQkJCQkJCQk8eHM6ZWxlbWVudCBu
YW1lPSJQcm9wZXJ0eSIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCI+DQoJCQkJ
CQkJCQkJCQkJCQkJCTx4czpjb21wbGV4VHlwZT4NCgkJCQkJCQkJCQkJCQkJCQkJCTx4czphdHRy
aWJ1dGUgbmFtZT0iVHlwZSIgdHlwZT0ieHM6c3RyaW5nIi8+DQoJCQkJCQkJCQkJCQkJCQkJCQk8
eHM6YXR0cmlidXRlIG5hbWU9IktleSIgdHlwZT0ieHM6c3RyaW5nIi8+DQoJCQkJCQkJCQkJCQkJ
CQkJCQk8eHM6YXR0cmlidXRlIG5hbWU9IlZhbHVlIiB0eXBlPSJ4czpzdHJpbmciLz4NCgkJCQkJ
CQkJCQkJCQkJCQkJCTx4czphdHRyaWJ1dGUgbmFtZT0iSXNTZWFyY2hlZCIgdHlwZT0ieHM6c3Ry
aW5nIi8+DQoJCQkJCQkJCQkJCQkJCQkJCQk8eHM6YXR0cmlidXRlIG5hbWU9IklzTXV0YWJsZSIg
dHlwZT0ieHM6c3RyaW5nIi8+DQoJCQkJCQkJCQkJCQkJCQkJCQk8eHM6YXR0cmlidXRlIG5hbWU9
IklzU3RvcmVkIiB0eXBlPSJ4czpzdHJpbmciLz4NCgkJCQkJCQkJCQkJCQkJCQkJCTx4czphdHRy
aWJ1dGUgbmFtZT0iSXNQZXJzaXN0ZW50IiB0eXBlPSJ4czpzdHJpbmciLz4NCgkJCQkJCQkJCQkJ
CQkJCQkJPC94czpjb21wbGV4VHlwZT4NCgkJCQkJCQkJCQkJCQkJCQk8L3hzOmVsZW1lbnQ+DQoJ
CQkJCQkJCQkJCQkJCQk8L3hzOnNlcXVlbmNlPg0KCQkJCQkJCQkJCQkJCQk8L3hzOmNvbXBsZXhU
eXBlPg0KCQkJCQkJCQkJCQkJCTwveHM6ZWxlbWVudD4NCgkJCQkJCQkJCQkJCTwveHM6c2VxdWVu
Y2U+DQoJCQkJCQkJCQkJCQk8eHM6YXR0cmlidXRlIG5hbWU9IlRpbWVzdGFtcCIgdHlwZT0ieHM6
c3RyaW5nIi8+DQoJCQkJCQkJCQkJCQk8eHM6YXR0cmlidXRlIG5hbWU9IlVyaSIgdHlwZT0ieHM6
c3RyaW5nIi8+DQoJCQkJCQkJCQkJCQk8eHM6YXR0cmlidXRlIG5hbWU9IlNjb3JlIiB0eXBlPSJ4
czpzdHJpbmciLz4NCgkJCQkJCQkJCQkJPC94czpjb21wbGV4VHlwZT4NCgkJCQkJCQkJCQk8L3hz
OmVsZW1lbnQ+DQoJCQkJCQkJCQk8L3hzOnNlcXVlbmNlPg0KCQkJCQkJCQk8L3hzOmNvbXBsZXhU
eXBlPg0KCQkJCQkJCTwveHM6ZWxlbWVudD4NCgkJCQkJCQk8eHM6ZWxlbWVudCBuYW1lPSJFeGFj
dCIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCI+DQoJCQkJCQkJCTx4czpjb21w
bGV4VHlwZT4NCgkJCQkJCQkJCTx4czpzZXF1ZW5jZT4NCgkJCQkJCQkJCQk8eHM6ZWxlbWVudCBu
YW1lPSJUZXh0IiB0eXBlPSJ4czpzdHJpbmciIG1pbk9jY3Vycz0iMCIvPg0KCQkJCQkJCQkJPC94
czpzZXF1ZW5jZT4NCgkJCQkJCQkJPC94czpjb21wbGV4VHlwZT4NCgkJCQkJCQk8L3hzOmVsZW1l
bnQ+DQoJCQkJCQkJPHhzOmVsZW1lbnQgbmFtZT0iU3RlbW1lZCIgbWluT2NjdXJzPSIwIiBtYXhP
Y2N1cnM9InVuYm91bmRlZCI+DQoJCQkJCQkJCTx4czpjb21wbGV4VHlwZT4NCgkJCQkJCQkJCTx4
czpzZXF1ZW5jZT4NCgkJCQkJCQkJCQk8eHM6ZWxlbWVudCBuYW1lPSJUZXh0IiB0eXBlPSJ4czpz
dHJpbmciIG1pbk9jY3Vycz0iMCIvPg0KCQkJCQkJCQkJPC94czpzZXF1ZW5jZT4NCgkJCQkJCQkJ
PC94czpjb21wbGV4VHlwZT4NCgkJCQkJCQk8L3hzOmVsZW1lbnQ+DQoJCQkJCQk8L3hzOnNlcXVl
bmNlPg0KCQkJCQk8L3hzOmNvbXBsZXhUeXBlPg0KCQkJCTwveHM6ZWxlbWVudD4NCgkJCTwveHM6
c2VxdWVuY2U+DQoJCTwveHM6Y29tcGxleFR5cGU+DQo8IS0tCQk8eHM6a2V5IG5hbWU9IktleVRl
c3QiPg0KCQkJPHhzOnNlbGVjdG9yIHhwYXRoPSJNZXNzYWdlL0hpdHMvSGl0L1Byb3BlcnRpZXMv
UHJvcGVydHkiLz4NCgkJCTx4czpmaWVsZCB4cGF0aD0iQGtleSIvPg0KCQk8L3hzOmtleT4gLS0+
DQoJPC94czplbGVtZW50Pg0KPC94czpzY2hlbWE+DQo=

------_=_NextPart_001_01CAB930.0C44FECC
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
Dashboard-hackers mailing list
[email protected]
http://mail.gnome.org/mailman/listinfo/dashboard-hackers

------_=_NextPart_001_01CAB930.0C44FECC--