22-Oct-99 23:38:00-GMT,21125;000000000001
Received: from cs.columbia.edu (cs.columbia.edu [128.59.16.20])
	by opus.cs.columbia.edu (8.9.1/8.9.1) with ESMTP id RAA17569
	for <evs@opus.cs.columbia.edu>; Fri, 22 Oct 1999 17:38:51 -0400 (EDT)
From: lalitha.agnihotri@philips.com
Received: from gw-nl4.philips.com (gw-nl4.philips.com [192.68.44.36])
	by cs.columbia.edu (8.9.1/8.9.1) with ESMTP id RAA16690
	for <evs@cs.columbia.edu>; Fri, 22 Oct 1999 17:38:12 -0400 (EDT)
Received: from smtprelay-nl1.philips.com (localhost.philips.com [127.0.0.1])
          by gw-nl4.philips.com with ESMTP id XAA29195
          for <evs@cs.columbia.edu>; Fri, 22 Oct 1999 23:37:53 +0200 (MEST)
          (envelope-from lalitha.agnihotri@philips.com)
Received: from smtprelay-eur1.philips.com(130.139.36.3) by gw-nl4.philips.com via mwrap (4.0a)
	id xma029193; Fri, 22 Oct 99 23:37:53 +0200
Received: from notessmtp-nl1.philips.com (notessmtp-nl1.philips.com [130.139.36.10]) 
	by smtprelay-nl1.philips.com (8.9.3/8.8.5-1.2.2m-19990317) with ESMTP id XAA11547
	for <evs@cs.columbia.edu>; Fri, 22 Oct 1999 23:37:53 +0200 (MET DST)
Received: from AMLMS01.DIAMOND.PHILIPS.COM (amlms01sv1.diamond.philips.com [161.88.79.213]) 
	by notessmtp-nl1.philips.com (8.9.3/8.8.5-1.2.2m-19990317) with ESMTP id XAA12046
	for <evs@cs.columbia.edu>; Fri, 22 Oct 1999 23:37:51 +0200 (MET DST)
Received: by AMLMS01.DIAMOND.PHILIPS.COM (Soft-Switch LMS 4.0) with snapi
          via AMEC id 0056910002213384; Fri, 22 Oct 1999 16:37:52 -0500
To: <evs@cs.columbia.edu>
Subject: Re: THE LATEST BUG FIX FAILED!!!!
Message-ID: <0056910002213384000002L142*@MHS>
Date: Fri, 22 Oct 1999 16:37:52 -0500
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="Boundary=_0.0_=0056910002213384"
Content-Length: 19395


--Boundary=_0.0_=0056910002213384
Content-Type: text/plain; charset=iso-8859-1; name="MEMO 10/22/99 16:38:46"
Content-Transfer-Encoding: quoted-printable
Content-Disposition: inline

I think i have solved the bugs. Dont ask me how. Try it out for yoursel=
f. You can just cut and paste

the following lines for the input (all of them at one time. You dont ha=
ve to enter one by one!)
First set
2 (fi) 0
 1 (o) 0
1 (d) 2
0 (f) 2
0 (oi) 1
2 (di) 1
answer should match these numbers:
> > Interval 0: [14,22]
> > Interval 1: [6,18]
> > Interval 2: [2,22]

Second set
 2 (s) 4
 4 (si) 2
 4 (f) 0
 1 (fi) 3
 2 (d) 0
 4 (o) 3
 3 (oi) 4
 2 (d) 1
 3 (mi) 2
 1 (di) 4
 3 (oi) 0
 0 (s) 1
 3 (f) 1
 2 (m) 3
 0 (di) 2
 0 (fi) 4
 1 (di) 2
 0 (o) 3
4 (d) 1
1 (si) 0
Answer should match:Interval 0: [0,15]
Interval 1: [0,22]
Interval 2: [9,11]
Interval 3: [11,22]
Interval 4: [9,15]

Lalitha

=

--Boundary=_0.0_=0056910002213384
Content-Type: application/octet-stream; name=AdjMatrix.java
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename=AdjMatrix.java

