From mboxrd@z Thu Jan 1 00:00:00 1970 From: moonjoo@saul.cis.upenn.edu To: java-gnats@sourceware.cygnus.com Subject: java/1148: internal compiler error: program jc1 Date: Wed, 20 Dec 2000 12:09:00 -0000 Message-id: <20000119221120.7110.qmail@sourceware.cygnus.com> X-SW-Source: 2000-q4/msg00933.html List-Id: >Number: 1148 >Category: java >Synopsis: internal compiler error: program jc1 >Confidential: no >Severity: serious >Priority: medium >Responsible: apbianco >State: suspended >Class: sw-bug >Submitter-Id: net >Arrival-Date: Wed Dec 20 12:06:36 PST 2000 >Closed-Date: >Last-Modified: Sun Jan 23 00:16:00 PST 2000 >Originator: moonjoo@saul.cis.upenn.edu >Release: gcc version 2.95.2 19991024 (release) >Organization: >Environment: >Description: verinet:/home/mac/mac/runtimeChecker/interpreter> gcj --main=Checker -o Checker Checker.java gcj: Internal compiler error: program jc1 got fatal signal gcj version 2.95.2 19991024 (release) on linux 2.2.12 #6 SMP >How-To-Repeat: gcj --main=Checker -o Checker Checker.java >Fix: >Release-Note: >Audit-Trail: Formerly PR gcj/139 State-Changed-From-To: open->suspended State-Changed-By: green State-Changed-When: Sun Jan 23 00:14:10 2000 State-Changed-Why: I can't reproduce this problem. Checker.java refers to many classes that were not included. Here are a couple of ideas: 1- Try a recent snapshot of the compiler instead of 2.95.2 2- Try to create a minimal test case. Thanks, AG From: green@cygnus.com To: apbianco@cygnus.com, java-gnats@sourceware.cygnus.com, moonjoo@saul.cis.upenn.edu Cc: Subject: Re: gcj/139 Date: 23 Jan 2000 08:14:10 -0000 Synopsis: internal compiler error: program jc1 State-Changed-From-To: open->suspended State-Changed-By: green State-Changed-When: Sun Jan 23 00:14:10 2000 State-Changed-Why: I can't reproduce this problem. Checker.java refers to many classes that were not included. Here are a couple of ideas: 1- Try a recent snapshot of the compiler instead of 2.95.2 2- Try to create a minimal test case. Thanks, AG http://sourceware.cygnus.com/cgi-bin/gnatsweb.pl?cmd=view&pr=139&database=java >Unformatted: ----gnatsweb-attachment---- Content-Type: application/octet-stream; name="Checker.java" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="Checker.java" cGFja2FnZSBtYWMucnVudGltZUNoZWNrZXIuaW50ZXJwcmV0ZXI7CgppbXBvcnQgamF2YS5pby4q OwppbXBvcnQgamF2YS5uZXQuKjsKaW1wb3J0IGphdmEudXRpbC4qOwoKaW1wb3J0IG1hYy5ydW50 aW1lQ2hlY2tlci5tZWRsUGFyc2VyLio7CmltcG9ydCBtYWMudHlwZXMucGFyc2VyVHlwZXMuKjsK aW1wb3J0IG1hYy50eXBlcy5pbnRlcmZhY2VNZWRsQ2hlY2tlci4qOwppbXBvcnQgbWFjLnR5cGVz LmludGVyZmFjZUVSQ2hlY2tlci4qOwppbXBvcnQgbWFjLnR5cGVzLnN0ZWVyaW5nVHlwZXMuKjsK Ci8vIEZvciBkYXRhYmFzZSBjbGllbnQgZXhhbXBsZQovLyBpbXBvcnQgbWFjLnR5cGVzLmV4dGVy bmFsQ29ubmVjdGlvbi4qOwoKcHVibGljIGNsYXNzIENoZWNrZXIgZXh0ZW5kcyBUaHJlYWQgewog IHB1YmxpYyBmaW5hbCBzdGF0aWMgaW50IERFRkFVTFRfSU5QVVRfUE9SVCA9IDgwNDE7CiAgcHVi bGljIFN0cmluZyBzdGVlcmVyOyAgICAgICAgICAgICAgICAgLy8gU3RlZXJlciBhcyBob3N0OnBv cnQKICBwcm90ZWN0ZWQgaW50IGlucHV0X3BvcnQ7ICAgICAgICAgICAgICAvLyBMaXN0ZW5pbmcg cG9ydAogIHByb3RlY3RlZCBTZXJ2ZXJTb2NrZXQgbGlzdGVuX3NvY2tldDsKCiAgcHJpdmF0ZSBG aWxlSW5wdXRTdHJlYW0gaW5wZmlsZTsKICBwcml2YXRlIE9iamVjdElucHV0U3RyZWFtIGlucHN0 cm07CiAgCiAgcHJvdGVjdGVkIHN0YXRpYyBib29sZWFuIGRvU3RlZXJpbmc7ICAgLy8gV2hldGhl ciBvciBub3QgdG8gc3RlZXIKICBwcm90ZWN0ZWQgc3RhdGljIFBhcnNlckNoa09iamVjdCBpbnB1 dDsKICBwcm90ZWN0ZWQgc3RhdGljIEFTVFN0YXJ0IHBhcnNlVHJlZTsKICBwcm90ZWN0ZWQgc3Rh dGljIEhhc2h0YWJsZSBzeW1ib2xUYWJsZTsKICBwcm90ZWN0ZWQgc3RhdGljIFZlY3RvciBhbGFy bXM7CiAgcHJvdGVjdGVkIHN0YXRpYyBWZWN0b3IgcHJvcGVydGllczsKICBwcm90ZWN0ZWQgc3Rh dGljIFZlY3RvciBhY3Rpb25zOwogIHByb3RlY3RlZCBzdGF0aWMgbG9uZyBjdXJyZW50VGltZTsK CiAgcHVibGljIHN0YXRpYyB2b2lkIGZhaWwoRXhjZXB0aW9uIGUsIFN0cmluZyBtc2cpIHsKICAg IFN5c3RlbS5lcnIucHJpbnRsbihtc2cgKyAiOiIgKyBlKTsKICAgIFN5c3RlbS5leGl0KDEpOwog IH0KCiAgcHVibGljIENoZWNrZXIoaW50IHBvcnQsIFN0cmluZyBzdGVlcmVyLCBTdHJpbmcgbWVk bF9vdXRwdXQpIHsKICAgIGlmKHBvcnQgPT0gMCkgcG9ydCA9IERFRkFVTFRfSU5QVVRfUE9SVDsK ICAgIHRoaXMuaW5wdXRfcG9ydCA9IHBvcnQ7CiAgICB0aGlzLnN0ZWVyZXIgPSBzdGVlcmVyOwog ICAgdHJ5IHsJCiAgICAgIGxpc3Rlbl9zb2NrZXQgPSBuZXcgU2VydmVyU29ja2V0KGlucHV0X3Bv cnQpOwogICAgfQogICAgY2F0Y2goSU9FeGNlcHRpb24gZSkge2ZhaWwoZSwiRXhjZXB0aW9uIGNy ZWF0aW5nIENoZWNrZXIgc29ja2V0Iik7fQogICAgU3lzdGVtLm91dC5wcmludGxuKCJNYUMgQ2hl Y2tlciBWZXJzaW9uIDAuMTogTGlzdGVuaW5nIG9uIHBvcnQgIiArIGlucHV0X3BvcnQpOwoKICAg IHRyeSB7CiAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiTWFDIENoZWNrZXIgVmVyc2lvbiAwLjE6 IFJlYWRpbmcgTUVETCBvdXRwdXQgZnJvbSAiIAoJCQkgKyBtZWRsX291dHB1dCk7CiAgICAgIGlu cGZpbGUgPSBuZXcgRmlsZUlucHV0U3RyZWFtKG1lZGxfb3V0cHV0KTsKICAgICAgICAgICAgICAg IC8vIHdlIHVzZSBkZWZhdWx0IG5hbWUgIm1lZGwub3V0IgogICAgICBpbnBzdHJtID0gbmV3IE9i amVjdElucHV0U3RyZWFtKGlucGZpbGUpOwogICAgICBpbnB1dCA9IChQYXJzZXJDaGtPYmplY3Qp IGlucHN0cm0ucmVhZE9iamVjdCgpOwogICAgICBwYXJzZVRyZWUgPSBpbnB1dC5nZXRQYXJzZVRy ZWUoKTsKICAgICAgc3ltYm9sVGFibGUgPSBpbnB1dC5nZXRTeW1ib2xUYWJsZSgpOwogICAgICBh bGFybXMgPSBpbnB1dC5nZXRBbGFybXMoKTsKICAgICAgcHJvcGVydGllcyA9IGlucHV0LmdldFBy b3BlcnRpZXMoKTsKICAgICAgYWN0aW9ucyA9IGlucHV0LmdldEFjdGlvbnMoKTsKICAgIH0gY2F0 Y2ggKElPRXhjZXB0aW9uIGUpIHsKICAgICAgU3lzdGVtLmVyci5wcmludGxuKGUpOwogICAgfSBj YXRjaCAoQ2xhc3NOb3RGb3VuZEV4Y2VwdGlvbiBlKSB7CiAgICAgIFN5c3RlbS5lcnIucHJpbnRs bihlKTsKICAgIH0gZmluYWxseSB7CiAgICAgIHRyeSB7CglpbnBzdHJtLmNsb3NlKCk7CglpbnBm aWxlLmNsb3NlKCk7CiAgICAgIH0gY2F0Y2ggKElPRXhjZXB0aW9uIGUpIHsKCVN5c3RlbS5lcnIu cHJpbnRsbihlKTsKICAgICAgfQogICAgfQogICAgdGhpcy5zdGFydCgpOwogIH0KCiAgcHVibGlj IHN0YXRpYyBTeW10YWJFbnRyeSBnZXRTeW10YWJFbnRyeShTdHJpbmcgbmFtZSkgewogICAgU3lt dGFiRW50cnkgZSA9IAogICAgICAoU3ltdGFiRW50cnkpIENoZWNrZXIuc3ltYm9sVGFibGUuZ2V0 KG5hbWUpOwogICAgcmV0dXJuIGU7CiAgfQoKICBwdWJsaWMgc3RhdGljIGxvbmcgZ2V0Q3VycmVu dFRpbWUoKSB7IHJldHVybiBjdXJyZW50VGltZTsgfQogIHB1YmxpYyBzdGF0aWMgdm9pZCBzZXRD dXJyZW50VGltZShsb25nIHQpIHsgY3VycmVudFRpbWUgPSB0OyB9CgogIHB1YmxpYyB2b2lkIHJ1 bigpIHsKICAgIHRyeSB7CiAgICAgIHdoaWxlKHRydWUpIHsKCVNvY2tldCBjbGllbnRfc29ja2V0 ID0gbGlzdGVuX3NvY2tldC5hY2NlcHQoKTsKCUNvbm5lY3Rpb24yRVIgYyA9IG5ldyBDb25uZWN0 aW9uMkVSKGNsaWVudF9zb2NrZXQsc3RlZXJlcixkb1N0ZWVyaW5nKTsKICAgICAgfQogICAgfQog ICAgY2F0Y2goSU9FeGNlcHRpb24gZSkgewogICAgICBmYWlsKGUsICJFeGNlcHRpb24gd2hpbGUg bGlzdGVuaW5nIGZvciBDb25uZWN0aW9uMkVScyIpOwogICAgfQogIH0KCiAgLyoqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAg KiBhcmdbMF0gOiBwb3J0IGZvciBsaXN0ZW5pbmcgdG8gZXZlbnQgcmVjb2duaXplcgogICAqIGFy Z1sxXSA6IExvY2F0aW9uIG9mIHN0ZWVyZXIgYXMgaG9zdDpwb3J0CiAgICogYXJnWzJdIDogZmls ZW5hbWUgY29udGFpbmluZyBwYXJzZSB0cmVlIG9mIE1FREwgc2NyaXB0CiAgICoqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAg cHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgewogICAgU3RyaW5nIHN0ZWVy ZXIgPSAiIjsKICAgIGludCBwb3J0ID0gMDsKICAgIGlmIChhcmdzLmxlbmd0aCA9PSAyKSB7CiAg ICAgIGRvU3RlZXJpbmcgPSBmYWxzZTsKICAgICAgdHJ5IHsKICAgICAgICBwb3J0ID0gSW50ZWdl ci5wYXJzZUludChhcmdzWzBdKTsKICAgICAgfQogICAgICBjYXRjaChOdW1iZXJGb3JtYXRFeGNl cHRpb24gZSl7cG9ydCA9IDA7fQoKICAgICAgbmV3IENoZWNrZXIocG9ydCwgc3RlZXJlciwgYXJn c1sxXSk7CiAgICB9IGVsc2UgaWYgKChhcmdzLmxlbmd0aCA9PSA0KSAmJiAoYXJnc1swXSkuZXF1 YWxzSWdub3JlQ2FzZSgiLXMiKSkgewogICAgICBkb1N0ZWVyaW5nID0gdHJ1ZTsKICAgICAgdHJ5 IHsKCXBvcnQgPSBJbnRlZ2VyLnBhcnNlSW50KGFyZ3NbMV0pOwogICAgICB9CiAgICAgIGNhdGNo KE51bWJlckZvcm1hdEV4Y2VwdGlvbiBlKXtwb3J0ID0gMDt9CgogICAgICAvLyBTdHVmZiBzcGVj aWZpYyB0byB0aGUgTUFWIGRlbW8KICAgICAgLy8gbWFjLmd1aS5NQVZndWkuTUFWYWxlcnRHcmFw aC5tYWluKG5ldyBTdHJpbmdbXSB7IjIwIiwiMTAwMCIsIjcwIn0pOwoKICAgICAgc3RlZXJlciA9 IGFyZ3NbMl07CiAgICAgIG5ldyBDaGVja2VyKHBvcnQsIHN0ZWVyZXIsIGFyZ3NbM10pOwogICAg fSBlbHNlIHsKICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJNYUMgUnVuLXRpbWUgQ2hlY2tlciBW ZXJzaW9uIDAuMTogIFVzYWdlIGlzIC4uLiIpOwogICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIiAg ICBqYXZhIG1hYy5ydW50aW1lQ2hlY2tlci5pbnRlcnByZXRlci5DaGVja2VyIiArIAoJCQkgIiBb LXNdIGxpc3Rlbl9wb3J0Iik7CiAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiICAgICAgICAgW3N0 ZWVyaW5nX2hvc3Q6c3RlZXJpbmdfcG9ydF0iICsKICAgICAgICAgICAgICAgICAgICAgICAgICIg TUVETF9vdXRwdXRfZmlsZSIpOwogICAgICBTeXN0ZW0uZXhpdCgxKTsKICAgIH0KICB9Cn0KCmNs YXNzIENvbm5lY3Rpb24yRVIgZXh0ZW5kcyBUaHJlYWQgewogIHB1YmxpYyBmaW5hbCBzdGF0aWMg aW50IERFRkFVTFRfT1VUUFVUX1BPUlQgPSA4MDQyOwogIHB1YmxpYyBmaW5hbCBzdGF0aWMgU3Ry aW5nIERFRkFVTFRfT1VUUFVUX0hPU1QgPSAic2F1bC5jaXMudXBlbm4uZWR1IjsKCiAgcHJvdGVj dGVkIFNvY2tldCBjbGllbnQ7CiAgcHJvdGVjdGVkIFN0cmluZyBzdGVlcmVySG9zdDsKICBwcm90 ZWN0ZWQgaW50IHN0ZWVyZXJQb3J0OwogIHByb3RlY3RlZCBib29sZWFuIGRvU3RlZXJpbmc7CiAg U29ja2V0IHN0ZWVyZXI7CiAgcHJvdGVjdGVkIERhdGFJbnB1dFN0cmVhbSBpbjsKICBwcm90ZWN0 ZWQgT2JqZWN0SW5wdXRTdHJlYW0gaW5PYmo7CiAgT2JqZWN0T3V0cHV0U3RyZWFtIG91dDsKCiAg Ly8gRm9yIGRhdGFiYXNlIGNsaWVudCBleGFtcGxlCiAgLy8gRXh0Q29ubmVjdGlvbiBleHRlcm5h bENvbm5lY3Rpb247CiAgCiAgLy8gYm9vbGVhbiBJQyA7CiAgLy8gYm9vbGVhbiBHRCA7CiAgCiAg cHVibGljIENvbm5lY3Rpb24yRVIoU29ja2V0IGNsaWVudF9zb2NrZXQsIFN0cmluZyBzdGVlcmxv YywgCiAgICAgICAgICAgICAgICAgICAgICAgYm9vbGVhbiBkb1N0ZWVyKSB7CiAgICBjbGllbnQg PSBjbGllbnRfc29ja2V0OwoKICAgIC8vICAgIElDID0gZmFsc2U7CiAgICAvLyAgICBHRCA9IGZh bHNlOwoKICAgIGRvU3RlZXJpbmcgPSBkb1N0ZWVyOwogICAgaWYgKHN0ZWVybG9jLmxhc3RJbmRl eE9mKCI6IikgPT0gLTEpIHsKICAgICAgc3RlZXJlckhvc3QgPSBERUZBVUxUX09VVFBVVF9IT1NU OwogICAgICBzdGVlcmVyUG9ydCA9IERFRkFVTFRfT1VUUFVUX1BPUlQ7CiAgICB9IGVsc2Ugewog ICAgICBzdGVlcmVySG9zdCA9IHN0ZWVybG9jLnN1YnN0cmluZygwLHN0ZWVybG9jLmxhc3RJbmRl eE9mKCI6IikpOwogICAgICB0cnkgewogICAgICAgIHN0ZWVyZXJQb3J0ID0gKEludGVnZXIudmFs dWVPZigKICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZWVybG9jLnN1YnN0cmluZyhzdGVlcmxv Yy5sYXN0SW5kZXhPZigiOiIpKzEsCiAgICAgICAgICAgICAgICAgICAgICAgICBzdGVlcmxvYy5s ZW5ndGgoKSkpKS5pbnRWYWx1ZSgpOwogICAgICB9IGNhdGNoKE51bWJlckZvcm1hdEV4Y2VwdGlv biBlKSB7CiAgICAgICAgc3RlZXJlclBvcnQgPSBERUZBVUxUX09VVFBVVF9QT1JUOwogICAgICB9 CiAgICB9CiAgICB0cnkgewogICAgICAvL2luID0gbmV3IERhdGFJbnB1dFN0cmVhbShjbGllbnQu Z2V0SW5wdXRTdHJlYW0oKSk7CiAgICAgIGluT2JqID0gbmV3IE9iamVjdElucHV0U3RyZWFtKG5l dyBCdWZmZXJlZElucHV0U3RyZWFtKGNsaWVudC5nZXRJbnB1dFN0cmVhbSgpKSk7CiAgICAgIC8v aW5PYmogPSBuZXcgT2JqZWN0SW5wdXRTdHJlYW0oaW4pOwogICAgfQogICAgY2F0Y2goSU9FeGNl cHRpb24gZSkgewogICAgICB0cnl7Y2xpZW50LmNsb3NlKCk7fSBjYXRjaChJT0V4Y2VwdGlvbiBl Mil7fQogICAgICBTeXN0ZW0uZXJyLnByaW50bG4oIkV4Y2VwdGlvbiB3aGlsZSBnZXR0aW5nIHNv Y2tldCBzdHJlYW1zOiAiICtlKTsKICAgICAgcmV0dXJuOwogICAgfQogICAgLy90cnkgewogICAg ICAvL2V4dGVybmFsQ29ubmVjdGlvbiA9IG5ldyBFeHRDb25uZWN0aW9uKCJEQl9DSEsiLCAic2F1 bC5jaXMudXBlbm4uZWR1IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Ly8gICAgICA4MDE3KTsKICAgIC8vfSBjYXRjaChJT0V4Y2VwdGlvbiBlKSB7CiAgICAvLyAgU3lz dGVtLmVyci5wcmludGxuKCJNYUMgQ2hlY2tlcjogQ29ubmVjdGlvbiB0byBHVUkgZmFpbGVkISIp OwogICAgLy99CiAgICB0aGlzLnN0YXJ0KCk7CiAgfQoKICBwdWJsaWMgdm9pZCBydW4oKSB7CiAg ICBFckNoa09iamVjdCBvOwogICAgYm9vbGVhbiBzdGFydFBnbTsKICAgIEFTVEV4cHJlc3Npb24g bm9kZSA9IG51bGw7CiAgICBTeW10YWJFbnRyeSBlbnQgPSBudWxsOwoKICAgIHRyeSB7CiAgICAg IG8gPSAoRXJDaGtPYmplY3QpaW5PYmoucmVhZE9iamVjdCgpOwogICAgICBpZiAoZG9TdGVlcmlu ZykgewogICAgICAgIHN0ZWVyZXIgPSBuZXcgU29ja2V0KHN0ZWVyZXJIb3N0LHN0ZWVyZXJQb3J0 KTsKICAgICAgICAvKm91dCA9IG5ldyBPYmplY3RPdXRwdXRTdHJlYW0obmV3IEJ1ZmZlcmVkT3V0 cHV0U3RyZWFtKAogICAgCQkgIHN0ZWVyZXIuZ2V0T3V0cHV0U3RyZWFtKCkpKTsqLwogICAgICAg IG91dCA9IG5ldyBPYmplY3RPdXRwdXRTdHJlYW0oc3RlZXJlci5nZXRPdXRwdXRTdHJlYW0oKSk7 CiAgICAgICAgaWYgKG91dCAhPSBudWxsKSB7CiAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4o IkNvbm5lY3Rpb24gZXN0YWJsaXNoZWQgdG8gU3RlZXJlciBhdCAiCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICArIHN0ZWVyZXJIb3N0ICsgIjoiICsgc3RlZXJlclBvcnQpOwogICAgICAgIH0K ICAgICAgfSBlbHNlIHsKICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIk5vIHN0ZWVyaW5nIGlu IHRoaXMgZXhlY3V0aW9uLiIpOwogICAgICB9CiAgICAgIHdoaWxlKHRydWUpIHsKCXJlc2V0U3lt Ym9sVGFibGUoKTsKCXN0YXJ0UGdtID0gdXBkYXRlU3ltYm9sVGFibGUobyk7CglDaGVja2VyLnBh cnNlVHJlZS51bm1hcmsoKTsKCWlmICghc3RhcnRQZ20pIHsKCSAgQ2hlY2tlci5wYXJzZVRyZWUu ZXZhbHVhdGUoKTsKCSAgcmVwb3J0U3RhdHVzKCk7CiAgICAgICAgICBpZiAoZG9TdGVlcmluZykK ICAgICAgICAgICAgaW52b2tlQWN0aW9ucygpOwoKICAgICAgICAgIC8vIFNwZWNpZmljIGZvciBN QVYgZGVtbyEhISEKICAgICAgICAgIC8vIGluZm9ybU1hdkdVSSgpOwoKCX0gZWxzZSB7CgkgIGZv ciAoaW50IGkgPSAwOyBpIDwgQ2hlY2tlci5wYXJzZVRyZWUuamp0R2V0TnVtQ2hpbGRyZW4oKTsg aSsrKSB7CgkgICAgaWYgKENoZWNrZXIucGFyc2VUcmVlLmpqdEdldENoaWxkKGkpIGluc3RhbmNl b2YgQVNURXhwcmVzc2lvbikgewoJICAgICAgbm9kZSA9IChBU1RFeHByZXNzaW9uKSBDaGVja2Vy LnBhcnNlVHJlZS5qanRHZXRDaGlsZChpKTsKCSAgICAgIG5vZGUuZXZhbHVhdGUoKTsKCSAgICB9 CgkgIH0KCX0KCW8gPSAoRXJDaGtPYmplY3QpaW5PYmoucmVhZE9iamVjdCgpOwogICAgICB9CiAg ICB9CiAgICBjYXRjaChFT0ZFeGNlcHRpb24gZSl7fQogICAgY2F0Y2goSU9FeGNlcHRpb24gZSl7 U3lzdGVtLmVyci5wcmludGxuKGUpO30KICAgIGNhdGNoKENsYXNzTm90Rm91bmRFeGNlcHRpb24g ZSkgeyBTeXN0ZW0uZXJyLnByaW50bG4oZSk7IH0KICAgIGZpbmFsbHl7IHRyeSB7Y2xpZW50LmNs b3NlKCk7fSBjYXRjaChJT0V4Y2VwdGlvbiBlMil7fX0KICB9CgogIHB1YmxpYyB2b2lkIHJlc2V0 U3ltYm9sVGFibGUoKSB7CiAgICBFbnVtZXJhdGlvbiBlbnRyaWVzID0gQ2hlY2tlci5zeW1ib2xU YWJsZS5lbGVtZW50cygpOwogICAgd2hpbGUgKGVudHJpZXMuaGFzTW9yZUVsZW1lbnRzKCkpIHsK ICAgICAgKChTeW10YWJFbnRyeSkgKGVudHJpZXMubmV4dEVsZW1lbnQoKSkpLnJlc2V0VXBkYXRl ZCgpOwogICAgfQogIH0KCiAgcHVibGljIGJvb2xlYW4gdXBkYXRlU3ltYm9sVGFibGUoRXJDaGtP YmplY3QgbmV3T2JqKSB7CiAgICBTeW10YWJFbnRyeSBlID0gbnVsbDsKICAgIGxvbmcgdGltZSA9 IG5ld09iai5nZXRUaW1lKCk7CiAgICBTdHJpbmcgbmFtZSA9ICIiOwogICAgVmVjdG9yIGVjbGlz dCA9IG5ld09iai5nZXRFdmVudHMoKTsKICAgIGJvb2xlYW4gc3RhcnQgPSBmYWxzZTsKICAgIEV2 ZW50VHlwZSB2YWwgPSBudWxsOwoKICAgIENoZWNrZXIuc2V0Q3VycmVudFRpbWUodGltZSk7Cgog ICAgLy9TeXN0ZW0ub3V0LnByaW50bG4oIkN1cnJlbnQgdGltZSA9ICIgKyB0aW1lKTsKCiAgICBp ZiAoZWNsaXN0ICE9IG51bGwpIHsKICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBlY2xpc3Quc2l6 ZSgpOyBpKyspIHsKICAgICAgICBuYW1lID0gKChFdmVudCkgZWNsaXN0LmVsZW1lbnRBdChpKSku Z2V0TmFtZSgpOwogICAgICAgIHN0YXJ0ID0gbmFtZS5lcXVhbHNJZ25vcmVDYXNlKCJzdGFydFBn bSIpOwogICAgICAgIGUgPSBDaGVja2VyLmdldFN5bXRhYkVudHJ5KG5hbWUpOwogICAgICAgIGUu c2V0VXBkYXRlZCgpOwogICAgICAgIGUuc2V0VGltZSh0aW1lKTsKICAgICAgICB2YWwgPSBuZXcg RXZlbnRUeXBlKHRydWUsICgoRXZlbnQpIGVjbGlzdC5lbGVtZW50QXQoaSkpLmdldFZhbHVlKCkp OwogICAgICAgIGUuc2V0VmFsdWUodmFsKTsKCiAgICAgICAgLy8gRGVidWdnaW5nIHN0dWZmCiAg ICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJFdmVudCAiICsgbmFtZSArICIgaGFzIGhhcHBlbmVk ISIpOwogICAgICAKICAgICAgICAvLyBEYXRhYmFzZSBjbGllbnQgZXhhbXBsZQogICAgICAgIC8v aWYgKGV4dGVybmFsQ29ubmVjdGlvbi5pc0Nvbm5lY3RlZCgpICkKICAgICAgICAgLy8gZXh0ZXJu YWxDb25uZWN0aW9uLmV4cG9ydEV2ZW50KG5hbWUpOwogICAgICB9CiAgICB9CiAgICBlY2xpc3Qg PSBuZXdPYmouZ2V0U3RhcnRDb25kcygpOwogICAgaWYgKGVjbGlzdCAhPSBudWxsKSB7CiAgICAg IGZvciAoaW50IGkgPSAwOyBpIDwgZWNsaXN0LnNpemUoKTsgaSsrKSB7CiAgICAgICAgbmFtZSA9 IChTdHJpbmcpIGVjbGlzdC5lbGVtZW50QXQoaSk7CiAgICAgICAgZSA9IENoZWNrZXIuZ2V0U3lt dGFiRW50cnkobmFtZSk7CiAgICAgICAgZS5zZXRPbGRWYWx1ZShlLmdldFZhbHVlKCkpOwogICAg ICAgIGUuc2V0VmFsdWUobmV3IFRocmVlVmFsdWVkKHRydWUpKTsKCiAgICAgICAgLy8gRGVidWdn aW5nIHN0dWZmCiAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJDb25kaXRpb24gIiArIG5hbWUg KyAiIGhhcyBzdGFydGVkISIpOwogICAgICB9CiAgICB9CiAgICBlY2xpc3QgPSBuZXdPYmouZ2V0 RW5kQ29uZHMoKTsKICAgIGlmIChlY2xpc3QgIT0gbnVsbCkgewogICAgICBmb3IgKGludCBpID0g MDsgaSA8IGVjbGlzdC5zaXplKCk7IGkrKykgewogICAgICAgIG5hbWUgPSAoU3RyaW5nKSBlY2xp c3QuZWxlbWVudEF0KGkpOwogICAgICAgIGUgPSBDaGVja2VyLmdldFN5bXRhYkVudHJ5KG5hbWUp OwogICAgICAgIGUuc2V0T2xkVmFsdWUoZS5nZXRWYWx1ZSgpKTsKICAgICAgICBlLnNldFZhbHVl KG5ldyBUaHJlZVZhbHVlZChmYWxzZSkpOwoKICAgICAgICAvLyBEZWJ1Z2dpbmcgc3R1ZmYKICAg ICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIkNvbmRpdGlvbiAiICsgbmFtZSArICIgaGFzIGVuZGVk ISIpOwogICAgICB9CiAgICB9CiAgICBlY2xpc3QgPSBuZXdPYmouZ2V0VW5kZWZpbmVkQ29uZHMo KTsKICAgIGlmIChlY2xpc3QgIT0gbnVsbCkgewogICAgICBmb3IgKGludCBpID0gMDsgaSA8IGVj bGlzdC5zaXplKCk7IGkrKykgewogICAgICAgIG5hbWUgPSAoU3RyaW5nKSBlY2xpc3QuZWxlbWVu dEF0KGkpOwogICAgICAgIGUgPSBDaGVja2VyLmdldFN5bXRhYkVudHJ5KG5hbWUpOwogICAgICAg IGUuc2V0T2xkVmFsdWUoZS5nZXRWYWx1ZSgpKTsKICAgICAgICBlLnNldFZhbHVlKG5ldyBUaHJl ZVZhbHVlZCgidW5kZWZpbmVkIikpOwoKICAgICAgICAvLyBEZWJ1Z2dpbmcgc3R1ZmYKICAgICAg ICBTeXN0ZW0ub3V0LnByaW50bG4oIkNvbmRpdGlvbiAiICsgbmFtZSArICIgaGFzIGJlY29tZSB1 bmRlZmluZWQhIik7CiAgICAgIH0KICAgIH0KICAgIHJldHVybiBzdGFydDsKICB9CgogIHB1Ymxp YyB2b2lkIGludm9rZUFjdGlvbnMoKSB7CiAgICBTdHJpbmcgbmFtZSA9ICIiOwogICAgU3ltdGFi RW50cnkgZW50cnkgPSBudWxsOwoKICAgIHRyeSB7CiAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwg Q2hlY2tlci5hY3Rpb25zLnNpemUoKTsgaSsrKSB7CiAgICAgICAgbmFtZSA9IChTdHJpbmcpIENo ZWNrZXIuYWN0aW9ucy5lbGVtZW50QXQoaSk7CiAgICAgICAgZW50cnkgPSBDaGVja2VyLmdldFN5 bXRhYkVudHJ5KG5hbWUpOwogICAgICAgIGlmIChlbnRyeS5pc1VwZGF0ZWQoKSkgewogICAgICAg ICAgb3V0LndyaXRlT2JqZWN0KG5ldyBBY3Rpb25DYWxsKG5hbWUsIG51bGwpKTsKCSAgU3lzdGVt Lm91dC5wcmludGxuKCJJTlZPS0UgIiArIG5hbWUpOwoJfQogICAgICB9CiAgICB9IGNhdGNoKElP RXhjZXB0aW9uIGUpIHsKICAgICAgU3lzdGVtLmVyci5wcmludGxuKGUpOwogICAgfQogIH0KCiAg cHVibGljIHZvaWQgcmVwb3J0U3RhdHVzKCkgewogICAgU3RyaW5nIG5hbWUgPSAiIjsKICAgIGJv b2xlYW4gdmFsdWUgPSBmYWxzZTsKICAgIGludCB0aHJWYWx1ZSA9IDA7CiAgICBTeW10YWJFbnRy eSBlID0gbnVsbDsKICAgIE5vZGUgZXhwVHJlZSA9IG51bGw7CgogICAgLy8gRGF0YWJhc2UgZXhh bXBsZSBvbmx5ISEKICAgIC8qaW50IG52YWwgPSAwOwogICAgZSA9IENoZWNrZXIuZ2V0U3ltdGFi RW50cnkoIm51bUNvblN0YXJ0Iik7CiAgICBTeXN0ZW0ub3V0LnByaW50bG4oZSk7CiAgICBpZiAo KChBdXhWYXJWYWx1ZSkgZS5nZXRWYWx1ZSgpKS5nZXRWYWx1ZSgpICE9IG51bGwpIHsKICAgICAg bnZhbCA9ICgoSW50ZWdlcikgKChBdXhWYXJWYWx1ZSkgZS5nZXRWYWx1ZSgpKS5nZXRWYWx1ZSgp KS5pbnRWYWx1ZSgpOwogICAgICBpZiAoZXh0ZXJuYWxDb25uZWN0aW9uLmlzQ29ubmVjdGVkKCkp IAogICAgICAgIGV4dGVybmFsQ29ubmVjdGlvbi5leHBvcnRFdmVudCgibnVtQ29uU3RhcnQiLCBu dmFsKTsgCiAgICB9CiAgICBlID0gQ2hlY2tlci5nZXRTeW10YWJFbnRyeSgibnVtQ29uRmFpbCIp OwogICAgaWYgKCgoQXV4VmFyVmFsdWUpIGUuZ2V0VmFsdWUoKSkuZ2V0VmFsdWUoKSAhPSBudWxs KSB7CiAgICAgIG52YWwgPSAoKEludGVnZXIpICgoQXV4VmFyVmFsdWUpIGUuZ2V0VmFsdWUoKSku Z2V0VmFsdWUoKSkuaW50VmFsdWUoKTsKICAgICAgaWYgKGV4dGVybmFsQ29ubmVjdGlvbi5pc0Nv bm5lY3RlZCgpKSAKCiAgICAgICAgZXh0ZXJuYWxDb25uZWN0aW9uLmV4cG9ydEV2ZW50KCJudW1D b25GYWlsIiwgbnZhbCk7CiAgICB9Ki8KCiAgICBmb3IgKGludCBpID0gMDsgaSA8IENoZWNrZXIu YWxhcm1zLnNpemUoKTsgaSsrKSB7CiAgICAgIG5hbWUgPSAoU3RyaW5nKSBDaGVja2VyLmFsYXJt cy5lbGVtZW50QXQoaSk7CiAgICAgIGUgPSBDaGVja2VyLmdldFN5bXRhYkVudHJ5KG5hbWUpOwog ICAgICBpZiAoZS5nZXRUeXBlKCkuZXF1YWxzSWdub3JlQ2FzZSgiX2ltcG9ydGVkIikpIHsKCWlm IChlLmlzVXBkYXRlZCgpKQoJICB2aW9sYXRpb24obmFtZSwgdHJ1ZSk7CiAgICAgIH0gZWxzZSBp ZiAoZS5nZXRUeXBlKCkuZXF1YWxzSWdub3JlQ2FzZSgiX2RlZmluZWQiKSkgewoJZXhwVHJlZSA9 IChOb2RlKSBlLmdldFZhbHVlKCk7Cgl2YWx1ZSA9ICgoRXZlbnRUeXBlKSBleHBUcmVlLmV2YWx1 YXRlKCkpLmlzUHJlc2VudCgpOwoJaWYgKHZhbHVlKQoJICB2aW9sYXRpb24obmFtZSwgdHJ1ZSk7 CiAgICAgIH0gZWxzZSB7CglTeXN0ZW0uZXJyLnByaW50bG4oIkluY29ycmVjdCB0eXBlIGZvciBl dmVudCBpbiBTeW1ib2wgVGFibGUgIiArCgkJCSAgICJpbiBjaGVja2VyLiIpOwogICAgICB9CiAg ICB9CiAgICBmb3IgKGludCBpID0gMDsgaSA8IENoZWNrZXIucHJvcGVydGllcy5zaXplKCk7IGkr KykgewogICAgICBuYW1lID0gKFN0cmluZykgQ2hlY2tlci5wcm9wZXJ0aWVzLmVsZW1lbnRBdChp KTsKICAgICAgZSA9IENoZWNrZXIuZ2V0U3ltdGFiRW50cnkobmFtZSk7CiAgICAgIGlmIChlLmdl dFR5cGUoKS5lcXVhbHNJZ25vcmVDYXNlKCJfaW1wb3J0ZWQiKSkgewoJdGhyVmFsdWUgPSAoKFRo cmVlVmFsdWVkKSBlLmdldFZhbHVlKCkpLmdldFZhbHVlKCk7CglpZiAodGhyVmFsdWUgPT0gVGhy ZWVWYWx1ZWQuRkFMU0UpCgkgIHZpb2xhdGlvbihuYW1lLCBmYWxzZSk7CiAgICAgIH0gZWxzZSBp ZiAoZS5nZXRUeXBlKCkuZXF1YWxzSWdub3JlQ2FzZSgiX2RlZmluZWQiKSkgewoJZXhwVHJlZSA9 IChOb2RlKSBlLmdldFZhbHVlKCk7Cgl0aHJWYWx1ZSA9ICgoVGhyZWVWYWx1ZWQpIGV4cFRyZWUu ZXZhbHVhdGUoKSkuZ2V0VmFsdWUoKTsKCWlmICh0aHJWYWx1ZSA9PSBUaHJlZVZhbHVlZC5GQUxT RSkKCSAgdmlvbGF0aW9uKG5hbWUsIGZhbHNlKTsKICAgICAgfSBlbHNlIHsKCVN5c3RlbS5lcnIu cHJpbnRsbigiSW5jb3JyZWN0IHR5cGUgZm9yIGNvbmRpdGlvbiBpbiBTeW1ib2wgVGFibGUgIiAr CgkJCSAgICJpbiBjaGVja2VyLiIpOwogICAgICB9CiAgICB9CiAgfQogIAogIC8vIFJvdXRpbmUg c3BlY2lmaWMgdG8gTUFWIGRlbW8KICBwdWJsaWMgdm9pZCBpbmZvcm1NYXZHVUkoKSB7CiAgICBT dHJpbmcgZXZlbnQxID0gImVuZFBlcmlvZCI7CiAgICBTdHJpbmcgZXZlbnQyID0gImluY3JlYXNl IjsKICAgIFN0cmluZyBhdXhWYXJOYW1lID0gInByZXZDb3VudDEiOwogICAgU3RyaW5nIG5hbWUg PSAiIjsKICAgIFN5bXRhYkVudHJ5IGUgPSBDaGVja2VyLmdldFN5bXRhYkVudHJ5KGV2ZW50MSk7 CiAgICBib29sZWFuIHZhbHVlID0gZmFsc2U7CiAgICBib29sZWFuIGluY3JlYXNlID0gZmFsc2U7 CiAgICBpbnQgaSA9IDA7CiAgICBOb2RlIGV4cFRyZWUgPSBudWxsOwoKICAgIGlmIChlICE9IG51 bGwpIHsKICAgICAgaWYgKGUuZ2V0VHlwZSgpLmVxdWFsc0lnbm9yZUNhc2UoIl9pbXBvcnRlZCIp KSB7CglpZiAoZS5pc1VwZGF0ZWQoKSkKICAgICAgICAgIHZhbHVlID0gdHJ1ZTsKICAgICAgfSBl bHNlIGlmIChlLmdldFR5cGUoKS5lcXVhbHNJZ25vcmVDYXNlKCJfZGVmaW5lZCIpKSB7CglleHBU cmVlID0gKE5vZGUpIGUuZ2V0VmFsdWUoKTsKCXZhbHVlID0gKChCb29sZWFuKSBleHBUcmVlLmV2 YWx1YXRlKCkpLmJvb2xlYW5WYWx1ZSgpOyAKICAgICAgfQogICAgfQogICAgCiAgICAvKgogICAg ZSA9IENoZWNrZXIuZ2V0U3ltdGFiRW50cnkoZXZlbnQyKTsKICAgIGlmIChlICE9IG51bGwpIHsK ICAgICAgaWYgKGUuZ2V0VHlwZSgpLmVxdWFsc0lnbm9yZUNhc2UoIl9pbXBvcnRlZCIpKSB7Cglp ZiAoZS5pc1VwZGF0ZWQoKSkKICAgICAgICAgIGluY3JlYXNlID0gdHJ1ZTsKICAgICAgfSBlbHNl IGlmIChlLmdldFR5cGUoKS5lcXVhbHNJZ25vcmVDYXNlKCJfZGVmaW5lZCIpKSB7CglleHBUcmVl ID0gKE5vZGUpIGUuZ2V0VmFsdWUoKTsKCWluY3JlYXNlID0gKChCb29sZWFuKSBleHBUcmVlLmV2 YWx1YXRlKCkpLmJvb2xlYW5WYWx1ZSgpOyAKICAgICAgfQogICAgfQogICAgKi8KICAgIGlmICh2 YWx1ZSkgewogICAgICBlID0gQ2hlY2tlci5nZXRTeW10YWJFbnRyeShhdXhWYXJOYW1lKTsKICAg ICAgaSA9ICgoSW50ZWdlcikgKChBdXhWYXJWYWx1ZSkgZS5nZXRWYWx1ZSgpKS5nZXRWYWx1ZSgp KS5pbnRWYWx1ZSgpOwogICAgICBtYWMuZ3VpLk1BVmd1aS5NQVZhbGVydEdyYXBoLmNvbnRyb2xs ZXIucmVjdGFuZ2xlQXJlYS5kcmF3TUFWYWxlcnQoaSxpbmNyZWFzZSk7CiAgICB9CgogICAgZm9y IChpbnQgaiA9IDA7IGogPCBDaGVja2VyLmFjdGlvbnMuc2l6ZSgpOyBqKyspIHsKICAgICAgbmFt ZSA9IChTdHJpbmcpIENoZWNrZXIuYWN0aW9ucy5lbGVtZW50QXQoaik7CiAgICAgIGUgPSBDaGVj a2VyLmdldFN5bXRhYkVudHJ5KG5hbWUpOwogICAgICBpZiAoZS5pc1VwZGF0ZWQoKSkgewogICAg ICAgIG1hYy5ndWkuTUFWZ3VpLk1BVmFsZXJ0R3JhcGguY29udHJvbGxlci5yZWN0YW5nbGVBcmVh LnNob3dBY3Rpb24obmFtZSk7CiAgICAgIH0KICAgIH0KICB9CgoKICAvLyBSZW1vdmVkIHN0YXRp YyBiZWNhdXNlIG9mIGRhdGFiYXNlIGV4YW1wbGUgdmFyaWFibGUgZXh0ZXJuYWxDb25uZWN0aW9u CiAgcHVibGljIC8qc3RhdGljKi8gdm9pZCB2aW9sYXRpb24oU3RyaW5nIG5hbWUsIGJvb2xlYW4g aXNBbGFybSkgewogICAgU3RyaW5nIGxpbmUgPSAiIjsKICAgIGludCBudW1TcGFjZXMgPSAwOwoK ICAgIGlmIChpc0FsYXJtKQogICAgICBsaW5lID0gIkFsYXJtICIgKyBuYW1lICsgIiBoYXMgYmVl biByYWlzZWQhISI7CiAgICBlbHNlCiAgICAgIGxpbmUgPSAiUHJvcGVydHkgIiArIG5hbWUgKyAi IGhhcyBiZWVuIHZpb2xhdGVkISEiOwoKICAgIC8vIEZvciBkYXRhYmFzZSBjbGllbnQgZXhhbXBs ZQogICAgLy8gaWYgKGV4dGVybmFsQ29ubmVjdGlvbi5pc0Nvbm5lY3RlZCgpKSAKICAgICAgLy8g ZXh0ZXJuYWxDb25uZWN0aW9uLmV4cG9ydEV2ZW50KG5hbWUpOwoKICAgIC8vIFByZXR0eSBwcmlu dGluZyByb3V0aW5lCiAgICBwcmludExpbmVzKCk7CiAgICBwcmludEVtcHR5TWlkZGxlTGluZXMo KTsKICAgIG51bVNwYWNlcyA9ICg2MiAtIGxpbmUubGVuZ3RoKCkpLzI7CiAgICBTeXN0ZW0ub3V0 LnByaW50KCI9PT09Iik7CiAgICBmb3IgKGludCBpPTA7IGk8bnVtU3BhY2VzOyBpKyspCiAgICAg IFN5c3RlbS5vdXQucHJpbnQoIiAiKTsKICAgIFN5c3RlbS5vdXQucHJpbnQobGluZSk7CiAgICBm b3IgKGludCBpPTA7IGkgPCAoNjIgLSBsaW5lLmxlbmd0aCgpIC0gbnVtU3BhY2VzKTsgaSsrKQog ICAgICBTeXN0ZW0ub3V0LnByaW50KCIgIik7CiAgICBTeXN0ZW0ub3V0LnByaW50bG4oIj09PT0i KTsKICAgIHByaW50RW1wdHlNaWRkbGVMaW5lcygpOwogICAgcHJpbnRMaW5lcygpOwogICAgICAK ICAgIC8vIEFubm95aW5nIGJlZXAKICAgIC8qZm9yKGludCBpPTA7IGkgPCAxNSA7IGkrKykgewog ICAgICBTeXN0ZW0uZXJyLnByaW50KCIHIik7CiAgICAgIHRyeXsgCglzbGVlcCgxMDApOwogICAg ICB9Y2F0Y2goSW50ZXJydXB0ZWRFeGNlcHRpb24gZSkge30KICAgIH0qLwogICAgU3lzdGVtLmVy ci5wcmludCgiByIpOwogIH0KICBwdWJsaWMgc3RhdGljIHZvaWQgcHJpbnRMaW5lcygpIHsKICAg IGZvciAoaW50IGk9MDsgaTw0OyBpKyspIHsKICAgICAgZm9yIChpbnQgaj0wOyBqIDwgNzA7IGor KykKCVN5c3RlbS5vdXQucHJpbnQoIj0iKTsKICAgICAgU3lzdGVtLm91dC5wcmludGxuKCIiKTsK ICAgIH0KICB9CiAgcHVibGljIHN0YXRpYyB2b2lkIHByaW50RW1wdHlNaWRkbGVMaW5lcygpIHsK ICAgIGZvciAoaW50IGk9MDsgaTwyOyBpKyspIHsKICAgICAgU3lzdGVtLm91dC5wcmludCgiPT09 PSIpOwogICAgICBmb3IgKGludCBqPTA7IGogPCA2MjsgaisrKQoJU3lzdGVtLm91dC5wcmludCgi ICIpOwogICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIj09PT0iKTsKICAgIH0KICB9Cn0KCgoKCgoK