Re: [jgroups-users] How to hijack a JGroups channel inside Infinispan ... (and get away with it !)

Questions/problems related to using JGroups <[email protected]> Tue, 14 Jan 2020 15:45:07 +0100
Newsgroups gmane.comp.java.javagroups.general
Message-ID <mailman.1563.1579013130.1535.javagroups-users@lists.sourceforge.net>
--000000000000123ff2059c1aa44d
Content-Type: multipart/alternative; boundary="000000000000123ff0059c1aa44b"

--000000000000123ff0059c1aa44b
Content-Type: text/plain; charset="UTF-8"

Not missing any ctors, I am happy with JChannel(InputStream) it makes more
sense than URL.

Infinispan 9.4.16 to 10.1.0.Final.

I rewrote the bootstrap as you suggested but the fork channel is still
logging the same warn message.

2020-01-14T15:43:06,077 WARN  [jgroups-5,proxy-service-1-4894]
(org.jgroups.protocols.FORK) null: fork-channel for id=lead-hijacker not
found; discarding message []
2020-01-14T15:43:15,416 WARN  [jgroups-11,proxy-service-1-4894]
(org.jgroups.protocols.FORK) null: fork-channel for id=lead-hijacker not
found; discarding message []
2020-01-14T15:43:15,446 WARN  [jgroups-11,proxy-service-1-4894]
(org.jgroups.protocols.FORK) null: fork-channel for id=lead-hijacker not
found; discarding message []
2020-01-14T15:43:15,466 WARN  [jgroups-11,proxy-service-1-4894]
(org.jgroups.protocols.FORK) null: fork-channel for id=lead-hijacker not
found; discarding message []
2020-01-14T15:43:15,491 WARN  [jgroups-11,proxy-service-1-4894]
(org.jgroups.protocols.FORK) null: fork-channel for id=lead-hijacker not
found; discarding message []
2020-01-14T15:43:15,512 WARN  [jgroups-11,proxy-service-1-4894]
(org.jgroups.protocols.FORK) null: fork-channel for id=lead-hijacker not
found; discarding message []
2020-01-14T15:43:16,081 WARN  [jgroups-11,proxy-service-1-4894]
(org.jgroups.protocols.FORK) null: fork-channel for id=lead-hijacker not
found; discarding message []
2020-01-14T15:43:26,079 WARN  [jgroups-16,proxy-service-1-4894]
(org.jgroups.protocols.FORK) null: fork-channel for id=lead-hijacker not
found; discarding message []
2020-01-14T15:43:36,080 WARN  [jgroups-17,proxy-service-1-4894]
(org.jgroups.protocols.FORK) null: fork-channel for id=lead-hijacker not
found; discarding message []

I will reserve some time later this afternoon to put together a small
reproducer.

On Tue, Jan 14, 2020 at 1:17 PM Questions/problems related to using JGroups
<[email protected]> wrote:

> Why do you create your own base channel? You should fetch the existing
> JChannel from Infinispan and create a ForkChannel over it.
> Which ctor are you missing? new JChannel(InputStream) still exists!
> Cheers,
>
> On 13.01.20 16:37, Questions/problems related to using JGroups wrote:
> > Hey all,
> >
> > So I recently upgraded to Infinispan 10.1.0.Final and it came with a few
> > surprises with the JGroups update, a few of the constructors in JChannel
> > are no longer available - it was fast to replace this with
> > org.jgroups.conf.XmlConfigurator , however, the hijacked channel on the
> > other hand seems to be broken / non functional (see logs below).. before
> > digging into the Infinispan Jgroups bootstrap code too far I thought it
> > might be worth reaching out here just in case someone has already run
> > into this problem.
> >
> > 2020-01-13T16:11:15,444 WARN  [jgroups-6,space-service-1]
> > (org.jgroups.protocols.FORK) space-service-1: fork-channel for
> > id=lead-hijacker not found; discarding message []
> > 2020-01-13T16:11:15,466 WARN  [jgroups-6,space-service-1]
> > (org.jgroups.protocols.FORK) space-service-1: fork-channel for
> > id=lead-hijacker not found; discarding message []
> > 2020-01-13T16:11:15,490 WARN  [jgroups-6,space-service-1]
> > (org.jgroups.protocols.FORK) space-service-1: fork-channel for
> > id=lead-hijacker not found; discarding message []
> > 2020-01-13T16:11:15,512 WARN  [jgroups-6,space-service-1]
> > (org.jgroups.protocols.FORK) space-service-1: fork-channel for
> > id=lead-hijacker not found; discarding message []
> > 2020-01-13T16:11:15,917 WARN  [jgroups-6,space-service-1]
> > (org.jgroups.protocols.FORK) space-service-1: fork-channel for
> > id=lead-hijacker not found; discarding message []
> >
> > Cheers,
> >
> > --
> > Johno Crawford
> >
> >
> > _______________________________________________
> > javagroups-users mailing list
> > [email protected]
> > https://lists.sourceforge.net/lists/listinfo/javagroups-users
> >
>
> --
> Bela Ban | http://www.jgroups.org
>
>
>
> _______________________________________________
> javagroups-users mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/javagroups-users
>


-- 
Johno Crawford

--000000000000123ff0059c1aa44b
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr">Not missing any ctors, I am happy with JChannel(InputStrea=
m) it makes more sense than URL.<div><br></div><div>Infinispan 9.4.16 to=C2=
=A010.1.0.Final.</div><div><br></div><div>I rewrote the bootstrap as you su=
ggested but the fork channel is still logging the same warn message.</div><=
div><br></div><div>2020-01-14T15:43:06,077 WARN =C2=A0[jgroups-5,proxy-serv=
ice-1-4894] (org.jgroups.protocols.FORK) null: fork-channel for id=3Dlead-h=
ijacker not found; discarding message []<br>2020-01-14T15:43:15,416 WARN =
=C2=A0[jgroups-11,proxy-service-1-4894] (org.jgroups.protocols.FORK) null: =
fork-channel for id=3Dlead-hijacker not found; discarding message []<br>202=
0-01-14T15:43:15,446 WARN =C2=A0[jgroups-11,proxy-service-1-4894] (org.jgro=
ups.protocols.FORK) null: fork-channel for id=3Dlead-hijacker not found; di=
scarding message []<br>2020-01-14T15:43:15,466 WARN =C2=A0[jgroups-11,proxy=
-service-1-4894] (org.jgroups.protocols.FORK) null: fork-channel for id=3Dl=
ead-hijacker not found; discarding message []<br>2020-01-14T15:43:15,491 WA=
RN =C2=A0[jgroups-11,proxy-service-1-4894] (org.jgroups.protocols.FORK) nul=
l: fork-channel for id=3Dlead-hijacker not found; discarding message []<br>=
2020-01-14T15:43:15,512 WARN =C2=A0[jgroups-11,proxy-service-1-4894] (org.j=
groups.protocols.FORK) null: fork-channel for id=3Dlead-hijacker not found;=
 discarding message []<br>2020-01-14T15:43:16,081 WARN =C2=A0[jgroups-11,pr=
oxy-service-1-4894] (org.jgroups.protocols.FORK) null: fork-channel for id=
=3Dlead-hijacker not found; discarding message []<br>2020-01-14T15:43:26,07=
9 WARN =C2=A0[jgroups-16,proxy-service-1-4894] (org.jgroups.protocols.FORK)=
 null: fork-channel for id=3Dlead-hijacker not found; discarding message []=