aW1wb3J0IGphdmEudXRpbC4qOw0KDQpwdWJsaWMgY2xhc3MgQWRqTWF0cml4ew0KICANCiAgcHJp
dmF0ZSBpbnQgbWF0cml4W11bXTsNCiAgcHJpdmF0ZSBTeW1ib2xUYWJsZSBzeW1ib2xUYWJsZTsN
CiAgcHJvdGVjdGVkIFRlbXBvcmFsVHJhbnNUYWJsZSB0cmFuc1RhYmxlOw0KICBwcml2YXRlIGlu
dCBzaXplOw0KDQogIHB1YmxpYyBBZGpNYXRyaXgoaW50IGluaXRpYWxTaXplKXsNCiAgICBzeW1i
b2xUYWJsZSA9IG5ldyBTeW1ib2xUYWJsZSgpOw0KICAgIG1hdHJpeCA9IG5ldyBpbnRbaW5pdGlh
bFNpemVdW2luaXRpYWxTaXplXTsNCiAgICB0cmFuc1RhYmxlID0gbmV3IFRlbXBvcmFsVHJhbnNU
YWJsZSgpOw0KICAgIHNpemUgPSBpbml0aWFsU2l6ZTsNCiAgfSAgICAgICANCiAgDQogIHB1Ymxp
YyB2b2lkIGFkZE5vZGUoU3RyaW5nIHN5bWJvbCl7DQogICAgaWYoc3ltYm9sVGFibGUuc2l6ZSgp
ID09IHNpemUpDQogICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIkFkak1hdHJpeC5hZGROb2RlOiBz
dGFja092ZXJmbG93Iik7DQogICAgZWxzZSBpZighc3ltYm9sVGFibGUuY29udGFpbnMoc3ltYm9s
KSl7DQogICAgICBzeW1ib2xUYWJsZS5hZGRTeW1ib2woc3ltYm9sKTsNCiAgICAgIA0KICAgICAg
Zm9yKGludCBpID0gMDsgaSA8IHN5bWJvbFRhYmxlLnNpemUoKTsgaSsrKXsNCgltYXRyaXhbc3lt
Ym9sVGFibGUuc2l6ZSgpIC0gMV1baV0gPSB0cmFuc1RhYmxlLk5PQ09OU1RSQUlOVFM7DQoJbWF0
cml4W2ldW3N5bWJvbFRhYmxlLnNpemUoKSAtIDFdID0gdHJhbnNUYWJsZS5OT0NPTlNUUkFJTlRT
Ow0KICAgICAgfSAgDQogICAgICBSZWxhdGlvbiBjID0gbmV3IFJlbGF0aW9uKCk7DQogICAgICBj
LmkgPSBzeW1ib2xUYWJsZS5zaXplKCkgLSAxOw0KICAgICAgYy5qID0gc3ltYm9sVGFibGUuc2l6
ZSgpIC0gMTsNCiAgICAgIGMuciA9IHRyYW5zVGFibGUuRVFVQUxTOw0KICAgICAgdG9BZGQoYyk7
DQogICAgfQ0KICB9DQoNCiAgcHVibGljIHZvaWQgYWRkRW50cnkoU3RyaW5nIGNvbW1hbmQpew0K
ICAgIFN0cmluZ1Rva2VuaXplciB0b2tlbnMgPSBuZXcgU3RyaW5nVG9rZW5pemVyKGNvbW1hbmQp
Ow0KICAgIFN0cmluZyB4LCB5LCBsaXN0OyANCiAgICBpbnQgbiA9IHRva2Vucy5jb3VudFRva2Vu
cygpOw0KICAgIHggPSB0b2tlbnMubmV4dFRva2VuKCk7DQogICAgbi0tOw0KICAgIGxpc3QgPSAi
IjsNCiAgICBmb3IoOyBuICE9IDE7IG4tLSl7DQogICAgICBsaXN0ID0gdG9rZW5zLm5leHRUb2tl
bigpICsgIiAiICsgbGlzdDsNCiAgICB9DQogICAgeSA9IHRva2Vucy5uZXh0VG9rZW4oKTsNCiAg
ICBsaXN0ID0gbGlzdC5yZXBsYWNlKCcoJywgJyAnKTsNCiAgICBsaXN0ID0gbGlzdC5yZXBsYWNl
KCcpJywgJyAnKTsNCiAgICAvLyBTeXN0ZW0ub3V0LnByaW50bG4oInggPSAiICsgeCArICIuIik7
DQogICAgLy8gU3lzdGVtLm91dC5wcmludGxuKCJ5ID0gIiArIHkgKyAiLiIpOw0KICAgIC8vIFN5
c3RlbS5vdXQucHJpbnRsbigiciA9ICIgKyBsaXN0ICsgIi4iKTsNCiAgICBhZGRFZGdlKHgseSxs
aXN0KTsNCiAgfQ0KDQogICAgDQogIHB1YmxpYyB2b2lkIGFkZEVkZ2UoU3RyaW5nIHgsIFN0cmlu
ZyB5LCBTdHJpbmcgcil7DQogICAgaW50IGUgPSBwYXJzZVN0cmluZyhyKTsNCiAgICAvLyBTeXN0
ZW0ub3V0LnByaW50bG4oIkFkak1hdHJpeC5hZGRFZGdlIHIgPSAiICsNCiAgICAvLyAJCSAgICAg
ICB0cmFuc1RhYmxlLnRvU3RyaW5nKGUpICsgInwgIiArIHRyYW5zVGFibGUuZ2V0SW5kZXgoZSkp
Ow0KICAgIGFkZE5vZGUoeCk7DQogICAgYWRkTm9kZSh5KTsNCiAgICBpbnQgaSA9IHN5bWJvbFRh
YmxlLmdldEluZGV4KHgpOw0KICAgIGludCBqID0gc3ltYm9sVGFibGUuZ2V0SW5kZXgoeSk7DQog
ICAgUmVsYXRpb24gcmVsYXRpb24gPSBuZXcgUmVsYXRpb24oKTsNCiAgICByZWxhdGlvbi5pID0g
aTsNCiAgICByZWxhdGlvbi5qID0gajsNCiAgICByZWxhdGlvbi5yID0gZTsNCiAgICBtYXRyaXhb
aV1bal0gPSByZWxhdGlvbi5yOw0KICAgIG1hdHJpeFtqXVtpXSA9IGdldEludmVyc2VDb25zdHJh
aW50cyhyZWxhdGlvbi5yKTsNCiAgICAvLyAgICB0b0FkZChyZWxhdGlvbik7DQogICAgLy90b0Fk
ZChpbnZlcnNlUmVsYXRpb24pOw0KICAgIC8vIFN5c3RlbS5vdXQucHJpbnRsbigiQWRqTWF0cml4
LmFkZEVkZ2U6IFJlbGF0aW9uIGkgPSAiICsgaSArICIgaiA9ICIgKyBqICsNCi8vICIgciA9ICIg
KyBlKTsNCiAgICBpbnQgcyA9IHRyYW5zVGFibGUuaW50ZXJzZWN0aW9uKHJlbGF0aW9uLnIsIG1h
dHJpeFtpXVtqXSk7DQogICAgICAgaWYgKGlzUHJvcGVyU3Vic2V0KHMsIG1hdHJpeFtpXVtqXSkp
ew0KCXJlbGF0aW9uLnIgPSBzOw0KCW1hdHJpeFtpXVtqXSA9IHJlbGF0aW9uLnI7DQoJbWF0cml4
W2pdW2ldID0gZ2V0SW52ZXJzZUNvbnN0cmFpbnRzKHJlbGF0aW9uLnIpOw0KICAgICAgIHRvQWRk
KHJlbGF0aW9uKTsNCiAgICB9DQogICAgUmVsYXRpb24gaW52ZXJzZVJlbGF0aW9uID0gbmV3IFJl
bGF0aW9uKCk7DQogICAgaW52ZXJzZVJlbGF0aW9uLmkgPSBqOw0KICAgIGludmVyc2VSZWxhdGlv
bi5qID0gaTsNCiAgICBpbnZlcnNlUmVsYXRpb24uciA9IGdldEludmVyc2VDb25zdHJhaW50cyhl
KTsNCiAgICBpbnQgdCA9IHRyYW5zVGFibGUuaW50ZXJzZWN0aW9uKGludmVyc2VSZWxhdGlvbi5y
LCBtYXRyaXhbal1baV0pOw0KICAgIGlmIChpc1Byb3BlclN1YnNldCh0LCBtYXRyaXhbal1baV0p
KXsNCiAgICAgICBpbnZlcnNlUmVsYXRpb24uciA9IHQ7DQogICAgICAgLy8gbWF0cml4W2pdW2ld
ID0gaW52ZXJzZVJlbGF0aW9uLnI7DQogICAgICAgLy9tYXRyaXhbaV1bal0gPSBnZXRJbnZlcnNl
Q29uc3RyYWludHMoaW52ZXJzZVJlbGF0aW9uLnIpOw0KICAgICAgIHRvQWRkKGludmVyc2VSZWxh
dGlvbik7DQogICAgfQ0KICB9DQoNCg0KDQoNCg0KDQogIHByb3RlY3RlZCBpbnQgcGFyc2VTdHJp
bmcoU3RyaW5nIHN0cil7DQogICAgU3RyaW5nVG9rZW5pemVyIHRva2VucyA9IG5ldyBTdHJpbmdU
b2tlbml6ZXIoc3RyKTsNCiAgICBpbnQgcmV0dXJuVmFsdWUgPSB0cmFuc1RhYmxlLk5PSU5GTzsN
CiAgICB3aGlsZSh0b2tlbnMuaGFzTW9yZVRva2VucygpKXsNCiAgICAgIFN0cmluZyBzID0gdG9r
ZW5zLm5leHRUb2tlbigpOw0KICAgICAgaWYocy5lcXVhbHNJZ25vcmVDYXNlKCJlcXVhbHMiKSB8
fCBzLmVxdWFsc0lnbm9yZUNhc2UoIj0iKSkNCglyZXR1cm5WYWx1ZSA9IHJldHVyblZhbHVlIHwg
dHJhbnNUYWJsZS5FUVVBTFM7DQogICAgICBpZihzLmVxdWFsc0lnbm9yZUNhc2UoImJlZm9yZSIp
IHx8IHMuZXF1YWxzSWdub3JlQ2FzZSgiPCIpKQ0KCXJldHVyblZhbHVlID0gcmV0dXJuVmFsdWUg
fCB0cmFuc1RhYmxlLkJFRk9SRTsNCiAgICAgIGlmKHMuZXF1YWxzSWdub3JlQ2FzZSgiYWZ0ZXIi
KSB8fCBzLmVxdWFsc0lnbm9yZUNhc2UoIj4iKSkNCglyZXR1cm5WYWx1ZSA9IHJldHVyblZhbHVl
IHwgdHJhbnNUYWJsZS5BRlRFUjsNCiAgICAgIGlmKHMuZXF1YWxzSWdub3JlQ2FzZSgiZHVyaW5n
IikgfHwgcy5lcXVhbHNJZ25vcmVDYXNlKCJkIikpDQoJcmV0dXJuVmFsdWUgPSByZXR1cm5WYWx1
ZSB8IHRyYW5zVGFibGUuRFVSSU5HOw0KICAgICAgaWYocy5lcXVhbHNJZ25vcmVDYXNlKCJjb250
YWlucyIpIHx8IHMuZXF1YWxzSWdub3JlQ2FzZSgiZGkiKSkNCglyZXR1cm5WYWx1ZSA9IHJldHVy
blZhbHVlIHwgdHJhbnNUYWJsZS5DT05UQUlOUzsNCiAgICAgIGlmKHMuZXF1YWxzSWdub3JlQ2Fz
ZSgib3ZlcmxhcHMiKSB8fCBzLmVxdWFsc0lnbm9yZUNhc2UoIm8iKSkNCglyZXR1cm5WYWx1ZSA9
IHJldHVyblZhbHVlIHwgdHJhbnNUYWJsZS5PVkVSTEFQUzsNCiAgICAgIGlmKHMuZXF1YWxzSWdu
b3JlQ2FzZSgib3ZlcmxhcHBlZGJ5IikgfHwgcy5lcXVhbHNJZ25vcmVDYXNlKCJvaSIpKQ0KCXJl
dHVyblZhbHVlID0gcmV0dXJuVmFsdWUgfCB0cmFuc1RhYmxlLk9WRVJMQVBQRURCWTsNCiAgICAg
IGlmKHMuZXF1YWxzSWdub3JlQ2FzZSgibWVldHMiKSB8fCBzLmVxdWFsc0lnbm9yZUNhc2UoIm0i
KSkNCglyZXR1cm5WYWx1ZSA9IHJldHVyblZhbHVlIHwgdHJhbnNUYWJsZS5NRUVUUzsNCiAgICAg
IGlmKHMuZXF1YWxzSWdub3JlQ2FzZSgibWV0YnkiKSB8fCBzLmVxdWFsc0lnbm9yZUNhc2UoIm1p
IikpDQoJcmV0dXJuVmFsdWUgPSByZXR1cm5WYWx1ZSB8IHRyYW5zVGFibGUuTUVUQlk7DQogICAg
ICBpZihzLmVxdWFsc0lnbm9yZUNhc2UoInN0YXJ0cyIpIHx8IHMuZXF1YWxzSWdub3JlQ2FzZSgi
cyIpKQ0KCXJldHVyblZhbHVlID0gcmV0dXJuVmFsdWUgfCB0cmFuc1RhYmxlLlNUQVJUUzsNCiAg
ICAgIGlmKHMuZXF1YWxzSWdub3JlQ2FzZSgic3RhcnRlZGJ5IikgfHwgcy5lcXVhbHNJZ25vcmVD
YXNlKCJzaSIpKQ0KCXJldHVyblZhbHVlID0gcmV0dXJuVmFsdWUgfCB0cmFuc1RhYmxlLlNUQVJU
RURCWTsNCiAgICAgIGlmKHMuZXF1YWxzSWdub3JlQ2FzZSgiZmluaXNoZXMiKSB8fCBzLmVxdWFs
c0lnbm9yZUNhc2UoImYiKSkNCglyZXR1cm5WYWx1ZSA9IHJldHVyblZhbHVlIHwgdHJhbnNUYWJs
ZS5GSU5JU0hFUzsNCiAgICAgIGlmKHMuZXF1YWxzSWdub3JlQ2FzZSgiZmluaXNoZWRieSIpIHx8
IHMuZXF1YWxzSWdub3JlQ2FzZSgiZmkiKSkNCglyZXR1cm5WYWx1ZSA9IHJldHVyblZhbHVlIHwg
dHJhbnNUYWJsZS5GSU5JU0hFREJZOw0KICAgIH0NCiAgcmV0dXJuKHJldHVyblZhbHVlKTsNCiAg
fSAgICAgIA0KCSAgDQoNCi8vICAgcHVibGljIHZvaWQgYWRkQ29uc3RyYWludHMoU3RyaW5nIHMx
LCBTdHJpbmcgczIsIGludCBjb25zdHJhaW50cyl7DQovLyAgICAgaW50IGkgPSBzeW1ib2xUYWJs
ZS5nZXRJbmRleChzMSk7DQovLyAgICAgaW50IGogPSBzeW1ib2xUYWJsZS5nZXRJbmRleChzMik7
DQovLyAgICAgbWF0cml4W2ldW2pdID0gdHJhbnNUYWJsZS5pbnRlcnNlY3Rpb24obWF0cml4W2ld
W2pdLCBjb25zdHJhaW50cyk7DQovLyAgICAgbWF0cml4W2pdW2ldID0gdHJhbnNUYWJsZS5pbnRl
cnNlY3Rpb24obWF0cml4W2pdW2ldLCBnZXRJbnZlcnNlQ29uc3RyYWludHMoY29uc3RyYWludHMp
KSA7Ly8gaW52ZXJzZSByZWxhdGlvbnMuLi4gICAgDQovLyAgIH0NCiAgDQogIHByaXZhdGUgaW50
IGdldEludmVyc2VDb25zdHJhaW50cyhpbnQgcil7DQogICAgSW50VmVjdG9yIHYgPSBnZXRTZXBl
cmF0ZVJlbGF0aW9ucyhyKTsNCiAgICBpbnQgcmV0dXJuVmFsdWUgPSB0cmFuc1RhYmxlLk5PSU5G
TzsNCiAgICBmb3IoaW50IGkgPSAwOyBpIDwgdi5zaXplKCk7IGkrKykNCiAgICAgIHJldHVyblZh
bHVlID0gcmV0dXJuVmFsdWUgKyBnZXRJbnZlcnNlTWFwaW5nKHYuaW50QXQoaSkpOw0KICAgIHJl
dHVybihyZXR1cm5WYWx1ZSk7DQogIH0gICANCg0KICBwcml2YXRlIGludCBnZXRJbnZlcnNlTWFw
aW5nKGludCByZWxhdGlvbil7DQogICAgaWYoKHJlbGF0aW9uICYgdHJhbnNUYWJsZS5FUVVBTFMp
ID09IHRyYW5zVGFibGUuRVFVQUxTKQ0KICAgICAgcmV0dXJuKHRyYW5zVGFibGUuRVFVQUxTKTsN
CiAgICBpZigocmVsYXRpb24gJiB0cmFuc1RhYmxlLkJFRk9SRSkgPT0gdHJhbnNUYWJsZS5CRUZP
UkUpDQogICAgICByZXR1cm4odHJhbnNUYWJsZS5BRlRFUik7DQogICAgaWYoKHJlbGF0aW9uICYg
dHJhbnNUYWJsZS5BRlRFUikgPT0gdHJhbnNUYWJsZS5BRlRFUikNCiAgICAgIHJldHVybih0cmFu
c1RhYmxlLkJFRk9SRSk7DQogICAgaWYoKHJlbGF0aW9uICYgdHJhbnNUYWJsZS5EVVJJTkcpID09
IHRyYW5zVGFibGUuRFVSSU5HKQ0KICAgICAgcmV0dXJuKHRyYW5zVGFibGUuQ09OVEFJTlMpOw0K
ICAgIGlmKChyZWxhdGlvbiAmIHRyYW5zVGFibGUuQ09OVEFJTlMpID09IHRyYW5zVGFibGUuQ09O
VEFJTlMpDQogICAgICByZXR1cm4odHJhbnNUYWJsZS5EVVJJTkcpOw0KICAgIGlmKChyZWxhdGlv
biAmIHRyYW5zVGFibGUuT1ZFUkxBUFMpID09IHRyYW5zVGFibGUuT1ZFUkxBUFMpDQogICAgICBy
ZXR1cm4odHJhbnNUYWJsZS5PVkVSTEFQUEVEQlkpOw0KICAgIGlmKChyZWxhdGlvbiAmIHRyYW5z
VGFibGUuT1ZFUkxBUFBFREJZKSA9PSB0cmFuc1RhYmxlLk9WRVJMQVBQRURCWSkgDQogICAgICBy
ZXR1cm4odHJhbnNUYWJsZS5PVkVSTEFQUyk7DQogICAgaWYoKHJlbGF0aW9uICYgdHJhbnNUYWJs
ZS5NRUVUUykgPT0gdHJhbnNUYWJsZS5NRUVUUykNCiAgICAgIHJldHVybih0cmFuc1RhYmxlLk1F
VEJZKTsNCiAgICBpZigocmVsYXRpb24gJiB0cmFuc1RhYmxlLk1FVEJZKSA9PSB0cmFuc1RhYmxl
Lk1FVEJZKQ0KICAgICAgcmV0dXJuKHRyYW5zVGFibGUuTUVFVFMpOw0KICAgIGlmKChyZWxhdGlv
biAmIHRyYW5zVGFibGUuU1RBUlRTKSA9PSB0cmFuc1RhYmxlLlNUQVJUUykNCiAgICAgIHJldHVy
bih0cmFuc1RhYmxlLlNUQVJURURCWSk7DQogICAgaWYoKHJlbGF0aW9uICYgdHJhbnNUYWJsZS5T
VEFSVEVEQlkpID09IHRyYW5zVGFibGUuU1RBUlRFREJZKQ0KICAgICAgcmV0dXJuKHRyYW5zVGFi
bGUuU1RBUlRTKTsNCiAgICBpZigocmVsYXRpb24gJiB0cmFuc1RhYmxlLkZJTklTSEVTKSA9PSB0
cmFuc1RhYmxlLkZJTklTSEVTKQ0KICAgICAgcmV0dXJuKHRyYW5zVGFibGUuRklOSVNIRURCWSk7
DQogICAgaWYoKHJlbGF0aW9uICYgdHJhbnNUYWJsZS5GSU5JU0hFREJZKSA9PSB0cmFuc1RhYmxl
LkZJTklTSEVEQlkpDQogICAgICByZXR1cm4odHJhbnNUYWJsZS5GSU5JU0hFUyk7DQogICAgZWxz
ZQ0KICAgICAgcmV0dXJuKHRyYW5zVGFibGUuTk9DT05TVFJBSU5UUyk7DQogIH0NCiAgcHJvdGVj
dGVkIGludCBnZXRUcmFuc2l0aXZlQ29uc3RyYWludHMoaW50IHIxLCBpbnQgcjIpew0KICAgIC8v
IFN5c3RlbS5vdXQucHJpbnRsbigiQWRqTWF0cml4LmdldFRyYW5zaXRpdmVDb25zdHJhaW50czog
Y2FsbGVkIHdpdGg6IHIxID0gIiArIHIxICsgIiByMiA9ICIgKyByMik7DQoNCiAgICBpbnQgcmV0
dXJuVmFsdWUgPSB0cmFuc1RhYmxlLk5PSU5GTzsNCiAgICBJbnRWZWN0b3IgciA9IGdldFNlcGVy
YXRlUmVsYXRpb25zKHIxKTsNCiAgICBJbnRWZWN0b3IgcyA9IGdldFNlcGVyYXRlUmVsYXRpb25z
KHIyKTsNCiAgICBmb3IoaW50IGkgPSAwOyBpIDwgci5zaXplKCk7IGkrKykNCiAgICAgIGZvcihp
bnQgaiA9IDA7IGogPCBzLnNpemUoKTsgaisrKXsNCgkvLyBTeXN0ZW0ub3V0LnByaW50bG4oIkFk
ak1hdHJpeC5nZXRUcmFuc2l0aXZlQ29uc3RyYWludHM6IHIgPSAiICsgci5pbnRBdChpKSArICIg
cyA9ICIgKyBzLmludEF0KGopKTsNCglyZXR1cm5WYWx1ZSA9IHRyYW5zVGFibGUudW5pb24oDQoJ
CQkJICAgICAgIHJldHVyblZhbHVlLCANCgkJCQkgICAgICAgdHJhbnNUYWJsZS5nZXRUZW1wb3Jh
bFRyYW5zaXRpdmVSZWxhdGlvbigNCgkJCQkJCQkJCQlyLmludEF0KGkpLA0KCQkJCQkJCQkJCXMu
aW50QXQoaikpKTsNCiAgICAgIH0NCiAgICByZXR1cm4ocmV0dXJuVmFsdWUpOw0KICB9DQogIA0K
ICBwcml2YXRlIGJvb2xlYW4gY29tcGFyYWJsZShpbnQgaSwgaW50IGopew0KICAgIHJldHVybih0
cnVlKTsNCiAgfQ0KDQogIHByaXZhdGUgYm9vbGVhbiBpc1Byb3BlclN1YnNldChpbnQgciwgaW50
IHMpew0KICAgIEludFZlY3RvciBpID0gZ2V0U2VwZXJhdGVSZWxhdGlvbnMocik7DQogICAgSW50
VmVjdG9yIGogPSBnZXRTZXBlcmF0ZVJlbGF0aW9ucyhzKTsNCiAgICBpZihpLnNpemUoKSA8IGou
c2l6ZSgpICYmIGkuc2l6ZSgpICE9IDApew0KICAgICAgZm9yKGludCBrID0gMDsgayA8IGkuc2l6
ZSgpOyBrKyspDQoJaWYoIWouY29udGFpbnMoaS5lbGVtZW50QXQoaykpKXsNCgkgIC8vIFN5c3Rl
bS5vdXQucHJpbnRsbigiQWRqTWF0cml4LmlzUHJvcGVyU3Vic2V0OiAiICsgciArICIgSVMgTk9U
IGENCi8vIHN1YnNldCBvZiAiICsgcyk7DQoJICByZXR1cm4oZmFsc2UpOw0KCX0NCiAgICAgIC8v
IFN5c3RlbS5vdXQucHJpbnRsbigiQWRqTWF0cml4LmlzUHJvcGVyU3Vic2V0OiAiICsgciArICIg
SVMgYSBwcm9wZXINCi8vIHN1YnNldCBvZiAiICsgcyk7DQoNCiAgICAgIHJldHVybih0cnVlKTsN
CiAgICB9DQogICAgZWxzZXsJIA0KICAgICAgLy8gU3lzdGVtLm91dC5wcmludGxuKCJBZGpNYXRy
aXguaXNQcm9wZXJTdWJzZXQ6ICIgKyByICsgIiBJUyBOT1QgYSBwcm9wZXINCi8vc3Vic2V0IG9m
ICIgKyBzKTsNCg0KICAgICAgDQogICAgICByZXR1cm4oZmFsc2UpOw0KICAgIH0gfSAgDQogICAg
DQogIHB1YmxpYyB2b2lkIHRvQWRkKFJlbGF0aW9uIHJlbGF0aW9uKXsNCiAgICBWZWN0b3IgdG9E
byA9IG5ldyBWZWN0b3IoMCwgMSk7DQogICAgdG9Eby5hZGRFbGVtZW50KHJlbGF0aW9uKTsNCiAg
ICBmb3IgKGludCBpID0gMTsgaSA8ICBzeW1ib2xUYWJsZS5zaXplKCk7IGkrKyl7DQoJZm9yIChp
bnQgaiA9IGkrMTsgaiA8PSAgc3ltYm9sVGFibGUuc2l6ZSgpOyBqKyspew0KCSAgICBpbnQgcyA9
IG1hdHJpeFtpXVtqXTsNCgkgICAgZm9yIChpbnQgayA9IDE7IGsgPD0gc3ltYm9sVGFibGUuc2l6
ZSgpOyBrKyspew0KCQlpZiAoKGsgIT0gaSkgJiYgKGsgIT0gaikpew0KICAgICAgICAgICAgICAg
IFJlbGF0aW9uIHJQcmltZSA9IG5ldyBSZWxhdGlvbigpOw0KCQlyUHJpbWUuciA9IHRyYW5zVGFi
bGUuaW50ZXJzZWN0aW9uKG1hdHJpeFtpXVtrXSwNCgkJCSAgIGdldFRyYW5zaXRpdmVDb25zdHJh
aW50cygNCgkJCQkJCSAgICBzLCBtYXRyaXhbal1ba10pKTsNCgkJclByaW1lLmkgPSBpOw0KCQly
UHJpbWUuaiA9IGs7DQoJCWlmKGlzUHJvcGVyU3Vic2V0KHJQcmltZS5yLCBtYXRyaXhbaV1ba10p
KXsNCgkgICAgICAJICAgICAgLy8gU3lzdGVtLm91dC5wcmludGxuKCJBZGpNYXRyaXgudG9BZGQ6
IHF1ZXVlIGFkZGluZw0KLy8gcmVsYXRpb246IGkgPSAiICsgclByaW1lLmkgKyAiIGogPSAiICsg
clByaW1lLmogKyAiIHIgPSAiICsgclByaW1lLnIpOyANCgkJICAgIHRvRG8uYWRkRWxlbWVudChy
UHJpbWUpOw0KCQl9DQoJCX0vL3ZhbGlkIGsNCgkgICAgfSAvL2ZvciBrDQoJICAgIGZvciAoaW50
IGsgPSAxOyBrIDw9IHN5bWJvbFRhYmxlLnNpemUoKTsgaysrKXsNCiAgICAgICAgICAgIGlmICgo
ayAhPSBpKSAmJiAoayAhPSBqKSl7DQogICAgICAgICAgICAgICAgUmVsYXRpb24gclByaW1lID0g
bmV3IFJlbGF0aW9uKCk7DQoJCXJQcmltZS5yID0gdHJhbnNUYWJsZS5pbnRlcnNlY3Rpb24obWF0
cml4W2tdW2pdLA0KCQkJCQkJICAgZ2V0VHJhbnNpdGl2ZUNvbnN0cmFpbnRzKA0KCQkJCQkJCW1h
dHJpeFtrXVtpXSwgcyApKTsNCgkJclByaW1lLmkgPSBrOw0KCQlyUHJpbWUuaiA9IGo7DQoJCWlm
KGlzUHJvcGVyU3Vic2V0KHJQcmltZS5yLCBtYXRyaXhba11bal0pKXsNCgkgICAgICAJICAgICAg
Ly8gU3lzdGVtLm91dC5wcmludGxuKCJBZGpNYXRyaXgudG9BZGQ6IHF1ZXVlIGFkZGluZw0KLy8g
cmVsYXRpb246IGkgPSAiICsgclByaW1lLmkgKyAiIGogPSAiICsgclByaW1lLmogKyAiIHIgPSAi
ICsgclByaW1lLnIpOyANCgkJICAgIHRvRG8uYWRkRWxlbWVudChyUHJpbWUpOw0KCQl9DQogICAg
ICAgICAgICB9Ly92YWxpZCBrDQogICAgICAgICAgfSAvL2ZvciBrDQoJfQ0KCX0NCiAgICB3aGls
ZSghdG9Eby5pc0VtcHR5KCkpew0KICAgICAgUmVsYXRpb24gciA9IChSZWxhdGlvbil0b0RvLmVs
ZW1lbnRBdCgwKTsgDQogICAgICB0b0RvLnJlbW92ZUVsZW1lbnRBdCgwKTsNCiAgICAgIGludCBp
ID0gci5pOw0KICAgICAgaW50IGogPSByLmo7DQogICAgICBpbnQgcyA9IHIucjsNCiAgICAgIC8v
IFN5c3RlbS5vdXQucHJpbnRsbigiQWRqTWF0cml4LnRvQWRkOiBpID0gIiArIGkgKyAiIGogPSAi
ICsgaiArICIgciA9ICIgKw0KLy8gcyk7DQogICAgICBtYXRyaXhbaV1bal0gPSBzOw0KICAgICAg
bWF0cml4W2pdW2ldID0gZ2V0SW52ZXJzZUNvbnN0cmFpbnRzKHMpOw0KICAgICAgZm9yKGludCBr
ID0gMDsgayA8IHN5bWJvbFRhYmxlLnNpemUoKTsgaysrKQ0KCSAgaWYoY29tcGFyYWJsZShrLCBq
KSl7DQoJICAvLyBTeXN0ZW0ub3V0LnByaW50bG4oIkFkak1hdHJpeC50b0FkZDogZmlyc3QgbG9v
cCBpLGosayA9ICIgKyBpICsgIiAiDQovLyArIGogKyAiICIgKyBrKTsNCgkgICAgUmVsYXRpb24g
clByaW1lID0gbmV3IFJlbGF0aW9uKCk7DQoJICAgIHJQcmltZS5yID0gdHJhbnNUYWJsZS5pbnRl
cnNlY3Rpb24obWF0cml4W2tdW2pdLA0KCQkJCQlnZXRUcmFuc2l0aXZlQ29uc3RyYWludHMoDQoJ
CQkJCQkJCSBtYXRyaXhba11baV0sIA0KCQkJCQkJCQkgcykpOw0KCSAgclByaW1lLmkgPSBrOw0K
CSAgclByaW1lLmogPSBqOw0KCSAgaWYoaXNQcm9wZXJTdWJzZXQoclByaW1lLnIsIA0KCQkJICAg
IG1hdHJpeFtrXVtqXSkpew0KCSAgICAgIC8vICBTeXN0ZW0ub3V0LnByaW50bG4oIkFkak1hdHJp
eC50b0FkZDogcXVldWUgYWRkaW5nIHJlbGF0aW9uOiBpID0NCi8vICIgKyByUHJpbWUuaSArICIg
aiA9ICIgKyByUHJpbWUuaiArICIgciA9ICIgKyByUHJpbWUucik7IA0KCSAgICAgIC8vCSAgICAg
IG1hdHJpeFtrXVtqXSA9IHJQcmltZS5yOw0KCSAgICAgIC8vbWF0cml4W2pdW2tdID0gZ2V0SW52
ZXJzZUNvbnN0cmFpbnRzKHJQcmltZS5yKTsNCgkgICAgICB0b0RvLmFkZEVsZW1lbnQoclByaW1l
KTsgDQoJICB9DQoJfQ0KICAgICAgZm9yKGludCBrID0gMDsgayA8IHN5bWJvbFRhYmxlLnNpemUo
KTsgaysrKQ0KCWlmKGNvbXBhcmFibGUoaSwgaykpew0KCSAgLy8gU3lzdGVtLm91dC5wcmludGxu
KCJBZGpNYXRyaXgudG9BZGQ6IHNlY29uZCBsb29wIGksaixrID0gIiArIGkgKyAiICINCi8vICsg
aiArICIgIiArIGspOw0KCSAgUmVsYXRpb24gclByaW1lID0gbmV3IFJlbGF0aW9uKCk7DQoJICBy
UHJpbWUuciA9IHRyYW5zVGFibGUuaW50ZXJzZWN0aW9uKG1hdHJpeFtpXVtrXSwNCgkJCQkJZ2V0
VHJhbnNpdGl2ZUNvbnN0cmFpbnRzKA0KCQkJCQkJCQkgcywNCgkJCQkJCQkJIG1hdHJpeFtqXVtr
XSkpOw0KCSAgclByaW1lLmkgPSBpOw0KCSAgclByaW1lLmogPSBrOw0KCSAgaWYoaXNQcm9wZXJT
dWJzZXQoclByaW1lLnIsIG1hdHJpeFtpXVtrXSkpew0KCSAgICAgIAkgICAgICAvLyBTeXN0ZW0u
b3V0LnByaW50bG4oIkFkak1hdHJpeC50b0FkZDogcXVldWUgYWRkaW5nDQovLyByZWxhdGlvbjog
aSA9ICIgKyByUHJpbWUuaSArICIgaiA9ICIgKyByUHJpbWUuaiArICIgciA9ICIgKyByUHJpbWUu
cik7IA0KCSAgICAgIC8vbWF0cml4W2ldW2tdID0gclByaW1lLnI7DQoJICAgICAgLy9tYXRyaXhb
a11baV0gPSBnZXRJbnZlcnNlQ29uc3RyYWludHMoclByaW1lLnIpOw0KCSAgICAgIHRvRG8uYWRk
RWxlbWVudChyUHJpbWUpOw0KCSAgfQ0KCX0NCiAgICAgIC8vIFN5c3RlbS5vdXQucHJpbnRsbigi
QWRqTWF0cml4LnRvQWRkOiBRdWV1ZSB0b0RvLnNpemUgPSAiICsgdG9Eby5zaXplKCkpOw0KICAg
IH0NCiAgfSAgDQogIA0KICBwcml2YXRlIEludFZlY3RvciBnZXRTZXBlcmF0ZVJlbGF0aW9ucyhp
bnQgcmVsYXRpb24pew0KICAgIEludFZlY3RvciByZXR1cm5WYWx1ZSA9IG5ldyBJbnRWZWN0b3Io
KTsNCiAgICBpZigocmVsYXRpb24gJiB0cmFuc1RhYmxlLkVRVUFMUykgPT0gdHJhbnNUYWJsZS5F
UVVBTFMpDQogICAgICByZXR1cm5WYWx1ZS5hZGRFbGVtZW50KHRyYW5zVGFibGUuRVFVQUxTKTsN
CiAgICBpZigocmVsYXRpb24gJiB0cmFuc1RhYmxlLkJFRk9SRSkgPT0gdHJhbnNUYWJsZS5CRUZP
UkUpDQogICAgICByZXR1cm5WYWx1ZS5hZGRFbGVtZW50KHRyYW5zVGFibGUuQkVGT1JFKTsNCiAg
ICBpZigocmVsYXRpb24gJiB0cmFuc1RhYmxlLkFGVEVSKSA9PSB0cmFuc1RhYmxlLkFGVEVSKQ0K
ICAgICAgcmV0dXJuVmFsdWUuYWRkRWxlbWVudCh0cmFuc1RhYmxlLkFGVEVSKTsNCiAgICBpZigo
cmVsYXRpb24gJiB0cmFuc1RhYmxlLkRVUklORykgPT0gdHJhbnNUYWJsZS5EVVJJTkcpDQogICAg
ICByZXR1cm5WYWx1ZS5hZGRFbGVtZW50KHRyYW5zVGFibGUuRFVSSU5HKTsNCiAgICBpZigocmVs
YXRpb24gJiB0cmFuc1RhYmxlLkNPTlRBSU5TKSA9PSB0cmFuc1RhYmxlLkNPTlRBSU5TKQ0KICAg
ICAgcmV0dXJuVmFsdWUuYWRkRWxlbWVudCh0cmFuc1RhYmxlLkNPTlRBSU5TKTsNCiAgICBpZigo
cmVsYXRpb24gJiB0cmFuc1RhYmxlLk9WRVJMQVBTKSA9PSB0cmFuc1RhYmxlLk9WRVJMQVBTKQ0K
ICAgICAgcmV0dXJuVmFsdWUuYWRkRWxlbWVudCh0cmFuc1RhYmxlLk9WRVJMQVBTKTsNCiAgICBp
ZigocmVsYXRpb24gJiB0cmFuc1RhYmxlLk9WRVJMQVBQRURCWSkgPT0gdHJhbnNUYWJsZS5PVkVS
TEFQUEVEQlkpIA0KICAgICAgcmV0dXJuVmFsdWUuYWRkRWxlbWVudCh0cmFuc1RhYmxlLk9WRVJM
QVBQRURCWSk7DQogICAgaWYoKHJlbGF0aW9uICYgdHJhbnNUYWJsZS5NRUVUUykgPT0gdHJhbnNU
YWJsZS5NRUVUUykNCiAgICAgIHJldHVyblZhbHVlLmFkZEVsZW1lbnQodHJhbnNUYWJsZS5NRUVU
Uyk7DQogICAgaWYoKHJlbGF0aW9uICYgdHJhbnNUYWJsZS5NRVRCWSkgPT0gdHJhbnNUYWJsZS5N
RVRCWSkNCiAgICAgIHJldHVyblZhbHVlLmFkZEVsZW1lbnQodHJhbnNUYWJsZS5NRVRCWSk7DQog
ICAgaWYoKHJlbGF0aW9uICYgdHJhbnNUYWJsZS5TVEFSVFMpID09IHRyYW5zVGFibGUuU1RBUlRT
KQ0KICAgICAgcmV0dXJuVmFsdWUuYWRkRWxlbWVudCh0cmFuc1RhYmxlLlNUQVJUUyk7DQogICAg
aWYoKHJlbGF0aW9uICYgdHJhbnNUYWJsZS5TVEFSVEVEQlkpID09IHRyYW5zVGFibGUuU1RBUlRF
REJZKQ0KICAgICAgcmV0dXJuVmFsdWUuYWRkRWxlbWVudCh0cmFuc1RhYmxlLlNUQVJURURCWSk7
DQogICAgaWYoKHJlbGF0aW9uICYgdHJhbnNUYWJsZS5GSU5JU0hFUykgPT0gdHJhbnNUYWJsZS5G
SU5JU0hFUykNCiAgICAgIHJldHVyblZhbHVlLmFkZEVsZW1lbnQodHJhbnNUYWJsZS5GSU5JU0hF
Uyk7DQogICAgaWYoKHJlbGF0aW9uICYgdHJhbnNUYWJsZS5GSU5JU0hFREJZKSA9PSB0cmFuc1Rh
YmxlLkZJTklTSEVEQlkpDQogICAgICByZXR1cm5WYWx1ZS5hZGRFbGVtZW50KHRyYW5zVGFibGUu
RklOSVNIRURCWSk7DQogICAgLy8gaWYoKHJlbGF0aW9uICYgdHJhbnNUYWJsZS5OT0lORk8pID09
IHRyYW5zVGFibGUuTk9JTkZPKQ0KICAgIC8vICByZXR1cm5WYWx1ZS5hZGRFbGVtZW50KHRyYW5z
VGFibGUuTk9JTkZPKTsNCiAgICByZXR1cm4ocmV0dXJuVmFsdWUpOw0KICB9DQoNCiAgcHVibGlj
IFN0cmluZyB0b1N0cmluZygpew0KICAgIFN0cmluZyBzdHIgPSAiQ3VycmVudCBHcmFwaDpcblxu
IjsNCiAgICBmb3IoaW50IGkgPSAwOyBpIDwgc3ltYm9sVGFibGUuc2l6ZSgpOyBpKyspDQogICAg
ICBmb3IoaW50IGogPSAwOyBqIDwgc3ltYm9sVGFibGUuc2l6ZSgpOyBqKyspDQoJIHN0ciA9IHN0
ciArDQoJICAgc3ltYm9sVGFibGUuZ2V0U3ltYm9sKGkpICsgDQoJICAgIiA+LS0tICIgKyANCgkg
ICB0cmFuc1RhYmxlLnRvU3RyaW5nKG1hdHJpeFtpXVtqXSkgKw0KCSAgICIgLS0tPiAiICsNCgkg
ICBzeW1ib2xUYWJsZS5nZXRTeW1ib2woaikgKw0KCSAgICJcbiI7DQogICAgcmV0dXJuKHN0cik7
DQogIH0NCn0gIA0KDQoNCg0KDQoNCg0KDQoNCg0K

--Boundary=_0.0_=0056910002213384--

