20-Oct-99 19:59:00-GMT,17738;000000000011
Received: from cs.columbia.edu (cs.columbia.edu [128.59.16.20])
	by ober.cs.columbia.edu (8.9.1/8.9.1) with ESMTP id NAA15658;
	Wed, 20 Oct 1999 13:59:21 -0400 (EDT)
Received: from aloha.cc.columbia.edu (IDENT:cu16253@aloha.cc.columbia.edu [128.59.59.134])
	by cs.columbia.edu (8.9.1/8.9.1) with ESMTP id NAA04344;
	Wed, 20 Oct 1999 13:59:21 -0400 (EDT)
Received: from localhost by aloha.cc.columbia.edu (8.9.3/8.9.3) with ESMTP id NAA12879;
	Wed, 20 Oct 1999 13:59:20 -0400 (EDT)
Date: Wed, 20 Oct 1999 13:59:19 -0400 (EDT)
From: Lalitha  Agnihotri <la198@columbia.edu>
Sender: la198@columbia.edu
To: Eric Siegel <evs@cs.columbia.edu>
cc: cvaill@cs.columbia.edu, jzhang@cs.columbia.edu
Subject: Re: a bug (?) report
In-Reply-To: <CMM-RU.1.5.940441465.evs@disco.cs.columbia.edu>
Message-ID: <Pine.GSO.4.10.9910201352040.10462-200000@aloha.cc.columbia.edu>
MIME-Version: 1.0
Content-Type: MULTIPART/MIXED; BOUNDARY="-559023410-851401618-940442359=:10462"
Content-Length: 16760

  This message is in MIME format.  The first part should be readable text,
  while the remaining parts are likely unreadable without MIME-aware tools.
  Send mail to mime@docserver.cac.washington.edu for more info.

---559023410-851401618-940442359=:10462
Content-Type: TEXT/PLAIN; charset=US-ASCII


The new AdjMatrix is included. The changes have been made to addEdge()
function, where new arcs are propagted only if the new relations are
proper subsets of the previously existing relationships.

Lalitha


---559023410-851401618-940442359=:10462
Content-Type: TEXT/PLAIN; charset=US-ASCII; name="AdjMatrix.java"
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.GSO.4.10.9910201359190.10462@aloha.cc.columbia.edu>
Content-Description: 
Content-Disposition: attachment; filename="AdjMatrix.java"