<br>2020-01-14T15:43:36,080 WARN =C2=A0[jgroups-17,proxy-service-1-4894] (o=
rg.jgroups.protocols.FORK) null: fork-channel for id=3Dlead-hijacker not fo=
und; discarding message []<br></div><div><br></div><div>I will reserve some=
 time later this afternoon to put together a small reproducer.</div></div><=
br><div class=3D"gmail_quote"><div dir=3D"ltr" class=3D"gmail_attr">On Tue,=
 Jan 14, 2020 at 1:17 PM Questions/problems related to using JGroups &lt;<a=
 href=3D"mailto:[email protected]">javagroups-users@li=
sts.sourceforge.net</a>&gt; wrote:<br></div><blockquote class=3D"gmail_quot=
e" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204)=
;padding-left:1ex">Why do you create your own base channel? You should fetc=
h the existing <br>
JChannel from Infinispan and create a ForkChannel over it.<br>
Which ctor are you missing? new JChannel(InputStream) still exists!<br>
Cheers,<br>
<br>
On 13.01.20 16:37, Questions/problems related to using JGroups wrote:<br>
&gt; Hey all,<br>
&gt; <br>
&gt; So I recently upgraded to Infinispan 10.1.0.Final and it came with a f=
ew <br>
&gt; surprises with the JGroups update, a few of the constructors in JChann=
el <br>
&gt; are no longer available - it was fast to replace this with <br>
&gt; org.jgroups.conf.XmlConfigurator , however, the hijacked channel on th=
e <br>
&gt; other hand seems to be broken / non functional (see logs below).. befo=
re <br>
&gt; digging into the Infinispan Jgroups bootstrap code too far I thought i=
t <br>
&gt; might be worth reaching out here just in case someone has already run =
<br>
&gt; into this problem.<br>
&gt; <br>
&gt; 2020-01-13T16:11:15,444 WARN =C2=A0[jgroups-6,space-service-1] <br>
&gt; (org.jgroups.protocols.FORK) space-service-1: fork-channel for <br>
&gt; id=3Dlead-hijacker not found; discarding message []<br>
&gt; 2020-01-13T16:11:15,466 WARN =C2=A0[jgroups-6,space-service-1] <br>
&gt; (org.jgroups.protocols.FORK) space-service-1: fork-channel for <br>
&gt; id=3Dlead-hijacker not found; discarding message []<br>
&gt; 2020-01-13T16:11:15,490 WARN =C2=A0[jgroups-6,space-service-1] <br>
&gt; (org.jgroups.protocols.FORK) space-service-1: fork-channel for <br>
&gt; id=3Dlead-hijacker not found; discarding message []<br>
&gt; 2020-01-13T16:11:15,512 WARN =C2=A0[jgroups-6,space-service-1] <br>
&gt; (org.jgroups.protocols.FORK) space-service-1: fork-channel for <br>
&gt; id=3Dlead-hijacker not found; discarding message []<br>
&gt; 2020-01-13T16:11:15,917 WARN =C2=A0[jgroups-6,space-service-1] <br>
&gt; (org.jgroups.protocols.FORK) space-service-1: fork-channel for <br>
&gt; id=3Dlead-hijacker not found; discarding message []<br>
&gt; <br>
&gt; Cheers,<br>
&gt; <br>
&gt; -- <br>
&gt; Johno Crawford<br>
&gt; <br>
&gt; <br>
&gt; _______________________________________________<br>
&gt; javagroups-users mailing list<br>
&gt; <a href=3D"mailto:[email protected]" target=3D"_b=
lank">[email protected]</a><br>
&gt; <a href=3D"https://lists.sourceforge.net/lists/listinfo/javagroups-use=
rs" rel=3D"noreferrer" target=3D"_blank">https://lists.sourceforge.net/list=
s/listinfo/javagroups-users</a><br>
&gt; <br>
<br>
-- <br>
Bela Ban | <a href=3D"http://www.jgroups.org" rel=3D"noreferrer" target=3D"=
_blank">http://www.jgroups.org</a><br>
<br>
<br>
<br>
_______________________________________________<br>
javagroups-users mailing list<br>
<a href=3D"mailto:[email protected]" target=3D"_blank"=
>[email protected]</a><br>
<a href=3D"https://lists.sourceforge.net/lists/listinfo/javagroups-users" r=
el=3D"noreferrer" target=3D"_blank">https://lists.sourceforge.net/lists/lis=
tinfo/javagroups-users</a><br>
</blockquote></div><br clear=3D"all"><div><br></div>-- <br><div dir=3D"ltr"=
 class=3D"gmail_signature">Johno Crawford</div>

--000000000000123ff0059c1aa44b--
--000000000000123ff2059c1aa44d
Content-Type: text/x-java; charset="US-ASCII"; name="JGroupsClusterPeer.java"
Content-Disposition: attachment; filename="JGroupsClusterPeer.java"
Content-Transfer-Encoding: base64
Content-ID: <f_k5dzlg320>
X-Attachment-Id: f_k5dzlg320

