ZGlmZiAtLWdpdCBhL29yZy5lY2xpcHNlLmFtcC5hbWYvcGx1Z2lucy9vcmcuZWNsaXBzZS5hbXAuYW1mLmdlbi5hc2NhcGUvc3JjL21ldGFhYm0vYXNjYXBlL3RtcGwvQXNjYXBlQXNwZWN0LnhwdCBiL29yZy5lY2xpcHNlLmFtcC5hbWYvcGx1Z2lucy9vcmcuZWNsaXBzZS5hbXAuYW1mLmdlbi5hc2NhcGUvc3JjL21ldGFhYm0vYXNjYXBlL3RtcGwvQXNjYXBlQXNwZWN0LnhwdAppbmRleCA0MzUzMzdiLi5mN2YxMmM5IDEwMDY0NAotLS0gYS9vcmcuZWNsaXBzZS5hbXAuYW1mL3BsdWdpbnMvb3JnLmVjbGlwc2UuYW1wLmFtZi5nZW4uYXNjYXBlL3NyYy9tZXRhYWJtL2FzY2FwZS90bXBsL0FzY2FwZUFzcGVjdC54cHQKKysrIGIvb3JnLmVjbGlwc2UuYW1wLmFtZi9wbHVnaW5zL29yZy5lY2xpcHNlLmFtcC5hbWYuZ2VuLmFzY2FwZS9zcmMvbWV0YWFibS9hc2NhcGUvdG1wbC9Bc2NhcGVBc3BlY3QueHB0CkBAIC0yMjksNyArMjI5LDcgQEAKICAgICCrRUxTRUlGIGZ1bmN0aW9uLmlkKCkgPT0gInVuaWZvcm1EaXN0cmlidXRpb24iLbsKICAgICAgICAgcmFuZG9tSW5SYW5nZSiraW5wdXRzLmV4cHJlc3Npb24ocGF0aCwgaW5uZXIpLnRvU3RyaW5nKCIsICIpuyk7CiAJq0VMU0VJRiBmdW5jdGlvbi5pZCgpID09ICJ0aW1lTm93Ii27Ci0JCatwYXRoLmxhc3QoKS5hY2Nlc3NQYXRoKHRoaXMsIGlubmVyKbtnZXRTY2FwZSgpLmdldFBlcmlvZCgpCisJCatwYXRoLmxhc3QoKS5hY2Nlc3NQYXRoKHRoaXMsIGlubmVyKburcmVmZXJlbmNlLm93bmVyLnBhcmVudCAhPSBudWxsID8gImdldFNjYXBlKCkuIiA6ICIiu2dldFBlcmlvZCgpCiAgICAgq0VMU0VJRiBmdW5jdGlvbi5pZCgpID09ICJhdmFpbGFibGUiLbsKICAgICAgICAgaXNBdmFpbGFibGUoKQogICAgIKtFTFNFSUYgZnVuY3Rpb24uaWQoKSA9PSAid2l0aGluQm91bmRhcmllcyItuwpkaWZmIC0tZ2l0IGEvb3JnLmVjbGlwc2UuYW1wLmFtZi9wbHVnaW5zL29yZy5lY2xpcHNlLmFtcC5hbWYuZ2VuLmFzY2FwZS9zcmMvbWV0YWFibS9hc2NhcGUvdG1wbC9TY2FwZUFzcGVjdC54cHQgYi9vcmcuZWNsaXBzZS5hbXAuYW1mL3BsdWdpbnMvb3JnLmVjbGlwc2UuYW1wLmFtZi5nZW4uYXNjYXBlL3NyYy9tZXRhYWJtL2FzY2FwZS90bXBsL1NjYXBlQXNwZWN0LnhwdAppbmRleCBhNzcwM2VjLi5hMWYzNDg2IDEwMDY0NAotLS0gYS9vcmcuZWNsaXBzZS5hbXAuYW1mL3BsdWdpbnMvb3JnLmVjbGlwc2UuYW1wLmFtZi5nZW4uYXNjYXBlL3NyYy9tZXRhYWJtL2FzY2FwZS90bXBsL1NjYXBlQXNwZWN0LnhwdAorKysgYi9vcmcuZWNsaXBzZS5hbXAuYW1mL3BsdWdpbnMvb3JnLmVjbGlwc2UuYW1wLmFtZi5nZW4uYXNjYXBlL3NyYy9tZXRhYWJtL2FzY2FwZS90bXBsL1NjYXBlQXNwZWN0LnhwdApAQCAtMTQyLDEyICsxNDIsMTUgQEAKICAgICAgICAgc2V0QXV0b0NyZWF0ZShmYWxzZSk7DQogICAgICAgICBzZXRQcm90b3R5cGVBZ2VudChuZXcgb3JnLmFzY2FwZS5tb2RlbC5TY2FwZSgpKTsNCiAgICAJCatFTkRJRi27DQotICAgICAgICCrSUYgYWN0cygpLmV4aXN0cyhlfCBlLm1ldGFUeXBlID09IEFSdWxlIHx8IGUubWV0YVR5cGUgPT0gQUluaXRpYWxpemUpLbsNCi0gICAgICAgIC8vQSBtYW5hZ2VyIHNjYXBlIHByb3ZpZGVzIHJ1bGUgZXhlY3V0aW9uIGZvciBpdHNlbGYgaW4gdGhlIGNhc2Ugd2hlcmUgYSBTY2FwZSBpcyB0aGUgcm9vdCBzY2FwZS4NCisgICAgICAgIKtJRiBhY3RzKCkuZXhpc3RzKGV8IGUubWV0YVR5cGUgPT0gQVJ1bGUgfHwgZS5tZXRhVHlwZSA9PSBBSW5pdGlhbGl6ZSkgfHwgYXR0cmlidXRlcy5leGlzdHMoZSB8IGUuZ2F0aGVyRGF0YSktuw0KKyAgICAgICAgLy9BIG1hbmFnZXIgc2NhcGUgcHJvdmlkZXMgcnVsZSBleGVjdXRpb24gYW5kIHN0YXQgY29sbGVjdGlvbiBmb3IgaXRzZWxmLg0KICAgICAgICAgaWYgKGlzUm9vdCgpKSB7DQotCSAgICAgICAgU2NhcGUgbWFuYWdlclNjYXBlID0gbmV3IFNjYXBlKG5ldyBTaW5nbGV0b24oKSk7DQotICAgIAkgICAgYWRkKG1hbmFnZXJTY2FwZSk7DQorCSAgICAgICAgU2NhcGUgq3NjYXBlKCm7ID0gbmV3IFNjYXBlKG5ldyBTaW5nbGV0b24oKSk7DQorICAgIAkgICAgYWRkKKtzY2FwZSgpuyk7DQogCQkJq0VYUEFORCBDaGlsZEJ1aWxkZXJQcm94eSBGT1IgKEFHcm91cCkgcm9vdEFjdGl2aXR5LbsNCisJCQmrSUYgYXR0cmlidXRlcy5leGlzdHMoZSB8IGUuZ2F0aGVyRGF0YSktuw0KKwkJCatFWFBBTkQgU3RhdEJ1aWxkZXItuw0KKwkJCatFTkRJRi27DQogCQl9DQogICAgCQmrRU5ESUYtuw0KIAkJq0lGIChyb290QWN0aXZpdHkgIT0gbnVsbCktuw0KQEAgLTQxMiwxMCArNDE1LDI0IEBACiAJCatFTkRGT1JFQUNIuw0KIKtFTkRERUZJTkW7DQogDQorq0RFRklORSBTdGF0QnVpbGRlciBGT1IgU0FnZW50LbsNCisJq0lGIGdlblN0YXRzKCkgIT0gIm5vbmUiLbsNCisJCatJRiBwYXJlbnQgIT0gbnVsbC27DQorICAgICAgICCrc2NhcGUoKbsuYWRkU3RhdENvbGxlY3RvcihuZXcgb3JnLmFzY2FwZS51dGlsLmRhdGEuU3RhdENvbGxlY3RvckNvbmQoq3NjYXBlKCm7LmdldE5hbWUoKSArICIgUG9wdWxhdGlvbiIpIHsNCisgICAgICAgIAkJq0VYUEFORCBtZXRhYWJtOjp0bXBsOjpKYXZhOjpHZW5lcmF0ZUNvbW1lbnS7DQorCQkJCXByaXZhdGUgc3RhdGljIGZpbmFsIGxvbmcgc2VyaWFsVmVyc2lvblVJRCA9IDFMOw0KKwkJCQmrRVhQQU5EIG1ldGFhYm06OnRtcGw6OkphdmE6OkdlbmVyYXRlQ29tbWVudLsNCisgICAgICAgICAgICAgICAgQFN1cHByZXNzV2FybmluZ3MoInVudXNlZCIpDQorICAgICAgICAgICAgICAgIHB1YmxpYyBmaW5hbCBib29sZWFuIG1lZXRzQ29uZGl0aW9uKE9iamVjdCBvYmplY3QpIHtyZXR1cm4gdHJ1ZTt9DQorICAgICAgICB9KTsNCisJCatFTkRJRi27DQorCQmrRVhQQU5EIFN0YXRCdWlsZGVyIEZPUkVBQ0ggYXR0cmlidXRlcy27DQorCatFTkRJRi27DQorq0VORERFRklORbsNCiCrREVGSU5FIFN0YXRCdWlsZGVyQm9keShTQXR0cmlidXRlIG91dGVyLCBTdHJpbmcgbW9kLCBTdHJpbmcgbmFtZSkgRk9SIFNBdHRyaWJ1dGUtuw0KICAgICCrKChTQWdlbnQpIHBhcmVudCgpKS5maWVsZE5hbWUoKbsuYWRkU3RhdENvbGxlY3RvcihuZXcgb3JnLmFzY2FwZS51dGlsLmRhdGEuU3RhdENvbGxlY3RvcqtvdXRlcihvdXRlcikuc3RhdENvbmRUZXJtKCm7KKtuYW1luykgew0KIAkJq0VYUEFORCBtZXRhYWJtOjp0bXBsOjpKYXZhOjpHZW5lcmF0ZUNvbW1lbnS7DQotCQlwcml2YXRlIHN0YXRpYyBmaW5hbCBsb25nIHNlcmlhbFZlcnNpb25VSUQgPSA2ODQ2MTQ0NDQ2NDAyMDk4OTg1TDsNCisJCXByaXZhdGUgc3RhdGljIGZpbmFsIGxvbmcgc2VyaWFsVmVyc2lvblVJRCA9IDFMOw0KIAkJq0lGIG91dGVyICE9IHRoaXMtuw0KIAkJq0VYUEFORCBTdGF0QnVpbGRlckJvZHkgKG91dGVyLCBtb2QpIEZPUiBvdXRlci27DQogCQmrRU5ESUYtuw0KQEAgLTQ0NywxOCArNDY0LDYgQEAKIAkJq0VOREZPUkVBQ0gtuw0KIAmrRU5ESUYtuw0KIKtFTkRERUZJTkW7DQotq0RFRklORSBTdGF0QnVpbGRlciBGT1IgU0FnZW50LbsNCi0Jq0lGIGdlblN0YXRzKCkgIT0gIm5vbmUiLbsNCi0gICAgICAgIKtzY2FwZSgpuy5hZGRTdGF0Q29sbGVjdG9yKG5ldyBvcmcuYXNjYXBlLnV0aWwuZGF0YS5TdGF0Q29sbGVjdG9yQ29uZCirc2NhcGUoKbsuZ2V0TmFtZSgpICsgIiBQb3B1bGF0aW9uIikgew0KLSAgICAgICAgCQmrRVhQQU5EIG1ldGFhYm06OnRtcGw6OkphdmE6OkdlbmVyYXRlQ29tbWVudLsNCi0JCQkJcHJpdmF0ZSBzdGF0aWMgZmluYWwgbG9uZyBzZXJpYWxWZXJzaW9uVUlEID0gNjg0NjE0NDQ0NjQwMjA5ODkzTDsNCi0JCQkJq0VYUEFORCBtZXRhYWJtOjp0bXBsOjpKYXZhOjpHZW5lcmF0ZUNvbW1lbnS7DQotICAgICAgICAgICAgICAgIEBTdXBwcmVzc1dhcm5pbmdzKCJ1bnVzZWQiKQ0KLSAgICAgICAgICAgICAgICBwdWJsaWMgZmluYWwgYm9vbGVhbiBtZWV0c0NvbmRpdGlvbihPYmplY3Qgb2JqZWN0KSB7cmV0dXJuIHRydWU7fQ0KLSAgICAgICAgfSk7DQotCQmrRVhQQU5EIFN0YXRCdWlsZGVyIEZPUkVBQ0ggYXR0cmlidXRlcy27DQotCatFTkRJRi27DQotq0VORERFRklORbsNCiANCiCrREVGSU5FIENoaWxkQnVpbGRlciBGT1IgQVJ1bGUtuw0KIAkJq3JlZmVyZW5jZS5zY2FwZSgpuy5hZGRSdWxlKG5ldyBSdWxlKCKrbGFiZWy7Iikgew0KQEAgLTQ3MSw3ICs0NzYsNyBAQAogCQl9KTsNCiCrRU5EREVGSU5Fuw0KIKtERUZJTkUgQ2hpbGRCdWlsZGVyUHJveHkgRk9SIEFSdWxlLbsNCi0JCW1hbmFnZXJTY2FwZS5hZGRSdWxlKG5ldyBSdWxlKCKrbGFiZWy7Iikgew0KKwkJq3JlZmVyZW5jZS5maWVsZE5hbWUoKbsuYWRkUnVsZShuZXcgUnVsZSgiq2xhYmVsuyIpIHsNCiAJCQlwcml2YXRlIHN0YXRpYyBmaW5hbCBsb25nIHNlcmlhbFZlcnNpb25VSUQgPSA2ODQ2MTQ0NDQ2NDAyMDk4OTgxTDsNCiAJCQlwdWJsaWMgdm9pZCBleGVjdXRlKEFnZW50IGEpIHsNCiAJCQkJKCirdGhpcy50eXBlTmFtZSgpuykgYS5nZXRTY2FwZSgpKS6raWQoKbsoKTsNCkBAIC00OTQsNyArNDk5LDcgQEAKIAkJfSk7DQogq0VORERFRklORbsNCiCrREVGSU5FIENoaWxkQnVpbGRlclByb3h5IEZPUiBBSW5pdGlhbGl6ZS27DQotCQltYW5hZ2VyU2NhcGUuYWRkSW5pdGlhbFJ1bGUobmV3IFJ1bGUoIqtsYWJlbLsiKSB7DQorCQmrcmVmZXJlbmNlLnNjYXBlKCm7LmFkZEluaXRpYWxSdWxlKG5ldyBSdWxlKCKrbGFiZWy7Iikgew0KIAkJCXByaXZhdGUgc3RhdGljIGZpbmFsIGxvbmcgc2VyaWFsVmVyc2lvblVJRCA9IDY4NDYxNDQ0NDY0MDIwOTg5ODFMOw0KIAkJCXB1YmxpYyB2b2lkIGV4ZWN1dGUoQWdlbnQgYSkgew0KIAkJCQkoKKt0aGlzLnR5cGVOYW1lKCm7KSBhLmdldFNjYXBlKCkpLqtpZCgpuygpOw0KZGlmZiAtLWdpdCBhL29yZy5lY2xpcHNlLmFtcC5hbWYvcGx1Z2lucy9vcmcuZWNsaXBzZS5hbXAuYW1mLmdlbi5hc2NhcGUvc3JjL21ldGFhYm0vYXNjYXBlL3RtcGwvaW5mZXJhc2NhcGUuZXh0IGIvb3JnLmVjbGlwc2UuYW1wLmFtZi9wbHVnaW5zL29yZy5lY2xpcHNlLmFtcC5hbWYuZ2VuLmFzY2FwZS9zcmMvbWV0YWFibS9hc2NhcGUvdG1wbC9pbmZlcmFzY2FwZS5leHQKaW5kZXggNmExYmVkOS4uNzQ0OTI5NCAxMDA2NDQKLS0tIGEvb3JnLmVjbGlwc2UuYW1wLmFtZi9wbHVnaW5zL29yZy5lY2xpcHNlLmFtcC5hbWYuZ2VuLmFzY2FwZS9zcmMvbWV0YWFibS9hc2NhcGUvdG1wbC9pbmZlcmFzY2FwZS5leHQKKysrIGIvb3JnLmVjbGlwc2UuYW1wLmFtZi9wbHVnaW5zL29yZy5lY2xpcHNlLmFtcC5hbWYuZ2VuLmFzY2FwZS9zcmMvbWV0YWFibS9hc2NhcGUvdG1wbC9pbmZlcmFzY2FwZS5leHQKQEAgLTI5MCw3ICsyOTAsOSBAQAogCXN0YXRDb25kKHR5cGVkKSA/ICJDb25kIiA6ICJDU0FNTSI7CiAKIGNhY2hlZCBTdHJpbmcgc3RhdExhYmVsKFNBdHRyaWJ1dGUgaW5uZXIsIFNBdHRyaWJ1dGUgb3V0ZXIsIFN0cmluZyBkZXNjKSA6Ci0JKGlubmVyLnBhcmVudCgpLnBhcmVudCgpLnBhcmVudCgpICE9IG51bGwgPyAiZ2V0TmFtZSgpICsgXCIgIiA6ICJcIiIpICsgaW5uZXIucGFyZW50KCkubGFiZWwgKyAiICIgKyBkZXNjLnNwYWNlVHJhaWwoKSArIChvdXRlciAhPSBpbm5lciA/IG91dGVyLmxhYmVsLnNwYWNlVHJhaWwoKSA6ICIiKSArIGlubmVyLmxhYmVsICsgIlwiIjsKKwkoaW5uZXIucGFyZW50KCkucGFyZW50KCkgIT0gbnVsbCAmJiBpbm5lci5wYXJlbnQoKS5wYXJlbnQoKS5wYXJlbnQoKSAhPSBudWxsIAorCQk/ICJnZXROYW1lKCkgKyBcIiAiIAorCQk6ICJcIiIpICsgaW5uZXIucGFyZW50KCkubGFiZWwgKyAiICIgKyBkZXNjLnNwYWNlVHJhaWwoKSArIChvdXRlciAhPSBpbm5lciA/IG91dGVyLmxhYmVsLnNwYWNlVHJhaWwoKSA6ICIiKSArIGlubmVyLmxhYmVsICsgIlwiIjsKIAogY2FjaGVkIGludCBncmlkRGltU2l6ZShTR3JpZCBncmlkKSA6IAogCWdyaWQuYXR0cmlidXRlcy5zaXplID4gMSA/IGdyaWQuYXR0cmlidXRlcy5nZXQoMSkuZGVmYXVsdFZhbHVlLmFzSW50ZWdlcigpIDogMjA7CkBAIC0zMTIsMyArMzE0LDUgQEAKIAkKIGNhY2hlZCBMaXN0IHNldHRlclNwYWNlKFNTdHlsZSBzdHlsZSkgOgogCXN0eWxlLmFnZW50LmF0dHJpYnV0ZXMuc2V0dGVyU3BhY2UoKTsKKwkKKwkKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9vcmcuZWNsaXBzZS5hbXAuYW1mL3BsdWdpbnMvb3JnLmVjbGlwc2UuYW1wLmFtZi5nZW4uYXNjYXBlL3NyYy9tZXRhYWJtL2FzY2FwZS90bXBsL25hbWVzYXNjYXBlLmV4dCBiL29yZy5lY2xpcHNlLmFtcC5hbWYvcGx1Z2lucy9vcmcuZWNsaXBzZS5hbXAuYW1mLmdlbi5hc2NhcGUvc3JjL21ldGFhYm0vYXNjYXBlL3RtcGwvbmFtZXNhc2NhcGUuZXh0CmluZGV4IGVkMmFiNGIuLjgwM2RmMTMgMTAwNjQ0Ci0tLSBhL29yZy5lY2xpcHNlLmFtcC5hbWYvcGx1Z2lucy9vcmcuZWNsaXBzZS5hbXAuYW1mLmdlbi5hc2NhcGUvc3JjL21ldGFhYm0vYXNjYXBlL3RtcGwvbmFtZXNhc2NhcGUuZXh0CisrKyBiL29yZy5lY2xpcHNlLmFtcC5hbWYvcGx1Z2lucy9vcmcuZWNsaXBzZS5hbXAuYW1mLmdlbi5hc2NhcGUvc3JjL21ldGFhYm0vYXNjYXBlL3RtcGwvbmFtZXNhc2NhcGUuZXh0CkBAIC03Nyw2ICs3Nyw5IEBACiBjYWNoZWQgU3RyaW5nIHNjYXBlKFNBZ2VudCBhZ2VudCkgOgogCWFnZW50LmlkKCkgKyAiU2NhcGUiOwogCitjYWNoZWQgU3RyaW5nIHNjYXBlKFNDb250ZXh0IGFnZW50KSA6CisJYWdlbnQucGFyZW50ICE9IG51bGwgPyBhZ2VudC5pZCgpICsgIlNjYXBlIiA6IGFnZW50LmlkKCkgKyAiTWFuYWdlciI7CisKIGNhY2hlZCBTdHJpbmcgZmllbGROYW1lKFNBZ2VudCBhZ2VudCkgOgogCWFnZW50LnNjYXBlKCk7CiAJClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvb3JnLmVjbGlwc2UuYW1wLmFtZi9wbHVnaW5zL29yZy5lY2xpcHNlLmFtcC5hbWYuZ2VuLmVzY2FwZS9zcmMvbWV0YWFibS9lc2NhcGUvdG1wbC9Fc2NhcGVBc3BlY3QueHB0IGIvb3JnLmVjbGlwc2UuYW1wLmFtZi9wbHVnaW5zL29yZy5lY2xpcHNlLmFtcC5hbWYuZ2VuLmVzY2FwZS9zcmMvbWV0YWFibS9lc2NhcGUvdG1wbC9Fc2NhcGVBc3BlY3QueHB0CmluZGV4IGQxODAzNmQuLjJlOGQxM2UgMTAwNjQ0Ci0tLSBhL29yZy5lY2xpcHNlLmFtcC5hbWYvcGx1Z2lucy9vcmcuZWNsaXBzZS5hbXAuYW1mLmdlbi5lc2NhcGUvc3JjL21ldGFhYm0vZXNjYXBlL3RtcGwvRXNjYXBlQXNwZWN0LnhwdAorKysgYi9vcmcuZWNsaXBzZS5hbXAuYW1mL3BsdWdpbnMvb3JnLmVjbGlwc2UuYW1wLmFtZi5nZW4uZXNjYXBlL3NyYy9tZXRhYWJtL2VzY2FwZS90bXBsL0VzY2FwZUFzcGVjdC54cHQKQEAgLTI3Myw3ICsyNzMsNyBAQAogICAgIKtFTFNFSUYgZnVuY3Rpb24uaWQoKSA9PSAidW5pZm9ybURpc3RyaWJ1dGlvbiItuwogICAgICAgICByYW5kb21JblJhbmdlKKtpbnB1dHMuZXhwcmVzc2lvbihwYXRoLCBpbm5lcikudG9TdHJpbmcoIiwgIim7KTsKICAgICCrRUxTRUlGIGZ1bmN0aW9uLmlkKCkgPT0gInRpbWVOb3ciLbsKLSAgICAgICAgq3BhdGgubGFzdCgpLmFjY2Vzc1BhdGgodGhpcywgaW5uZXIpu2dldFNjYXBlKCkuZ2V0UGVyaW9kKCkKKwkJq3BhdGgubGFzdCgpLmFjY2Vzc1BhdGgodGhpcywgaW5uZXIpu6tyZWZlcmVuY2Uub3duZXIucGFyZW50ICE9IG51bGwgPyAiZ2V0U2NhcGUoKS4iIDogIiK7Z2V0UGVyaW9kKCkKICAgICCrRUxTRUlGIGZ1bmN0aW9uLmlkKCkgPT0gImF2YWlsYWJsZSItuwogICAgICAgICBpc0F2YWlsYWJsZSgpCiAgICAgq0VMU0VJRiBmdW5jdGlvbi5pZCgpID09ICJ3aXRoaW5Cb3VuZGFyaWVzIi27CmRpZmYgLS1naXQgYS9vcmcuZWNsaXBzZS5hbXAuYW1mL3BsdWdpbnMvb3JnLmVjbGlwc2UuYW1wLmFtZi5nZW4uaWRlL3NyYy9vcmcvZWNsaXBzZS9hbXAvYW1mL2dlbi9pZGUvQWJzdHJhY3RNV0VCdWlsZGVyLmphdmEgYi9vcmcuZWNsaXBzZS5hbXAuYW1mL3BsdWdpbnMvb3JnLmVjbGlwc2UuYW1wLmFtZi5nZW4uaWRlL3NyYy9vcmcvZWNsaXBzZS9hbXAvYW1mL2dlbi9pZGUvQWJzdHJhY3RNV0VCdWlsZGVyLmphdmEKaW5kZXggMWMwNzI4NS4uOTA1Yzg2NyAxMDA2NDQKLS0tIGEvb3JnLmVjbGlwc2UuYW1wLmFtZi9wbHVnaW5zL29yZy5lY2xpcHNlLmFtcC5hbWYuZ2VuLmlkZS9zcmMvb3JnL2VjbGlwc2UvYW1wL2FtZi9nZW4vaWRlL0Fic3RyYWN0TVdFQnVpbGRlci5qYXZhCisrKyBiL29yZy5lY2xpcHNlLmFtcC5hbWYvcGx1Z2lucy9vcmcuZWNsaXBzZS5hbXAuYW1mLmdlbi5pZGUvc3JjL29yZy9lY2xpcHNlL2FtcC9hbWYvZ2VuL2lkZS9BYnN0cmFjdE1XRUJ1aWxkZXIuamF2YQpAQCAtMTYwLDYgKzE2MCw5IEBACiAgICAgICAgIGJvb2xlYW4gc3VjY2VzcyA9IHRydWU7CiAgICAgICAgIGZvciAoU3RyaW5nIHdvcmtmbG93IDogd29ya2Zsb3dQYXRocykgewogICAgICAgICAgICAgc3VjY2VzcyAmPSB3b3JrZmxvd1J1bm5lci5ydW4od29ya2Zsb3csIHdvcmtmbG93TW9uaXRvciwgZ2V0R2VuUHJvcGVydGllcygpLCBzbG90Q29udGVudHMpOworICAgICAgICAgICAgaWYgKCFzdWNjZXNzKSB7CisgICAgICAgICAgICAJYnJlYWs7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgTG9nV29ya2Zsb3cuc2V0U3VjY2VzcyhzdWNjZXNzKTsKICAgICAgICAgTG9nV29ya2Zsb3cucmVwb3J0KHBsdWdpbk5hbWUsIGZ1bGxUYXNrRGVzY3JpcHRpb24sIGZhbHNlKTsKZGlmZiAtLWdpdCBhL29yZy5lY2xpcHNlLmFtcC5hbWYvcGx1Z2lucy9vcmcuZWNsaXBzZS5hbXAuYW1mLmdlbi9zcmMvbWV0YWFibS90bXBsL2luZmVyLmV4dCBiL29yZy5lY2xpcHNlLmFtcC5hbWYvcGx1Z2lucy9vcmcuZWNsaXBzZS5hbXAuYW1mLmdlbi9zcmMvbWV0YWFibS90bXBsL2luZmVyLmV4dAppbmRleCA2MDE0MWUyLi4yYzE0MDNjIDEwMDY0NAotLS0gYS9vcmcuZWNsaXBzZS5hbXAuYW1mL3BsdWdpbnMvb3JnLmVjbGlwc2UuYW1wLmFtZi5nZW4vc3JjL21ldGFhYm0vdG1wbC9pbmZlci5leHQKKysrIGIvb3JnLmVjbGlwc2UuYW1wLmFtZi9wbHVnaW5zL29yZy5lY2xpcHNlLmFtcC5hbWYuZ2VuL3NyYy9tZXRhYWJtL3RtcGwvaW5mZXIuZXh0CkBAIC04NSw3ICs4NSw3IEBACiAJZmlyc3RTZWxlY3Rpb24oc2VsLCBzZWwuYWdlbnQpOwogCQogY2FjaGVkIFN0cmluZyBhY2Nlc3NQYXRoSW5uZXIoSUlEIHZhbHVlLCBTSW1wbGVtZW50ZWQgb3duZXIsIEJvb2xlYW4gaW5uZXIpIDoKLQlpbm5lciA/ICIoKCIgKyBvd25lci5pbXBsZW1lbnRhdGlvbi5jbGFzc05hbWUgKyAiKSIgKyBvd25lci5pbm5lclZhbHVlKCkuaWQoKSArICIpLiIgOiAiIjsKKwlpbm5lciAgJiYgb3duZXIucGFyZW50ICE9IG51bGwgPyAiKCgiICsgb3duZXIuaW1wbGVtZW50YXRpb24uY2xhc3NOYW1lICsgIikiICsgb3duZXIuaW5uZXJWYWx1ZSgpLmlkKCkgKyAiKS4iIDogIiI7CiAKIGNhY2hlZCBCb29sZWFuIGFuY2VzdG9yKFZvaWQgcGFyZW50LCBTQWdlbnQgY2hpbGQpIDogCiAJZmFsc2U7CmRpZmYgLS1naXQgYS9vcmcuZWNsaXBzZS5hbXAuYW1mL3BsdWdpbnMvb3JnLmVjbGlwc2UuYW1wLmFtZi5pZGUuYXNjYXBlL3NyYy9vcmcvZWNsaXBzZS9hbXAvYW1mL2lkZS9hc2NhcGUvQXNjYXBlUHJvamVjdFdpemFyZC5qYXZhIGIvb3JnLmVjbGlwc2UuYW1wLmFtZi9wbHVnaW5zL29yZy5lY2xpcHNlLmFtcC5hbWYuaWRlLmFzY2FwZS9zcmMvb3JnL2VjbGlwc2UvYW1wL2FtZi9pZGUvYXNjYXBlL0FzY2FwZVByb2plY3RXaXphcmQuamF2YQppbmRleCBiMzhhNGY3Li4xZTZhMTBmIDEwMDY0NAotLS0gYS9vcmcuZWNsaXBzZS5hbXAuYW1mL3BsdWdpbnMvb3JnLmVjbGlwc2UuYW1wLmFtZi5pZGUuYXNjYXBlL3NyYy9vcmcvZWNsaXBzZS9hbXAvYW1mL2lkZS9hc2NhcGUvQXNjYXBlUHJvamVjdFdpemFyZC5qYXZhCisrKyBiL29yZy5lY2xpcHNlLmFtcC5hbWYvcGx1Z2lucy9vcmcuZWNsaXBzZS5hbXAuYW1mLmlkZS5hc2NhcGUvc3JjL29yZy9lY2xpcHNlL2FtcC9hbWYvaWRlL2FzY2FwZS9Bc2NhcGVQcm9qZWN0V2l6YXJkLmphdmEKQEAgLTQ2LDcgKzQ2LDYgQEAKIAlAT3ZlcnJpZGUKIAlwdWJsaWMgTGlzdDxTdHJpbmc+IGdldEJ1aWxkZXJzKCkgewogCQlMaXN0PFN0cmluZz4gYnVpbGRlcklEcyA9IHN1cGVyLmdldEJ1aWxkZXJzKCk7Ci0JCWJ1aWxkZXJJRHMuYWRkKEdlbklERVBsdWdpbi5QTFVHSU5fSUQgKyAiLiIgKyBNZXRhQUJNQnVpbGRlci5CVUlMREVSX0lEKTsKIAkJYnVpbGRlcklEcy5hZGQoR2VuSURFUGx1Z2luLlBMVUdJTl9JRCArICIuIiArIERvY3VtZW50TW9kZWxCdWlsZGVyLkRPQ1VNRU5UX0JVSUxERVJfSUQpOwogCQlidWlsZGVySURzLmFkZChBc2NhcGVJREVBY3RpdmF0b3IuUExVR0lOX0lEICsgIi4iICsgQXNjYXBlTW9kZWxCdWlsZGVyLkFTQ0FQRV9CVUlMREVSX0lEKTsKIAkJcmV0dXJuIGJ1aWxkZXJJRHM7CmRpZmYgLS1naXQgYS9vcmcuZWNsaXBzZS5hbXAuZXNjYXBlL3BsdWdpbnMvb3JnLmVjbGlwc2UuYW1wLmVzY2FwZS5hbWYuaWRlL3NyYy9vcmcvZWNsaXBzZS9hbXAvZXNjYXBlL2FtZi9pZGUvRXNjYXBlQU1GUHJvamVjdFdpemFyZC5qYXZhIGIvb3JnLmVjbGlwc2UuYW1wLmVzY2FwZS9wbHVnaW5zL29yZy5lY2xpcHNlLmFtcC5lc2NhcGUuYW1mLmlkZS9zcmMvb3JnL2VjbGlwc2UvYW1wL2VzY2FwZS9hbWYvaWRlL0VzY2FwZUFNRlByb2plY3RXaXphcmQuamF2YQppbmRleCBlYjRjMTMyLi41NTRmYmM1IDEwMDY0NAotLS0gYS9vcmcuZWNsaXBzZS5hbXAuZXNjYXBlL3BsdWdpbnMvb3JnLmVjbGlwc2UuYW1wLmVzY2FwZS5hbWYuaWRlL3NyYy9vcmcvZWNsaXBzZS9hbXAvZXNjYXBlL2FtZi9pZGUvRXNjYXBlQU1GUHJvamVjdFdpemFyZC5qYXZhCisrKyBiL29yZy5lY2xpcHNlLmFtcC5lc2NhcGUvcGx1Z2lucy9vcmcuZWNsaXBzZS5hbXAuZXNjYXBlLmFtZi5pZGUvc3JjL29yZy9lY2xpcHNlL2FtcC9lc2NhcGUvYW1mL2lkZS9Fc2NhcGVBTUZQcm9qZWN0V2l6YXJkLmphdmEKQEAgLTQyLDcgKzQyLDYgQEAKIAlAT3ZlcnJpZGUKIAlwdWJsaWMgTGlzdDxTdHJpbmc+IGdldEJ1aWxkZXJzKCkgewogCQlMaXN0PFN0cmluZz4gYnVpbGRlcklEcyA9IG5ldyBBcnJheUxpc3Q8U3RyaW5nPigpOwotCQlidWlsZGVySURzLmFkZChHZW5JREVQbHVnaW4uUExVR0lOX0lEICsgIi4iICsgTWV0YUFCTUJ1aWxkZXIuQlVJTERFUl9JRCk7CiAJCWJ1aWxkZXJJRHMuYWRkKEdlbklERVBsdWdpbi5QTFVHSU5fSUQgKyAiLiIgKyBEb2N1bWVudE1vZGVsQnVpbGRlci5ET0NVTUVOVF9CVUlMREVSX0lEKTsKIAkJYnVpbGRlcklEcy5hZGQoRXNjYXBlQU1GUGx1Z2luLlBMVUdJTl9JRCArICIuIiArIEVzY2FwZU1vZGVsQnVpbGRlci5FU0NBUEVfQlVJTERFUl9JRCk7CiAJCWJ1aWxkZXJJRHMuYWRkQWxsKHN1cGVyLmdldEJ1aWxkZXJzKCkpOwo=