ZGlmZiAtLWdpdCBhL3BsdWdpbnMvb3JnLmVjbGlwc2UuYWN0Zi52aXN1YWxpemF0aW9uLmVuZ2luZXMuYmxpbmQuaHRtbC9zcmMvbWVzc2FnZXMucHJvcGVydGllcyBiL3BsdWdpbnMvb3JnLmVjbGlwc2UuYWN0Zi52aXN1YWxpemF0aW9uLmVuZ2luZXMuYmxpbmQuaHRtbC9zcmMvbWVzc2FnZXMucHJvcGVydGllcwppbmRleCA5OTg3MjA2Li4yMzM0ZjFkIDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5lY2xpcHNlLmFjdGYudmlzdWFsaXphdGlvbi5lbmdpbmVzLmJsaW5kLmh0bWwvc3JjL21lc3NhZ2VzLnByb3BlcnRpZXMKKysrIGIvcGx1Z2lucy9vcmcuZWNsaXBzZS5hY3RmLnZpc3VhbGl6YXRpb24uZW5naW5lcy5ibGluZC5odG1sL3NyYy9tZXNzYWdlcy5wcm9wZXJ0aWVzCkBAIC0xLDUgKzEsNSBAQAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyBDb3B5cmlnaHQgKGMpIDIwMDYsIDIwMDggSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCisjIENvcHlyaWdodCAoYykgMjAwNiwgMjAxNiBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KICMgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwogIyBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKICMgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKQEAgLTE0LDMgKzE0LDQgQEAKIENTU1ZpZXdlcl8xPSZPcGVuCiBFbGVtZW50Vmlld2VySkZhY2VfMD1TZWxlY3QKIEVsZW1lbnRWaWV3ZXJKRmFjZV8xPVZpZXcgSGVscC4uLgorUHJvZ3Jlc3NCYXJfMT1pbmRldGVybWluYXRlCmRpZmYgLS1naXQgYS9wbHVnaW5zL29yZy5lY2xpcHNlLmFjdGYudmlzdWFsaXphdGlvbi5lbmdpbmVzLmJsaW5kLmh0bWwvc3JjL21lc3NhZ2VzX2phLnByb3BlcnRpZXMgYi9wbHVnaW5zL29yZy5lY2xpcHNlLmFjdGYudmlzdWFsaXphdGlvbi5lbmdpbmVzLmJsaW5kLmh0bWwvc3JjL21lc3NhZ2VzX2phLnByb3BlcnRpZXMKaW5kZXggMzk2NDg2ZC4uOGMyMGUwYyAxMDA2NDQKLS0tIGEvcGx1Z2lucy9vcmcuZWNsaXBzZS5hY3RmLnZpc3VhbGl6YXRpb24uZW5naW5lcy5ibGluZC5odG1sL3NyYy9tZXNzYWdlc19qYS5wcm9wZXJ0aWVzCisrKyBiL3BsdWdpbnMvb3JnLmVjbGlwc2UuYWN0Zi52aXN1YWxpemF0aW9uLmVuZ2luZXMuYmxpbmQuaHRtbC9zcmMvbWVzc2FnZXNfamEucHJvcGVydGllcwpAQCAtMSw1ICsxLDUgQEAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMgQ29weXJpZ2h0IChjKSAyMDA2LCAyMDA4IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgorIyBDb3B5cmlnaHQgKGMpIDIwMDYsIDIwMTYgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCiAjIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKICMgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCiAjIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0CkBAIC0xNCw0ICsxNCw1IEBACiBDU1NWaWV3ZXJfMT1cdTk1OGJcdTMwNGYoJk8pCiBFbGVtZW50Vmlld2VySkZhY2VfMD1cdTkwNzhcdTYyOWVcdTMwNTlcdTMwOGIKIEVsZW1lbnRWaWV3ZXJKRmFjZV8xPVx1MzBkOFx1MzBlYlx1MzBkN1x1MzA5Mlx1NTNjMlx1NzE2N1x1MzA1OVx1MzA4Yi4uLgorUHJvZ3Jlc3NCYXJfMT1cdTY3MmFcdTc4YmFcdTViOWEKIApkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcuZWNsaXBzZS5hY3RmLnZpc3VhbGl6YXRpb24uZW5naW5lcy5ibGluZC5odG1sL3NyYy9vcmcvZWNsaXBzZS9hY3RmL3Zpc3VhbGl6YXRpb24vZW5naW5lcy9ibGluZC9odG1sL1Zpc3VhbGl6ZUVuZ2luZS5qYXZhIGIvcGx1Z2lucy9vcmcuZWNsaXBzZS5hY3RmLnZpc3VhbGl6YXRpb24uZW5naW5lcy5ibGluZC5odG1sL3NyYy9vcmcvZWNsaXBzZS9hY3RmL3Zpc3VhbGl6YXRpb24vZW5naW5lcy9ibGluZC9odG1sL1Zpc3VhbGl6ZUVuZ2luZS5qYXZhCmluZGV4IDBiNTExNmQuLmJmMTAxNTIgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvb3JnLmVjbGlwc2UuYWN0Zi52aXN1YWxpemF0aW9uLmVuZ2luZXMuYmxpbmQuaHRtbC9zcmMvb3JnL2VjbGlwc2UvYWN0Zi92aXN1YWxpemF0aW9uL2VuZ2luZXMvYmxpbmQvaHRtbC9WaXN1YWxpemVFbmdpbmUuamF2YQorKysgYi9wbHVnaW5zL29yZy5lY2xpcHNlLmFjdGYudmlzdWFsaXphdGlvbi5lbmdpbmVzLmJsaW5kLmh0bWwvc3JjL29yZy9lY2xpcHNlL2FjdGYvdmlzdWFsaXphdGlvbi9lbmdpbmVzL2JsaW5kL2h0bWwvVmlzdWFsaXplRW5naW5lLmphdmEKQEAgLTM4LDYgKzM4LDcgQEAKIGltcG9ydCBvcmcuZWNsaXBzZS5hY3RmLnZpc3VhbGl6YXRpb24uZXZhbC5odG1sLnN0YXRpc3RpY3MuUGFnZURhdGE7CiBpbXBvcnQgb3JnLmVjbGlwc2UuYWN0Zi52aXN1YWxpemF0aW9uLmV2YWwucHJvYmxlbS5JUHJvYmxlbUl0ZW07CiBpbXBvcnQgb3JnLmVjbGlwc2UuYWN0Zi52aXN1YWxpemF0aW9uLmludGVybmFsLmVuZ2luZXMuYmxpbmQuaHRtbC5CbGluZFByb2JsZW07CitpbXBvcnQgb3JnLmVjbGlwc2UuYWN0Zi52aXN1YWxpemF0aW9uLmludGVybmFsLmVuZ2luZXMuYmxpbmQuaHRtbC5NZXNzYWdlczsKIGltcG9ydCBvcmcuZWNsaXBzZS5hY3RmLnZpc3VhbGl6YXRpb24uaW50ZXJuYWwuZW5naW5lcy5ibGluZC5odG1sLnV0aWwuRG9jdW1lbnRDbGVhbmVyOwogaW1wb3J0IG9yZy5lY2xpcHNlLmFjdGYudmlzdWFsaXphdGlvbi5pbnRlcm5hbC5lbmdpbmVzLmJsaW5kLmh0bWwudXRpbC5JbWdDaGVja2VyOwogaW1wb3J0IG9yZy5lY2xpcHNlLmFjdGYudmlzdWFsaXphdGlvbi5pbnRlcm5hbC5lbmdpbmVzLmJsaW5kLmh0bWwudXRpbC5MaW5rQW5hbHl6ZXI7CkBAIC0yNjYsNyArMjY3LDcgQEAKIAkJCWNhbE1heFRpbWUoKTsKIAogCQkJcHJvYmxlbXMuYWRkQWxsKGxpbmtBbmFseXplci5za2lwTGlua0NoZWNrKGlNYXhUaW1lLCBpTWF4VGltZUxlYWYpKTsKLQkJCQorCiAJCQkvLyByZW1vdmUgZW1iZWRkZWQgZWxlbWVudHMgKG9yaWdpbmFsL3Jlc3VsdHMpCiAJCQlmb3IgKFN0cmluZyBzIDogbmV3IFN0cmluZ1tdIHsgInN2ZyIsICJtYXRoIiB9KSB7CiAJCQkJTm9kZUxpc3QgdG1wTkwgPSBvcmlnLmdldEVsZW1lbnRzQnlUYWdOYW1lKHMpOwpAQCAtMjgwLDEyICsyODEsMjAgQEAKIAkJCX0KIAkJCXJlcGxhY2VFbGVtZW50KHJlc3VsdCwgIm1hdGgiLCBuZXcgU3RyaW5nWzBdLCAiTWF0aE1MIik7CiAJCQlyZXBsYWNlRWxlbWVudChyZXN1bHQsICJzdmciLCBuZXcgU3RyaW5nW10geyAidGl0bGUiLCAiZGVzYyIgfSwgIlNWRyIpOwotCQkJcmVwbGFjZUVsZW1lbnQocmVzdWx0LCAidmlkZW8iLCBuZXcgU3RyaW5nWzBdLCAidmlkZW8iKTsgLy9zcmMgb3Igc291cmNlPwotCQkJcmVwbGFjZUVsZW1lbnQocmVzdWx0LCAiYXVkaW8iLCBuZXcgU3RyaW5nWzBdLCAiYXVkaW8iKTsgLy9zcmMgb3Igc291cmNlPworCQkJcmVwbGFjZUVsZW1lbnQocmVzdWx0LCAiY2FudmFzIiwgbmV3IFN0cmluZ1swXSwgImNhbnZhcyIpOworCisJCQkvLyBUQkQgc3JjL3NvdXJjZQorCQkJcmVwbGFjZUVsZW1lbnQocmVzdWx0LCAidmlkZW8iLCBuZXcgU3RyaW5nWzBdLCAidmlkZW8iKTsKKwkJCXJlcGxhY2VFbGVtZW50KHJlc3VsdCwgImF1ZGlvIiwgbmV3IFN0cmluZ1swXSwgImF1ZGlvIik7CiAKIAkJCS8vIHRlbXBsYXRlICh0ZW1wIGNvZGUgKHJlbW92ZSBhZnRlciBJRSBzdXBwb3J0cyB0ZW1wbGF0ZSB0YWcpCiAJCQlyZXBsYWNlRWxlbWVudChyZXN1bHQsICJ0ZW1wbGF0ZSIsIG5ldyBTdHJpbmdbMF0sIG51bGwpOwotCQkJCisKKwkJCS8vIHByb2dyZXNzCisJCQl2aXN1YWxpemVQcm9ncmVzcyhyZXN1bHQpOyAvLyBUT0RPIG1vdmUgdG8gandhdGMKKworCQkJLy8gbWV0ZXIgKEpBV1MgMTUvTlZEQSAyMDE2KSBkbyBub3Qgc3VwcG9ydAorCQkJcmVwbGFjZUVsZW1lbnQocmVzdWx0LCAibWV0ZXIiLCBuZXcgU3RyaW5nWzBdLCAibWV0ZXIiKTsKIAogCQkJcmVwbGFjZUltZ0FuZENoZWNrKHJlc3VsdCwgbWFwRGF0YSwgY3VyUGFyYW1CbGluZC5vUmVwbGFjZUltYWdlKTsKIApAQCAtMzU5LDYgKzM2OCwyOSBAQAogCQkJfQogCQkJLy8gbWVyZ2UKIAorCQkJLy8gZGF0YWxpc3QKKwkJCU5vZGVMaXN0IHRtcE5MID0gcmVzdWx0LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJpbnB1dCIpOworCQkJTm9kZUxpc3QgdG1wTkwyID0gb3JpZy5nZXRFbGVtZW50c0J5VGFnTmFtZSgiZGF0YWxpc3QiKTsKKwkJCWlmICh0bXBOTDIuZ2V0TGVuZ3RoKCkgPiAwKSB7CisJCQkJZm9yIChpbnQgaSA9IDA7IGkgPCB0bXBOTC5nZXRMZW5ndGgoKTsgaSsrKSB7CisJCQkJCUVsZW1lbnQgZSA9IChFbGVtZW50KSB0bXBOTC5pdGVtKGkpOworCQkJCQlTdHJpbmcgbGlzdFMgPSBlLmdldEF0dHJpYnV0ZSgibGlzdCIpOworCQkJCQlmb3IoaW50IGogPSAwOyBqIDwgdG1wTkwyLmdldExlbmd0aCgpOyBqKyspeworCQkJCQkJRWxlbWVudCBlMiA9IChFbGVtZW50KSB0bXBOTDIuaXRlbShqKTsKKwkJCQkJCVN0cmluZyBpZCA9IGUyLmdldEF0dHJpYnV0ZSgiaWQiKTsKKwkJCQkJCVN5c3RlbS5vdXQucHJpbnRsbihsaXN0UysiIDogIitpZCk7CisJCQkJCQlpZihpZCE9bnVsbCAmJiBpZC5lcXVhbHMobGlzdFMpKXsKKwkJCQkJCQlOb2RlIHRtcE4gPSBtYXBEYXRhLmdldFJlc3VsdE5vZGUoZTIpOworCQkJCQkJCWlmKHRtcE4hPW51bGwgJiYgdG1wTiBpbnN0YW5jZW9mIEVsZW1lbnQpeworCQkJCQkJCQlTdHJpbmcgdGFyZ2V0SWQgPSAoKEVsZW1lbnQpdG1wTikuZ2V0QXR0cmlidXRlKCJpZCIpOworCQkJCQkJCQllLnNldEF0dHJpYnV0ZSgibGlzdCIsIHRhcmdldElkKTsKKwkJCQkJCQl9CisJCQkJCQl9CisJCQkJCX0KKwkJCQl9CisJCQkJCisJCQl9CisKIAkJCVZpc3VhbGl6ZVN0eWxlSW5mb01hbmFnZXIuZ2V0SW5zdGFuY2UoKS5maXJlVmlzdWFsaXplU3R5bGVJbmZvVXBkYXRlKHN0eWxlSW5mbyk7CiAKIAkJCWlmIChjdXJQYXJhbUJsaW5kLnZpc3VhbGl6ZU1vZGUuZXF1YWxzKFBhcmFtQmxpbmQuQkxJTkRfQlJPV1NFUl9NT0RFKSkgewpAQCAtNDE5LDYgKzQ1MSw1OSBAQAogCX0KIAogCUBTdXBwcmVzc1dhcm5pbmdzKCJubHMiKQorCXByaXZhdGUgdm9pZCB2aXN1YWxpemVQcm9ncmVzcyhEb2N1bWVudCBkb2MpIHsKKwkJTm9kZUxpc3QgbmwgPSBkb2MuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInByb2dyZXNzIik7CisJCWludCBzaXplID0gbmwuZ2V0TGVuZ3RoKCk7CisJCWZvciAoaW50IGkgPSBzaXplIC0gMTsgaSA+PSAwOyBpLS0pIHsKKwkJCUVsZW1lbnQgdGFyZ2V0ID0gKEVsZW1lbnQpIG5sLml0ZW0oaSk7CisJCQlFbGVtZW50IGRpdiA9IGRvYy5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKwkJCWRpdi5zZXRBdHRyaWJ1dGUoImNvbW1lbnQiLCB0YXJnZXQuZ2V0QXR0cmlidXRlKCJjb21tZW50IikpOworCQkJZGl2LnNldEF0dHJpYnV0ZSgiaWQiLCB0YXJnZXQuZ2V0QXR0cmlidXRlKCJpZCIpKTsKKworCQkJU3RyaW5nQnVmZmVyIHRtcFNCID0gbmV3IFN0cmluZ0J1ZmZlcigpOworCQkJdG1wU0IuYXBwZW5kKCIocHJvZ3Jlc3MgYmFyOiAiKTsKKwkJCWRvdWJsZSBtYXggPSAxLjA7IC8vIGRlZmF1bHQKKwkJCWRvdWJsZSB2YWx1ZSA9IDA7IC8vIGRlZmF1bHQKKworCQkJaWYgKHRhcmdldC5oYXNBdHRyaWJ1dGUoInZhbHVlIikpIHsKKwkJCQl0cnkgeworCQkJCQlkb3VibGUgdG1wVmFsdWUgPSBEb3VibGUucGFyc2VEb3VibGUodGFyZ2V0LmdldEF0dHJpYnV0ZSgidmFsdWUiKSk7CisJCQkJCWlmICh0bXBWYWx1ZSA+IHZhbHVlKSB7CisJCQkJCQl2YWx1ZSA9IHRtcFZhbHVlOworCQkJCQl9CisJCQkJfSBjYXRjaCAoTnVtYmVyRm9ybWF0RXhjZXB0aW9uIGUpIHsKKwkJCQl9CisJCQkJaWYgKHRhcmdldC5oYXNBdHRyaWJ1dGUoIm1heCIpKSB7CisJCQkJCWRvdWJsZSB0bXBWYWx1ZSA9IERvdWJsZS5wYXJzZURvdWJsZSh0YXJnZXQuZ2V0QXR0cmlidXRlKCJtYXgiKSk7CisJCQkJCWlmICh0bXBWYWx1ZSA+IDApIHsKKwkJCQkJCW1heCA9IHRtcFZhbHVlOworCQkJCQl9CisJCQkJfQorCQkJCWlmICh2YWx1ZSA+IG1heCkgeworCQkJCQl0bXBTQi5hcHBlbmQoIjEwMCUiKTsKKwkJCQl9IGVsc2UgeworCQkJCQl0bXBTQi5hcHBlbmQodmFsdWUgLyBtYXggKiAxMDApOworCQkJCQl0bXBTQi5hcHBlbmQoIiUiKTsKKwkJCQl9CisJCQl9IGVsc2UgeworCQkJCXRtcFNCLmFwcGVuZChNZXNzYWdlcy5Qcm9ncmVzc0Jhcl8xKTsgLy8glqKKbZLoCisJCQl9CisKKwkJCXRtcFNCLmFwcGVuZCgiKSIpOworCisJCQkvLyByZW1vdmUgb3RoZXIgdGFncyBhbmQgYXR0cmlidXRlcworCisJCQlkaXYuYXBwZW5kQ2hpbGQoZG9jLmNyZWF0ZVRleHROb2RlKHRtcFNCLnRvU3RyaW5nKCkpKTsKKworCQkJTm9kZSBwYXJlbnQgPSB0YXJnZXQuZ2V0UGFyZW50Tm9kZSgpOworCQkJcGFyZW50Lmluc2VydEJlZm9yZShkaXYsIHRhcmdldCk7CisJCQltYXBEYXRhLmFkZFJlcGxhY2VkTm9kZU1hcHBpbmcodGFyZ2V0LCBkaXYpOworCQkJcGFyZW50LnJlbW92ZUNoaWxkKHRhcmdldCk7CisJCX0KKworCX0KKworCUBTdXBwcmVzc1dhcm5pbmdzKCJubHMiKQogCXByaXZhdGUgdm9pZCByZXBsYWNlSW1nQW5kQ2hlY2soRG9jdW1lbnQgZG9jLCBWaXN1YWxpemVNYXBEYXRhSW1wbCBtYXBEYXRhLCBib29sZWFuIHJlbW92ZSkgewogCiAJCU5vZGVMaXN0IG1hcExpc3QgPSBkb2MuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIm1hcCIpOwpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcuZWNsaXBzZS5hY3RmLnZpc3VhbGl6YXRpb24uZW5naW5lcy5ibGluZC5odG1sL3NyYy9vcmcvZWNsaXBzZS9hY3RmL3Zpc3VhbGl6YXRpb24vaW50ZXJuYWwvZW5naW5lcy9ibGluZC9odG1sL01lc3NhZ2VzLmphdmEgYi9wbHVnaW5zL29yZy5lY2xpcHNlLmFjdGYudmlzdWFsaXphdGlvbi5lbmdpbmVzLmJsaW5kLmh0bWwvc3JjL29yZy9lY2xpcHNlL2FjdGYvdmlzdWFsaXphdGlvbi9pbnRlcm5hbC9lbmdpbmVzL2JsaW5kL2h0bWwvTWVzc2FnZXMuamF2YQppbmRleCAzYjc2ZWU0Li5iZWQ5Zjg1IDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5lY2xpcHNlLmFjdGYudmlzdWFsaXphdGlvbi5lbmdpbmVzLmJsaW5kLmh0bWwvc3JjL29yZy9lY2xpcHNlL2FjdGYvdmlzdWFsaXphdGlvbi9pbnRlcm5hbC9lbmdpbmVzL2JsaW5kL2h0bWwvTWVzc2FnZXMuamF2YQorKysgYi9wbHVnaW5zL29yZy5lY2xpcHNlLmFjdGYudmlzdWFsaXphdGlvbi5lbmdpbmVzLmJsaW5kLmh0bWwvc3JjL29yZy9lY2xpcHNlL2FjdGYvdmlzdWFsaXphdGlvbi9pbnRlcm5hbC9lbmdpbmVzL2JsaW5kL2h0bWwvTWVzc2FnZXMuamF2YQpAQCAtMSw1ICsxLDUgQEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDYsIDIwMDggSUJNIENvcnBvcmF0aW9uIGFuZCBPdGhlcnMKKyAqIENvcHlyaWdodCAoYykgMjAwNiwgMjAxNiBJQk0gQ29ycG9yYXRpb24gYW5kIE90aGVycwogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwogICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCiAgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdApAQCAtMjUsNyArMjUsOCBAQAogCXB1YmxpYyBzdGF0aWMgU3RyaW5nIENTU1ZpZXdlcl8xOwogCXB1YmxpYyBzdGF0aWMgU3RyaW5nIEVsZW1lbnRWaWV3ZXJKRmFjZV8wOwogCXB1YmxpYyBzdGF0aWMgU3RyaW5nIEVsZW1lbnRWaWV3ZXJKRmFjZV8xOwotCisJcHVibGljIHN0YXRpYyBTdHJpbmcgUHJvZ3Jlc3NCYXJfMTsKKwkKIAlzdGF0aWMgewogCQlOTFMuaW5pdGlhbGl6ZU1lc3NhZ2VzKEJVTkRMRV9OQU1FLCBNZXNzYWdlcy5jbGFzcyk7CiAJfQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcuZWNsaXBzZS5hY3RmLnZpc3VhbGl6YXRpb24uZW5naW5lcy5ibGluZC5odG1sL3NyYy9vcmcvZWNsaXBzZS9hY3RmL3Zpc3VhbGl6YXRpb24vaW50ZXJuYWwvZW5naW5lcy9ibGluZC9odG1sL3V0aWwvTm9kZUluZm9DcmVhdG9yLmphdmEgYi9wbHVnaW5zL29yZy5lY2xpcHNlLmFjdGYudmlzdWFsaXphdGlvbi5lbmdpbmVzLmJsaW5kLmh0bWwvc3JjL29yZy9lY2xpcHNlL2FjdGYvdmlzdWFsaXphdGlvbi9pbnRlcm5hbC9lbmdpbmVzL2JsaW5kL2h0bWwvdXRpbC9Ob2RlSW5mb0NyZWF0b3IuamF2YQppbmRleCA4N2ExNjZhLi45NmUxZGJlIDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5lY2xpcHNlLmFjdGYudmlzdWFsaXphdGlvbi5lbmdpbmVzLmJsaW5kLmh0bWwvc3JjL29yZy9lY2xpcHNlL2FjdGYvdmlzdWFsaXphdGlvbi9pbnRlcm5hbC9lbmdpbmVzL2JsaW5kL2h0bWwvdXRpbC9Ob2RlSW5mb0NyZWF0b3IuamF2YQorKysgYi9wbHVnaW5zL29yZy5lY2xpcHNlLmFjdGYudmlzdWFsaXphdGlvbi5lbmdpbmVzLmJsaW5kLmh0bWwvc3JjL29yZy9lY2xpcHNlL2FjdGYvdmlzdWFsaXphdGlvbi9pbnRlcm5hbC9lbmdpbmVzL2JsaW5kL2h0bWwvdXRpbC9Ob2RlSW5mb0NyZWF0b3IuamF2YQpAQCAtMjMwLDYgKzIzMCw4IEBACiAJCQkJCX0gZWxzZSBpZiAobm9kZU5hbWUuY29udGFpbnMoImNhcHRpb24iKSl7CiAJCQkJCQlpbmZvLnNldENhcHRpb24odHJ1ZSk7CiAJCQkJCQlpbmZvLmFwcGVuZENvbW1lbnQoY3VyTm9kZS5nZXROb2RlTmFtZSgpKTsKKwkJCQkJfSBlbHNlIGlmIChub2RlTmFtZS5lcXVhbHMoIm1hcmsiKSl7CisJCQkJCQlpbmZvLmFwcGVuZENvbW1lbnQoIm1hcmsiKTsKIAkJCQkJfQogCiAJCQkJCWlmIChub2RlTmFtZS5lcXVhbHMoImJvZHkiKSkgewpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9vcmcuZWNsaXBzZS5hY3RmLnZpc3VhbGl6YXRpb24uZW5naW5lcy5ibGluZC5odG1sL3NyYy9vcmcvZWNsaXBzZS9hY3RmL3Zpc3VhbGl6YXRpb24vaW50ZXJuYWwvZW5naW5lcy9ibGluZC9odG1sL3V0aWwvVmlzdWFsaXplQ29sb3JVdGlsLmphdmEgYi9wbHVnaW5zL29yZy5lY2xpcHNlLmFjdGYudmlzdWFsaXphdGlvbi5lbmdpbmVzLmJsaW5kLmh0bWwvc3JjL29yZy9lY2xpcHNlL2FjdGYvdmlzdWFsaXphdGlvbi9pbnRlcm5hbC9lbmdpbmVzL2JsaW5kL2h0bWwvdXRpbC9WaXN1YWxpemVDb2xvclV0aWwuamF2YQppbmRleCAxM2I4ZDNlLi5kY2M5OTI4IDEwMDY0NAotLS0gYS9wbHVnaW5zL29yZy5lY2xpcHNlLmFjdGYudmlzdWFsaXphdGlvbi5lbmdpbmVzLmJsaW5kLmh0bWwvc3JjL29yZy9lY2xpcHNlL2FjdGYvdmlzdWFsaXphdGlvbi9pbnRlcm5hbC9lbmdpbmVzL2JsaW5kL2h0bWwvdXRpbC9WaXN1YWxpemVDb2xvclV0aWwuamF2YQorKysgYi9wbHVnaW5zL29yZy5lY2xpcHNlLmFjdGYudmlzdWFsaXphdGlvbi5lbmdpbmVzLmJsaW5kLmh0bWwvc3JjL29yZy9lY2xpcHNlL2FjdGYvdmlzdWFsaXphdGlvbi9pbnRlcm5hbC9lbmdpbmVzL2JsaW5kL2h0bWwvdXRpbC9WaXN1YWxpemVDb2xvclV0aWwuamF2YQpAQCAtMTgsNiArMTgsNyBAQAogCiBpbXBvcnQgb3JnLmVjbGlwc2UuYWN0Zi51dGlsLmxvZ2dpbmcuRGVidWdQcmludFV0aWw7CiBpbXBvcnQgb3JnLmVjbGlwc2UuYWN0Zi52aXN1YWxpemF0aW9uLmVuZ2luZXMuYmxpbmQuUGFyYW1CbGluZDsKK2ltcG9ydCBvcmcuZWNsaXBzZS5hY3RmLnZpc3VhbGl6YXRpb24uZXZhbC5odG1sLkh0bWxUYWdVdGlsOwogaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC5ncmFwaGljcy5SR0I7CiBpbXBvcnQgb3JnLnczYy5kb20uQ29tbWVudDsKIGltcG9ydCBvcmcudzNjLmRvbS5Eb2N1bWVudDsKQEAgLTE0Miw4ICsxNDMsOCBAQAogCQkJU3RyaW5nIGlucHV0UkdCID0gZ2V0UkdCU3RyaW5nKHBhcmFtLmlucHV0VGFnc0NvbG9yLCAiI0ZGOTkwMCIpOwogCQkJU3RyaW5nIGNhcHRpb25SR0IgPSBnZXRSR0JTdHJpbmcocGFyYW0uY2FwdGlvbkNvbG9yLCAiI0ZGRkY4MCIpOwogCi0JCQlpZiAocGFyYW0uYkNvbG9yaXplVGFncwotCQkJCQkmJiAoaW5mby5pc0hlYWRpbmcoKSB8IGluZm8uaXNUYWJsZUhlYWRlcigpIHwgaW5mby5pc0xhYmVsKCkgfCBpbmZvLmlzSWRSZXF1aXJlZElucHV0KCkgfCBpbmZvLmlzQ2FwdGlvbigpKSkgeworCQkJaWYgKHBhcmFtLmJDb2xvcml6ZVRhZ3MgJiYgKGluZm8uaXNIZWFkaW5nKCkgfCBpbmZvLmlzVGFibGVIZWFkZXIoKSB8IGluZm8uaXNMYWJlbCgpCisJCQkJCXwgaW5mby5pc0lkUmVxdWlyZWRJbnB1dCgpIHwgaW5mby5pc0NhcHRpb24oKSkpIHsKIAkJCQlpZiAoaW5mby5pc0hlYWRpbmcoKSkgewogCQkJCQlzdHJSR0IgPSBoZWFkaW5nUkdCOwogCQkJCX0gZWxzZSBpZiAoaW5mby5pc1RhYmxlSGVhZGVyKCkpIHsKQEAgLTE1MiwxMiArMTUzLDEyIEBACiAJCQkJCXN0clJHQiA9IGxhYmVsUkdCOwogCQkJCX0gZWxzZSBpZiAoaW5mby5pc0lkUmVxdWlyZWRJbnB1dCgpKSB7CiAJCQkJCXN0clJHQiA9IGlucHV0UkdCOwotCQkJCX0gZWxzZSBpZiAoaW5mby5pc0NhcHRpb24oKSl7CisJCQkJfSBlbHNlIGlmIChpbmZvLmlzQ2FwdGlvbigpKSB7CiAJCQkJCXN0clJHQiA9IGNhcHRpb25SR0I7CiAJCQkJfQotCQkJCQotCQkJCS8vVEJEIGNhcHRpb24KLQkJCQkKKworCQkJCS8vIFRCRCBjYXB0aW9uCisKIAkJCQllbC5zZXRBdHRyaWJ1dGUoInN0eWxlIiwgImNvbG9yOiBibGFjazsgYmFja2dyb3VuZC1pbWFnZTogbm9uZTsgYmFja2dyb3VuZC1jb2xvcjoiICsgc3RyUkdCKTsvLyArCiAJCQkJLy8gIn0iKTsKIAkJCQkvLyB9IGVsc2UgaWYgKGluZm8uZ2V0V29yZHMoKSA+IDApIHsKQEAgLTE3Niw4ICsxNzcsMTIgQEAKIAkJCQl9CiAKIAkJCQlpZiAocGFyYW0uYlZpc3VhbGl6ZVRpbWUgPT0gdHJ1ZSkgewotCQkJCQllbC5zZXRBdHRyaWJ1dGUoInN0eWxlIiwgImNvbG9yOiBibGFjazsgYmFja2dyb3VuZC1pbWFnZTogbm9uZTsgYmFja2dyb3VuZC1jb2xvcjogIyIKLQkJCQkJCQkrIGNhbGNDb2xvcih0aW1lLCBwYXJhbS5tYXhUaW1lQ29sb3IsIHBhcmFtLmlNYXhUaW1lKSk7CisJCQkJCWlmICgibWFyayIuZXF1YWxzKGVsLmdldFRhZ05hbWUoKSl8fEh0bWxUYWdVdGlsLmhhc0FuY2VzdG9yKGVsLCAibWFyayIpKSB7CisJCQkJCQllbC5zZXRBdHRyaWJ1dGUoInN0eWxlIiwgImNvbG9yOiBibGFjazsgYmFja2dyb3VuZC1pbWFnZTogbm9uZTsiKTsKKwkJCQkJfSBlbHNlIHsKKwkJCQkJCWVsLnNldEF0dHJpYnV0ZSgic3R5bGUiLCAiY29sb3I6IGJsYWNrOyBiYWNrZ3JvdW5kLWltYWdlOiBub25lOyBiYWNrZ3JvdW5kLWNvbG9yOiAjIgorCQkJCQkJCQkrIGNhbGNDb2xvcih0aW1lLCBwYXJhbS5tYXhUaW1lQ29sb3IsIHBhcmFtLmlNYXhUaW1lKSk7CisJCQkJCX0KIAogCQkJCX0gZWxzZSB7CiAJCQkJCWVsLnNldEF0dHJpYnV0ZSgic3R5bGUiLCAiY29sb3I6IGJsYWNrOyBiYWNrZ3JvdW5kLWltYWdlOiBub25lOyBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudCIpOwo=