ZGlmZiAtLWdpdCBhL3dlYmNvbnNvbGUtcGx1Z2lucy9tZW1vcnl1c2FnZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvZmVsaXgvd2ViY29uc29sZS9wbHVnaW5zL21lbW9yeXVzYWdlL2ludGVybmFsL01lbW9yeVVzYWdlQ29uZmlndXJhdG9yLmphdmEgYi93ZWJjb25zb2xlLXBsdWdpbnMvbWVtb3J5dXNhZ2Uvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL2ZlbGl4L3dlYmNvbnNvbGUvcGx1Z2lucy9tZW1vcnl1c2FnZS9pbnRlcm5hbC9NZW1vcnlVc2FnZUNvbmZpZ3VyYXRvci5qYXZhCmluZGV4IDdmYmU0MGEuLjQyYmRjMWMgMTAwNjQ0Ci0tLSBhL3dlYmNvbnNvbGUtcGx1Z2lucy9tZW1vcnl1c2FnZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvZmVsaXgvd2ViY29uc29sZS9wbHVnaW5zL21lbW9yeXVzYWdlL2ludGVybmFsL01lbW9yeVVzYWdlQ29uZmlndXJhdG9yLmphdmEKKysrIGIvd2ViY29uc29sZS1wbHVnaW5zL21lbW9yeXVzYWdlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS9mZWxpeC93ZWJjb25zb2xlL3BsdWdpbnMvbWVtb3J5dXNhZ2UvaW50ZXJuYWwvTWVtb3J5VXNhZ2VDb25maWd1cmF0b3IuamF2YQpAQCAtNjcsNyArNjcsNyBAQAogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBjYXRjaCAoTnVtYmVyRm9ybWF0RXhjZXB0aW9uIG5mZSkKICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHRocm93IGZhaWx1cmUodGhyZXNob2xkVmFsdWUpOworICAgICAgICAgICAgICAgICAgICB0aHJvdyB0aHJlc2hvbGRGYWlsdXJlKHRocmVzaG9sZFZhbHVlKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAKQEAgLTc3LDcgKzc3LDcgQEAKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGNhdGNoIChJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gaWFlKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHRocm93IGZhaWx1cmUoaWFlLmdldE1lc3NhZ2UoKSk7CisgICAgICAgICAgICAgICAgdGhyb3cgdGhyZXNob2xkRmFpbHVyZShpYWUuZ2V0TWVzc2FnZSgpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBlbHNlCkBAIC04NSw2ICs4NSw0MSBAQAogICAgICAgICAgICAgc3VwcG9ydC5zZXRUaHJlc2hvbGQoLTEpOwogICAgICAgICB9CiAKKyAgICAgICAgZmluYWwgT2JqZWN0IGludGVydmFsVmFsdWUgPSBwcm9wZXJ0aWVzLmdldChNZW1vcnlVc2FnZUNvbnN0YW50cy5QUk9QX0RVTVBfSU5URVJWQUwpOworICAgICAgICBpZiAoaW50ZXJ2YWxWYWx1ZSAhPSBudWxsKQorICAgICAgICB7CisgICAgICAgICAgICBmaW5hbCBpbnQgaW50ZXJ2YWw7CisgICAgICAgICAgICBpZiAoaW50ZXJ2YWxWYWx1ZSBpbnN0YW5jZW9mIE51bWJlcikKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpbnRlcnZhbCA9ICgoTnVtYmVyKSBpbnRlcnZhbFZhbHVlKS5pbnRWYWx1ZSgpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIC8vIHRyeSB0byBjb252ZXJ0CisgICAgICAgICAgICAgICAgdHJ5CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBpbnRlcnZhbCA9IEludGVnZXIucGFyc2VJbnQoaW50ZXJ2YWxWYWx1ZS50b1N0cmluZygpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgY2F0Y2ggKE51bWJlckZvcm1hdEV4Y2VwdGlvbiBuZmUpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICB0aHJvdyBpbnRlcnZhbEZhaWx1cmUoaW50ZXJ2YWxWYWx1ZSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICB0cnkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBzdXBwb3J0LnNldEludGVydmFsKGludGVydmFsKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNhdGNoIChJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gaWFlKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHRocm93IGludGVydmFsRmFpbHVyZShpYWUuZ2V0TWVzc2FnZSgpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIHN1cHBvcnQuc2V0SW50ZXJ2YWwoLTEpOworICAgICAgICB9CisKICAgICAgICAgZmluYWwgT2JqZWN0IGxvY2F0aW9uVmFsdWUgPSBwcm9wZXJ0aWVzLmdldChNZW1vcnlVc2FnZUNvbnN0YW50cy5QUk9QX0RVTVBfTE9DQVRJT04pOwogICAgICAgICBpZiAobG9jYXRpb25WYWx1ZSBpbnN0YW5jZW9mIFN0cmluZykKICAgICAgICAgewpAQCAtMTEyLDExICsxNDcsMTIgQEAKICAgICAgICAgewogCiAgICAgICAgICAgICBmaW5hbCBBcnJheUxpc3Q8QXR0cmlidXRlRGVmaW5pdGlvbj4gYWRMaXN0ID0gbmV3IEFycmF5TGlzdDxBdHRyaWJ1dGVEZWZpbml0aW9uPigpOworCiAgICAgICAgICAgICBhZExpc3QuYWRkKG5ldyBBdHRyaWJ1dGVEZWZpbml0aW9uSW1wbChNZW1vcnlVc2FnZUNvbnN0YW50cy5QUk9QX0RVTVBfVEhSRVNIT0xELCAiRHVtcCBUaHJlc2hvbGQiLAogICAgICAgICAgICAgICAgICJUaHJlc2hvbGQgYXQgd2hpY2ggdG8gYXV0b21hdGljYWxseSBjcmVhdGUgYSBtZW1vcnkgZHVtcCBhcyBhIHBlcmNlbnRhZ2UgaW4gdGhlIHJhbmdlICIKLSAgICAgICAgICAgICAgICAgICAgKyBNZW1vcnlVc2FnZUNvbnN0YW50cy5NSU5fRFVNUF9USFJFU0hPTEQgKyAiIHRvICIgKyBNZW1vcnlVc2FnZUNvbnN0YW50cy5NQVhfRFVNUF9USFJFU0hPTEQKLSAgICAgICAgICAgICAgICAgICAgKyAiIG9yIHplcm8gdG8gZGlzYWJsZSBhdXRvbWF0aWMgZHVtcCBjcmVhdGlvbi4iLCBBdHRyaWJ1dGVEZWZpbml0aW9uLklOVEVHRVIsIG5ldyBTdHJpbmdbXQotICAgICAgICAgICAgICAgICAgICB7IFN0cmluZy52YWx1ZU9mKE1lbW9yeVVzYWdlQ29uc3RhbnRzLkRFRkFVTFRfRFVNUF9USFJFU0hPTEQpIH0sIDAsIG51bGwsIG51bGwpCisgICAgICAgICAgICAgICAgKyBNZW1vcnlVc2FnZUNvbnN0YW50cy5NSU5fRFVNUF9USFJFU0hPTEQgKyAiIHRvICIgKyBNZW1vcnlVc2FnZUNvbnN0YW50cy5NQVhfRFVNUF9USFJFU0hPTEQKKyAgICAgICAgICAgICAgICArICIgb3IgemVybyB0byBkaXNhYmxlIGF1dG9tYXRpYyBkdW1wIGNyZWF0aW9uLiIsIEF0dHJpYnV0ZURlZmluaXRpb24uSU5URUdFUiwgbmV3IFN0cmluZ1tdCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBTdHJpbmcudmFsdWVPZihNZW1vcnlVc2FnZUNvbnN0YW50cy5ERUZBVUxUX0RVTVBfVEhSRVNIT0xEKSB9LCAwLCBudWxsLCBudWxsKQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIEBPdmVycmlkZQogICAgICAgICAgICAgICAgIHB1YmxpYyBTdHJpbmcgdmFsaWRhdGUoU3RyaW5nIHZhbHVlKQpAQCAtMTI2LDE3ICsxNjIsNDkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIGludCB0aHJlc2hvbGQgPSBJbnRlZ2VyLnBhcnNlSW50KHZhbHVlKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghTWVtb3J5VXNhZ2VDb25zdGFudHMuaXNUaHJlc2hvbGRWYWxpZCh0aHJlc2hvbGQpKQogICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAiVGhyZXNob2xkIG11c3QgaW4gdGhlIHJhbmdlICIgKyBNZW1vcnlVc2FnZUNvbnN0YW50cy5NSU5fRFVNUF9USFJFU0hPTEQgKyAiIHRvICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBNZW1vcnlVc2FnZUNvbnN0YW50cy5NQVhfRFVNUF9USFJFU0hPTEQgKyAiIG9yIHplcm8iOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAiRHVtcCBUaHJlc2hvbGQgbXVzdCBpbiB0aGUgcmFuZ2UgIiArIE1lbW9yeVVzYWdlQ29uc3RhbnRzLk1JTl9EVU1QX1RIUkVTSE9MRAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArICIgdG8gIiArIE1lbW9yeVVzYWdlQ29uc3RhbnRzLk1BWF9EVU1QX1RIUkVTSE9MRCArICIgb3IgemVybyI7CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gIiI7IC8vIGV2ZXJ5dGhpbmcgb2sKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBjYXRjaCAoTnVtYmVyRm9ybWF0RXhjZXB0aW9uIG5mZSkKICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJUaHJlc2hob2xkIG11c3QgYmUgbnVtZXJpYyI7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gIkR1bXAgVGhyZXNoaG9sZCBtdXN0IGJlIG51bWVyaWMiOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIGFkTGlzdC5hZGQobmV3IEF0dHJpYnV0ZURlZmluaXRpb25JbXBsKE1lbW9yeVVzYWdlQ29uc3RhbnRzLlBST1BfRFVNUF9JTlRFUlZBTCwgIkR1bXAgSW50ZXJ2YWwiLAorICAgICAgICAgICAgICAgICJUaGUgbWluaW11bSBpbnRlcnZhbCBiZXR3ZWVuIHR3byBjb25zZWN1dGl2ZSBtZW1vcnkgZHVtcHMgYmVpbmcgdGFrZW4gaW4gc2Vjb25kcy4gIgorICAgICAgICAgICAgICAgICAgICArICJUaGlzIHByb3BlcnR5IGFsbG93cyB0aGUgbGltaXRhdGlvbiBvZiB0aGUgbnVtYmVyIG9mIG1lbW9yeSBkdW1wcyBiZWluZyB0YWtlbi4gIgorICAgICAgICAgICAgICAgICAgICArICJUaGUgZGVmYXVsdCB2YWx1ZSBmb3IgdGhlIGludGVydmFsIGlzIDYgaG91cnMuIFRoaXMgbWVhbnMgdGhhdCBhIG1lbW9yeSB0aHJlc2hvbGQgIgorICAgICAgICAgICAgICAgICAgICArICJldmVudCBpcyBpZ25vcmVkIHVubGVzcyB0aGUgbGFzdCBtZW1vcnkgZHVtcCBoYXMgYmVlbiB0YWtlbiBhdCBsZWFzdCA2IGhvdXJzIGVhcmxpZXIuICIKKyAgICAgICAgICAgICAgICAgICAgKyAiVGhpcyBwcm9wZXJ0eSBhbGxvd3MgbGltaXRpbmcgdGhlIG51bWJlciBvZiBtZW1vcnkgZHVtcHMgaW4gY2FzZSBtZW1vcnkgY29uc3VtcHRpb24gaXMgIgorICAgICAgICAgICAgICAgICAgICArICJvc2NpbGxhdGluZyBhcm91bmQgdGhlIHRocmVzaG9sZCBwb2ludC4gVGhlIHByb3BlcnR5IG11c3QgYmUgYW4gaW50ZWdlciB2YWx1ZSBvciBiZSAiCisgICAgICAgICAgICAgICAgICAgICsgInBhcnNlYWJsZSB0byBhbiBpbnRlZ2VyIHZhbHVlLiBUaGlzIHNob3VsZCBiZSBhIHBvc2l0aXZlIHZhbHVlIG9yIHplcm8gdG8gZm9yY2UgZWFjaCAiCisgICAgICAgICAgICAgICAgICAgICsgIm1lbW9yeSB0aHJlc2hvbGQgZXZlbnQgdG8gY2F1c2UgYSBtZW1vcnkgZHVtcCAoZGlzY291cmFnZWQpLiIsIEF0dHJpYnV0ZURlZmluaXRpb24uSU5URUdFUiwKKyAgICAgICAgICAgICAgICBuZXcgU3RyaW5nW10KKyAgICAgICAgICAgICAgICAgICAgeyBTdHJpbmcudmFsdWVPZihNZW1vcnlVc2FnZUNvbnN0YW50cy5ERUZBVUxUX0RVTVBfSU5URVJWQUwpIH0sIDAsIG51bGwsIG51bGwpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgQE92ZXJyaWRlCisgICAgICAgICAgICAgICAgcHVibGljIFN0cmluZyB2YWxpZGF0ZShTdHJpbmcgdmFsdWUpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICB0cnkKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgaW50IGludGVydmFsID0gSW50ZWdlci5wYXJzZUludCh2YWx1ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW50ZXJ2YWwgPCAwKQorICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAiRHVtcCBJbnRlcnZhbCBtdXN0IGJlIHplcm8gb3IgYSBwb3NpdGl2ZSBudW1iZXIiOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICIiOyAvLyBldmVyeXRoaW5nIG9rCisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgY2F0Y2ggKE51bWJlckZvcm1hdEV4Y2VwdGlvbiBuZmUpCisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAiRHVtcCBJbnRlcnZhbCBtdXN0IGJlIG51bWVyaWMiOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSk7CisKICAgICAgICAgICAgIGFkTGlzdC5hZGQobmV3IEF0dHJpYnV0ZURlZmluaXRpb25JbXBsKE1lbW9yeVVzYWdlQ29uc3RhbnRzLlBST1BfRFVNUF9MT0NBVElPTiwgIkR1bXBlIExvY2F0aW9uIiwKICAgICAgICAgICAgICAgICAiVGhlIGZpbGVzeXN0ZW0gbG9jYXRpb24gd2hlcmUgaGVhcCBkdW1wcyBhcmUgc3RvcmVkLiBJZiB0aGlzIGlzIG51bGwgb3IgZW1wdHkgKHRoZSBkZWZhdWx0KSB0aGUgZHVtcHMgYXJlIHN0b3JlZCBpbiAiCiAgICAgICAgICAgICAgICAgICAgICsgc3VwcG9ydC5nZXREZWZhdWx0RHVtcExvY2F0aW9uKCksICIiKSk7CkBAIC0xNzYsMTMgKzI0NCwxOSBAQAogICAgICAgICByZXR1cm4gb2NkOwogICAgIH0KIAotICAgIHByaXZhdGUgQ29uZmlndXJhdGlvbkV4Y2VwdGlvbiBmYWlsdXJlKGZpbmFsIE9iamVjdCBpbnZhbGlkVmFsdWUpCisgICAgcHJpdmF0ZSBDb25maWd1cmF0aW9uRXhjZXB0aW9uIHRocmVzaG9sZEZhaWx1cmUoZmluYWwgT2JqZWN0IGludmFsaWRWYWx1ZSkKICAgICB7CiAgICAgICAgIHJldHVybiBuZXcgQ29uZmlndXJhdGlvbkV4Y2VwdGlvbihNZW1vcnlVc2FnZUNvbnN0YW50cy5QUk9QX0RVTVBfVEhSRVNIT0xELCAiSW52YWxpZCBEdW1wIFRocmVzaG9sZCB2YWx1ZSAnIgogICAgICAgICAgICAgKyBpbnZhbGlkVmFsdWUgKyAiJzogTXVzdCBiZSBhbiBpbnRlZ2VyIG51bWJlciBpbiB0aGUgcmFuZ2UgIiArIE1lbW9yeVVzYWdlQ29uc3RhbnRzLk1JTl9EVU1QX1RIUkVTSE9MRAogICAgICAgICAgICAgKyAiIHRvICIgKyBNZW1vcnlVc2FnZUNvbnN0YW50cy5NQVhfRFVNUF9USFJFU0hPTEQgKyAiIG9yIHplcm8gdG8gZGlzYWJsZSIpOwogICAgIH0KIAorICAgIHByaXZhdGUgQ29uZmlndXJhdGlvbkV4Y2VwdGlvbiBpbnRlcnZhbEZhaWx1cmUoZmluYWwgT2JqZWN0IGludmFsaWRWYWx1ZSkKKyAgICB7CisgICAgICAgIHJldHVybiBuZXcgQ29uZmlndXJhdGlvbkV4Y2VwdGlvbihNZW1vcnlVc2FnZUNvbnN0YW50cy5QUk9QX0RVTVBfSU5URVJWQUwsICJJbnZhbGlkIER1bXAgSW50ZXJ2YWwgdmFsdWUgJyIKKyAgICAgICAgICAgICsgaW52YWxpZFZhbHVlICsgIic6IE11c3QgYmUgYSBwb3NpdGl2ZSBpbnRlZ2VyIG51bWJlciBvciB6ZXJvIHRvIGRpc2FibGUiKTsKKyAgICB9CisKICAgICBwcml2YXRlIHN0YXRpYyBjbGFzcyBBdHRyaWJ1dGVEZWZpbml0aW9uSW1wbCBpbXBsZW1lbnRzIEF0dHJpYnV0ZURlZmluaXRpb24KICAgICB7CiAKZGlmZiAtLWdpdCBhL3dlYmNvbnNvbGUtcGx1Z2lucy9tZW1vcnl1c2FnZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvZmVsaXgvd2ViY29uc29sZS9wbHVnaW5zL21lbW9yeXVzYWdlL2ludGVybmFsL01lbW9yeVVzYWdlQ29uc3RhbnRzLmphdmEgYi93ZWJjb25zb2xlLXBsdWdpbnMvbWVtb3J5dXNhZ2Uvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL2ZlbGl4L3dlYmNvbnNvbGUvcGx1Z2lucy9tZW1vcnl1c2FnZS9pbnRlcm5hbC9NZW1vcnlVc2FnZUNvbnN0YW50cy5qYXZhCmluZGV4IGE4OWZmOTguLjg3OTY0ZTEgMTAwNjQ0Ci0tLSBhL3dlYmNvbnNvbGUtcGx1Z2lucy9tZW1vcnl1c2FnZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvZmVsaXgvd2ViY29uc29sZS9wbHVnaW5zL21lbW9yeXVzYWdlL2ludGVybmFsL01lbW9yeVVzYWdlQ29uc3RhbnRzLmphdmEKKysrIGIvd2ViY29uc29sZS1wbHVnaW5zL21lbW9yeXVzYWdlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS9mZWxpeC93ZWJjb25zb2xlL3BsdWdpbnMvbWVtb3J5dXNhZ2UvaW50ZXJuYWwvTWVtb3J5VXNhZ2VDb25zdGFudHMuamF2YQpAQCAtNjQsMjAgKzY0LDQ3IEBACiAgICAgc3RhdGljIGZpbmFsIFN0cmluZyBQUk9QX0RVTVBfVEhSRVNIT0xEID0gImZlbGl4Lm1lbW9yeXVzYWdlLmR1bXAudGhyZXNob2xkIjsKIAogICAgIC8qKgorICAgICAqIFRoZSBtaW5pbXVtIGludGVydmFsIGJldHdlZW4gdHdvIGNvbnNlY3V0aXZlIG1lbW9yeSBkdW1wcyBiZWluZyB0YWtlbgorICAgICAqIGluIHNlY29uZHMuIFRoaXMgcHJvcGVydHkgYWxsb3dzIHRoZSBsaW1pdGF0aW9uIG9mIHRoZSBudW1iZXIgb2YgbWVtb3J5CisgICAgICogZHVtcHMgYmVpbmcgdGFrZW4uIFRoZSBkZWZhdWx0IHZhbHVlIGZvciB0aGUgaW50ZXJ2YWwgaXMgNiBob3Vycy4gVGhpcworICAgICAqIG1lYW5zIHRoYXQKKyAgICAgKiBhIG1lbW9yeSB0aHJlc2hvbGQgZXZlbnQgaXMgaWdub3JlZCB1bmxlc3MgdGhlIGxhc3QgbWVtb3J5IGR1bXAgaGFzIGJlZW4KKyAgICAgKiB0YWtlbgorICAgICAqIGF0IGxlYXN0IDYgaG91cnMgZWFybGllci4KKyAgICAgKiA8cD4KKyAgICAgKiBUaGlzIHByb3BlcnR5IGFsbG93cyBsaW1pdGluZyB0aGUgbnVtYmVyIG9mIG1lbW9yeSBkdW1wcyBpbiBjYXNlIG1lbW9yeQorICAgICAqIGNvbnN1bXB0aW9uIGlzIG9zY2lsbGF0aW5nIGFyb3VuZCB0aGUgdGhyZXNob2xkIHBvaW50LgorICAgICAqIDxwPgorICAgICAqIFRoZSBwcm9wZXJ0eSBtdXN0IGJlIGFuIGludGVnZXIgdmFsdWUgb3IgYmUgcGFyc2VhYmxlIHRvIGFuIGludGVnZXIKKyAgICAgKiB2YWx1ZS4gVGhpcyBzaG91bGQgYmUgYSBwb3NpdGl2ZSB2YWx1ZSBvciB6ZXJvIHRvIGZvcmNlIGVhY2ggbWVtb3J5CisgICAgICogdGhyZXNob2xkIGV2ZW50IHRvIGNhdXNlIGEgbWVtb3J5IGR1bXAgKGRpc2NvdXJhZ2VkKS4gSWYgdGhlIHZhbHVlIGlzCisgICAgICogbmVnYXRpdmUgb3Igbm90IHBhcnNlYWJsZSB0byBhbiBpbnQsIHRoZSBkZWZhdWx0IHZhbHVlIG9mCisgICAgICoge0BsaW5rICNERUZBVUxUX0RVTVBfSU5URVJWQUwgNiBob3Vyc30gYXBwbGllcy4KKyAgICAgKi8KKyAgICBzdGF0aWMgZmluYWwgU3RyaW5nIFBST1BfRFVNUF9JTlRFUlZBTCA9ICJmZWxpeC5tZW1vcnl1c2FnZS5kdW1wLmludGVydmFsIjsKKworICAgIC8qKgogICAgICAqIFRoZSBkZWZhdWx0IGF1dG9tYXRpYyBoZWFwIGR1bXAgdGhyZXNob2xkIGlmIG5vbmUgaGFzIGJlZW4gY29uZmlndXJlZAogICAgICAqIChvciBubyBjb25maWd1cmF0aW9uIGhhcyB5ZXQgYmVlbiBwcm92aWRlZCkuCiAgICAgICovCi0gICAgc3RhdGljIGZpbmFsIGludCBERUZBVUxUX0RVTVBfVEhSRVNIT0xEID0gOTU7CisgICAgc3RhdGljIGZpbmFsIGludCBERUZBVUxUX0RVTVBfVEhSRVNIT0xEID0gMDsKKwogICAgIC8qKgogICAgICAqIFRoZSBtYXhpbXVtIGFsbG93ZWQgYXV0b21hdGljIGhlYXAgZHVtcCB0aHJlc2hvbGQuCiAgICAgICovCiAgICAgc3RhdGljIGZpbmFsIGludCBNQVhfRFVNUF9USFJFU0hPTEQgPSA5OTsKKwogICAgIC8qKgogICAgICAqIFRoZSBtaW5pbXVtIGFsbG93ZWQgYXV0b21hdGljIGhlYXAgZHVtcCB0aHJlc2hvbGQuCiAgICAgICovCiAgICAgc3RhdGljIGZpbmFsIGludCBNSU5fRFVNUF9USFJFU0hPTEQgPSA1MDsKIAogICAgIC8qKgorICAgICAqIFRoZSBkZWZhdWx0IGludGVydmFsIGJldHdlbiBjb25zZWN1dGl2ZSBkdW1wcyAoNiBob3VycykuCisgICAgICovCisgICAgc3RhdGljIGZpbmFsIGxvbmcgREVGQVVMVF9EVU1QX0lOVEVSVkFMID0gNiAqIDM2MDAgKiAxMDAwOworCisgICAgLyoqCiAgICAgICogUmV0dXJucyA8Y29kZT50cnVlPC9jb2RlPiBpZiB0aGUgZ2l2ZW4gPGNvZGU+dGhyZXNob2xkPC9jb2RlPnZhbHVlIGlzCiAgICAgICogdmFsaWQ7IHRoYXQgaXMgaWYgdGhlIHZhdWUgaXMgZWl0aGVyIHplcm8gb3IgaW4gdGhlIHJhbmdlIFsKICAgICAgKiB7QGxpbmsgI01JTl9EVU1QX1RIUkVTSE9MRH0uLntAbGluayAjTUFYX0RVTVBfVEhSRVNIT0xEfV0uCmRpZmYgLS1naXQgYS93ZWJjb25zb2xlLXBsdWdpbnMvbWVtb3J5dXNhZ2Uvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL2ZlbGl4L3dlYmNvbnNvbGUvcGx1Z2lucy9tZW1vcnl1c2FnZS9pbnRlcm5hbC9NZW1vcnlVc2FnZVBhbmVsLmphdmEgYi93ZWJjb25zb2xlLXBsdWdpbnMvbWVtb3J5dXNhZ2Uvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL2ZlbGl4L3dlYmNvbnNvbGUvcGx1Z2lucy9tZW1vcnl1c2FnZS9pbnRlcm5hbC9NZW1vcnlVc2FnZVBhbmVsLmphdmEKaW5kZXggOGFmMDNjYS4uNDg5OWI0YiAxMDA2NDQKLS0tIGEvd2ViY29uc29sZS1wbHVnaW5zL21lbW9yeXVzYWdlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS9mZWxpeC93ZWJjb25zb2xlL3BsdWdpbnMvbWVtb3J5dXNhZ2UvaW50ZXJuYWwvTWVtb3J5VXNhZ2VQYW5lbC5qYXZhCisrKyBiL3dlYmNvbnNvbGUtcGx1Z2lucy9tZW1vcnl1c2FnZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvZmVsaXgvd2ViY29uc29sZS9wbHVnaW5zL21lbW9yeXVzYWdlL2ludGVybmFsL01lbW9yeVVzYWdlUGFuZWwuamF2YQpAQCAtNDAsNyArNDAsNiBAQAogaW1wb3J0IG9yZy5hcGFjaGUuZmVsaXgud2ViY29uc29sZS5Db25maWd1cmF0aW9uUHJpbnRlcjsKIGltcG9ydCBvcmcuYXBhY2hlLmZlbGl4LndlYmNvbnNvbGUuRGVmYXVsdFZhcmlhYmxlUmVzb2x2ZXI7CiBpbXBvcnQgb3JnLmFwYWNoZS5mZWxpeC53ZWJjb25zb2xlLldlYkNvbnNvbGVVdGlsOwotaW1wb3J0IG9yZy5vc2dpLmZyYW1ld29yay5CdW5kbGVDb250ZXh0OwogaW1wb3J0IG9yZy5vc2dpLnNlcnZpY2UubG9nLkxvZ1NlcnZpY2U7CiAKIEBTdXBwcmVzc1dhcm5pbmdzKCJzZXJpYWwiKQpAQCAtMTEzLDYgKzExMiw3IEBACiAgICAgICAgIHJlc29sdmVyLnB1dCgiX19maWxlc19fIiwgZmlsZXNCdWYudG9TdHJpbmcoKSk7CiAgICAgICAgIHJlc29sdmVyLnB1dCgiX19zdGF0dXNfXyIsIHN0YXR1c0J1Zi50b1N0cmluZygpKTsKICAgICAgICAgcmVzb2x2ZXIucHV0KCJfX3RocmVzaG9sZF9fIiwgU3RyaW5nLnZhbHVlT2Yoc3VwcG9ydC5nZXRUaHJlc2hvbGQoKSkpOworICAgICAgICByZXNvbHZlci5wdXQoIl9faW50ZXJ2YWxfXyIsIFN0cmluZy52YWx1ZU9mKHN1cHBvcnQuZ2V0SW50ZXJ2YWwoKSkpOwogICAgICAgICByZXNvbHZlci5wdXQoIl9fb3ZlcmFsbF9fIiwganBoLmdldFN0cmluZygpKTsKICAgICAgICAgcmVzb2x2ZXIucHV0KCJfX3Bvb2xzX18iLCBzdXBwb3J0LmdldE1lbW9yeVBvb2xzSnNvbigpKTsKIApAQCAtMjE0LDYgKzIxNCwxOSBAQAogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICByZXNwLnNlbmRSZWRpcmVjdChyZXEuZ2V0UmVxdWVzdFVSSSgpKTsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKCJpbnRlcnZhbCIuZXF1YWxzKGNvbW1hbmQpKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHRyeQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgaW50IGludGVydmFsID0gSW50ZWdlci5wYXJzZUludChyZXEuZ2V0UGFyYW1ldGVyKCJpbnRlcnZhbCIpKTsKKyAgICAgICAgICAgICAgICAgICAgc3VwcG9ydC5zZXRJbnRlcnZhbChpbnRlcnZhbCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGNhdGNoIChFeGNlcHRpb24gZSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIC8vIGlnbm9yZQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICByZXNwLnNlbmRSZWRpcmVjdChyZXEuZ2V0UmVxdWVzdFVSSSgpKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBzdXBlci5kb1Bvc3QocmVxLCByZXNwKTsKZGlmZiAtLWdpdCBhL3dlYmNvbnNvbGUtcGx1Z2lucy9tZW1vcnl1c2FnZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvZmVsaXgvd2ViY29uc29sZS9wbHVnaW5zL21lbW9yeXVzYWdlL2ludGVybmFsL01lbW9yeVVzYWdlU3VwcG9ydC5qYXZhIGIvd2ViY29uc29sZS1wbHVnaW5zL21lbW9yeXVzYWdlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS9mZWxpeC93ZWJjb25zb2xlL3BsdWdpbnMvbWVtb3J5dXNhZ2UvaW50ZXJuYWwvTWVtb3J5VXNhZ2VTdXBwb3J0LmphdmEKaW5kZXggNWU2NTg5My4uNDg0Yzg3NCAxMDA2NDQKLS0tIGEvd2ViY29uc29sZS1wbHVnaW5zL21lbW9yeXVzYWdlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS9mZWxpeC93ZWJjb25zb2xlL3BsdWdpbnMvbWVtb3J5dXNhZ2UvaW50ZXJuYWwvTWVtb3J5VXNhZ2VTdXBwb3J0LmphdmEKKysrIGIvd2ViY29uc29sZS1wbHVnaW5zL21lbW9yeXVzYWdlL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS9mZWxpeC93ZWJjb25zb2xlL3BsdWdpbnMvbWVtb3J5dXNhZ2UvaW50ZXJuYWwvTWVtb3J5VXNhZ2VTdXBwb3J0LmphdmEKQEAgLTY0LDEyICs2NCwyMiBAQAogICAgIC8vIHRoZSBkZWZhdWx0IHRocmVzaG9sZCB2YWx1ZQogICAgIHByaXZhdGUgZmluYWwgaW50IGRlZmF1bHRUaHJlc2hvbGQ7CiAKKyAgICAvLyB0aGUgbWluaW11bSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIGJldHdlZW4gdHdvIGNvbnNlY3V0aXZlIG1lbW9yeQorICAgIC8vIGR1bXBzIHdyaXR0ZW4uIHRoaXMgc2V0dGluZyBhbGxvd3MgbGltaXR0aW5nIHRoZSBnZW5lcmF0aW9uIG9mIG1lbW9yeQorICAgIC8vIGR1bXBzIGlmIG1lbW9yeSBjb25zdW1wdGlvbiBpcyBvc2NpbGxhdGluZyBhcm91bmQgdGhlIG1lbW9yeQorICAgIC8vIHRocmVzaG9sZCB2YWx1ZQorICAgIHByaXZhdGUgbG9uZyBtaW5EdW1wSW50ZXJ2YWw7CisKICAgICAvLyB0aGUgY29uZmlndXJlZCBkdW1wIGxvY2F0aW9uCiAgICAgcHJpdmF0ZSBGaWxlIGR1bXBMb2NhdGlvbjsKIAogICAgIC8vIHRoZSBhY3R1YWwgdGhyZXNob2xkIChjb25maWd1cmVkIG9yIGR5bmFtaWNhbGx5IHNldCBpbiB0aGUgY29uc29sZSBVSSkKICAgICBwcml2YXRlIGludCB0aHJlc2hvbGQ7CiAKKyAgICAvLyB0aGUgc3lzdGVtIHRpbWUgb2YgdGhlIGxhc3QgbWVtb3J5IHNuYXBzaG90IHdyaXR0ZW47IGluaXRpYWxpemVkIHNvIGFzCisgICAgLy8gYXQgbGVhc3Qgd3JpdGUgb25lIGR1bXAKKyAgICBwcml2YXRlIGxvbmcgbmV4dER1bXBUaW1lID0gLTE7CisKICAgICAvLyBsb2cgc2VydmljZQogICAgIHByaXZhdGUgU2VydmljZVJlZmVyZW5jZSBsb2dTZXJ2aWNlUmVmZXJlbmNlOwogICAgIHByaXZhdGUgT2JqZWN0IGxvZ1NlcnZpY2U7CkBAIC0xNTEsNiArMTYxLDI5IEBACiAgICAgICAgIH0KIAogICAgICAgICB0aGlzLmRlZmF1bHRUaHJlc2hvbGQgPSBkZWZhdWx0VGhyZXNob2xkOworCisgICAgICAgIC8vIHNldCB0aGUgaW5pdGlhbCBhdXRvbWF0aWMgZHVtcCB0aHJlc2hvbGQKKyAgICAgICAgaW50IGludGVydmFsOworICAgICAgICBTdHJpbmcgcHJvcEludGVydmFsID0gY29udGV4dC5nZXRQcm9wZXJ0eShNZW1vcnlVc2FnZUNvbnN0YW50cy5QUk9QX0RVTVBfSU5URVJWQUwpOworICAgICAgICBpZiAocHJvcEludGVydmFsICE9IG51bGwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHRyeQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGludGVydmFsID0gSW50ZWdlci5wYXJzZUludChwcm9wSW50ZXJ2YWwpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY2F0Y2ggKEV4Y2VwdGlvbiBlKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIC8vIE51bWJlckZvcm1hdEV4Y2VwdGlvbiAtIGlmIHByb3BUcmVzaG9sZCBjYW5ub3QgYmUgcGFyc2VkIHRvCisgICAgICAgICAgICAgICAgLy8gaW50CisgICAgICAgICAgICAgICAgLy8gSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIC0gaWYgdGhyZXNob2xkIGlzIGludmFsaWQKKyAgICAgICAgICAgICAgICBpbnRlcnZhbCA9IC0xOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgaW50ZXJ2YWwgPSAtMTsKKyAgICAgICAgfQorICAgICAgICBzZXRJbnRlcnZhbChpbnRlcnZhbCk7CiAgICAgfQogCiAgICAgdm9pZCBkaXNwb3NlKCkKQEAgLTIzMywxMCArMjY2LDMwIEBACiAgICAgICAgIHJldHVybiB0aHJlc2hvbGQ7CiAgICAgfQogCisgICAgZmluYWwgdm9pZCBzZXRJbnRlcnZhbChsb25nIGludGVydmFsKQorICAgIHsKKyAgICAgICAgaWYgKGludGVydmFsIDwgMCkKKyAgICAgICAgeworICAgICAgICAgICAgaW50ZXJ2YWwgPSBNZW1vcnlVc2FnZUNvbnN0YW50cy5ERUZBVUxUX0RVTVBfSU5URVJWQUw7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICBpbnRlcnZhbCA9IDEwMDBMICogaW50ZXJ2YWw7CisgICAgICAgIH0KKyAgICAgICAgdGhpcy5taW5EdW1wSW50ZXJ2YWwgPSBpbnRlcnZhbDsKKyAgICAgICAgbG9nKExvZ1NlcnZpY2UuTE9HX0lORk8sICJTZXR0aW5nIEF1dG9tYXRpYyBNZW1vcnkgRHVtcCBJbnRlcnZhbCB0byAlZCBzZWNvbmRzIiwgZ2V0SW50ZXJ2YWwoKSk7CisgICAgfQorCisgICAgZmluYWwgbG9uZyBnZXRJbnRlcnZhbCgpCisgICAgeworICAgICAgICByZXR1cm4gbWluRHVtcEludGVydmFsIC8gMTAwMEw7CisgICAgfQorCiAgICAgZmluYWwgdm9pZCBwcmludE1lbW9yeShmaW5hbCBQcmludEhlbHBlciBwdykKICAgICB7CiAgICAgICAgIHB3LnRpdGxlKCJPdmVyYWxsIE1lbW9yeSBVc2UiLCAwKTsKICAgICAgICAgcHcua2V5VmFsKCJIZWFwIER1bXAgVGhyZXNob2xkIiwgZ2V0VGhyZXNob2xkKCkgKyAiJSIpOworICAgICAgICBwdy5rZXlWYWwoIkhlYXAgRHVtcCBJbnRlcnZhbCIsIGdldEludGVydmFsKCkgKyAiIHNlY29uZHMiKTsKICAgICAgICAgcHJpbnRPdmVyYWxsTWVtb3J5KHB3KTsKIAogICAgICAgICBwdy50aXRsZSgiTWVtb3J5IFBvb2xzIiwgMCk7CkBAIC01MDIsMTYgKzU1NSwyNSBAQAogICAgICAgICBTdHJpbmcgbm90aWZUeXBlID0gbm90aWZpY2F0aW9uLmdldFR5cGUoKTsKICAgICAgICAgaWYgKG5vdGlmVHlwZS5lcXVhbHMoTWVtb3J5Tm90aWZpY2F0aW9uSW5mby5NRU1PUllfVEhSRVNIT0xEX0VYQ0VFREVEKSkKICAgICAgICAgewotICAgICAgICAgICAgbG9nKExvZ1NlcnZpY2UuTE9HX1dBUk5JTkcsICJSZWNlaXZlZCBNZW1vcnkgVGhyZXNob2xkIEV4Y2VlZCBOb3RpZmljYXRpb24sIGR1bXBpbmcgSGVhcCIpOwotICAgICAgICAgICAgdHJ5CisgICAgICAgICAgICBpZiAoU3lzdGVtLmN1cnJlbnRUaW1lTWlsbGlzKCkgPj0gbmV4dER1bXBUaW1lKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIEZpbGUgZmlsZSA9IGR1bXBIZWFwKG51bGwsIHRydWUpOwotICAgICAgICAgICAgICAgIGxvZyhMb2dTZXJ2aWNlLkxPR19XQVJOSU5HLCAiSGVhcCBkdW1wZWQgdG8gIiArIGZpbGUpOworICAgICAgICAgICAgICAgIGxvZyhMb2dTZXJ2aWNlLkxPR19XQVJOSU5HLCAiUmVjZWl2ZWQgTWVtb3J5IFRocmVzaG9sZCBFeGNlZWRlZCBOb3RpZmljYXRpb24sIGR1bXBpbmcgSGVhcCIpOworICAgICAgICAgICAgICAgIHRyeQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgRmlsZSBmaWxlID0gZHVtcEhlYXAobnVsbCwgdHJ1ZSk7CisgICAgICAgICAgICAgICAgICAgIGxvZyhMb2dTZXJ2aWNlLkxPR19XQVJOSU5HLCAiSGVhcCBkdW1wZWQgdG8gIiArIGZpbGUpOworICAgICAgICAgICAgICAgICAgICBuZXh0RHVtcFRpbWUgPSBTeXN0ZW0uY3VycmVudFRpbWVNaWxsaXMoKSArIG1pbkR1bXBJbnRlcnZhbDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgY2F0Y2ggKE5vU3VjaEVsZW1lbnRFeGNlcHRpb24gZSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIGxvZyhMb2dTZXJ2aWNlLkxPR19FUlJPUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICJGYWlsZWQgZHVtcGluZyB0aGUgaGVhcCwgSlZNIGRvZXMgbm90IHByb3ZpZGUga25vd24gbWVjaGFuaXNtIHRvIGNyZWF0ZSBhIEhlYXAgRHVtcCIpOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGNhdGNoIChOb1N1Y2hFbGVtZW50RXhjZXB0aW9uIGUpCisgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgbG9nKExvZ1NlcnZpY2UuTE9HX0VSUk9SLAotICAgICAgICAgICAgICAgICAgICAiRmFpbGVkIGR1bXBpbmcgdGhlIGhlYXAsIEpWTSBkb2VzIG5vdCBwcm92aWRlIGtub3duIG1lY2hhbmlzbSB0byBjcmVhdGUgYSBIZWFwIER1bXAiKTsKKyAgICAgICAgICAgICAgICBsb2coTG9nU2VydmljZS5MT0dfV0FSTklORywKKyAgICAgICAgICAgICAgICAgICAgIklnbm9yaW5nIE1lbW9yeSBUaHJlc2hvbGQgRXhjZWVkZWQgTm90aWZpY2F0aW9uLCBtaW5pbXVtIGR1bXAgaW50ZXJ2YWwgc2luY2UgbGFzdCBkdW1wIGhhcyBub3QgcGFzc2VkIHlldCIpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvd2ViY29uc29sZS1wbHVnaW5zL21lbW9yeXVzYWdlL3NyYy9tYWluL3Jlc291cmNlcy9PU0dJLUlORi9sMTBuL2J1bmRsZS5wcm9wZXJ0aWVzIGIvd2ViY29uc29sZS1wbHVnaW5zL21lbW9yeXVzYWdlL3NyYy9tYWluL3Jlc291cmNlcy9PU0dJLUlORi9sMTBuL2J1bmRsZS5wcm9wZXJ0aWVzCmluZGV4IGZkZjAxMzIuLmYxMGZhYmEgMTAwNjQ0Ci0tLSBhL3dlYmNvbnNvbGUtcGx1Z2lucy9tZW1vcnl1c2FnZS9zcmMvbWFpbi9yZXNvdXJjZXMvT1NHSS1JTkYvbDEwbi9idW5kbGUucHJvcGVydGllcworKysgYi93ZWJjb25zb2xlLXBsdWdpbnMvbWVtb3J5dXNhZ2Uvc3JjL21haW4vcmVzb3VyY2VzL09TR0ktSU5GL2wxMG4vYnVuZGxlLnByb3BlcnRpZXMKQEAgLTM2LDYgKzM2LDggQEAKIGR1bXAub3ZlcnZpZXcgPSBNZW1vcnkgVXNhZ2UgT3ZlcnZpZXcKIGR1bXAudGhyZXNob2xkID0gQXV0b21hdGljIEhlYXAgRHVtcCBUaHJlc2hvbGQgKCUpCiBkdW1wLnRocmVzaG9sZC5zZXQgPSBTZXQgVGhyZXNob2xkCitkdW1wLmludGVydmFsID0gQXV0b21hdGljIEhlYXAgRHVtcCBJbnRlcnZhbCAocykKK2R1bXAuaW50ZXJ2YWwuc2V0ID0gU2V0IEludGVydmFsCiAKIGR1bXAucG9vbHMubmFtZSA9IE5hbWUKIGR1bXAucG9vbHMuc2NvcmUgPSBVc2FnZSBTY29yZQpkaWZmIC0tZ2l0IGEvd2ViY29uc29sZS1wbHVnaW5zL21lbW9yeXVzYWdlL3NyYy9tYWluL3Jlc291cmNlcy9PU0dJLUlORi9sMTBuL2J1bmRsZV9kZS5wcm9wZXJ0aWVzIGIvd2ViY29uc29sZS1wbHVnaW5zL21lbW9yeXVzYWdlL3NyYy9tYWluL3Jlc291cmNlcy9PU0dJLUlORi9sMTBuL2J1bmRsZV9kZS5wcm9wZXJ0aWVzCmluZGV4IDc2YzRjNTYuLjdmODQ0ZDYgMTAwNjQ0Ci0tLSBhL3dlYmNvbnNvbGUtcGx1Z2lucy9tZW1vcnl1c2FnZS9zcmMvbWFpbi9yZXNvdXJjZXMvT1NHSS1JTkYvbDEwbi9idW5kbGVfZGUucHJvcGVydGllcworKysgYi93ZWJjb25zb2xlLXBsdWdpbnMvbWVtb3J5dXNhZ2Uvc3JjL21haW4vcmVzb3VyY2VzL09TR0ktSU5GL2wxMG4vYnVuZGxlX2RlLnByb3BlcnRpZXMKQEAgLTM2LDYgKzM2LDggQEAKIGR1bXAub3ZlcnZpZXcgPSBIYXVwdHNwZWljaGVyIE51dHp1bmcg3GJlcnNpY2h0CiBkdW1wLnRocmVzaG9sZCA9IFNwZWljaGVyIEFiYmlsZCBTY2h3ZWxsd2VydCAoJSkgCiBkdW1wLnRocmVzaG9sZC5zZXQgPSBTY2h3ZWxsd2VydCBzZXR6ZW4KK2R1bXAuaW50ZXJ2YWwgPSBTcGVpY2hlciBBYmJpbGQgSW50ZXJ2YWxsIChzKQorZHVtcC5pbnRlcnZhbC5zZXQgPSBJbnRlcnZhbGwgc2V0emVuCiAKIGR1bXAucG9vbHMubmFtZSA9IE5hbWUKIGR1bXAucG9vbHMuc2NvcmUgPSBOdXR6dW5nCmRpZmYgLS1naXQgYS93ZWJjb25zb2xlLXBsdWdpbnMvbWVtb3J5dXNhZ2Uvc3JjL21haW4vcmVzb3VyY2VzL3RlbXBsYXRlcy9tZW1vcnl1c2FnZS5odG1sIGIvd2ViY29uc29sZS1wbHVnaW5zL21lbW9yeXVzYWdlL3NyYy9tYWluL3Jlc291cmNlcy90ZW1wbGF0ZXMvbWVtb3J5dXNhZ2UuaHRtbAppbmRleCAwY2E1MzdlLi44YThjMmZkIDEwMDY0NAotLS0gYS93ZWJjb25zb2xlLXBsdWdpbnMvbWVtb3J5dXNhZ2Uvc3JjL21haW4vcmVzb3VyY2VzL3RlbXBsYXRlcy9tZW1vcnl1c2FnZS5odG1sCisrKyBiL3dlYmNvbnNvbGUtcGx1Z2lucy9tZW1vcnl1c2FnZS9zcmMvbWFpbi9yZXNvdXJjZXMvdGVtcGxhdGVzL21lbW9yeXVzYWdlLmh0bWwKQEAgLTE3Miw2ICsxNzIsMTYgQEAKICAgICAgICAgICAgICAgICA8L2Zvcm0+CiAgICAgICAgICAgICA8L3RkPgogICAgICAgICA8L3RyPgorICAgICAgICA8dHI+CisgICAgICAgICAgICA8dGQ+JHtkdW1wLmludGVydmFsfTwvdGQ+CisgICAgICAgICAgICA8dGQ+CisgICAgICAgICAgICAgICAgPGZvcm0gbWV0aG9kPSJwb3N0IiBhY3Rpb249IiI+CisgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImNvbW1hbmQiIHZhbHVlPSJpbnRlcnZhbCIgLz4KKyAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9ImludGVydmFsIiB2YWx1ZT0iJHtfX2ludGVydmFsX199IiAvPgorICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0ic3VibWl0IiBuYW1lPSJzdWJtaXQiIHZhbHVlPSIke2R1bXAuaW50ZXJ2YWwuc2V0fSIgLz4KKyAgICAgICAgICAgICAgICA8L2Zvcm0+CisgICAgICAgICAgICA8L3RkPgorICAgICAgICA8L3RyPgogICAgIDwvdGJvZHk+CiA8L3RhYmxlPgogCg==