aW1wb3J0IGphdmEudXRpbC4qOw0KDQpwdWJsaWMgY2xhc3MgQWRqTWF0cml4
ew0KICANCiAgcHJpdmF0ZSBpbnQgbWF0cml4W11bXTsNCiAgcHJpdmF0ZSBT
eW1ib2xUYWJsZSBzeW1ib2xUYWJsZTsNCiAgcHJvdGVjdGVkIFRlbXBvcmFs
VHJhbnNUYWJsZSB0cmFuc1RhYmxlOw0KICBwcml2YXRlIGludCBzaXplOw0K
DQogIHB1YmxpYyBBZGpNYXRyaXgoaW50IGluaXRpYWxTaXplKXsNCiAgICBz
eW1ib2xUYWJsZSA9IG5ldyBTeW1ib2xUYWJsZSgpOw0KICAgIG1hdHJpeCA9
IG5ldyBpbnRbaW5pdGlhbFNpemVdW2luaXRpYWxTaXplXTsNCiAgICB0cmFu
c1RhYmxlID0gbmV3IFRlbXBvcmFsVHJhbnNUYWJsZSgpOw0KICAgIHNpemUg
PSBpbml0aWFsU2l6ZTsNCiAgfSAgICAgICANCiAgDQogIHB1YmxpYyB2b2lk
IGFkZE5vZGUoU3RyaW5nIHN5bWJvbCl7DQogICAgaWYoc3ltYm9sVGFibGUu
c2l6ZSgpID09IHNpemUpDQogICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIkFk
ak1hdHJpeC5hZGROb2RlOiBzdGFja092ZXJmbG93Iik7DQogICAgZWxzZSBp
Zighc3ltYm9sVGFibGUuY29udGFpbnMoc3ltYm9sKSl7DQogICAgICBzeW1i
b2xUYWJsZS5hZGRTeW1ib2woc3ltYm9sKTsNCiAgICAgIA0KICAgICAgZm9y
KGludCBpID0gMDsgaSA8IHN5bWJvbFRhYmxlLnNpemUoKTsgaSsrKXsNCglt
YXRyaXhbc3ltYm9sVGFibGUuc2l6ZSgpIC0gMV1baV0gPSB0cmFuc1RhYmxl
Lk5PQ09OU1RSQUlOVFM7DQoJbWF0cml4W2ldW3N5bWJvbFRhYmxlLnNpemUo
KSAtIDFdID0gdHJhbnNUYWJsZS5OT0NPTlNUUkFJTlRTOw0KICAgICAgfSAg
DQogICAgICBSZWxhdGlvbiBjID0gbmV3IFJlbGF0aW9uKCk7DQogICAgICBj
LmkgPSBzeW1ib2xUYWJsZS5zaXplKCkgLSAxOw0KICAgICAgYy5qID0gc3lt
Ym9sVGFibGUuc2l6ZSgpIC0gMTsNCiAgICAgIGMuciA9IHRyYW5zVGFibGUu
RVFVQUxTOw0KICAgICAgdG9BZGQoYyk7DQogICAgfQ0KICB9DQoNCiAgcHVi
bGljIHZvaWQgYWRkRW50cnkoU3RyaW5nIGNvbW1hbmQpew0KICAgIFN0cmlu
Z1Rva2VuaXplciB0b2tlbnMgPSBuZXcgU3RyaW5nVG9rZW5pemVyKGNvbW1h
bmQpOw0KICAgIFN0cmluZyB4LCB5LCBsaXN0OyANCiAgICBpbnQgbiA9IHRv
a2Vucy5jb3VudFRva2VucygpOw0KICAgIHggPSB0b2tlbnMubmV4dFRva2Vu
KCk7DQogICAgbi0tOw0KICAgIGxpc3QgPSAiIjsNCiAgICBmb3IoOyBuICE9
IDE7IG4tLSl7DQogICAgICBsaXN0ID0gdG9rZW5zLm5leHRUb2tlbigpICsg
IiAiICsgbGlzdDsNCiAgICB9DQogICAgeSA9IHRva2Vucy5uZXh0VG9rZW4o
KTsNCiAgICBsaXN0ID0gbGlzdC5yZXBsYWNlKCcoJywgJyAnKTsNCiAgICBs
aXN0ID0gbGlzdC5yZXBsYWNlKCcpJywgJyAnKTsNCiAgICAvLyBTeXN0ZW0u
b3V0LnByaW50bG4oInggPSAiICsgeCArICIuIik7DQogICAgLy8gU3lzdGVt
Lm91dC5wcmludGxuKCJ5ID0gIiArIHkgKyAiLiIpOw0KICAgIC8vIFN5c3Rl
bS5vdXQucHJpbnRsbigiciA9ICIgKyBsaXN0ICsgIi4iKTsNCiAgICBhZGRF
ZGdlKHgseSxsaXN0KTsNCiAgfQ0KDQogICAgDQogIHB1YmxpYyB2b2lkIGFk
ZEVkZ2UoU3RyaW5nIHgsIFN0cmluZyB5LCBTdHJpbmcgcil7DQogICAgaW50
IGUgPSBwYXJzZVN0cmluZyhyKTsNCiAgICAvLyBTeXN0ZW0ub3V0LnByaW50
bG4oIkFkak1hdHJpeC5hZGRFZGdlIHIgPSAiICsNCiAgICAvLyAJCSAgICAg
ICB0cmFuc1RhYmxlLnRvU3RyaW5nKGUpICsgInwgIiArIHRyYW5zVGFibGUu
Z2V0SW5kZXgoZSkpOw0KICAgIGFkZE5vZGUoeCk7DQogICAgYWRkTm9kZSh5
KTsNCiAgICBpbnQgaSA9IHN5bWJvbFRhYmxlLmdldEluZGV4KHgpOw0KICAg
IGludCBqID0gc3ltYm9sVGFibGUuZ2V0SW5kZXgoeSk7DQogICAgUmVsYXRp
b24gcmVsYXRpb24gPSBuZXcgUmVsYXRpb24oKTsNCiAgICByZWxhdGlvbi5p
ID0gaTsNCiAgICByZWxhdGlvbi5qID0gajsNCiAgICByZWxhdGlvbi5yID0g
ZTsNCiAgICAvLyBTeXN0ZW0ub3V0LnByaW50bG4oIkFkak1hdHJpeC5hZGRF
ZGdlOiBSZWxhdGlvbiBpID0gIiArIGkgKyAiIGogPSAiICsgaiArDQovLyAi
IHIgPSAiICsgZSk7DQogICAgaW50IHMgPSB0cmFuc1RhYmxlLmludGVyc2Vj
dGlvbihyZWxhdGlvbi5yLCBtYXRyaXhbaV1bal0pOw0KICAgIGlmIChpc1By
b3BlclN1YnNldChzLCBtYXRyaXhbaV1bal0pKXsNCglyZWxhdGlvbi5yID0g
czsNCiAgICAgICB0b0FkZChyZWxhdGlvbik7DQogICAgfQ0KICAgIFJlbGF0
aW9uIGludmVyc2VSZWxhdGlvbiA9IG5ldyBSZWxhdGlvbigpOw0KICAgIGlu
dmVyc2VSZWxhdGlvbi5pID0gajsNCiAgICBpbnZlcnNlUmVsYXRpb24uaiA9
IGk7DQogICAgaW52ZXJzZVJlbGF0aW9uLnIgPSBnZXRJbnZlcnNlQ29uc3Ry
YWludHMoZSk7DQogICAgaW50IHQgPSB0cmFuc1RhYmxlLmludGVyc2VjdGlv
bihpbnZlcnNlUmVsYXRpb24uciwgbWF0cml4W2pdW2ldKTsNCiAgICBpZiAo
aXNQcm9wZXJTdWJzZXQodCwgbWF0cml4W2pdW2ldKSl7DQogICAgICAgaW52
ZXJzZVJlbGF0aW9uLnIgPSB0Ow0KICAgICAgIHRvQWRkKGludmVyc2VSZWxh
dGlvbik7DQogICAgfQ0KICB9DQoNCiAgcHJvdGVjdGVkIGludCBwYXJzZVN0
cmluZyhTdHJpbmcgc3RyKXsNCiAgICBTdHJpbmdUb2tlbml6ZXIgdG9rZW5z
ID0gbmV3IFN0cmluZ1Rva2VuaXplcihzdHIpOw0KICAgIGludCByZXR1cm5W
YWx1ZSA9IHRyYW5zVGFibGUuTk9JTkZPOw0KICAgIHdoaWxlKHRva2Vucy5o
YXNNb3JlVG9rZW5zKCkpew0KICAgICAgU3RyaW5nIHMgPSB0b2tlbnMubmV4
dFRva2VuKCk7DQogICAgICBpZihzLmVxdWFsc0lnbm9yZUNhc2UoImVxdWFs
cyIpIHx8IHMuZXF1YWxzSWdub3JlQ2FzZSgiPSIpKQ0KCXJldHVyblZhbHVl
ID0gcmV0dXJuVmFsdWUgfCB0cmFuc1RhYmxlLkVRVUFMUzsNCiAgICAgIGlm
KHMuZXF1YWxzSWdub3JlQ2FzZSgiYmVmb3JlIikgfHwgcy5lcXVhbHNJZ25v
cmVDYXNlKCI8IikpDQoJcmV0dXJuVmFsdWUgPSByZXR1cm5WYWx1ZSB8IHRy
YW5zVGFibGUuQkVGT1JFOw0KICAgICAgaWYocy5lcXVhbHNJZ25vcmVDYXNl
KCJhZnRlciIpIHx8IHMuZXF1YWxzSWdub3JlQ2FzZSgiPiIpKQ0KCXJldHVy
blZhbHVlID0gcmV0dXJuVmFsdWUgfCB0cmFuc1RhYmxlLkFGVEVSOw0KICAg
ICAgaWYocy5lcXVhbHNJZ25vcmVDYXNlKCJkdXJpbmciKSB8fCBzLmVxdWFs
c0lnbm9yZUNhc2UoImQiKSkNCglyZXR1cm5WYWx1ZSA9IHJldHVyblZhbHVl
IHwgdHJhbnNUYWJsZS5EVVJJTkc7DQogICAgICBpZihzLmVxdWFsc0lnbm9y
ZUNhc2UoImNvbnRhaW5zIikgfHwgcy5lcXVhbHNJZ25vcmVDYXNlKCJkaSIp
KQ0KCXJldHVyblZhbHVlID0gcmV0dXJuVmFsdWUgfCB0cmFuc1RhYmxlLkNP
TlRBSU5TOw0KICAgICAgaWYocy5lcXVhbHNJZ25vcmVDYXNlKCJvdmVybGFw
cyIpIHx8IHMuZXF1YWxzSWdub3JlQ2FzZSgibyIpKQ0KCXJldHVyblZhbHVl
ID0gcmV0dXJuVmFsdWUgfCB0cmFuc1RhYmxlLk9WRVJMQVBTOw0KICAgICAg
aWYocy5lcXVhbHNJZ25vcmVDYXNlKCJvdmVybGFwcGVkYnkiKSB8fCBzLmVx
dWFsc0lnbm9yZUNhc2UoIm9pIikpDQoJcmV0dXJuVmFsdWUgPSByZXR1cm5W
YWx1ZSB8IHRyYW5zVGFibGUuT1ZFUkxBUFBFREJZOw0KICAgICAgaWYocy5l
cXVhbHNJZ25vcmVDYXNlKCJtZWV0cyIpIHx8IHMuZXF1YWxzSWdub3JlQ2Fz
ZSgibSIpKQ0KCXJldHVyblZhbHVlID0gcmV0dXJuVmFsdWUgfCB0cmFuc1Rh
YmxlLk1FRVRTOw0KICAgICAgaWYocy5lcXVhbHNJZ25vcmVDYXNlKCJtZXRi
eSIpIHx8IHMuZXF1YWxzSWdub3JlQ2FzZSgibWkiKSkNCglyZXR1cm5WYWx1
ZSA9IHJldHVyblZhbHVlIHwgdHJhbnNUYWJsZS5NRVRCWTsNCiAgICAgIGlm
KHMuZXF1YWxzSWdub3JlQ2FzZSgic3RhcnRzIikgfHwgcy5lcXVhbHNJZ25v
cmVDYXNlKCJzIikpDQoJcmV0dXJuVmFsdWUgPSByZXR1cm5WYWx1ZSB8IHRy
YW5zVGFibGUuU1RBUlRTOw0KICAgICAgaWYocy5lcXVhbHNJZ25vcmVDYXNl
KCJzdGFydGVkYnkiKSB8fCBzLmVxdWFsc0lnbm9yZUNhc2UoInNpIikpDQoJ
cmV0dXJuVmFsdWUgPSByZXR1cm5WYWx1ZSB8IHRyYW5zVGFibGUuU1RBUlRF
REJZOw0KICAgICAgaWYocy5lcXVhbHNJZ25vcmVDYXNlKCJmaW5pc2hlcyIp
IHx8IHMuZXF1YWxzSWdub3JlQ2FzZSgiZiIpKQ0KCXJldHVyblZhbHVlID0g
cmV0dXJuVmFsdWUgfCB0cmFuc1RhYmxlLkZJTklTSEVTOw0KICAgICAgaWYo
cy5lcXVhbHNJZ25vcmVDYXNlKCJmaW5pc2hlZGJ5IikgfHwgcy5lcXVhbHNJ
Z25vcmVDYXNlKCJmaSIpKQ0KCXJldHVyblZhbHVlID0gcmV0dXJuVmFsdWUg
fCB0cmFuc1RhYmxlLkZJTklTSEVEQlk7DQogICAgfQ0KICByZXR1cm4ocmV0
dXJuVmFsdWUpOw0KICB9ICAgICAgDQoJICANCg0KLy8gICBwdWJsaWMgdm9p
ZCBhZGRDb25zdHJhaW50cyhTdHJpbmcgczEsIFN0cmluZyBzMiwgaW50IGNv
bnN0cmFpbnRzKXsNCi8vICAgICBpbnQgaSA9IHN5bWJvbFRhYmxlLmdldElu
ZGV4KHMxKTsNCi8vICAgICBpbnQgaiA9IHN5bWJvbFRhYmxlLmdldEluZGV4
KHMyKTsNCi8vICAgICBtYXRyaXhbaV1bal0gPSB0cmFuc1RhYmxlLmludGVy
c2VjdGlvbihtYXRyaXhbaV1bal0sIGNvbnN0cmFpbnRzKTsNCi8vICAgICBt
YXRyaXhbal1baV0gPSB0cmFuc1RhYmxlLmludGVyc2VjdGlvbihtYXRyaXhb
al1baV0sIGdldEludmVyc2VDb25zdHJhaW50cyhjb25zdHJhaW50cykpIDsv
LyBpbnZlcnNlIHJlbGF0aW9ucy4uLiAgICANCi8vICAgfQ0KICANCiAgcHJp
dmF0ZSBpbnQgZ2V0SW52ZXJzZUNvbnN0cmFpbnRzKGludCByKXsNCiAgICBJ
bnRWZWN0b3IgdiA9IGdldFNlcGVyYXRlUmVsYXRpb25zKHIpOw0KICAgIGlu
dCByZXR1cm5WYWx1ZSA9IHRyYW5zVGFibGUuTk9JTkZPOw0KICAgIGZvcihp
bnQgaSA9IDA7IGkgPCB2LnNpemUoKTsgaSsrKQ0KICAgICAgcmV0dXJuVmFs
dWUgPSByZXR1cm5WYWx1ZSArIGdldEludmVyc2VNYXBpbmcodi5pbnRBdChp
KSk7DQogICAgcmV0dXJuKHJldHVyblZhbHVlKTsNCiAgfSAgIA0KDQogIHBy
aXZhdGUgaW50IGdldEludmVyc2VNYXBpbmcoaW50IHJlbGF0aW9uKXsNCiAg
ICBpZigocmVsYXRpb24gJiB0cmFuc1RhYmxlLkVRVUFMUykgPT0gdHJhbnNU
YWJsZS5FUVVBTFMpDQogICAgICByZXR1cm4odHJhbnNUYWJsZS5FUVVBTFMp
Ow0KICAgIGlmKChyZWxhdGlvbiAmIHRyYW5zVGFibGUuQkVGT1JFKSA9PSB0
cmFuc1RhYmxlLkJFRk9SRSkNCiAgICAgIHJldHVybih0cmFuc1RhYmxlLkFG
VEVSKTsNCiAgICBpZigocmVsYXRpb24gJiB0cmFuc1RhYmxlLkFGVEVSKSA9
PSB0cmFuc1RhYmxlLkFGVEVSKQ0KICAgICAgcmV0dXJuKHRyYW5zVGFibGUu
QkVGT1JFKTsNCiAgICBpZigocmVsYXRpb24gJiB0cmFuc1RhYmxlLkRVUklO
RykgPT0gdHJhbnNUYWJsZS5EVVJJTkcpDQogICAgICByZXR1cm4odHJhbnNU
YWJsZS5DT05UQUlOUyk7DQogICAgaWYoKHJlbGF0aW9uICYgdHJhbnNUYWJs
ZS5DT05UQUlOUykgPT0gdHJhbnNUYWJsZS5DT05UQUlOUykNCiAgICAgIHJl
dHVybih0cmFuc1RhYmxlLkRVUklORyk7DQogICAgaWYoKHJlbGF0aW9uICYg
dHJhbnNUYWJsZS5PVkVSTEFQUykgPT0gdHJhbnNUYWJsZS5PVkVSTEFQUykN
CiAgICAgIHJldHVybih0cmFuc1RhYmxlLk9WRVJMQVBQRURCWSk7DQogICAg
aWYoKHJlbGF0aW9uICYgdHJhbnNUYWJsZS5PVkVSTEFQUEVEQlkpID09IHRy
YW5zVGFibGUuT1ZFUkxBUFBFREJZKSANCiAgICAgIHJldHVybih0cmFuc1Rh
YmxlLk9WRVJMQVBTKTsNCiAgICBpZigocmVsYXRpb24gJiB0cmFuc1RhYmxl
Lk1FRVRTKSA9PSB0cmFuc1RhYmxlLk1FRVRTKQ0KICAgICAgcmV0dXJuKHRy
YW5zVGFibGUuTUVUQlkpOw0KICAgIGlmKChyZWxhdGlvbiAmIHRyYW5zVGFi
bGUuTUVUQlkpID09IHRyYW5zVGFibGUuTUVUQlkpDQogICAgICByZXR1cm4o
dHJhbnNUYWJsZS5NRUVUUyk7DQogICAgaWYoKHJlbGF0aW9uICYgdHJhbnNU
YWJsZS5TVEFSVFMpID09IHRyYW5zVGFibGUuU1RBUlRTKQ0KICAgICAgcmV0
dXJuKHRyYW5zVGFibGUuU1RBUlRFREJZKTsNCiAgICBpZigocmVsYXRpb24g
JiB0cmFuc1RhYmxlLlNUQVJURURCWSkgPT0gdHJhbnNUYWJsZS5TVEFSVEVE
QlkpDQogICAgICByZXR1cm4odHJhbnNUYWJsZS5TVEFSVFMpOw0KICAgIGlm
KChyZWxhdGlvbiAmIHRyYW5zVGFibGUuRklOSVNIRVMpID09IHRyYW5zVGFi
bGUuRklOSVNIRVMpDQogICAgICByZXR1cm4odHJhbnNUYWJsZS5GSU5JU0hF
REJZKTsNCiAgICBpZigocmVsYXRpb24gJiB0cmFuc1RhYmxlLkZJTklTSEVE
QlkpID09IHRyYW5zVGFibGUuRklOSVNIRURCWSkNCiAgICAgIHJldHVybih0
cmFuc1RhYmxlLkZJTklTSEVTKTsNCiAgICBlbHNlDQogICAgICByZXR1cm4o
dHJhbnNUYWJsZS5OT0NPTlNUUkFJTlRTKTsNCiAgfQ0KICBwcm90ZWN0ZWQg
aW50IGdldFRyYW5zaXRpdmVDb25zdHJhaW50cyhpbnQgcjEsIGludCByMil7
DQogICAgLy8gU3lzdGVtLm91dC5wcmludGxuKCJBZGpNYXRyaXguZ2V0VHJh
bnNpdGl2ZUNvbnN0cmFpbnRzOiBjYWxsZWQgd2l0aDogcjEgPSAiICsgcjEg
KyAiIHIyID0gIiArIHIyKTsNCg0KICAgIGludCByZXR1cm5WYWx1ZSA9IHRy
YW5zVGFibGUuTk9JTkZPOw0KICAgIEludFZlY3RvciByID0gZ2V0U2VwZXJh
dGVSZWxhdGlvbnMocjEpOw0KICAgIEludFZlY3RvciBzID0gZ2V0U2VwZXJh
dGVSZWxhdGlvbnMocjIpOw0KICAgIGZvcihpbnQgaSA9IDA7IGkgPCByLnNp
emUoKTsgaSsrKQ0KICAgICAgZm9yKGludCBqID0gMDsgaiA8IHMuc2l6ZSgp
OyBqKyspew0KCS8vIFN5c3RlbS5vdXQucHJpbnRsbigiQWRqTWF0cml4Lmdl
dFRyYW5zaXRpdmVDb25zdHJhaW50czogciA9ICIgKyByLmludEF0KGkpICsg
IiBzID0gIiArIHMuaW50QXQoaikpOw0KCXJldHVyblZhbHVlID0gdHJhbnNU
YWJsZS51bmlvbigNCgkJCQkgICAgICAgcmV0dXJuVmFsdWUsIA0KCQkJCSAg
ICAgICB0cmFuc1RhYmxlLmdldFRlbXBvcmFsVHJhbnNpdGl2ZVJlbGF0aW9u
KA0KCQkJCQkJCQkJCXIuaW50QXQoaSksDQoJCQkJCQkJCQkJcy5pbnRBdChq
KSkpOw0KICAgICAgfQ0KICAgIHJldHVybihyZXR1cm5WYWx1ZSk7DQogIH0N
CiAgDQogIHByaXZhdGUgYm9vbGVhbiBjb21wYXJhYmxlKGludCBpLCBpbnQg
ail7DQogICAgcmV0dXJuKHRydWUpOw0KICB9DQoNCiAgcHJpdmF0ZSBib29s
ZWFuIGlzUHJvcGVyU3Vic2V0KGludCByLCBpbnQgcyl7DQogICAgSW50VmVj
dG9yIGkgPSBnZXRTZXBlcmF0ZVJlbGF0aW9ucyhyKTsNCiAgICBJbnRWZWN0
b3IgaiA9IGdldFNlcGVyYXRlUmVsYXRpb25zKHMpOw0KICAgIGlmKGkuc2l6
ZSgpIDwgai5zaXplKCkgJiYgaS5zaXplKCkgIT0gMCl7DQogICAgICBmb3Io
aW50IGsgPSAwOyBrIDwgaS5zaXplKCk7IGsrKykNCglpZighai5jb250YWlu
cyhpLmVsZW1lbnRBdChrKSkpew0KCSAgLy8gU3lzdGVtLm91dC5wcmludGxu
KCJBZGpNYXRyaXguaXNQcm9wZXJTdWJzZXQ6ICIgKyByICsgIiBJUyBOT1Qg
YQ0KLy8gc3Vic2V0IG9mICIgKyBzKTsNCgkgIHJldHVybihmYWxzZSk7DQoJ
fQ0KICAgICAgLy8gU3lzdGVtLm91dC5wcmludGxuKCJBZGpNYXRyaXguaXNQ
cm9wZXJTdWJzZXQ6ICIgKyByICsgIiBJUyBhIHByb3Blcg0KLy8gc3Vic2V0
IG9mICIgKyBzKTsNCg0KICAgICAgcmV0dXJuKHRydWUpOw0KICAgIH0NCiAg
ICBlbHNlewkgDQogICAgICAvLyBTeXN0ZW0ub3V0LnByaW50bG4oIkFkak1h
dHJpeC5pc1Byb3BlclN1YnNldDogIiArIHIgKyAiIElTIE5PVCBhIHByb3Bl
cg0KLy9zdWJzZXQgb2YgIiArIHMpOw0KDQogICAgICANCiAgICAgIHJldHVy
bihmYWxzZSk7DQogICAgfSB9ICANCiAgICANCiAgcHVibGljIHZvaWQgdG9B
ZGQoUmVsYXRpb24gcmVsYXRpb24pew0KICAgIFZlY3RvciB0b0RvID0gbmV3
IFZlY3RvcigwLCAxKTsNCiAgICB0b0RvLmFkZEVsZW1lbnQocmVsYXRpb24p
Ow0KICAgIHdoaWxlKCF0b0RvLmlzRW1wdHkoKSl7DQogICAgICBSZWxhdGlv
biByID0gKFJlbGF0aW9uKXRvRG8uZWxlbWVudEF0KDApOyANCiAgICAgIHRv
RG8ucmVtb3ZlRWxlbWVudEF0KDApOw0KICAgICAgaW50IGkgPSByLmk7DQog
ICAgICBpbnQgaiA9IHIuajsNCiAgICAgIGludCBzID0gci5yOw0KICAgICAg
Ly8gU3lzdGVtLm91dC5wcmludGxuKCJBZGpNYXRyaXgudG9BZGQ6IGkgPSAi
ICsgaSArICIgaiA9ICIgKyBqICsgIiByID0gIiArDQovLyBzKTsNCiAgICAg
IG1hdHJpeFtpXVtqXSA9IHM7DQogICAgICBtYXRyaXhbal1baV0gPSBnZXRJ
bnZlcnNlQ29uc3RyYWludHMocyk7DQogICAgICBmb3IoaW50IGsgPSAwOyBr
IDwgc3ltYm9sVGFibGUuc2l6ZSgpOyBrKyspDQoJaWYoY29tcGFyYWJsZShr
LCBqKSl7DQoJICAvLyBTeXN0ZW0ub3V0LnByaW50bG4oIkFkak1hdHJpeC50
b0FkZDogZmlyc3QgbG9vcCBpLGosayA9ICIgKyBpICsgIiAiDQovLyArIGog
KyAiICIgKyBrKTsNCgkgIFJlbGF0aW9uIHJQcmltZSA9IG5ldyBSZWxhdGlv
bigpOw0KCSAgclByaW1lLnIgPSB0cmFuc1RhYmxlLmludGVyc2VjdGlvbiht
YXRyaXhba11bal0sDQoJCQkJCWdldFRyYW5zaXRpdmVDb25zdHJhaW50cygN
CgkJCQkJCQkJIG1hdHJpeFtrXVtpXSwgDQoJCQkJCQkJCSBzKSk7DQoJICBy
UHJpbWUuaSA9IGs7DQoJICByUHJpbWUuaiA9IGo7DQoJICBpZihpc1Byb3Bl
clN1YnNldChyUHJpbWUuciwgDQoJCQkgICAgbWF0cml4W2tdW2pdKSl7DQoJ
ICAgICAgLy8gIFN5c3RlbS5vdXQucHJpbnRsbigiQWRqTWF0cml4LnRvQWRk
OiBxdWV1ZSBhZGRpbmcgcmVsYXRpb246IGkgPQ0KLy8gIiArIHJQcmltZS5p
ICsgIiBqID0gIiArIHJQcmltZS5qICsgIiByID0gIiArIHJQcmltZS5yKTsg
DQoJICAgICAgdG9Eby5hZGRFbGVtZW50KHJQcmltZSk7IA0KCSAgfQ0KCX0N
CiAgICAgIGZvcihpbnQgayA9IDA7IGsgPCBzeW1ib2xUYWJsZS5zaXplKCk7
IGsrKykNCglpZihjb21wYXJhYmxlKGksIGspKXsNCgkgIC8vIFN5c3RlbS5v
dXQucHJpbnRsbigiQWRqTWF0cml4LnRvQWRkOiBzZWNvbmQgbG9vcCBpLGos
ayA9ICIgKyBpICsgIiAiDQovLyArIGogKyAiICIgKyBrKTsNCgkgIFJlbGF0
aW9uIHJQcmltZSA9IG5ldyBSZWxhdGlvbigpOw0KCSAgclByaW1lLnIgPSB0
cmFuc1RhYmxlLmludGVyc2VjdGlvbihtYXRyaXhbaV1ba10sDQoJCQkJCWdl
dFRyYW5zaXRpdmVDb25zdHJhaW50cygNCgkJCQkJCQkJIHMsDQoJCQkJCQkJ
CSBtYXRyaXhbal1ba10pKTsNCgkgIHJQcmltZS5pID0gaTsNCgkgIHJQcmlt
ZS5qID0gazsNCgkgIGlmKGlzUHJvcGVyU3Vic2V0KHJQcmltZS5yLCBtYXRy
aXhbaV1ba10pKXsNCgkgICAgICAJICAgICAgLy8gU3lzdGVtLm91dC5wcmlu
dGxuKCJBZGpNYXRyaXgudG9BZGQ6IHF1ZXVlIGFkZGluZw0KLy8gcmVsYXRp
b246IGkgPSAiICsgclByaW1lLmkgKyAiIGogPSAiICsgclByaW1lLmogKyAi
IHIgPSAiICsgclByaW1lLnIpOyANCgkJICAgICAgdG9Eby5hZGRFbGVtZW50
KHJQcmltZSk7DQoJICB9DQoJfQ0KICAgICAgLy8gU3lzdGVtLm91dC5wcmlu
dGxuKCJBZGpNYXRyaXgudG9BZGQ6IFF1ZXVlIHRvRG8uc2l6ZSA9ICIgKyB0
b0RvLnNpemUoKSk7DQogICAgfQ0KICB9ICANCiAgDQogIHByaXZhdGUgSW50
VmVjdG9yIGdldFNlcGVyYXRlUmVsYXRpb25zKGludCByZWxhdGlvbil7DQog
ICAgSW50VmVjdG9yIHJldHVyblZhbHVlID0gbmV3IEludFZlY3RvcigpOw0K
ICAgIGlmKChyZWxhdGlvbiAmIHRyYW5zVGFibGUuRVFVQUxTKSA9PSB0cmFu
c1RhYmxlLkVRVUFMUykNCiAgICAgIHJldHVyblZhbHVlLmFkZEVsZW1lbnQo
dHJhbnNUYWJsZS5FUVVBTFMpOw0KICAgIGlmKChyZWxhdGlvbiAmIHRyYW5z
VGFibGUuQkVGT1JFKSA9PSB0cmFuc1RhYmxlLkJFRk9SRSkNCiAgICAgIHJl
dHVyblZhbHVlLmFkZEVsZW1lbnQodHJhbnNUYWJsZS5CRUZPUkUpOw0KICAg
IGlmKChyZWxhdGlvbiAmIHRyYW5zVGFibGUuQUZURVIpID09IHRyYW5zVGFi
bGUuQUZURVIpDQogICAgICByZXR1cm5WYWx1ZS5hZGRFbGVtZW50KHRyYW5z
VGFibGUuQUZURVIpOw0KICAgIGlmKChyZWxhdGlvbiAmIHRyYW5zVGFibGUu
RFVSSU5HKSA9PSB0cmFuc1RhYmxlLkRVUklORykNCiAgICAgIHJldHVyblZh
bHVlLmFkZEVsZW1lbnQodHJhbnNUYWJsZS5EVVJJTkcpOw0KICAgIGlmKChy
ZWxhdGlvbiAmIHRyYW5zVGFibGUuQ09OVEFJTlMpID09IHRyYW5zVGFibGUu
Q09OVEFJTlMpDQogICAgICByZXR1cm5WYWx1ZS5hZGRFbGVtZW50KHRyYW5z
VGFibGUuQ09OVEFJTlMpOw0KICAgIGlmKChyZWxhdGlvbiAmIHRyYW5zVGFi
bGUuT1ZFUkxBUFMpID09IHRyYW5zVGFibGUuT1ZFUkxBUFMpDQogICAgICBy
ZXR1cm5WYWx1ZS5hZGRFbGVtZW50KHRyYW5zVGFibGUuT1ZFUkxBUFMpOw0K
ICAgIGlmKChyZWxhdGlvbiAmIHRyYW5zVGFibGUuT1ZFUkxBUFBFREJZKSA9
PSB0cmFuc1RhYmxlLk9WRVJMQVBQRURCWSkgDQogICAgICByZXR1cm5WYWx1
ZS5hZGRFbGVtZW50KHRyYW5zVGFibGUuT1ZFUkxBUFBFREJZKTsNCiAgICBp
ZigocmVsYXRpb24gJiB0cmFuc1RhYmxlLk1FRVRTKSA9PSB0cmFuc1RhYmxl
Lk1FRVRTKQ0KICAgICAgcmV0dXJuVmFsdWUuYWRkRWxlbWVudCh0cmFuc1Rh
YmxlLk1FRVRTKTsNCiAgICBpZigocmVsYXRpb24gJiB0cmFuc1RhYmxlLk1F
VEJZKSA9PSB0cmFuc1RhYmxlLk1FVEJZKQ0KICAgICAgcmV0dXJuVmFsdWUu
YWRkRWxlbWVudCh0cmFuc1RhYmxlLk1FVEJZKTsNCiAgICBpZigocmVsYXRp
b24gJiB0cmFuc1RhYmxlLlNUQVJUUykgPT0gdHJhbnNUYWJsZS5TVEFSVFMp
DQogICAgICByZXR1cm5WYWx1ZS5hZGRFbGVtZW50KHRyYW5zVGFibGUuU1RB
UlRTKTsNCiAgICBpZigocmVsYXRpb24gJiB0cmFuc1RhYmxlLlNUQVJURURC
WSkgPT0gdHJhbnNUYWJsZS5TVEFSVEVEQlkpDQogICAgICByZXR1cm5WYWx1
ZS5hZGRFbGVtZW50KHRyYW5zVGFibGUuU1RBUlRFREJZKTsNCiAgICBpZigo
cmVsYXRpb24gJiB0cmFuc1RhYmxlLkZJTklTSEVTKSA9PSB0cmFuc1RhYmxl
LkZJTklTSEVTKQ0KICAgICAgcmV0dXJuVmFsdWUuYWRkRWxlbWVudCh0cmFu
c1RhYmxlLkZJTklTSEVTKTsNCiAgICBpZigocmVsYXRpb24gJiB0cmFuc1Rh
YmxlLkZJTklTSEVEQlkpID09IHRyYW5zVGFibGUuRklOSVNIRURCWSkNCiAg
ICAgIHJldHVyblZhbHVlLmFkZEVsZW1lbnQodHJhbnNUYWJsZS5GSU5JU0hF
REJZKTsNCiAgICAvLyBpZigocmVsYXRpb24gJiB0cmFuc1RhYmxlLk5PSU5G
TykgPT0gdHJhbnNUYWJsZS5OT0lORk8pDQogICAgLy8gIHJldHVyblZhbHVl
LmFkZEVsZW1lbnQodHJhbnNUYWJsZS5OT0lORk8pOw0KICAgIHJldHVybihy
ZXR1cm5WYWx1ZSk7DQogIH0NCg0KICBwdWJsaWMgU3RyaW5nIHRvU3RyaW5n
KCl7DQogICAgU3RyaW5nIHN0ciA9ICJDdXJyZW50IEdyYXBoOlxuXG4iOw0K
ICAgIGZvcihpbnQgaSA9IDA7IGkgPCBzeW1ib2xUYWJsZS5zaXplKCk7IGkr
KykNCiAgICAgIGZvcihpbnQgaiA9IDA7IGogPCBzeW1ib2xUYWJsZS5zaXpl
KCk7IGorKykNCgkgc3RyID0gc3RyICsNCgkgICBzeW1ib2xUYWJsZS5nZXRT
eW1ib2woaSkgKyANCgkgICAiID4tLS0gIiArIA0KCSAgIHRyYW5zVGFibGUu
dG9TdHJpbmcobWF0cml4W2ldW2pdKSArDQoJICAgIiAtLS0+ICIgKw0KCSAg
IHN5bWJvbFRhYmxlLmdldFN5bWJvbChqKSArDQoJICAgIlxuIjsNCiAgICBy
ZXR1cm4oc3RyKTsNCiAgfQ0KfSAgDQoNCg0KDQoNCg0KDQoNCg0KDQo=
---559023410-851401618-940442359=:10462--