cGFja2FnZSBjb20uc3VsYWtlLmg0ay5jb21tb24ub3JiaXQuamdyb3VwczsKCmltcG9ydCBjbG91
ZC5vcmJpdC5hY3RvcnMuY2x1c3Rlci5EaXN0cmlidXRlZE1hcDsKaW1wb3J0IGNsb3VkLm9yYml0
LmFjdG9ycy5jbHVzdGVyLk1lc3NhZ2VMaXN0ZW5lcjsKaW1wb3J0IGNsb3VkLm9yYml0LmFjdG9y
cy5jbHVzdGVyLk5vZGVBZGRyZXNzOwppbXBvcnQgY2xvdWQub3JiaXQuYWN0b3JzLmNsdXN0ZXIu
Tm9kZUFkZHJlc3NJbXBsOwppbXBvcnQgY2xvdWQub3JiaXQuYWN0b3JzLmNsdXN0ZXIuVmlld0xp
c3RlbmVyOwppbXBvcnQgY2xvdWQub3JiaXQuYWN0b3JzLnJ1bnRpbWUuUmVtb3RlS2V5OwppbXBv
cnQgY2xvdWQub3JiaXQuY29uY3VycmVudC5UYXNrOwppbXBvcnQgY2xvdWQub3JiaXQuZXhjZXB0
aW9uLlVuY2hlY2tlZEV4Y2VwdGlvbjsKaW1wb3J0IGNvbS5zdWxha2UuY29tbW9uLnV0aWwuaW8u
SW9VdGlsczsKaW1wb3J0IGNvbS5zdWxha2UuaDRrLmNvbW1vbi51dGlsLlN0cmluZ3NVdGlsczsK
aW1wb3J0IG9yZy5pbmZpbmlzcGFuLkFkdmFuY2VkQ2FjaGU7CmltcG9ydCBvcmcuaW5maW5pc3Bh
bi5DYWNoZTsKaW1wb3J0IG9yZy5pbmZpbmlzcGFuLmNvbW1vbnMuY29uZmlndXJhdGlvbi5DbGFz
c1doaXRlTGlzdDsKaW1wb3J0IG9yZy5pbmZpbmlzcGFuLmNvbW1vbnMubWFyc2hhbGwuSmF2YVNl
cmlhbGl6YXRpb25NYXJzaGFsbGVyOwppbXBvcnQgb3JnLmluZmluaXNwYW4uY29uZmlndXJhdGlv
bi5jYWNoZS5DYWNoZU1vZGU7CmltcG9ydCBvcmcuaW5maW5pc3Bhbi5jb25maWd1cmF0aW9uLmNh
Y2hlLkNsdXN0ZXJpbmdDb25maWd1cmF0aW9uQnVpbGRlcjsKaW1wb3J0IG9yZy5pbmZpbmlzcGFu
LmNvbmZpZ3VyYXRpb24uY2FjaGUuQ29uZmlndXJhdGlvbkJ1aWxkZXI7CmltcG9ydCBvcmcuaW5m
aW5pc3Bhbi5jb25maWd1cmF0aW9uLmdsb2JhbC5HbG9iYWxDb25maWd1cmF0aW9uQnVpbGRlcjsK
aW1wb3J0IG9yZy5pbmZpbmlzcGFuLm1hbmFnZXIuRGVmYXVsdENhY2hlTWFuYWdlcjsKaW1wb3J0
IG9yZy5pbmZpbmlzcGFuLnJlbW90aW5nLnRyYW5zcG9ydC5qZ3JvdXBzLkpHcm91cHNUcmFuc3Bv
cnQ7CmltcG9ydCBvcmcuamdyb3Vwcy5BZGRyZXNzOwppbXBvcnQgb3JnLmpncm91cHMuTWVzc2Fn
ZTsKaW1wb3J0IG9yZy5qZ3JvdXBzLlJlY2VpdmVyQWRhcHRlcjsKaW1wb3J0IG9yZy5qZ3JvdXBz
LlZpZXc7CmltcG9ydCBvcmcuamdyb3Vwcy5mb3JrLkZvcmtDaGFubmVsOwppbXBvcnQgb3JnLmpn
cm91cHMuam14LkpteENvbmZpZ3VyYXRvcjsKaW1wb3J0IG9yZy5qZ3JvdXBzLnByb3RvY29scy5G
UkFHMjsKaW1wb3J0IG9yZy5qZ3JvdXBzLnByb3RvY29scy5GUkFHMzsKaW1wb3J0IG9yZy5qZ3Jv
dXBzLnN0YWNrLlByb3RvY29sOwppbXBvcnQgb3JnLmpncm91cHMuc3RhY2suUHJvdG9jb2xTdGFj
azsKaW1wb3J0IG9yZy5qZ3JvdXBzLnV0aWwuTWVzc2FnZUJhdGNoOwppbXBvcnQgb3JnLmpncm91
cHMudXRpbC5VVUlEOwppbXBvcnQgb3JnLnNsZjRqLkxvZ2dlcjsKaW1wb3J0IG9yZy5zbGY0ai5M
b2dnZXJGYWN0b3J5OwoKaW1wb3J0IGphdmEuaW8uSW5wdXRTdHJlYW07CmltcG9ydCBqYXZhLmxh
bmcubWFuYWdlbWVudC5NYW5hZ2VtZW50RmFjdG9yeTsKaW1wb3J0IGphdmEubmV0Lk1hbGZvcm1l
ZFVSTEV4Y2VwdGlvbjsKaW1wb3J0IGphdmEubmV0LlVSTDsKaW1wb3J0IGphdmEubmlvLmZpbGUu
UGF0aHM7CmltcG9ydCBqYXZhLnV0aWwuTWFwOwppbXBvcnQgamF2YS51dGlsLk9iamVjdHM7Cmlt
cG9ydCBqYXZhLnV0aWwuY29uY3VycmVudC5Db25jdXJyZW50SGFzaE1hcDsKaW1wb3J0IGphdmEu
dXRpbC5jb25jdXJyZW50LkV4ZWN1dG9yOwppbXBvcnQgamF2YS51dGlsLmNvbmN1cnJlbnQuRm9y
a0pvaW5UYXNrOwoKcHVibGljIGNsYXNzIEpHcm91cHNDbHVzdGVyUGVlciBpbXBsZW1lbnRzIEV4
dGVuZGVkQ2x1c3RlclBlZXIgewoKICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIExvZ2dlciBsb2dn
ZXIgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcihKR3JvdXBzQ2x1c3RlclBlZXIuY2xhc3MpOwoK
ICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBESVNUX0FTWU5DX0NPTkZJR1VSQVRJT05f
TkFNRSA9ICJkaXN0QXN5bmNDYWNoZSI7CgogICAgcHJpdmF0ZSBmaW5hbCBFeGVjdXRvciBleGVj
dXRvcjsKICAgIHByaXZhdGUgZmluYWwgYm9vbGVhbiB6ZXJvQ2FwYWNpdHlGYWN0b3I7CgogICAg
cHJpdmF0ZSBpbnQgcG9ydFJhbmdlTGVuZ3RoID0gMTAwMDsKICAgIHByaXZhdGUgVGFzazxBZGRy
ZXNzPiBzdGFydEZ1dHVyZTsKICAgIHByaXZhdGUgRm9ya0NoYW5uZWwgY2hhbm5lbDsKICAgIHBy
aXZhdGUgRGVmYXVsdENhY2hlTWFuYWdlciBjYWNoZU1hbmFnZXI7CiAgICBwcml2YXRlIE5vZGVJ
bmZvIGxvY2FsOwoKICAgIHByaXZhdGUgTm9kZUluZm8gbWFzdGVyOwogICAgcHJpdmF0ZSBmaW5h
bCBNYXA8QWRkcmVzcywgTm9kZUluZm8+IG5vZGVNYXAgPSBuZXcgQ29uY3VycmVudEhhc2hNYXA8
PigpOwogICAgcHJpdmF0ZSBmaW5hbCBNYXA8Tm9kZUFkZHJlc3MsIE5vZGVJbmZvPiBub2RlTWFw
MiA9IG5ldyBDb25jdXJyZW50SGFzaE1hcDw+KCk7CiAgICBwcml2YXRlIFZpZXdMaXN0ZW5lciB2
aWV3TGlzdGVuZXI7CiAgICBwcml2YXRlIE1lc3NhZ2VMaXN0ZW5lciBtZXNzYWdlTGlzdGVuZXI7
CgogICAgcHJpdmF0ZSBTdHJpbmcgamdyb3Vwc0NvbmZpZyA9ICJjbGFzc3BhdGg6L2NvbmYvdWRw
LWpncm91cHMueG1sIjsKCiAgICBwcml2YXRlIGJvb2xlYW4gbmFtZUJhc2VkVXBkUG9ydCA9IHRy
dWU7CgogICAgcHVibGljIEpHcm91cHNDbHVzdGVyUGVlcihmaW5hbCBTdHJpbmcgamdyb3Vwc0Nv
bmZpZywgZmluYWwgRXhlY3V0b3IgZXhlY3V0b3IsIGZpbmFsIGJvb2xlYW4gemVyb0NhcGFjaXR5
RmFjdG9yKSB7CiAgICAgICAgdGhpcy5leGVjdXRvciA9IGV4ZWN1dG9yOwogICAgICAgIHRoaXMu
amdyb3Vwc0NvbmZpZyA9IGpncm91cHNDb25maWc7CiAgICAgICAgdGhpcy56ZXJvQ2FwYWNpdHlG
YWN0b3IgPSB6ZXJvQ2FwYWNpdHlGYWN0b3I7CiAgICB9CgogICAgQE92ZXJyaWRlCiAgICBwdWJs
aWMgTm9kZUFkZHJlc3MgbG9jYWxBZGRyZXNzKCkgewogICAgICAgIHN5bmMoKTsKICAgICAgICBy
ZXR1cm4gbG9jYWwubm9kZUFkZHJlc3M7CiAgICB9CgogICAgQE92ZXJyaWRlCiAgICBwdWJsaWMg
dm9pZCByZWdpc3RlclZpZXdMaXN0ZW5lcihmaW5hbCBWaWV3TGlzdGVuZXIgdmlld0xpc3RlbmVy
KSB7CiAgICAgICAgdGhpcy52aWV3TGlzdGVuZXIgPSB2aWV3TGlzdGVuZXI7CiAgICB9CgogICAg
QE92ZXJyaWRlCiAgICBwdWJsaWMgdm9pZCByZWdpc3Rlck1lc3NhZ2VSZWNlaXZlcihmaW5hbCBN
ZXNzYWdlTGlzdGVuZXIgbWVzc2FnZUxpc3RlbmVyKSB7CiAgICAgICAgdGhpcy5tZXNzYWdlTGlz
dGVuZXIgPSBtZXNzYWdlTGlzdGVuZXI7CiAgICB9CgogICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwg
Y2xhc3MgTm9kZUluZm8gewogICAgICAgIHByaXZhdGUgZmluYWwgQWRkcmVzcyBhZGRyZXNzOwog
ICAgICAgIHByaXZhdGUgZmluYWwgTm9kZUFkZHJlc3Mgbm9kZUFkZHJlc3M7CgogICAgICAgIE5v
ZGVJbmZvKGZpbmFsIEFkZHJlc3MgYWRkcmVzcykgewogICAgICAgICAgICB0aGlzLmFkZHJlc3Mg
PSBhZGRyZXNzOwogICAgICAgICAgICBmaW5hbCBVVUlEIGpncm91cHNVVUlEID0gKFVVSUQpIGFk
ZHJlc3M7CiAgICAgICAgICAgIHRoaXMubm9kZUFkZHJlc3MgPSBuZXcgTm9kZUFkZHJlc3NJbXBs
KG5ldyBqYXZhLnV0aWwuVVVJRChqZ3JvdXBzVVVJRC5nZXRNb3N0U2lnbmlmaWNhbnRCaXRzKCks
IGpncm91cHNVVUlELmdldExlYXN0U2lnbmlmaWNhbnRCaXRzKCkpKTsKICAgICAgICB9CgogICAg
ICAgIEBPdmVycmlkZQogICAgICAgIHB1YmxpYyBib29sZWFuIGVxdWFscyhmaW5hbCBPYmplY3Qg
bykgewogICAgICAgICAgICBpZiAodGhpcyA9PSBvKSByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAg
aWYgKG8gPT0gbnVsbCB8fCBnZXRDbGFzcygpICE9IG8uZ2V0Q2xhc3MoKSkgcmV0dXJuIGZhbHNl
OwoKICAgICAgICAgICAgZmluYWwgTm9kZUluZm8gbm9kZUluZm8gPSAoTm9kZUluZm8pIG87Cgog
ICAgICAgICAgICByZXR1cm4gYWRkcmVzcy5lcXVhbHMobm9kZUluZm8uYWRkcmVzcyk7CiAgICAg
ICAgfQoKICAgICAgICBAT3ZlcnJpZGUKICAgICAgICBwdWJsaWMgaW50IGhhc2hDb2RlKCkgewog
ICAgICAgICAgICByZXR1cm4gYWRkcmVzcy5oYXNoQ29kZSgpOwogICAgICAgIH0KICAgIH0KCiAg
ICBAT3ZlcnJpZGUKICAgIHB1YmxpYyBUYXNrPD8+IGpvaW4oZmluYWwgU3RyaW5nIGNsdXN0ZXJO
YW1lLCBmaW5hbCBTdHJpbmcgbm9kZU5hbWUpIHsKICAgICAgICBzdGFydEZ1dHVyZSA9IG5ldyBU
YXNrPD4oKTsKICAgICAgICBmaW5hbCBGb3JrSm9pblRhc2s8Vm9pZD4gZiA9IEZvcmtKb2luVGFz
ay5hZGFwdCgoKSAtPgogICAgICAgIHsKICAgICAgICAgICAgZmluYWwgSW5wdXRTdHJlYW0gY29u
ZmlnSW5wdXRTdHJlYW0gPSBjb25maWdUb1VSTChnZXRKZ3JvdXBzQ29uZmlnKCkpLm9wZW5TdHJl
YW0oKTsKICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgIGlmIChTeXN0ZW0uZ2V0UHJv
cGVydHkoImphdmEubmV0LnByZWZlcklQdjRTdGFjayIsIG51bGwpID09IG51bGwpIHsKICAgICAg
ICAgICAgICAgICAgICBTeXN0ZW0uc2V0UHJvcGVydHkoImphdmEubmV0LnByZWZlcklQdjRTdGFj
ayIsICJ0cnVlIik7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgZmluYWwgR2xv
YmFsQ29uZmlndXJhdGlvbkJ1aWxkZXIgZ2xvYmFsQ29uZmlndXJhdGlvbkJ1aWxkZXIgPSBHbG9i
YWxDb25maWd1cmF0aW9uQnVpbGRlci5kZWZhdWx0Q2x1c3RlcmVkQnVpbGRlcigpOwogICAgICAg
ICAgICAgICAgaWYgKHplcm9DYXBhY2l0eUZhY3RvcikgewogICAgICAgICAgICAgICAgICAgIGds
b2JhbENvbmZpZ3VyYXRpb25CdWlsZGVyLnplcm9DYXBhY2l0eU5vZGUodHJ1ZSk7CiAgICAgICAg
ICAgICAgICB9CgogICAgICAgICAgICAgICAgQ2xhc3NXaGl0ZUxpc3QgY2xhc3NXaGl0ZUxpc3Qg
PSBuZXcgQ2xhc3NXaGl0ZUxpc3QoKTsKICAgICAgICAgICAgICAgIGNsYXNzV2hpdGVMaXN0LmFk
ZENsYXNzZXMoUmVtb3RlS2V5LmNsYXNzLCBOb2RlQWRkcmVzcy5jbGFzcyk7CiAgICAgICAgICAg
ICAgICBjbGFzc1doaXRlTGlzdC5hZGRSZWdleHBzKCJjb21cXC5zdWxha2VcXC4qIiwgImNsb3Vk
XFwub3JiaXRcXC4qIik7CiAgICAgICAgICAgICAgICBnbG9iYWxDb25maWd1cmF0aW9uQnVpbGRl
ci5jYWNoZUNvbnRhaW5lcigpLnNlcmlhbGl6YXRpb24oKS5tYXJzaGFsbGVyKG5ldyBKYXZhU2Vy
aWFsaXphdGlvbk1hcnNoYWxsZXIoY2xhc3NXaGl0ZUxpc3QpKTsKCiAgICAgICAgICAgICAgICBn
bG9iYWxDb25maWd1cmF0aW9uQnVpbGRlci5nbG9iYWxKbXhTdGF0aXN0aWNzKCkuYWxsb3dEdXBs
aWNhdGVEb21haW5zKHRydWUpOwogICAgICAgICAgICAgICAgZ2xvYmFsQ29uZmlndXJhdGlvbkJ1
aWxkZXIudHJhbnNwb3J0KCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLmNsdXN0ZXJOYW1lKGNsdXN0ZXJOYW1lKQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAubm9kZU5hbWUobm9kZU5hbWUpCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC5hZGRQcm9wZXJ0eShKR3JvdXBzVHJhbnNwb3J0LkNPTkZJR1VS
QVRJT05fWE1MLCBTdHJpbmdzVXRpbHMuY29udmVydElucHV0U3RyZWFtVG9TdHJpbmcoY29uZmln
SW5wdXRTdHJlYW0pKTsKCiAgICAgICAgICAgICAgICBDb25maWd1cmF0aW9uQnVpbGRlciBidWls
ZGVyID0gbmV3IENvbmZpZ3VyYXRpb25CdWlsZGVyKCk7CiAgICAgICAgICAgICAgICBDbHVzdGVy
aW5nQ29uZmlndXJhdGlvbkJ1aWxkZXIgY29uZmlndXJhdGlvbkJ1aWxkZXIgPSBidWlsZGVyLmNs
dXN0ZXJpbmcoKS5jYWNoZU1vZGUoQ2FjaGVNb2RlLkRJU1RfQVNZTkMpOwogICAgICAgICAgICAg
ICAgaWYgKHplcm9DYXBhY2l0eUZhY3RvcikgewogICAgICAgICAgICAgICAgICAgIGxvZ2dlci5p
bmZvKCJTZXR0aW5nIGNhcGFjaXR5IGZhY3RvciB0byB6ZXJvIik7CiAgICAgICAgICAgICAgICAg
ICAgY29uZmlndXJhdGlvbkJ1aWxkZXIuaGFzaCgpLmNhcGFjaXR5RmFjdG9yKDApOwogICAgICAg
ICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGNhY2hlTWFuYWdlciA9IG5ldyBEZWZhdWx0Q2Fj
aGVNYW5hZ2VyKGdsb2JhbENvbmZpZ3VyYXRpb25CdWlsZGVyLmRlZmF1bHRDYWNoZU5hbWUoRElT
VF9BU1lOQ19DT05GSUdVUkFUSU9OX05BTUUpLmJ1aWxkKCksIGJ1aWxkZXIuYnVpbGQoKSk7Cgog
ICAgICAgICAgICAgICAgaWYgKGNhY2hlTWFuYWdlci5nZXRUcmFuc3BvcnQoKSBpbnN0YW5jZW9m
IEpHcm91cHNUcmFuc3BvcnQpIHsKICAgICAgICAgICAgICAgICAgICBKR3JvdXBzVHJhbnNwb3J0
IGpHcm91cHNUcmFuc3BvcnQgPSAoSkdyb3Vwc1RyYW5zcG9ydCkgY2FjaGVNYW5hZ2VyLmdldFRy
YW5zcG9ydCgpOwoKICAgICAgICAgICAgICAgICAgICBQcm90b2NvbFN0YWNrIHN0YWNrID0gakdy
b3Vwc1RyYW5zcG9ydC5nZXRDaGFubmVsKCkuZ2V0UHJvdG9jb2xTdGFjaygpOwoKICAgICAgICAg
ICAgICAgICAgICBDbGFzczw/IGV4dGVuZHMgUHJvdG9jb2w+IG5laWdoYm9yUHJvdG9jb2wgPSBz
dGFjay5maW5kUHJvdG9jb2woRlJBRzIuY2xhc3MpICE9IG51bGwgPwogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRlJBRzIuY2xhc3MgOiBGUkFHMy5jbGFzczsKICAgICAgICAgICAgICAgICAg
ICBjaGFubmVsID0gbmV3IEZvcmtDaGFubmVsKGpHcm91cHNUcmFuc3BvcnQuZ2V0Q2hhbm5lbCgp
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImhpamFjay1z
dGFjayIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibGVh
ZC1oaWphY2tlciIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJv
dG9jb2xTdGFjay5Qb3NpdGlvbi5BQk9WRSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG5laWdoYm9yUHJvdG9jb2wpOwoKICAgICAgICAgICAgICAgICAgICBj
aGFubmVsLnNldFJlY2VpdmVyKG5ldyBSZWNlaXZlckFkYXB0ZXIoKSB7CgogICAgICAgICAgICAg
ICAgICAgICAgICBAT3ZlcnJpZGUKICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIHZvaWQg
dmlld0FjY2VwdGVkKGZpbmFsIFZpZXcgdmlldykgewogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZG9WaWV3QWNjZXB0ZWQodmlldyk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAg
ICAgICAgICAgICAgICAgICAgIEBPdmVycmlkZQogICAgICAgICAgICAgICAgICAgICAgICBwdWJs
aWMgdm9pZCByZWNlaXZlKGZpbmFsIE1lc3NhZ2VCYXRjaCBiYXRjaCkgewogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVGFzay5ydW5Bc3luYygoKSAtPiB7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZm9yIChNZXNzYWdlIG1lc3NhZ2UgOiBiYXRjaCkgewogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZG9SZWNlaXZlKG1lc3NhZ2UpOwogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB9IGNhdGNoIChUaHJvd2FibGUgZXgpIHsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGxvZ2dlci5lcnJvcigiRXJyb3IgcmVjZWl2aW5nIGJhdGNoZWQg
bWVzc2FnZSIsIGV4KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAg
IH0sIGV4ZWN1dG9yKS5leGNlcHRpb25hbGx5KChlKSAtPiB7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbG9nZ2VyLmVycm9yKCJFcnJvciByZWNlaXZpbmcgbWVzc2FnZSIsIGUpOwog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAg
ICAgICAgICAgICAgIEBPdmVycmlkZQogICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgdm9p
ZCByZWNlaXZlKGZpbmFsIE1lc3NhZ2UgbXNnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBUYXNrLnJ1bkFzeW5jKCgpIC0+IGRvUmVjZWl2ZShtc2cpLCBleGVjdXRvcikuZXhjZXB0aW9u
YWxseSgoZSkgLT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2dlci5lcnJv
cigiRXJyb3IgcmVjZWl2aW5nIG1lc3NhZ2UiLCBlKTsKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAg
ICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSk7CgogICAgICAgICAg
ICAgICAgICAgIEpteENvbmZpZ3VyYXRvci5yZWdpc3RlckNoYW5uZWwoakdyb3Vwc1RyYW5zcG9y
dC5nZXRDaGFubmVsKCksIE1hbmFnZW1lbnRGYWN0b3J5LmdldFBsYXRmb3JtTUJlYW5TZXJ2ZXIo
KSwgIm9yZy5qZ3JvdXBzIiwgY2x1c3Rlck5hbWUsIHRydWUpOwogICAgICAgICAgICAgICAgfQoK
ICAgICAgICAgICAgICAgIC8vIG5lZWQgdG8gZ2V0IGEgY2FjaGUsIGFueSBjYWNoZSB0byBmb3Jj
ZSB0aGUgaW5pdGlhbGl6YXRpb24KICAgICAgICAgICAgICAgIGNhY2hlTWFuYWdlci5nZXRDYWNo
ZSgiZGlzdHJpYnV0ZWREaXJlY3RvcnkiKTsKCiAgICAgICAgICAgICAgICBjaGFubmVsLmNvbm5l
Y3QoY2x1c3Rlck5hbWUpOwogICAgICAgICAgICAgICAgbG9jYWwgPSBuZXcgTm9kZUluZm8oY2hh
bm5lbC5nZXRBZGRyZXNzKCkpOwogICAgICAgICAgICAgICAgbG9nZ2VyLmluZm8oIlJlZ2lzdGVy
aW5nIHRoZSBsb2NhbCBhZGRyZXNzIik7CiAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbygiRG9u
ZSB3aXRoIEpHcm91cHMgaW5pdGlhbGl6YXRpb24iKTsKCiAgICAgICAgICAgICAgICBzdGFydEZ1
dHVyZS5jb21wbGV0ZShsb2NhbC5hZGRyZXNzKTsKICAgICAgICAgICAgfSBjYXRjaCAoZmluYWwg
RXhjZXB0aW9uIGUpIHsKICAgICAgICAgICAgICAgIGxvZ2dlci5lcnJvcigiRXJyb3IgZHVyaW5n
IEpHcm91cHMgaW5pdGlhbGl6YXRpb24iLCBlKTsKICAgICAgICAgICAgICAgIHN0YXJ0RnV0dXJl
LmNvbXBsZXRlRXhjZXB0aW9uYWxseShlKTsKICAgICAgICAgICAgfSBmaW5hbGx5IHsKICAgICAg
ICAgICAgICAgIElvVXRpbHMuc2lsZW50bHlDbG9zZShjb25maWdJbnB1dFN0cmVhbSk7CiAgICAg
ICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgfSk7CiAgICAgICAgZi5m
b3JrKCk7CiAgICAgICAgcmV0dXJuIHN0YXJ0RnV0dXJlOwogICAgfQoKICAgIHByaXZhdGUgVVJM
IGNvbmZpZ1RvVVJMKGZpbmFsIFN0cmluZyBqZ3JvdXBzQ29uZmlnKSB0aHJvd3MgTWFsZm9ybWVk
VVJMRXhjZXB0aW9uIHsKICAgICAgICBpZiAoamdyb3Vwc0NvbmZpZy5zdGFydHNXaXRoKCJjbGFz
c3BhdGg6IikpIHsKICAgICAgICAgICAgLy8gY2xhc3NwYXRoIHJlc291cmNlCiAgICAgICAgICAg
IGZpbmFsIFN0cmluZyByZXNvdXJjZVBhdGggPSBqZ3JvdXBzQ29uZmlnLnN1YnN0cmluZygiY2xh
c3NwYXRoOiIubGVuZ3RoKCkpOwogICAgICAgICAgICBmaW5hbCBVUkwgcmVzb3VyY2UgPSBnZXRD
bGFzcygpLmdldFJlc291cmNlKHJlc291cmNlUGF0aCk7CiAgICAgICAgICAgIGlmIChyZXNvdXJj
ZSA9PSBudWxsKSB7CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhj
ZXB0aW9uKCJDYW4ndCBmaW5kIGNsYXNzcGF0aCByZXNvdXJjZTogIiArIHJlc291cmNlUGF0aCk7
CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHJlc291cmNlOwogICAgICAgIH0KICAg
ICAgICBpZiAoIWpncm91cHNDb25maWcuY29udGFpbnMoIjoiKSkgewogICAgICAgICAgICAvLyBu
b3JtYWwgZmlsZQogICAgICAgICAgICByZXR1cm4gUGF0aHMuZ2V0KGpncm91cHNDb25maWcpLnRv
VXJpKCkudG9VUkwoKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIG5ldyBVUkwoamdyb3Vwc0Nv
bmZpZyk7CiAgICB9CgogICAgQE92ZXJyaWRlCiAgICBwdWJsaWMgdm9pZCBsZWF2ZSgpIHsKICAg
ICAgICBjaGFubmVsLmNsb3NlKCk7CiAgICAgICAgY2hhbm5lbCA9IG51bGw7CiAgICAgICAgY2Fj
aGVNYW5hZ2VyLnN0b3AoKTsKICAgIH0KCiAgICAvLyBlbnN1cmVzIHRoYXQgdGhlIGNoYW5uZWwg
aXMgY29ubmVjdGVkCiAgICBwcml2YXRlIHZvaWQgc3luYygpIHsKICAgICAgICBpZiAoc3RhcnRG
dXR1cmUgIT0gbnVsbCAmJiAhc3RhcnRGdXR1cmUuaXNEb25lKCkpIHsKICAgICAgICAgICAgc3Rh
cnRGdXR1cmUuam9pbigpOwogICAgICAgIH0KICAgIH0KCiAgICBwcml2YXRlIHZvaWQgZG9WaWV3
QWNjZXB0ZWQoZmluYWwgVmlldyB2aWV3KSB7CiAgICAgICAgZmluYWwgQ29uY3VycmVudEhhc2hN
YXA8QWRkcmVzcywgTm9kZUluZm8+IG5ld05vZGVzID0gbmV3IENvbmN1cnJlbnRIYXNoTWFwPD4o
dmlldy5zaXplKCkpOwogICAgICAgIGZpbmFsIENvbmN1cnJlbnRIYXNoTWFwPE5vZGVBZGRyZXNz
LCBOb2RlSW5mbz4gbmV3Tm9kZXMyID0gbmV3IENvbmN1cnJlbnRIYXNoTWFwPD4odmlldy5zaXpl
KCkpOwogICAgICAgIGZvciAoZmluYWwgQWRkcmVzcyBhIDogdmlldykgewogICAgICAgICAgICBO
b2RlSW5mbyBpbmZvID0gbm9kZU1hcC5nZXQoYSk7CiAgICAgICAgICAgIGlmIChpbmZvID09IG51
bGwpIHsKICAgICAgICAgICAgICAgIGluZm8gPSBuZXcgTm9kZUluZm8oYSk7CiAgICAgICAgICAg
IH0KICAgICAgICAgICAgbmV3Tm9kZXMucHV0KGEsIGluZm8pOwogICAgICAgICAgICBuZXdOb2Rl
czIucHV0KGluZm8ubm9kZUFkZHJlc3MsIGluZm8pOwogICAgICAgIH0KCiAgICAgICAgZmluYWwg
Tm9kZUluZm8gbmV3TWFzdGVyID0gbmV3Tm9kZXMudmFsdWVzKCkuaXRlcmF0b3IoKS5uZXh0KCk7
CgogICAgICAgIG5vZGVNYXAucHV0QWxsKG5ld05vZGVzKTsKICAgICAgICBub2RlTWFwLnZhbHVl
cygpLnJldGFpbkFsbChuZXdOb2Rlcy52YWx1ZXMoKSk7CiAgICAgICAgbm9kZU1hcDIucHV0QWxs
KG5ld05vZGVzMik7CiAgICAgICAgbm9kZU1hcDIudmFsdWVzKCkucmV0YWluQWxsKG5ld05vZGVz
Mi52YWx1ZXMoKSk7CgogICAgICAgIG1hc3RlciA9IG5ld01hc3RlcjsKICAgICAgICB2aWV3TGlz
dGVuZXIub25WaWV3Q2hhbmdlKG5vZGVNYXAyLmtleVNldCgpKTsKICAgIH0KCiAgICBAU3VwcHJl
c3NXYXJuaW5ncygiUE1ELkF2b2lkVGhyb3dpbmdOdWxsUG9pbnRlckV4Y2VwdGlvbiIpCiAgICBA
T3ZlcnJpZGUKICAgIHB1YmxpYyB2b2lkIHNlbmRNZXNzYWdlKE5vZGVBZGRyZXNzIGFkZHJlc3Ms
IGJ5dGUgbWVzc2FnZVtdKSB7CiAgICAgICAgZmluYWwgTm9kZUluZm8gbm9kZSA9IG5vZGVNYXAy
LmdldChPYmplY3RzLnJlcXVpcmVOb25OdWxsKGFkZHJlc3MsICJub2RlIGFkZHJlc3MiKSk7CiAg
ICAgICAgaWYgKG5vZGUgPT0gbnVsbCkgewogICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFy
Z3VtZW50RXhjZXB0aW9uKCJDbHVzdGVyIG5vZGUgbm90IGZvdW5kOiAiICsgYWRkcmVzcyk7CiAg
ICAgICAgfQogICAgICAgIHRyeSB7CiAgICAgICAgICAgIHRoaXMuY2hhbm5lbC5zZW5kKG5vZGUu
YWRkcmVzcywgbWVzc2FnZSk7CiAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKICAgICAg
ICAgICAgdGhyb3cgbmV3IFVuY2hlY2tlZEV4Y2VwdGlvbihlKTsKICAgICAgICB9CiAgICB9Cgog
ICAgQE92ZXJyaWRlCiAgICBwdWJsaWMgPEssIFY+IERpc3RyaWJ1dGVkTWFwPEssIFY+IGdldENh
Y2hlKGZpbmFsIFN0cmluZyBuYW1lKSB7CiAgICAgICAgcmV0dXJuIG5ldyBJbmZpbmlzcGFuRGlz
dHJpYnV0ZWRNYXA8PihjYWNoZU1hbmFnZXIuZ2V0Q2FjaGUobmFtZSkpOwogICAgfQoKICAgIEBP
dmVycmlkZQogICAgcHVibGljIDxLLCBWPiBBZHZhbmNlZENhY2hlPEssIFY+IGdldEFkdmFuY2Vk
Q2FjaGUoZmluYWwgU3RyaW5nIG5hbWUpIHsKICAgICAgICBDYWNoZTxLLCBWPiBjYWNoZSA9IGNh
Y2hlTWFuYWdlci5nZXRDYWNoZShuYW1lKTsKICAgICAgICByZXR1cm4gY2FjaGUuZ2V0QWR2YW5j
ZWRDYWNoZSgpOwogICAgfQoKICAgIHByaXZhdGUgdm9pZCBkb1JlY2VpdmUoZmluYWwgTWVzc2Fn
ZSBtc2cpIHsKICAgICAgICBmaW5hbCBOb2RlSW5mbyBub2RlSW5mbyA9IG5vZGVNYXAuZ2V0KG1z
Zy5nZXRTcmMoKSk7CiAgICAgICAgaWYgKG5vZGVJbmZvID09IG51bGwpIHsKICAgICAgICAgICAg
bG9nZ2VyLndhcm4oIlJlY2VpdmVkIG1lc3NhZ2UgZnJvbSBpbnZhbGlkIGFkZHJlc3Mge30iLCBt
c2cuZ2V0U3JjKCkpOwogICAgICAgICAgICBtZXNzYWdlTGlzdGVuZXIucmVjZWl2ZShuZXcgTm9k
ZUFkZHJlc3NJbXBsKG5ldyBqYXZhLnV0aWwuVVVJRCgoKFVVSUQpIG1zZy5nZXRTcmMoKSkuZ2V0
TW9zdFNpZ25pZmljYW50Qml0cygpLCAoKFVVSUQpIG1zZy5nZXRTcmMoKSkuZ2V0TGVhc3RTaWdu
aWZpY2FudEJpdHMoKSkpLCBtc2cuZ2V0QnVmZmVyKCkpOwogICAgICAgIH0gZWxzZSB7CiAgICAg
ICAgICAgIG1lc3NhZ2VMaXN0ZW5lci5yZWNlaXZlKG5vZGVJbmZvLm5vZGVBZGRyZXNzLCBtc2cu
Z2V0QnVmZmVyKCkpOwogICAgICAgIH0KICAgIH0KCiAgICBwdWJsaWMgTm9kZUFkZHJlc3MgZ2V0
TWFzdGVyKCkgewogICAgICAgIHJldHVybiBtYXN0ZXIgIT0gbnVsbCA/IG1hc3Rlci5ub2RlQWRk
cmVzcyA6IG51bGw7CiAgICB9CgogICAgcHVibGljIFN0cmluZyBnZXRKZ3JvdXBzQ29uZmlnKCkg
ewogICAgICAgIHJldHVybiBqZ3JvdXBzQ29uZmlnOwogICAgfQoKICAgIHB1YmxpYyB2b2lkIHNl
dEpncm91cHNDb25maWcoZmluYWwgU3RyaW5nIGpncm91cHNDb25maWcpIHsKICAgICAgICB0aGlz
Lmpncm91cHNDb25maWcgPSBqZ3JvdXBzQ29uZmlnOwogICAgfQoKICAgIHB1YmxpYyBib29sZWFu
IGlzTmFtZUJhc2VkVXBkUG9ydCgpIHsKICAgICAgICByZXR1cm4gbmFtZUJhc2VkVXBkUG9ydDsK
ICAgIH0KCiAgICBwdWJsaWMgdm9pZCBzZXROYW1lQmFzZWRVcGRQb3J0KGZpbmFsIGJvb2xlYW4g
bmFtZUJhc2VkVXBkUG9ydCkgewogICAgICAgIHRoaXMubmFtZUJhc2VkVXBkUG9ydCA9IG5hbWVC
YXNlZFVwZFBvcnQ7CiAgICB9CgogICAgcHVibGljIGludCBnZXRQb3J0UmFuZ2VMZW5ndGgoKSB7
CiAgICAgICAgcmV0dXJuIHBvcnRSYW5nZUxlbmd0aDsKICAgIH0KCiAgICBwdWJsaWMgdm9pZCBz
ZXRQb3J0UmFuZ2VMZW5ndGgoZmluYWwgaW50IHBvcnRSYW5nZUxlbmd0aCkgewogICAgICAgIHRo
aXMucG9ydFJhbmdlTGVuZ3RoID0gcG9ydFJhbmdlTGVuZ3RoOwogICAgfQp9
--000000000000123ff2059c1aa44d
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline


--000000000000123ff2059c1aa44d
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
javagroups-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/javagroups-users

--000000000000123ff2059c1aa44d--