ZGlmZiAtLWdpdCBhL3BsdWdpbnMvYXNzZXJ0aW9ucy9sYW5ndWFnZXMvb3JnLmVjbGlwc2UucGFweXJ1cy5yb2JvdGljcy5hc3NlcnRpb25zLmxhbmd1YWdlcy5vdGhlbGxvL3NyYy9vcmcvZWNsaXBzZS9wYXB5cnVzL3JvYm90aWNzL2Fzc2VydGlvbnMvbGFuZ3VhZ2VzL290aGVsbG8vT3RoZWxsb0xhbmd1YWdlLmphdmEgYi9wbHVnaW5zL2Fzc2VydGlvbnMvbGFuZ3VhZ2VzL29yZy5lY2xpcHNlLnBhcHlydXMucm9ib3RpY3MuYXNzZXJ0aW9ucy5sYW5ndWFnZXMub3RoZWxsby9zcmMvb3JnL2VjbGlwc2UvcGFweXJ1cy9yb2JvdGljcy9hc3NlcnRpb25zL2xhbmd1YWdlcy9vdGhlbGxvL090aGVsbG9MYW5ndWFnZS5qYXZhCmluZGV4IDJjMGI0YmEuLjAwZjJkNjEgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvYXNzZXJ0aW9ucy9sYW5ndWFnZXMvb3JnLmVjbGlwc2UucGFweXJ1cy5yb2JvdGljcy5hc3NlcnRpb25zLmxhbmd1YWdlcy5vdGhlbGxvL3NyYy9vcmcvZWNsaXBzZS9wYXB5cnVzL3JvYm90aWNzL2Fzc2VydGlvbnMvbGFuZ3VhZ2VzL290aGVsbG8vT3RoZWxsb0xhbmd1YWdlLmphdmEKKysrIGIvcGx1Z2lucy9hc3NlcnRpb25zL2xhbmd1YWdlcy9vcmcuZWNsaXBzZS5wYXB5cnVzLnJvYm90aWNzLmFzc2VydGlvbnMubGFuZ3VhZ2VzLm90aGVsbG8vc3JjL29yZy9lY2xpcHNlL3BhcHlydXMvcm9ib3RpY3MvYXNzZXJ0aW9ucy9sYW5ndWFnZXMvb3RoZWxsby9PdGhlbGxvTGFuZ3VhZ2UuamF2YQpAQCAtMzIsNiArMzIsNyBAQAogaW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMucm9ib3RpY3MuYnBjLnByb2ZpbGUuYnBjLlBvcnQ7CiBpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5yb2JvdGljcy5wcm9maWxlLnJvYm90aWNzLmNvbXBvbmVudHMuQ29tcG9uZW50RGVmaW5pdGlvbjsKIGltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnJvYm90aWNzLnByb2ZpbGUucm9ib3RpY3MuY29tcG9uZW50cy5Db21wb25lbnRJbnN0YW5jZTsKK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnJvYm90aWNzLnByb2ZpbGUucm9ib3RpY3MuY29tcG9uZW50cy5Db21wb25lbnRPclN5c3RlbTsKIGltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnJvYm90aWNzLnByb2ZpbGUucm9ib3RpY3MuY29tcG9uZW50cy5Db21wb25lbnRQb3J0OwogaW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMucm9ib3RpY3MucHJvZmlsZS5yb2JvdGljcy5jb21wb25lbnRzLlN5c3RlbTsKIGltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnJvYm90aWNzLnByb2ZpbGUucm9ib3RpY3Muc2VydmljZXMuU2VydmljZURlZmluaXRpb247CkBAIC0xMjYsNyArMTI3LDcgQEAKIAkJLy8gYWRkIGFsbCByZWZpbmVtZW50cwogCQlvc3MuYXBwZW5kKCJSRUZJTkVNRU5UXG4iKTsKIAkJZm9yIChDb21wb25lbnRJbnN0YW5jZSBjb21wSW5zdGFuY2UgOiBzeXN0ZW0uZ2V0SW5zdGFuY2VzKCkpIHsKLQkJCUNvbXBvbmVudERlZmluaXRpb24gY29tcERlZiA9IGNvbXBJbnN0YW5jZS5nZXRDb21wZGVmKCk7CisJCQlDb21wb25lbnRPclN5c3RlbSBjb21wRGVmID0gY29tcEluc3RhbmNlLmdldENvbXBkZWZPclN5cygpOwogCQkJb3NzLmFwcGVuZCgiU1VCICIpOwogCQkJb3NzLmFwcGVuZChjb21wSW5zdGFuY2UuZ2V0QmFzZV9Qcm9wZXJ0eSgpLmdldE5hbWUoKSk7CiAJCQlvc3MuYXBwZW5kKCI6Iik7IC8vJE5PTi1OTFMtMSQKQEAgLTE0NCw3ICsxNDUsNyBAQAogCQkJCVByb3BlcnR5IHByb3AgPSBjb25uZWN0b3JFbmQuZ2V0UGFydFdpdGhQb3J0KCk7CiAJCQkJU3RyaW5nIHBvcnROYW1lID0gcHJvcC5nZXROYW1lKCkgKyBTdHJpbmdDb25zdGFudHMuRE9UICsgY2UuZ2V0TmFtZSgpOwogCQkJCUNvbXBvbmVudEluc3RhbmNlIGNvbXBJbnN0YW5jZSA9IFVNTFV0aWwuZ2V0U3RlcmVvdHlwZUFwcGxpY2F0aW9uKHByb3AsIENvbXBvbmVudEluc3RhbmNlLmNsYXNzKTsKLQkJCQlDb21wb25lbnREZWZpbml0aW9uIGNvbXBEZWYgPSBjb21wSW5zdGFuY2UuZ2V0Q29tcGRlZigpOworCQkJCUNvbXBvbmVudE9yU3lzdGVtIGNvbXBEZWYgPSBjb21wSW5zdGFuY2UuZ2V0Q29tcGRlZk9yU3lzKCk7CiAJCQkJZm9yIChQb3J0IHBvcnQgOiBjb21wRGVmLmdldFBvcnQoKSkgewogCQkJCQlpZiAoKChDb21wb25lbnRQb3J0KSBwb3J0KS5nZXRCYXNlX1BvcnQoKS5lcXVhbHMoY2UpKSB7CiAJCQkJCQlpZiAoaXNJbnB1dFBvcnQocG9ydCkpIHsKQEAgLTE3MCw3ICsxNzEsNyBAQAogCQkvLyBhZGQgY29tcG9uZW50cwogCQlMaXN0PFN0cmluZz4gYWxyZWFkeUFkZGVkID0gbmV3IEFycmF5TGlzdDxTdHJpbmc+KCk7CiAJCWZvciAoQ29tcG9uZW50SW5zdGFuY2UgY29tcEluc3RhbmNlIDogc3lzdGVtLmdldEluc3RhbmNlcygpKSB7Ci0JCQlDb21wb25lbnREZWZpbml0aW9uIGNvbXBEZWYgPSBjb21wSW5zdGFuY2UuZ2V0Q29tcGRlZigpOworCQkJQ29tcG9uZW50T3JTeXN0ZW0gY29tcERlZiA9IGNvbXBJbnN0YW5jZS5nZXRDb21wZGVmT3JTeXMoKTsKIAkJCVN0cmluZyBjb21wRGVmTmFtZSA9IGNvbXBEZWYuZ2V0QmFzZV9DbGFzcygpLmdldE5hbWUoKTsKIAkJCWlmICghYWxyZWFkeUFkZGVkLmNvbnRhaW5zKGNvbXBEZWZOYW1lKSkgewogCQkJCW9zcy5hcHBlbmQoIlxuIik7CkBAIC0yMDQsNyArMjA1LDcgQEAKIAkgKi8KIAlwdWJsaWMgU3RyaW5nQnVmZmVyIG9zc0Zyb21Db21wSW5zdGFuY2VDb250cmFjdChDb21wb25lbnRJbnN0YW5jZSBjb21wSW5zdGFuY2UpIHsKIAkJU3RyaW5nQnVmZmVyIG9zcyA9IG5ldyBTdHJpbmdCdWZmZXIoKTsKLQkJTGlzdDxDb250cmFjdD4gY29udHJhY3RzID0gQXNzZXJ0aW9uc0hlbHBlci5nZXRDb21wRGVmaW5pdGlvbkNvbnRyYWN0cyhjb21wSW5zdGFuY2UuZ2V0Q29tcGRlZigpKTsKKwkJTGlzdDxDb250cmFjdD4gY29udHJhY3RzID0gQXNzZXJ0aW9uc0hlbHBlci5nZXRDb21wRGVmaW5pdGlvbkNvbnRyYWN0cyhjb21wSW5zdGFuY2UuZ2V0Q29tcGRlZk9yU3lzKCkpOwogCQlmb3IgKENvbnRyYWN0IGNvbnRyYWN0IDogY29udHJhY3RzKSB7CiAJCQlvc3MuYXBwZW5kKG9zc0Zyb21Db250cmFjdChjb21wSW5zdGFuY2UsIGNvbnRyYWN0KSk7CiAJCX0KQEAgLTI1OSw3ICsyNjAsNyBAQAogCSAqIEBwYXJhbSBjb21wRGVmCiAJICogQHJldHVybiBvc3MKIAkgKi8KLQlwdWJsaWMgU3RyaW5nQnVmZmVyIG9zc0Zyb21Db21wRGVmaW5pdGlvbihDb21wb25lbnREZWZpbml0aW9uIGNvbXBEZWYsIGJvb2xlYW4gY29uc2lkZXJBc1N5c3RlbSkgeworCXB1YmxpYyBTdHJpbmdCdWZmZXIgb3NzRnJvbUNvbXBEZWZpbml0aW9uKENvbXBvbmVudE9yU3lzdGVtIGNvbXBEZWYsIGJvb2xlYW4gY29uc2lkZXJBc1N5c3RlbSkgewogCQlTdHJpbmdCdWZmZXIgb3NzID0gbmV3IFN0cmluZ0J1ZmZlcigpOwogCQlvc3MuYXBwZW5kKCJDT01QT05FTlQgIiArIGNvbXBEZWYuZ2V0QmFzZV9DbGFzcygpLmdldE5hbWUoKSk7CiAJCWlmIChjb25zaWRlckFzU3lzdGVtKSB7CkBAIC0zNzYsNyArMzc3LDcgQEAKIAkJCQlTdHJpbmcgY29udHJhY3QgPSAiQ09OVFJBQ1QgcGFzc1xuYXNzdW1lOiB0cnVlO1xuZ3VhcmFudGVlOiAiICsgZXhwcmVzc2lvbiArICI7XG4iOwogCQkJCW9zcy5pbnNlcnQoc3lzdGVtUmVmLCBjb250cmFjdCk7CiAJCQl9IGVsc2UgaWYgKGNvbXBJbnN0YW5jZSAhPSBudWxsKSB7Ci0JCQkJQ29tcG9uZW50RGVmaW5pdGlvbiBjb21wRGVmID0gY29tcEluc3RhbmNlLmdldENvbXBkZWYoKTsKKwkJCQlDb21wb25lbnRPclN5c3RlbSBjb21wRGVmID0gY29tcEluc3RhbmNlLmdldENvbXBkZWZPclN5cygpOwogCQkJCW9zcyA9IG9zc0Zyb21Db21wRGVmaW5pdGlvbihjb21wRGVmLCB0cnVlKTsKIAkJCQlvc3MuYXBwZW5kKCJDT05UUkFDVCBwYXNzXG4iKTsKIAkJCQlvc3MuYXBwZW5kKCJhc3N1bWU6IHRydWU7XG4iKTsKQEAgLTM5Niw3ICszOTcsNyBAQAogCQkJfQogCQkJLy8gRXZhbHVhdGluZyBhIGNvbXBvbmVudCBpbnN0YW5jZQogCQkJZWxzZSBpZiAoY29tcEluc3RhbmNlICE9IG51bGwpIHsKLQkJCQlDb21wb25lbnREZWZpbml0aW9uIGNvbXBEZWYgPSBjb21wSW5zdGFuY2UuZ2V0Q29tcGRlZigpOworCQkJCUNvbXBvbmVudE9yU3lzdGVtIGNvbXBEZWYgPSBjb21wSW5zdGFuY2UuZ2V0Q29tcGRlZk9yU3lzKCk7CiAJCQkJb3NzID0gb3NzRnJvbUNvbXBEZWZpbml0aW9uKGNvbXBEZWYsIHRydWUpOwogCQkJCUxpc3Q8Q29udHJhY3Q+IGNvbnRyYWN0cyA9IEFzc2VydGlvbnNIZWxwZXIuZ2V0Q29tcERlZmluaXRpb25Db250cmFjdHMoY29tcERlZik7CiAJCQkJZm9yIChDb250cmFjdCBjb250cmFjdCA6IGNvbnRyYWN0cykgewpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9hc3NlcnRpb25zL2xhbmd1YWdlcy9vcmcuZWNsaXBzZS5wYXB5cnVzLnJvYm90aWNzLmFzc2VydGlvbnMubGFuZ3VhZ2VzLnA0cm9jbC9zcmMvb3JnL2VjbGlwc2UvcGFweXJ1cy9yb2JvdGljcy9hc3NlcnRpb25zL2xhbmd1YWdlcy9wNHJvY2wvUDRST0NMTGFuZ3VhZ2UuamF2YSBiL3BsdWdpbnMvYXNzZXJ0aW9ucy9sYW5ndWFnZXMvb3JnLmVjbGlwc2UucGFweXJ1cy5yb2JvdGljcy5hc3NlcnRpb25zLmxhbmd1YWdlcy5wNHJvY2wvc3JjL29yZy9lY2xpcHNlL3BhcHlydXMvcm9ib3RpY3MvYXNzZXJ0aW9ucy9sYW5ndWFnZXMvcDRyb2NsL1A0Uk9DTExhbmd1YWdlLmphdmEKaW5kZXggODMxY2JlZC4uZWFiMzNmNSAxMDA2NDQKLS0tIGEvcGx1Z2lucy9hc3NlcnRpb25zL2xhbmd1YWdlcy9vcmcuZWNsaXBzZS5wYXB5cnVzLnJvYm90aWNzLmFzc2VydGlvbnMubGFuZ3VhZ2VzLnA0cm9jbC9zcmMvb3JnL2VjbGlwc2UvcGFweXJ1cy9yb2JvdGljcy9hc3NlcnRpb25zL2xhbmd1YWdlcy9wNHJvY2wvUDRST0NMTGFuZ3VhZ2UuamF2YQorKysgYi9wbHVnaW5zL2Fzc2VydGlvbnMvbGFuZ3VhZ2VzL29yZy5lY2xpcHNlLnBhcHlydXMucm9ib3RpY3MuYXNzZXJ0aW9ucy5sYW5ndWFnZXMucDRyb2NsL3NyYy9vcmcvZWNsaXBzZS9wYXB5cnVzL3JvYm90aWNzL2Fzc2VydGlvbnMvbGFuZ3VhZ2VzL3A0cm9jbC9QNFJPQ0xMYW5ndWFnZS5qYXZhCkBAIC0yNiw2ICsyNiw3IEBACiBpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5yb2JvdGljcy5hc3NlcnRpb25zLmxhbmd1YWdlcy5vY2wuT0NMRXhwcmVzc2lvbkxhbmd1YWdlOwogaW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMucm9ib3RpY3MucHJvZmlsZS5yb2JvdGljcy5jb21wb25lbnRzLkNvbXBvbmVudERlZmluaXRpb247CiBpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5yb2JvdGljcy5wcm9maWxlLnJvYm90aWNzLmNvbXBvbmVudHMuQ29tcG9uZW50SW5zdGFuY2U7CitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5yb2JvdGljcy5wcm9maWxlLnJvYm90aWNzLmNvbXBvbmVudHMuQ29tcG9uZW50T3JTeXN0ZW07CiBpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5yb2JvdGljcy5wcm9maWxlLnJvYm90aWNzLnBhcmFtZXRlcnMuUGFyYW1ldGVyRW50cnk7CiBpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5yb2JvdGljcy5wcm9maWxlLnJvYm90aWNzLnBhcmFtZXRlcnMuUGFyYW1ldGVySW5zdGFuY2U7CiBpbXBvcnQgb3JnLmVjbGlwc2UudW1sMi51bWwuRWxlbWVudDsKQEAgLTEzMiw3ICsxMzMsNyBAQAogCQkJZm9yIChDb21wb25lbnRJbnN0YW5jZSBpbnN0YW5jZSA6IGluc3RhbmNlcykgewogCQkJCS8vIGNoZWNrIGluIHByb3BlcnRpZXMKIAkJCQlNYXA8U3RyaW5nLCBWYWx1ZVNwZWNpZmljYXRpb24+IGluc3RhbmNlUHJvcGVydGllcyA9IEFzc2VydGlvbnNIZWxwZXIuZ2V0UHJvcGVydGllcygKLQkJCQkJCWluc3RhbmNlLmdldENvbXBkZWYoKS5nZXRCYXNlX0NsYXNzKCkpOworCQkJCQkJaW5zdGFuY2UuZ2V0Q29tcGRlZk9yU3lzKCkuZ2V0QmFzZV9DbGFzcygpKTsKIAkJCQlpZiAoaW5zdGFuY2VQcm9wZXJ0aWVzLmNvbnRhaW5zS2V5KHByb3BlcnR5SW5FeHByZXNzaW9uKSkgewogCQkJCQlnbG9iYWxTdW0uYXBwZW5kKGluc3RhbmNlLmdldEJhc2VfUHJvcGVydHkoKS5nZXROYW1lKCkpOwogCQkJCQlnbG9iYWxTdW0uYXBwZW5kKCIuIik7CkBAIC0xNTIsOSArMTUzLDEwIEBACiAJICogR2V0IGNvbXBvbmVudCBkZWZpbml0aW9uIGRlZmF1bHQgcGFyYW1ldGVycwogCSAqIAogCSAqIEBwYXJhbSBjb21wRGVmCisJICogICAgICAgICAgICBhIGNvbXBvbmVudCBkZWZpbml0aW9uIChvciBzeXN0ZW0pCiAJICogQHJldHVybiBkZWZhdWx0IHBhcmFtZXRlcnMKIAkgKi8KLQlwdWJsaWMgTWFwPFN0cmluZywgU3RyaW5nPiBnZXRDb21wRGVmaW5pdGlvbkRlZmF1bHRQYXJhbWV0ZXJzKENvbXBvbmVudERlZmluaXRpb24gY29tcERlZikgeworCXB1YmxpYyBNYXA8U3RyaW5nLCBTdHJpbmc+IGdldENvbXBEZWZpbml0aW9uRGVmYXVsdFBhcmFtZXRlcnMoQ29tcG9uZW50T3JTeXN0ZW0gY29tcERlZikgewogCQlNYXA8U3RyaW5nLCBTdHJpbmc+IGRlZmF1bHRQYXJhbWV0ZXJzID0gbmV3IEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+KCk7CiAJCUl0ZXJhdG9yPEVPYmplY3Q+IGkgPSBjb21wRGVmLmdldEJhc2VfQ2xhc3MoKS5lQWxsQ29udGVudHMoKTsKIAkJd2hpbGUgKGkuaGFzTmV4dCgpKSB7CkBAIC0xODQsNyArMTg2LDcgQEAKIAkgKi8KIAlwdWJsaWMgTWFwPFN0cmluZywgU3RyaW5nPiBnZXRDb21wSW5zdGFuY2VQYXJhbWV0ZXJzKENvbXBvbmVudEluc3RhbmNlIGNvbXBJbnN0YW5jZSkgewogCQkvLyBmaXJzdCBnZXQgdGhlIGRlZmF1bHQgb25lcwotCQlNYXA8U3RyaW5nLCBTdHJpbmc+IHBhcmFtZXRlcnMgPSBnZXRDb21wRGVmaW5pdGlvbkRlZmF1bHRQYXJhbWV0ZXJzKGNvbXBJbnN0YW5jZS5nZXRDb21wZGVmKCkpOworCQlNYXA8U3RyaW5nLCBTdHJpbmc+IHBhcmFtZXRlcnMgPSBnZXRDb21wRGVmaW5pdGlvbkRlZmF1bHRQYXJhbWV0ZXJzKGNvbXBJbnN0YW5jZS5nZXRDb21wZGVmT3JTeXMoKSk7CiAKIAkJLy8gQ29tcCBJbnN0YW5jZSdzIHBhcmFtZXRlciB2YWx1ZXMgd2lsbCBvdmVycmlkZSBDb21wIGRlZmluaXRpb24gZGVmYXVsdCB2YWx1ZXMKIAkJSXRlcmF0b3I8RU9iamVjdD4gaSA9IGNvbXBJbnN0YW5jZS5nZXRCYXNlX1Byb3BlcnR5KCkuZUFsbENvbnRlbnRzKCk7CmRpZmYgLS1naXQgYS9wbHVnaW5zL2Fzc2VydGlvbnMvb3JnLmVjbGlwc2UucGFweXJ1cy5yb2JvdGljcy5hc3NlcnRpb25zLmxhbmd1YWdlcy9NRVRBLUlORi9NQU5JRkVTVC5NRiBiL3BsdWdpbnMvYXNzZXJ0aW9ucy9vcmcuZWNsaXBzZS5wYXB5cnVzLnJvYm90aWNzLmFzc2VydGlvbnMubGFuZ3VhZ2VzL01FVEEtSU5GL01BTklGRVNULk1GCmluZGV4IDc3MmEwZDUuLjBiN2Y0YjAgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvYXNzZXJ0aW9ucy9vcmcuZWNsaXBzZS5wYXB5cnVzLnJvYm90aWNzLmFzc2VydGlvbnMubGFuZ3VhZ2VzL01FVEEtSU5GL01BTklGRVNULk1GCisrKyBiL3BsdWdpbnMvYXNzZXJ0aW9ucy9vcmcuZWNsaXBzZS5wYXB5cnVzLnJvYm90aWNzLmFzc2VydGlvbnMubGFuZ3VhZ2VzL01FVEEtSU5GL01BTklGRVNULk1GCkBAIC0xNCw3ICsxNCw4IEBACiAgb3JnLmVjbGlwc2UuY29yZS5kYXRhYmluZGluZztidW5kbGUtdmVyc2lvbj0iMS4wLjAiLAogIG9yZy5lY2xpcHNlLnBhcHlydXMuaW5mcmEud2lkZ2V0cztidW5kbGUtdmVyc2lvbj0iWzMuNi4wLDUuMC4wKSIsCiAgb3JnLmVjbGlwc2UucGFweXJ1cy5pbmZyYS5wcm9wZXJ0aWVzLnVpO2J1bmRsZS12ZXJzaW9uPSJbMy4wLjAsNS4wLjApIiwKLSBvcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5wcm9wZXJ0aWVzO2J1bmRsZS12ZXJzaW9uPSJbMy41LjAsNS4wLjApIgorIG9yZy5lY2xpcHNlLnBhcHlydXMudW1sLnByb3BlcnRpZXM7YnVuZGxlLXZlcnNpb249IlszLjUuMCw1LjAuMCkiLAorIG9yZy5lY2xpcHNlLnBhcHlydXMucm9ib3RpY3MuY29yZTtidW5kbGUtdmVyc2lvbj0iMC44LjAiCiBCdW5kbGUtUmVxdWlyZWRFeGVjdXRpb25FbnZpcm9ubWVudDogSmF2YVNFLTExCiBBdXRvbWF0aWMtTW9kdWxlLU5hbWU6IG9yZy5lY2xpcHNlLnBhcHlydXMucm9ib3RpY3MuYXNzZXJ0aW9ucy5sYW5ndWFnZXMKIEJ1bmRsZS1BY3RpdmF0aW9uUG9saWN5OiBsYXp5CmRpZmYgLS1naXQgYS9wbHVnaW5zL2Fzc2VydGlvbnMvb3JnLmVjbGlwc2UucGFweXJ1cy5yb2JvdGljcy5hc3NlcnRpb25zLmxhbmd1YWdlcy9zcmMvb3JnL2VjbGlwc2UvcGFweXJ1cy9yb2JvdGljcy9hc3NlcnRpb25zL2xhbmd1YWdlcy9Bc3NlcnRpb25zSGVscGVyLmphdmEgYi9wbHVnaW5zL2Fzc2VydGlvbnMvb3JnLmVjbGlwc2UucGFweXJ1cy5yb2JvdGljcy5hc3NlcnRpb25zLmxhbmd1YWdlcy9zcmMvb3JnL2VjbGlwc2UvcGFweXJ1cy9yb2JvdGljcy9hc3NlcnRpb25zL2xhbmd1YWdlcy9Bc3NlcnRpb25zSGVscGVyLmphdmEKaW5kZXggNjdjNTAxNy4uMDNkZDkxMyAxMDA2NDQKLS0tIGEvcGx1Z2lucy9hc3NlcnRpb25zL29yZy5lY2xpcHNlLnBhcHlydXMucm9ib3RpY3MuYXNzZXJ0aW9ucy5sYW5ndWFnZXMvc3JjL29yZy9lY2xpcHNlL3BhcHlydXMvcm9ib3RpY3MvYXNzZXJ0aW9ucy9sYW5ndWFnZXMvQXNzZXJ0aW9uc0hlbHBlci5qYXZhCisrKyBiL3BsdWdpbnMvYXNzZXJ0aW9ucy9vcmcuZWNsaXBzZS5wYXB5cnVzLnJvYm90aWNzLmFzc2VydGlvbnMubGFuZ3VhZ2VzL3NyYy9vcmcvZWNsaXBzZS9wYXB5cnVzL3JvYm90aWNzL2Fzc2VydGlvbnMvbGFuZ3VhZ2VzL0Fzc2VydGlvbnNIZWxwZXIuamF2YQpAQCAtMjMsOCArMjMsOCBAQAogaW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMucm9ib3RpY3MuYXNzZXJ0aW9ucy5wcm9maWxlLmFzc2VydGlvbnMuQXNzZXJ0aW9uOwogaW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMucm9ib3RpY3MuYXNzZXJ0aW9ucy5wcm9maWxlLmFzc2VydGlvbnMuQ29udHJhY3Q7CiBpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5yb2JvdGljcy5hc3NlcnRpb25zLnByb2ZpbGUuYXNzZXJ0aW9ucy5Qcm9wZXJ0eTsKLWltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnJvYm90aWNzLnByb2ZpbGUucm9ib3RpY3MuY29tcG9uZW50cy5Db21wb25lbnREZWZpbml0aW9uOwogaW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMucm9ib3RpY3MucHJvZmlsZS5yb2JvdGljcy5jb21wb25lbnRzLkNvbXBvbmVudEluc3RhbmNlOworaW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMucm9ib3RpY3MucHJvZmlsZS5yb2JvdGljcy5jb21wb25lbnRzLkNvbXBvbmVudE9yU3lzdGVtOwogaW1wb3J0IG9yZy5lY2xpcHNlLnVtbDIudW1sLkNvbnN0cmFpbnQ7CiBpbXBvcnQgb3JnLmVjbGlwc2UudW1sMi51bWwuRWxlbWVudDsKIGltcG9ydCBvcmcuZWNsaXBzZS51bWwyLnVtbC5PcGFxdWVFeHByZXNzaW9uOwpAQCAtOTksNyArOTksNyBAQAogCSAqIEBwYXJhbSBjb21wRGVmaW5pdGlvbgogCSAqIEByZXR1cm4gbGlzdCBvZiBjb250cmFjdHMKIAkgKi8KLQlwdWJsaWMgc3RhdGljIExpc3Q8Q29udHJhY3Q+IGdldENvbXBEZWZpbml0aW9uQ29udHJhY3RzKENvbXBvbmVudERlZmluaXRpb24gY29tcERlZmluaXRpb24pIHsKKwlwdWJsaWMgc3RhdGljIExpc3Q8Q29udHJhY3Q+IGdldENvbXBEZWZpbml0aW9uQ29udHJhY3RzKENvbXBvbmVudE9yU3lzdGVtIGNvbXBEZWZpbml0aW9uKSB7CiAJCUxpc3Q8Q29udHJhY3Q+IGNvbnRyYWN0cyA9IG5ldyBBcnJheUxpc3Q8Q29udHJhY3Q+KCk7CiAJCUl0ZXJhdG9yPEVPYmplY3Q+IGl0ID0gY29tcERlZmluaXRpb24uZ2V0QmFzZV9DbGFzcygpLmVBbGxDb250ZW50cygpOwogCQl3aGlsZSAoaXQuaGFzTmV4dCgpKSB7CmRpZmYgLS1naXQgYS9wbHVnaW5zL2Fzc2VydGlvbnMvb3JnLmVjbGlwc2UucGFweXJ1cy5yb2JvdGljcy5hc3NlcnRpb25zLmxhbmd1YWdlcy9zcmMvb3JnL2VjbGlwc2UvcGFweXJ1cy9yb2JvdGljcy9hc3NlcnRpb25zL2xhbmd1YWdlcy9QNFJFeHByZXNzaW9uc0hlbHBlci5qYXZhIGIvcGx1Z2lucy9hc3NlcnRpb25zL29yZy5lY2xpcHNlLnBhcHlydXMucm9ib3RpY3MuYXNzZXJ0aW9ucy5sYW5ndWFnZXMvc3JjL29yZy9lY2xpcHNlL3BhcHlydXMvcm9ib3RpY3MvYXNzZXJ0aW9ucy9sYW5ndWFnZXMvUDRSRXhwcmVzc2lvbnNIZWxwZXIuamF2YQppbmRleCA1YWEzYzM5Li42MGViOWFjIDEwMDY0NAotLS0gYS9wbHVnaW5zL2Fzc2VydGlvbnMvb3JnLmVjbGlwc2UucGFweXJ1cy5yb2JvdGljcy5hc3NlcnRpb25zLmxhbmd1YWdlcy9zcmMvb3JnL2VjbGlwc2UvcGFweXJ1cy9yb2JvdGljcy9hc3NlcnRpb25zL2xhbmd1YWdlcy9QNFJFeHByZXNzaW9uc0hlbHBlci5qYXZhCisrKyBiL3BsdWdpbnMvYXNzZXJ0aW9ucy9vcmcuZWNsaXBzZS5wYXB5cnVzLnJvYm90aWNzLmFzc2VydGlvbnMubGFuZ3VhZ2VzL3NyYy9vcmcvZWNsaXBzZS9wYXB5cnVzL3JvYm90aWNzL2Fzc2VydGlvbnMvbGFuZ3VhZ2VzL1A0UkV4cHJlc3Npb25zSGVscGVyLmphdmEKQEAgLTIxLDkgKzIxLDEwIEBACiAKIGltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRU9iamVjdDsKIGltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnJvYm90aWNzLmFzc2VydGlvbnMucHJvZmlsZS5hc3NlcnRpb25zLlByb3BlcnR5OworaW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMucm9ib3RpY3MuY29yZS51dGlscy5QYXJhbWV0ZXJVdGlsczsKIGltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnJvYm90aWNzLnByb2ZpbGUucm9ib3RpY3MuY29tcG9uZW50cy5Db21wb25lbnREZWZpbml0aW9uOwogaW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMucm9ib3RpY3MucHJvZmlsZS5yb2JvdGljcy5jb21wb25lbnRzLkNvbXBvbmVudEluc3RhbmNlOwotaW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMucm9ib3RpY3MucHJvZmlsZS5yb2JvdGljcy5wYXJhbWV0ZXJzLlBhcmFtZXRlckVudHJ5OworaW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMucm9ib3RpY3MucHJvZmlsZS5yb2JvdGljcy5jb21wb25lbnRzLkNvbXBvbmVudE9yU3lzdGVtOwogaW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMucm9ib3RpY3MucHJvZmlsZS5yb2JvdGljcy5wYXJhbWV0ZXJzLlBhcmFtZXRlckluc3RhbmNlOwogaW1wb3J0IG9yZy5lY2xpcHNlLnVtbDIudW1sLkVsZW1lbnQ7CiBpbXBvcnQgb3JnLmVjbGlwc2UudW1sMi51bWwuSW5zdGFuY2VWYWx1ZTsKQEAgLTMyLDExICszMywxMSBAQAogaW1wb3J0IG9yZy5lY2xpcHNlLnVtbDIudW1sLnV0aWwuVU1MVXRpbDsKIAogcHVibGljIGNsYXNzIFA0UkV4cHJlc3Npb25zSGVscGVyIHsKLQkKKwogCXB1YmxpYyBzdGF0aWMgU3RyaW5nIHVwZGF0ZUV4cHJlc3Npb24oRU9iamVjdCBjb250ZXh0LCBTdHJpbmcgZXhwcmVzc2lvbikgewotCQkKKwogCQkvLyBHZXQgY29udGV4dAotCQkKKwogCQlDb21wb25lbnREZWZpbml0aW9uIGNvbXBEZWZpbml0aW9uID0gbnVsbDsKIAkJQ29tcG9uZW50SW5zdGFuY2UgY29tcEluc3RhbmNlID0gbnVsbDsKIAkJb3JnLmVjbGlwc2UucGFweXJ1cy5yb2JvdGljcy5wcm9maWxlLnJvYm90aWNzLmNvbXBvbmVudHMuU3lzdGVtIHN5c3RlbSA9IG51bGw7CkBAIC02OSw5ICs3MCw5IEBACiAJCQkJCQlvcmcuZWNsaXBzZS5wYXB5cnVzLnJvYm90aWNzLnByb2ZpbGUucm9ib3RpY3MuY29tcG9uZW50cy5TeXN0ZW0uY2xhc3MpOwogCQkJfQogCQl9Ci0JCQorCiAJCS8vIC0tPiBHbG9iYWwgc3VtCi0JCQorCiAJCWlmIChzeXN0ZW0gIT0gbnVsbCkgewogCQkJZXhwcmVzc2lvbiA9IGhhbmRsZUdsb2JhbFN1bShzeXN0ZW0sIGV4cHJlc3Npb24pOwogCQl9CkBAIC0xMTUsNyArMTE2LDcgQEAKIAkJCWlmIChjb21wRGVmaW5pdGlvbiAhPSBudWxsKSB7CiAJCQkJY29tcERlZiA9IGNvbXBEZWZpbml0aW9uLmdldEJhc2VfQ2xhc3MoKTsKIAkJCX0gZWxzZSBpZiAoY29tcEluc3RhbmNlICE9IG51bGwpIHsKLQkJCQljb21wRGVmID0gY29tcEluc3RhbmNlLmdldENvbXBkZWYoKS5nZXRCYXNlX0NsYXNzKCk7CisJCQkJY29tcERlZiA9IGNvbXBJbnN0YW5jZS5nZXRDb21wZGVmT3JTeXMoKS5nZXRCYXNlX0NsYXNzKCk7CiAJCQl9CiAJCQlNYXA8U3RyaW5nLCBWYWx1ZVNwZWNpZmljYXRpb24+IHByb3BlcnRpZXMgPSBnZXRQcm9wZXJ0aWVzKGNvbXBEZWYpOwogCQkJZm9yIChTdHJpbmcgcHJvcCA6IHByb3BlcnRpZXMua2V5U2V0KCkpIHsKQEAgLTEzNywxMCArMTM4LDEwIEBACiAJCQkJCWluc3RhbmNlTmFtZSA9IGluc3RhbmNlTmFtZSArICIuIjsKIAkJCQl9CiAJCQkJTWFwPFN0cmluZywgVmFsdWVTcGVjaWZpY2F0aW9uPiBpbnN0YW5jZVByb3BlcnRpZXMgPSBnZXRQcm9wZXJ0aWVzKAotCQkJCQkJaW5zdGFuY2UuZ2V0Q29tcGRlZigpLmdldEJhc2VfQ2xhc3MoKSk7CisJCQkJCQlpbnN0YW5jZS5nZXRDb21wZGVmT3JTeXMoKS5nZXRCYXNlX0NsYXNzKCkpOwogCQkJCWZvciAoU3RyaW5nIGtleSA6IGluc3RhbmNlUHJvcGVydGllcy5rZXlTZXQoKSkgewogCQkJCQlpZiAoZXhwcmVzc2lvbi5jb250YWlucyhpbnN0YW5jZU5hbWUgKyBrZXkpKSB7Ci0JCQkJCQlPYmplY3QgcmVzdWx0ID0gQXNzZXJ0aW9uc0hlbHBlci5ldmFsdWF0ZVZhbHVlU3BlY2lmaWNhdGlvbihpbnN0YW5jZS5nZXRDb21wZGVmKCksCisJCQkJCQlPYmplY3QgcmVzdWx0ID0gQXNzZXJ0aW9uc0hlbHBlci5ldmFsdWF0ZVZhbHVlU3BlY2lmaWNhdGlvbihpbnN0YW5jZS5nZXRDb21wZGVmT3JTeXMoKSwKIAkJCQkJCQkJaW5zdGFuY2VQcm9wZXJ0aWVzLmdldChrZXkpKTsKIAkJCQkJCWlmIChyZXN1bHQgPT0gbnVsbCkgewogCQkJCQkJCXJlc3VsdCA9ICJudWxsIjsKQEAgLTE2NCw3ICsxNjUsNyBAQAogCQl9CiAJCXJldHVybiBleHByZXNzaW9uOwogCX0KLQkKKwogCS8qKgogCSAqIEhhbmRsZSBnbG9iYWwgc3VtCiAJICogCkBAIC0xOTgsNyArMTk5LDcgQEAKIAkJCWZvciAoQ29tcG9uZW50SW5zdGFuY2UgaW5zdGFuY2UgOiBpbnN0YW5jZXMpIHsKIAkJCQkvLyBjaGVjayBpbiBwcm9wZXJ0aWVzCiAJCQkJTWFwPFN0cmluZywgVmFsdWVTcGVjaWZpY2F0aW9uPiBpbnN0YW5jZVByb3BlcnRpZXMgPSBnZXRQcm9wZXJ0aWVzKAotCQkJCQkJaW5zdGFuY2UuZ2V0Q29tcGRlZigpLmdldEJhc2VfQ2xhc3MoKSk7CisJCQkJCQlpbnN0YW5jZS5nZXRDb21wZGVmT3JTeXMoKS5nZXRCYXNlX0NsYXNzKCkpOwogCQkJCWlmIChpbnN0YW5jZVByb3BlcnRpZXMuY29udGFpbnNLZXkocHJvcGVydHlJbkV4cHJlc3Npb24pKSB7CiAJCQkJCWdsb2JhbFN1bS5hcHBlbmQoaW5zdGFuY2UuZ2V0QmFzZV9Qcm9wZXJ0eSgpLmdldE5hbWUoKSk7CiAJCQkJCWdsb2JhbFN1bS5hcHBlbmQoIi4iKTsKQEAgLTIxMyw3ICsyMTQsNyBAQAogCQl9CiAJCXJldHVybiBleHByZXNzaW9uOwogCX0KLQkKKwogCS8qKgogCSAqIEdldCBQcm9wZXJ0aWVzCiAJICogCkBAIC0yMzQsNyArMjM1LDcgQEAKIAkJfQogCQlyZXR1cm4gcHJvcGVydGllczsKIAl9Ci0JCisKIAkvKioKIAkgKiBHZXQgY29tcG9uZW50IGluc3RhbmNlIHBhcmFtZXRlcnMKIAkgKiAKQEAgLTI0Myw3ICsyNDQsNyBAQAogCSAqLwogCXB1YmxpYyBzdGF0aWMgTWFwPFN0cmluZywgU3RyaW5nPiBnZXRDb21wSW5zdGFuY2VQYXJhbWV0ZXJzKENvbXBvbmVudEluc3RhbmNlIGNvbXBJbnN0YW5jZSkgewogCQkvLyBmaXJzdCBnZXQgdGhlIGRlZmF1bHQgb25lcwotCQlNYXA8U3RyaW5nLCBTdHJpbmc+IHBhcmFtZXRlcnMgPSBnZXRDb21wRGVmaW5pdGlvbkRlZmF1bHRQYXJhbWV0ZXJzKGNvbXBJbnN0YW5jZS5nZXRDb21wZGVmKCkpOworCQlNYXA8U3RyaW5nLCBTdHJpbmc+IHBhcmFtZXRlcnMgPSBnZXRDb21wRGVmaW5pdGlvbkRlZmF1bHRQYXJhbWV0ZXJzKGNvbXBJbnN0YW5jZS5nZXRDb21wZGVmT3JTeXMoKSk7CiAKIAkJLy8gQ29tcCBJbnN0YW5jZSdzIHBhcmFtZXRlciB2YWx1ZXMgd2lsbCBvdmVycmlkZSBDb21wIGRlZmluaXRpb24gZGVmYXVsdCB2YWx1ZXMKIAkJSXRlcmF0b3I8RU9iamVjdD4gaSA9IGNvbXBJbnN0YW5jZS5nZXRCYXNlX1Byb3BlcnR5KCkuZUFsbENvbnRlbnRzKCk7CkBAIC0yNjYsMzMgKzI2NywyOCBAQAogCQl9CiAJCXJldHVybiBwYXJhbWV0ZXJzOwogCX0KLQkKKwogCS8qKgogCSAqIEdldCBjb21wb25lbnQgZGVmaW5pdGlvbiBkZWZhdWx0IHBhcmFtZXRlcnMKIAkgKiAKIAkgKiBAcGFyYW0gY29tcERlZgogCSAqIEByZXR1cm4gZGVmYXVsdCBwYXJhbWV0ZXJzCiAJICovCi0JcHVibGljIHN0YXRpYyBNYXA8U3RyaW5nLCBTdHJpbmc+IGdldENvbXBEZWZpbml0aW9uRGVmYXVsdFBhcmFtZXRlcnMoQ29tcG9uZW50RGVmaW5pdGlvbiBjb21wRGVmKSB7CisJcHVibGljIHN0YXRpYyBNYXA8U3RyaW5nLCBTdHJpbmc+IGdldENvbXBEZWZpbml0aW9uRGVmYXVsdFBhcmFtZXRlcnMoQ29tcG9uZW50T3JTeXN0ZW0gY29tcERlZikgewogCQlNYXA8U3RyaW5nLCBTdHJpbmc+IGRlZmF1bHRQYXJhbWV0ZXJzID0gbmV3IEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+KCk7Ci0JCUl0ZXJhdG9yPEVPYmplY3Q+IGkgPSBjb21wRGVmLmdldEJhc2VfQ2xhc3MoKS5lQWxsQ29udGVudHMoKTsKLQkJd2hpbGUgKGkuaGFzTmV4dCgpKSB7Ci0JCQlFT2JqZWN0IGVvID0gaS5uZXh0KCk7Ci0JCQlQYXJhbWV0ZXJFbnRyeSBwYXJhbWV0ZXIgPSBVTUxVdGlsLmdldFN0ZXJlb3R5cGVBcHBsaWNhdGlvbigoRWxlbWVudCkgZW8sIFBhcmFtZXRlckVudHJ5LmNsYXNzKTsKLQkJCS8vIGNvbnRleHQgd2FzIGEgY29tcG9uZW50RGVmaW5pdGlvbgotCQkJaWYgKHBhcmFtZXRlciAhPSBudWxsKSB7Ci0JCQkJU3RyaW5nIG5hbWUgPSBwYXJhbWV0ZXIuZ2V0QmFzZV9Qcm9wZXJ0eSgpLmdldE5hbWUoKTsKLQkJCQlTdHJpbmcgdmFsdWUgPSAiIjsKLQkJCQlpZiAocGFyYW1ldGVyLmdldEJhc2VfUHJvcGVydHkoKS5nZXREZWZhdWx0VmFsdWUoKSAhPSBudWxsKSB7Ci0JCQkJCS8vIFRoZXkgdXNlIHRvIGJlIGxpdGVyYWxzIGJ1dCB3ZSBldmFsdWF0ZSBpbiBjYXNlIGl0IHVzZXMgYW5vdGhlciBsYW5ndWFnZQotCQkJCQlPYmplY3QgcmVzdWx0ID0gQXNzZXJ0aW9uc0hlbHBlci5ldmFsdWF0ZVZhbHVlU3BlY2lmaWNhdGlvbihjb21wRGVmLAotCQkJCQkJCXBhcmFtZXRlci5nZXRCYXNlX1Byb3BlcnR5KCkuZ2V0RGVmYXVsdFZhbHVlKCkpOwotCQkJCQl2YWx1ZSA9IHJlc3VsdC50b1N0cmluZygpOwotCQkJCX0KLQkJCQlkZWZhdWx0UGFyYW1ldGVycy5wdXQobmFtZSwgdmFsdWUpOworCQlMaXN0PG9yZy5lY2xpcHNlLnVtbDIudW1sLlByb3BlcnR5PiBwYXJhbWV0ZXJzID0gUGFyYW1ldGVyVXRpbHMuZ2V0QWxsUGFyYW1ldGVycyhjb21wRGVmLmdldEJhc2VfQ2xhc3MoKSk7CisJCWZvciAob3JnLmVjbGlwc2UudW1sMi51bWwuUHJvcGVydHkgcGFyYW1ldGVyIDogcGFyYW1ldGVycykgeworCQkJU3RyaW5nIG5hbWUgPSBwYXJhbWV0ZXIuZ2V0TmFtZSgpOworCQkJU3RyaW5nIHZhbHVlID0gIiI7IC8vJE5PTi1OTFMtMSQKKwkJCWlmIChwYXJhbWV0ZXIuZ2V0RGVmYXVsdFZhbHVlKCkgIT0gbnVsbCkgeworCQkJCS8vIFRoZXkgdXNlIHRvIGJlIGxpdGVyYWxzIGJ1dCB3ZSBldmFsdWF0ZSBpbiBjYXNlIGl0IHVzZXMgYW5vdGhlciBsYW5ndWFnZQorCQkJCU9iamVjdCByZXN1bHQgPSBBc3NlcnRpb25zSGVscGVyLmV2YWx1YXRlVmFsdWVTcGVjaWZpY2F0aW9uKGNvbXBEZWYsCisJCQkJCQlwYXJhbWV0ZXIuZ2V0RGVmYXVsdFZhbHVlKCkpOworCQkJCXZhbHVlID0gcmVzdWx0LnRvU3RyaW5nKCk7CiAJCQl9CisJCQlkZWZhdWx0UGFyYW1ldGVycy5wdXQobmFtZSwgdmFsdWUpOwogCQl9CiAJCXJldHVybiBkZWZhdWx0UGFyYW1ldGVyczsKIAl9Ci0JCisKIH0KZGlmZiAtLWdpdCBhL3BsdWdpbnMvYXNzZXJ0aW9ucy9vcmcuZWNsaXBzZS5wYXB5cnVzLnJvYm90aWNzLmFzc2VydGlvbnMubGFuZ3VhZ2VzL3NyYy9vcmcvZWNsaXBzZS9wYXB5cnVzL3JvYm90aWNzL2Fzc2VydGlvbnMvbGFuZ3VhZ2VzL2VkaXRvci9TdHlsZWRTdHJpbmdFZGl0b3IuamF2YSBiL3BsdWdpbnMvYXNzZXJ0aW9ucy9vcmcuZWNsaXBzZS5wYXB5cnVzLnJvYm90aWNzLmFzc2VydGlvbnMubGFuZ3VhZ2VzL3NyYy9vcmcvZWNsaXBzZS9wYXB5cnVzL3JvYm90aWNzL2Fzc2VydGlvbnMvbGFuZ3VhZ2VzL2VkaXRvci9TdHlsZWRTdHJpbmdFZGl0b3IuamF2YQppbmRleCA5YmQzNDIwLi4wODY3NTk5IDEwMDY0NAotLS0gYS9wbHVnaW5zL2Fzc2VydGlvbnMvb3JnLmVjbGlwc2UucGFweXJ1cy5yb2JvdGljcy5hc3NlcnRpb25zLmxhbmd1YWdlcy9zcmMvb3JnL2VjbGlwc2UvcGFweXJ1cy9yb2JvdGljcy9hc3NlcnRpb25zL2xhbmd1YWdlcy9lZGl0b3IvU3R5bGVkU3RyaW5nRWRpdG9yLmphdmEKKysrIGIvcGx1Z2lucy9hc3NlcnRpb25zL29yZy5lY2xpcHNlLnBhcHlydXMucm9ib3RpY3MuYXNzZXJ0aW9ucy5sYW5ndWFnZXMvc3JjL29yZy9lY2xpcHNlL3BhcHlydXMvcm9ib3RpY3MvYXNzZXJ0aW9ucy9sYW5ndWFnZXMvZWRpdG9yL1N0eWxlZFN0cmluZ0VkaXRvci5qYXZhCkBAIC0zNiw2ICszNiw3IEBACiBpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5yb2JvdGljcy5hc3NlcnRpb25zLmxhbmd1YWdlcy5Bc3NlcnRpb25zSGVscGVyOwogaW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMucm9ib3RpY3MucHJvZmlsZS5yb2JvdGljcy5jb21wb25lbnRzLkNvbXBvbmVudERlZmluaXRpb247CiBpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5yb2JvdGljcy5wcm9maWxlLnJvYm90aWNzLmNvbXBvbmVudHMuQ29tcG9uZW50SW5zdGFuY2U7CitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5yb2JvdGljcy5wcm9maWxlLnJvYm90aWNzLmNvbXBvbmVudHMuQ29tcG9uZW50T3JTeXN0ZW07CiBpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5yb2JvdGljcy5wcm9maWxlLnJvYm90aWNzLnBhcmFtZXRlcnMuUGFyYW1ldGVyRW50cnk7CiBpbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LlNXVDsKIGltcG9ydCBvcmcuZWNsaXBzZS5zd3QuY3VzdG9tLlN0eWxlUmFuZ2U7CkBAIC02MjksNyArNjMwLDcgQEAKIAkJCQkJU3RyaW5nIGluc3RhbmNlTmFtZSA9IGluc3RhbmNlLmdldEJhc2VfUHJvcGVydHkoKS5nZXROYW1lKCk7CiAJCQkJCW1vZGVsS2V5d29yZHMuYWRkKGluc3RhbmNlTmFtZSk7CiAJCQkJCS8vIGNvbXBvbmVudCBwYXJhbWV0ZXJzCi0JCQkJCUNvbXBvbmVudERlZmluaXRpb24gY29tcERlZiA9IGluc3RhbmNlLmdldENvbXBkZWYoKTsKKwkJCQkJQ29tcG9uZW50T3JTeXN0ZW0gY29tcERlZiA9IGluc3RhbmNlLmdldENvbXBkZWZPclN5cygpOwogCQkJCQlmb3IoU3RyaW5nIHBhcmFtIDogZ2V0UGFyYW1ldGVyTmFtZXMoY29tcERlZi5nZXRCYXNlX0NsYXNzKCkpKSB7CiAJCQkJCQltb2RlbEtleXdvcmRzLmFkZChpbnN0YW5jZU5hbWUgKyAiLiIgKyBwYXJhbSk7CiAJCQkJCX0KZGlmZiAtLWdpdCBhL3BsdWdpbnMvYXNzZXJ0aW9ucy9vcmcuZWNsaXBzZS5wYXB5cnVzLnJvYm90aWNzLmFzc2VydGlvbnMudWkvc3JjL29yZy9lY2xpcHNlL3BhcHlydXMvcm9ib3RpY3MvYXNzZXJ0aW9ucy91aS9hY3Rpb25zL1ZhbGlkYXRlQ29udHJhY3RIYW5kbGVyLmphdmEgYi9wbHVnaW5zL2Fzc2VydGlvbnMvb3JnLmVjbGlwc2UucGFweXJ1cy5yb2JvdGljcy5hc3NlcnRpb25zLnVpL3NyYy9vcmcvZWNsaXBzZS9wYXB5cnVzL3JvYm90aWNzL2Fzc2VydGlvbnMvdWkvYWN0aW9ucy9WYWxpZGF0ZUNvbnRyYWN0SGFuZGxlci5qYXZhCmluZGV4IDQ0Y2NlZjkuLjRmYjgxNTMgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvYXNzZXJ0aW9ucy9vcmcuZWNsaXBzZS5wYXB5cnVzLnJvYm90aWNzLmFzc2VydGlvbnMudWkvc3JjL29yZy9lY2xpcHNlL3BhcHlydXMvcm9ib3RpY3MvYXNzZXJ0aW9ucy91aS9hY3Rpb25zL1ZhbGlkYXRlQ29udHJhY3RIYW5kbGVyLmphdmEKKysrIGIvcGx1Z2lucy9hc3NlcnRpb25zL29yZy5lY2xpcHNlLnBhcHlydXMucm9ib3RpY3MuYXNzZXJ0aW9ucy51aS9zcmMvb3JnL2VjbGlwc2UvcGFweXJ1cy9yb2JvdGljcy9hc3NlcnRpb25zL3VpL2FjdGlvbnMvVmFsaWRhdGVDb250cmFjdEhhbmRsZXIuamF2YQpAQCAtOSw3ICs5LDcgQEAKICAqCiAgKiBDb250cmlidXRvcnM6CiAgKiAJIEphYmllciBNYXJ0aW5leiwgVGVjbmFsaWEgLSBJbml0aWFsIGRlc2lnbiBhbmQgaW1wbGVtZW50YXRpb24KLSAqICAgQW5nZWwgTPNwZXosIFRlY25hbGlhIC0gSW1wbGVtZW50YXRpb24KKyAqICAgQW5nZWwgTO+/vXBleiwgVGVjbmFsaWEgLSBJbXBsZW1lbnRhdGlvbgogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIHBhY2thZ2Ugb3JnLmVjbGlwc2UucGFweXJ1cy5yb2JvdGljcy5hc3NlcnRpb25zLnVpLmFjdGlvbnM7CkBAIC0zMiw2ICszMiw3IEBACiBpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5yb2JvdGljcy5hc3NlcnRpb25zLnByb2ZpbGUuYXNzZXJ0aW9ucy5Db250cmFjdDsKIGltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnJvYm90aWNzLnByb2ZpbGUucm9ib3RpY3MuY29tcG9uZW50cy5Db21wb25lbnREZWZpbml0aW9uOwogaW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMucm9ib3RpY3MucHJvZmlsZS5yb2JvdGljcy5jb21wb25lbnRzLkNvbXBvbmVudEluc3RhbmNlOworaW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMucm9ib3RpY3MucHJvZmlsZS5yb2JvdGljcy5jb21wb25lbnRzLkNvbXBvbmVudE9yU3lzdGVtOwogaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC5ncmFwaGljcy5Db2xvcjsKIGltcG9ydCBvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5EaXNwbGF5OwogaW1wb3J0IG9yZy5lY2xpcHNlLnVpLlBsYXRmb3JtVUk7CkBAIC05MSw3ICs5Miw3IEBACiAJCQljb250cmFjdHMgPSBBc3NlcnRpb25zSGVscGVyLmdldENvbXBEZWZpbml0aW9uQ29udHJhY3RzKGNvbXBEZWZpbml0aW9uKTsKIAkJCWV2YWx1YXRlQ29udHJhY3RzKGNvbnRyYWN0cywgY29tcERlZmluaXRpb24pOwogCQl9IGVsc2UgaWYgKGNvbXBJbnN0YW5jZSAhPSBudWxsKSB7Ci0JCQlDb21wb25lbnREZWZpbml0aW9uIGNkID0gY29tcEluc3RhbmNlLmdldENvbXBkZWYoKTsKKwkJCUNvbXBvbmVudE9yU3lzdGVtIGNkID0gY29tcEluc3RhbmNlLmdldENvbXBkZWZPclN5cygpOwogCQkJY29udHJhY3RzID0gQXNzZXJ0aW9uc0hlbHBlci5nZXRDb21wRGVmaW5pdGlvbkNvbnRyYWN0cyhjZCk7CiAJCQlldmFsdWF0ZUNvbnRyYWN0cyhjb250cmFjdHMsIGNvbXBJbnN0YW5jZSk7CiAJCX0gZWxzZSBpZiAoc3lzdGVtICE9IG51bGwpIHsKQEAgLTk5LDcgKzEwMCw3IEBACiAJCQlNZXNzYWdlRGlhbG9nLm9wZW5JbmZvcm1hdGlvbihEaXNwbGF5LmdldEN1cnJlbnQoKS5nZXRBY3RpdmVTaGVsbCgpLCAiVmFsaWRhdGUgQ29udHJhY3QiLAogCQkJCQkiVmFsaWRhdGluZyBjb250cmFjdHMgb2YgY29tcG9uZW50IGluc3RhbmNlcyIpOwogCQkJZm9yIChDb21wb25lbnRJbnN0YW5jZSBjaSA6IHN5c3RlbS5nZXRJbnN0YW5jZXMoKSkgewotCQkJCUNvbXBvbmVudERlZmluaXRpb24gY2QgPSBjaS5nZXRDb21wZGVmKCk7CisJCQkJQ29tcG9uZW50T3JTeXN0ZW0gY2QgPSBjaS5nZXRDb21wZGVmT3JTeXMoKTsKIAkJCQljb250cmFjdHMgPSBBc3NlcnRpb25zSGVscGVyLmdldENvbXBEZWZpbml0aW9uQ29udHJhY3RzKGNkKTsKIAkJCQlldmFsdWF0ZUNvbnRyYWN0cyhjb250cmFjdHMsIGNpKTsKIAkJCX0KZGlmZiAtLWdpdCBhL3BsdWdpbnMvY3VzdG9taXphdGlvbi9vcmcuZWNsaXBzZS5wYXB5cnVzLnJvYm90aWNzLmNvcmUvc3JjL29yZy9lY2xpcHNlL3BhcHlydXMvcm9ib3RpY3MvY29yZS9wcm92aWRlci9Sb2JvdGljc0NvbnRlbnRQcm92aWRlci5qYXZhIGIvcGx1Z2lucy9jdXN0b21pemF0aW9uL29yZy5lY2xpcHNlLnBhcHlydXMucm9ib3RpY3MuY29yZS9zcmMvb3JnL2VjbGlwc2UvcGFweXJ1cy9yb2JvdGljcy9jb3JlL3Byb3ZpZGVyL1JvYm90aWNzQ29udGVudFByb3ZpZGVyLmphdmEKaW5kZXggYmI4NTE0MS4uM2IzZGU4MiAxMDA2NDQKLS0tIGEvcGx1Z2lucy9jdXN0b21pemF0aW9uL29yZy5lY2xpcHNlLnBhcHlydXMucm9ib3RpY3MuY29yZS9zcmMvb3JnL2VjbGlwc2UvcGFweXJ1cy9yb2JvdGljcy9jb3JlL3Byb3ZpZGVyL1JvYm90aWNzQ29udGVudFByb3ZpZGVyLmphdmEKKysrIGIvcGx1Z2lucy9jdXN0b21pemF0aW9uL29yZy5lY2xpcHNlLnBhcHlydXMucm9ib3RpY3MuY29yZS9zcmMvb3JnL2VjbGlwc2UvcGFweXJ1cy9yb2JvdGljcy9jb3JlL3Byb3ZpZGVyL1JvYm90aWNzQ29udGVudFByb3ZpZGVyLmphdmEKQEAgLTI0LDcgKzI0LDYgQEAKIGltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUucmVzb3VyY2UuUmVzb3VyY2U7CiBpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLnJlc291cmNlLlJlc291cmNlU2V0OwogaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5yZXNvdXJjZS5pbXBsLlJlc291cmNlU2V0SW1wbDsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZmFjZS52aWV3ZXJzLklTdHJ1Y3R1cmVkQ29udGVudFByb3ZpZGVyOwogaW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlLnZpZXdlcnMuSVRyZWVDb250ZW50UHJvdmlkZXI7CiBpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5jb21tYW5kcy5BY3RpdmF0b3I7CiBpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5lbWYuZmFjZXQuY3VzdG9tLm1ldGFtb2RlbC52MF8yXzAuaW50ZXJuYWwudHJlZXByb3h5LkVPYmplY3RUcmVlRWxlbWVudDsKQEAgLTU5LDYgKzU4LDkgQEAKIAkgKi8KIAlwcm90ZWN0ZWQgUmVzb3VyY2VTZXQgZW5jYXBzdWxhdGVkUlM7CiAKKwkvKioKKwkgKiBBIHN0ZXJlb3R5cGUgdG8gZmlsdGVyLiBNaWdodCBiZSBudWxsLgorCSAqLwogCXByb3RlY3RlZCBDbGFzczw/IGV4dGVuZHMgRU9iamVjdD4gc3RlcmVvdHlwZUZpbHRlcjsKIAogCS8qKgpAQCAtNjksMTQgKzcxLDIxIEBACiAJICogICAgICAgICAgICBhIGNvbnRleHQgb2JqZWN0IHVzZWQgdG8gb2J0YWluIHRoZSByZXNvdXJjZSBzZXQKIAkgKiBAcGFyYW0gZW5jYXBzdWxhdGVkCiAJICogICAgICAgICAgICBhbiBleGlzdGluZyBjb250ZW50IHByb3ZpZGVyCi0JICogQHBhcmFtIHN0ZXJlb3R5cGVGaWx0ZXIKLQkgKiAgICAgICAgICAgIGEgc3RlcmVvdHlwZSBmaWx0ZXIKKwkgKiBAcGFyYW0gc3RlcmVvdHlwZUZpbHRlckxpc3QKKwkgKiAgICAgICAgICAgIGEgc3RlcmVvdHlwZSBhIGxpc3Qgb2Ygc3RlcmVvdHlwZSBmaWx0ZXJzCiAJICogQHBhcmFtIGV4dGVuc2lvbgotCSAqICAgICAgICAgICAgYSBmaWxlIGV4dGVuc2lvbiB0byBzZWFyY2ggZm9yIGluIHdvcmtzcGFjZSBhbmQgcGx1Z2luCisJICogICAgICAgICAgICBhIGZpbGUgZXh0ZW5zaW9uIHRvIHNlYXJjaCBmb3IgaW4gd29ya3NwYWNlIGFuZCBwbHVnaW5zCiAJICovCiAJcHVibGljIFJvYm90aWNzQ29udGVudFByb3ZpZGVyKEVPYmplY3QgY29udGV4dCwgSVN0YXRpY0NvbnRlbnRQcm92aWRlciBlbmNhcHN1bGF0ZWQsIENsYXNzPD8gZXh0ZW5kcyBFT2JqZWN0PiBzdGVyZW90eXBlRmlsdGVyLCBTdHJpbmcgZXh0ZW5zaW9uKSB7Ci0JCXRoaXMoY29udGV4dCwgbmV3IEZpbHRlclN0ZXJlb3R5cGVzKGVuY2Fwc3VsYXRlZCwgc3RlcmVvdHlwZUZpbHRlciksIGV4dGVuc2lvbik7CisJCWlmIChjb250ZXh0LmVSZXNvdXJjZSgpICE9IG51bGwpIHsKKwkJCXRoaXMuZW5jYXBzdWxhdGVkUlMgPSBjb250ZXh0LmVSZXNvdXJjZSgpLmdldFJlc291cmNlU2V0KCk7CisJCX0gZWxzZSB7CisJCQlBY3RpdmF0b3IubG9nLndhcm4oIlJvYm90aWNzQ29udGVudFByb3ZpZGVyOiBwYXNzZWQgY29udGV4dCBpcyBub3QgY29udGFpbmVkIGluIGEgcmVzb3VyY2UgKHByb3h5PykiKTsgLy8kTk9OLU5MUy0xJAorCQl9CisJCXRoaXMuZW5jYXBzdWxhdGVkID0gZW5jYXBzdWxhdGVkOwogCQl0aGlzLnN0ZXJlb3R5cGVGaWx0ZXIgPSBzdGVyZW90eXBlRmlsdGVyOworCQl0aGlzLmV4dGVuc2lvbiA9IGV4dGVuc2lvbjsKKwkJdGVtcFJTID0gbmV3IFJlc291cmNlU2V0SW1wbCgpOwogCX0KIAogCS8qKgpAQCAtOTAsMjAgKzk5LDggQEAKIAkgKiBAcGFyYW0gZXh0ZW5zaW9uCiAJICogICAgICAgICAgICBhIGZpbGUgZXh0ZW5zaW9uIHRvIHNlYXJjaCBmb3IgaW4gd29ya3NwYWNlIGFuZCBwbHVnaW4KIAkgKi8KLQlwdWJsaWMgUm9ib3RpY3NDb250ZW50UHJvdmlkZXIoRU9iamVjdCBjb250ZXh0LCBJU3RydWN0dXJlZENvbnRlbnRQcm92aWRlciBlbmNhcHN1bGF0ZWQsIFN0cmluZyBleHRlbnNpb24pIHsKLQkJaWYgKGNvbnRleHQuZVJlc291cmNlKCkgIT0gbnVsbCkgewotCQkJdGhpcy5lbmNhcHN1bGF0ZWRSUyA9IGNvbnRleHQuZVJlc291cmNlKCkuZ2V0UmVzb3VyY2VTZXQoKTsKLQkJfSBlbHNlIHsKLQkJCUFjdGl2YXRvci5sb2cuZGVidWcoIlJvYm90aWNzQ29udGVudFByb3ZpZGVyOiBwYXNzZWQgY29udGV4dCBpcyBub3QgY29udGFpbmVkIGluIGEgcmVzb3VyY2UgKHByb3h5PykiKTsgLy8kTk9OLU5MUy0xJAotCQl9Ci0JCXRoaXMuZW5jYXBzdWxhdGVkID0gZW5jYXBzdWxhdGVkOwotCQlpZiAoZW5jYXBzdWxhdGVkIGluc3RhbmNlb2YgRmlsdGVyU3RlcmVvdHlwZXMpIHsKLQkJCXRoaXMuc3RlcmVvdHlwZUZpbHRlciA9ICgoRmlsdGVyU3RlcmVvdHlwZXMpIGVuY2Fwc3VsYXRlZCkuZ2V0U3RlcmVvdHlwZUZpbHRlcigpOwotCQl9IGVsc2UgewotCQkJQWN0aXZhdG9yLmxvZy5kZWJ1ZygiUm9ib3RpY3NDb250ZW50UHJvdmlkZXI6IHBhc3NlZCBlbmNhcHN1bGF0ZWQgY29udGVudCBwcm92aWRlciBkb2VzIG5vdCBzcGVjaWFsaXplIGNsYXNzIG9yZy5lY2xpcHNlLnBhcHlydXMucm9ib3RpY3MuY29yZS5wcm92aWRlci5GaWx0ZXJTdGVyZW90eXBlcyIpOyAvLyROT04tTkxTLTEkCi0JCX0KLQkJdGhpcy5leHRlbnNpb24gPSBleHRlbnNpb247Ci0JCXRlbXBSUyA9IG5ldyBSZXNvdXJjZVNldEltcGwoKTsKKwlwdWJsaWMgUm9ib3RpY3NDb250ZW50UHJvdmlkZXIoRU9iamVjdCBjb250ZXh0LCBJU3RhdGljQ29udGVudFByb3ZpZGVyIGVuY2Fwc3VsYXRlZCwgU3RyaW5nIGV4dGVuc2lvbikgeworCQl0aGlzKGNvbnRleHQsIGVuY2Fwc3VsYXRlZCwgbnVsbCwgZXh0ZW5zaW9uKTsKIAl9CiAKIAlwcm90ZWN0ZWQgT2JqZWN0W10gZ2V0VG9wRWxlbWVudHMoKSB7CkBAIC0xMzYsOSArMTMzLDEyIEBACiAJfQogCiAJLyoqCi0JICogQ2hlY2ssIHdoZXRoZXIgYSByZXNvdXJjZSBjb250YWlucyBzZWFyY2ggc3RlcmVvdHlwZSAodXNlZCBpbiB0aGUgaGFzQ2hpbGRyZW4pIGRpYWxvZworCSAqIENoZWNrLCB3aGV0aGVyIGEgcmVzb3VyY2UgY29udGFpbnMgc2VhcmNoZWQgc3RlcmVvdHlwZXMgKHVzZWQgaW4gdGhlIGhhc0NoaWxkcmVuKSBkaWFsb2cKIAkgKi8KIAlwcm90ZWN0ZWQgYm9vbGVhbiBjb250YWluc1N0ZXJlb3R5cGUoUmVzb3VyY2UgcikgeworCQlpZiAoc3RlcmVvdHlwZUZpbHRlciA9PSBudWxsKSB7CisJCQlyZXR1cm4gdHJ1ZTsKKwkJfQogCQlmb3IgKEVPYmplY3Qgb2JqIDogci5nZXRDb250ZW50cygpKSB7CiAJCQlpZiAoc3RlcmVvdHlwZUZpbHRlci5pc0luc3RhbmNlKG9iaikpIHsKIAkJCQlyZXR1cm4gdHJ1ZTsKQEAgLTE4Niw4ICsxODYsNyBAQAogCQkJaWYgKHVyaS5wYXRoKCkuZW5kc1dpdGgoZXh0ZW5zaW9uKSkgewogCQkJCVJlc291cmNlIHIgPSB0ZW1wUlMuZ2V0UmVzb3VyY2UoKFVSSSkgZWxlbWVudCwgdHJ1ZSk7CiAJCQkJcmV0dXJuIGNvbnRhaW5zU3RlcmVvdHlwZShyKTsKLQkJCX0KLQkJCWVsc2UgeworCQkJfSBlbHNlIHsKIAkJCQkvLyBsaWtlbHkgYSBwYXRobWFwIHByZWZpeCwgYWx3YXlzIHJldHVybiB0cnVlCiAJCQkJcmV0dXJuIHRydWU7CiAJCQl9CmRpZmYgLS1naXQgYS9wbHVnaW5zL2N1c3RvbWl6YXRpb24vb3JnLmVjbGlwc2UucGFweXJ1cy5yb2JvdGljcy5jb3JlL3NyYy9vcmcvZWNsaXBzZS9wYXB5cnVzL3JvYm90aWNzL2NvcmUvdHlwZXMvYWR2aWNlL0NvbXBvbmVudEluc3RhbmNlRWRpdEhlbHBlckFkdmljZS5qYXZhIGIvcGx1Z2lucy9jdXN0b21pemF0aW9uL29yZy5lY2xpcHNlLnBhcHlydXMucm9ib3RpY3MuY29yZS9zcmMvb3JnL2VjbGlwc2UvcGFweXJ1cy9yb2JvdGljcy9jb3JlL3R5cGVzL2FkdmljZS9Db21wb25lbnRJbnN0YW5jZUVkaXRIZWxwZXJBZHZpY2UuamF2YQppbmRleCBhMDMwMzk0Li40MmRhYmRhIDEwMDY0NAotLS0gYS9wbHVnaW5zL2N1c3RvbWl6YXRpb24vb3JnLmVjbGlwc2UucGFweXJ1cy5yb2JvdGljcy5jb3JlL3NyYy9vcmcvZWNsaXBzZS9wYXB5cnVzL3JvYm90aWNzL2NvcmUvdHlwZXMvYWR2aWNlL0NvbXBvbmVudEluc3RhbmNlRWRpdEhlbHBlckFkdmljZS5qYXZhCisrKyBiL3BsdWdpbnMvY3VzdG9taXphdGlvbi9vcmcuZWNsaXBzZS5wYXB5cnVzLnJvYm90aWNzLmNvcmUvc3JjL29yZy9lY2xpcHNlL3BhcHlydXMvcm9ib3RpY3MvY29yZS90eXBlcy9hZHZpY2UvQ29tcG9uZW50SW5zdGFuY2VFZGl0SGVscGVyQWR2aWNlLmphdmEKQEAgLTI5LDcgKzI5LDcgQEAKIGltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnJvYm90aWNzLmNvcmUubWVudS5NZW51SGVscGVyOwogaW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMucm9ib3RpY3MuY29yZS5wcm92aWRlci5Sb2JvdGljc0NvbnRlbnRQcm92aWRlcjsKIGltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnJvYm90aWNzLmNvcmUudXRpbHMuRmlsZUV4dGVuc2lvbnM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5yb2JvdGljcy5wcm9maWxlLnJvYm90aWNzLmNvbXBvbmVudHMuQ29tcG9uZW50RGVmaW5pdGlvbjsKK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnJvYm90aWNzLnByb2ZpbGUucm9ib3RpY3MuY29tcG9uZW50cy5Db21wb25lbnRPclN5c3RlbTsKIGltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC50b29scy5wcm92aWRlcnMuVU1MQ29udGVudFByb3ZpZGVyOwogaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC53aWRnZXRzLkRpc3BsYXk7CiBpbXBvcnQgb3JnLmVjbGlwc2UudW1sMi51bWwuQ2xhc3NpZmllcjsKQEAgLTU0LDcgKzU0LDcgQEAKIAogCQlFbmNhcHN1bGF0ZWRDb250ZW50UHJvdmlkZXIgY3BXaXRoV1MgPSBuZXcgUm9ib3RpY3NDb250ZW50UHJvdmlkZXIocGFydCwKIAkJCQluZXcgVU1MQ29udGVudFByb3ZpZGVyKHBhcnQsIFVNTFBhY2thZ2UuZUlOU1RBTkNFLmdldFR5cGVkRWxlbWVudF9UeXBlKCkpLAotCQkJCUNvbXBvbmVudERlZmluaXRpb24uY2xhc3MsIEZpbGVFeHRlbnNpb25zLkNPTVBERUZfVU1MKTsKKwkJCQlDb21wb25lbnRPclN5c3RlbS5jbGFzcywgRmlsZUV4dGVuc2lvbnMuQ09NUERFRl9VTUwgKyAifCIgKyBGaWxlRXh0ZW5zaW9ucy5TWVNURU1fVU1MKTsgLy8kTk9OLU5MUy0xJAogCiAJCUVuaGFuY2VkUG9wdXBNZW51IHBvcHVwTWVudVN0YXRlID0gTWVudUhlbHBlci5jcmVhdGVQb3B1cE1lbnUoY3BXaXRoV1MsICJDaG9vc2UgY29tcG9uZW50IHR5cGUiLCBmYWxzZSk7CiAKZGlmZiAtLWdpdCBhL3BsdWdpbnMvY3VzdG9taXphdGlvbi9vcmcuZWNsaXBzZS5wYXB5cnVzLnJvYm90aWNzLmNvcmUvc3JjL29yZy9lY2xpcHNlL3BhcHlydXMvcm9ib3RpY3MvY29yZS91dGlscy9QYXJhbWV0ZXJVdGlscy5qYXZhIGIvcGx1Z2lucy9jdXN0b21pemF0aW9uL29yZy5lY2xpcHNlLnBhcHlydXMucm9ib3RpY3MuY29yZS9zcmMvb3JnL2VjbGlwc2UvcGFweXJ1cy9yb2JvdGljcy9jb3JlL3V0aWxzL1BhcmFtZXRlclV0aWxzLmphdmEKaW5kZXggNDc1ZmQwMy4uZTUwNWYwYSAxMDA2NDQKLS0tIGEvcGx1Z2lucy9jdXN0b21pemF0aW9uL29yZy5lY2xpcHNlLnBhcHlydXMucm9ib3RpY3MuY29yZS9zcmMvb3JnL2VjbGlwc2UvcGFweXJ1cy9yb2JvdGljcy9jb3JlL3V0aWxzL1BhcmFtZXRlclV0aWxzLmphdmEKKysrIGIvcGx1Z2lucy9jdXN0b21pemF0aW9uL29yZy5lY2xpcHNlLnBhcHlydXMucm9ib3RpY3MuY29yZS9zcmMvb3JnL2VjbGlwc2UvcGFweXJ1cy9yb2JvdGljcy9jb3JlL3V0aWxzL1BhcmFtZXRlclV0aWxzLmphdmEKQEAgLTEsMyArMSwxOSBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKGMpIDIwMjAgQ0VBIExJU1QKKyAqCisgKgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscworICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSAyLjAKKyAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0CisgKiBodHRwczovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtMi4wLworICoKKyAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBFUEwtMi4wCisgKgorICogQ29udHJpYnV0b3JzOgorICogIGFuc2dhci5yYWRlcm1hY2hlckBjZWEuZnIgIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCiBwYWNrYWdlIG9yZy5lY2xpcHNlLnBhcHlydXMucm9ib3RpY3MuY29yZS51dGlsczsKIAogaW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7CkBAIC0xMSw3ICsyNywxNCBAQAogaW1wb3J0IG9yZy5lY2xpcHNlLnVtbDIudW1sLlByb3BlcnR5OwogaW1wb3J0IG9yZy5lY2xpcHNlLnVtbDIudW1sLlN0cnVjdHVyZWRDbGFzc2lmaWVyOwogCisvKioKKyAqIFV0aWxpdGllcyBhcm91bmQgcGFyYW1ldGVyIGNsYXNzZXMKKyAqLwogcHVibGljIGNsYXNzIFBhcmFtZXRlclV0aWxzIHsKKwkvKioKKwkgKiBAcGFyYW0gY2xhenogYSBjb21wb25lbnQgZGVmaW5pdGlvbgorCSAqIEByZXR1cm4gYWxsIHBhcmFtZXRlcnMgb2YgYSBjb21wb25lbnQgZGVmaW5pdGlvbgorCSAqLwogCXB1YmxpYyBzdGF0aWMgTGlzdDxQcm9wZXJ0eT4gZ2V0QWxsUGFyYW1ldGVycyhDbGFzcyBjbGF6eikgewogCQlMaXN0PFByb3BlcnR5PiBwYXJhbWV0ZXJMaXN0ID0gbmV3IEFycmF5TGlzdDxQcm9wZXJ0eT4oKTsKIAkJZm9yIChDbGFzcyBzdXBlckNsYXNzIDogY2xhenouZ2V0U3VwZXJDbGFzc2VzKCkpIHsKZGlmZiAtLWdpdCBhL3BsdWdpbnMvY3VzdG9taXphdGlvbi9vcmcuZWNsaXBzZS5wYXB5cnVzLnJvYm90aWNzLmNvcmUvc3JjL29yZy9lY2xpcHNlL3BhcHlydXMvcm9ib3RpY3MvY29yZS91dGlscy9TY2FuVXRpbHMuamF2YSBiL3BsdWdpbnMvY3VzdG9taXphdGlvbi9vcmcuZWNsaXBzZS5wYXB5cnVzLnJvYm90aWNzLmNvcmUvc3JjL29yZy9lY2xpcHNlL3BhcHlydXMvcm9ib3RpY3MvY29yZS91dGlscy9TY2FuVXRpbHMuamF2YQppbmRleCAzODJmNjAyLi44MTJjZDRkIDEwMDY0NAotLS0gYS9wbHVnaW5zL2N1c3RvbWl6YXRpb24vb3JnLmVjbGlwc2UucGFweXJ1cy5yb2JvdGljcy5jb3JlL3NyYy9vcmcvZWNsaXBzZS9wYXB5cnVzL3JvYm90aWNzL2NvcmUvdXRpbHMvU2NhblV0aWxzLmphdmEKKysrIGIvcGx1Z2lucy9jdXN0b21pemF0aW9uL29yZy5lY2xpcHNlLnBhcHlydXMucm9ib3RpY3MuY29yZS9zcmMvb3JnL2VjbGlwc2UvcGFweXJ1cy9yb2JvdGljcy9jb3JlL3V0aWxzL1NjYW5VdGlscy5qYXZhCkBAIC0zMSw3ICszMSw3IEBACiAKIAkvKioKIAkgKiBAcGFyYW0gZXh0ZW5zaW9uCi0JICogICAgICAgICAgICBmaWx0ZXIgbW9kZWxzIGhhdmluZyB0aGlzIGV4dGVuc2lvbgorCSAqICAgICAgICAgICAgZmlsdGVyIG1vZGVscyBoYXZpbmcgdGhpcyBleHRlbnNpb24gKGEgInwiIGFsbG93cyB0byBjaGVjayBmb3IgbXVsdGlwbGUgZXh0ZW5zaW9ucykKIAkgKiBAcmV0dXJuIGEgbGlzdCBvZiBVUklzCiAJICovCiAJcHVibGljIHN0YXRpYyBMaXN0PFVSST4gbW9kZWxVUklzSW5Xb3Jrc3BhY2UoU3RyaW5nIGV4dGVuc2lvbikgewpAQCAtNTUsNiArNTUsNyBAQAogCSAqIFVSSXMgb2YgdGhlIG1vZGVscyBjb250YWluZWQuCiAJICogCiAJICogQHBhcmFtIGV4dGVuc2lvbgorCSAqICAgICAgICAgICAgYW4gZXh0ZW5zaW9uIChhICJ8IiBhbGxvd3MgdG8gY2hlY2sgZm9yIG11bHRpcGxlIGV4dGVuc2lvbnMpCiAJICogQHJldHVybiBsaXN0IG9mIFVSSXMKIAkgKi8KIAlwdWJsaWMgc3RhdGljIExpc3Q8VVJJPiBwYXRobWFwc1dpdGhNb2RlbHMoU3RyaW5nIGV4dGVuc2lvbikgewpAQCAtODYsNyArODcsNyBAQAogCSAqIEBwYXJhbSB1cmkKIAkgKiAgICAgICAgICAgIHRoZSBVUkkgb2YgYSBwYXRobWFwIC0gYWxsIFVSSXMgYWNjZXNzaWJsZSB2aWEgdGhhdCBwYXRobWFwIGFyZSByZXR1cm5lZAogCSAqIEBwYXJhbSBleHRlbnNpb24KLQkgKiAgICAgICAgICAgIHRoZSBmaWxlIGV4dGVuc2lvbiB0byBzY2FuIGZvcgorCSAqICAgICAgICAgICAgdGhlIGZpbGUgZXh0ZW5zaW9uIHRvIHNjYW4gZm9yIChhICJ8IiBhbGxvd3MgdG8gY2hlY2sgZm9yIG11bHRpcGxlIGV4dGVuc2lvbnMpCiAJICogQHJldHVybiBsaXN0IG9mIG1vZGVsIFVSSXMKIAkgKi8KIAlwdWJsaWMgc3RhdGljIExpc3Q8VVJJPiBtb2RlbHNGcm9tUGF0aChVUkkgdXJpLCBTdHJpbmcgZXh0ZW5zaW9uKSB7CkBAIC0xMjgsNyArMTI5LDcgQEAKIAkgKiBAcGFyYW0gcGF0aAogCSAqICAgICAgICAgICAgYW4gaW5pdGlhbCBwYXRoIHdpdGhpbiB0aGUgYnVuZGxlCiAJICogQHBhcmFtIGV4dGVuc2lvbgotCSAqICAgICAgICAgICAgYW4gZXh0ZW5zaW9uCisJICogICAgICAgICAgICBhbiBleHRlbnNpb24gKGEgInwiIGFsbG93cyB0byBjaGVjayBmb3IgbXVsdGlwbGUgZXh0ZW5zaW9ucykKIAkgKiBAcmV0dXJuIHRydWUsIGlmIHRoZSBidW5kbGUgY29udGFpbnMgbW9kZWxzIHdpdGggdGhlIGdpdmVuIGV4dGVuc2lvbgogCSAqLwogCXByb3RlY3RlZCBzdGF0aWMgYm9vbGVhbiBoYXNCdW5kbGVNb2RlbHMoQnVuZGxlIGJ1bmRsZSwgU3RyaW5nIHBhdGgsIFN0cmluZyBleHRlbnNpb24pIHsKQEAgLTEzNyw3ICsxMzgsNyBAQAogCQlpZiAodXJsRW51bSAhPSBudWxsKSB7CiAJCQl3aGlsZSAodXJsRW51bS5oYXNNb3JlRWxlbWVudHMoKSkgewogCQkJCVVSTCB1cmwgPSB1cmxFbnVtLm5leHRFbGVtZW50KCk7Ci0JCQkJaWYgKHVybC5nZXRQYXRoKCkuZW5kc1dpdGgoZXh0ZW5zaW9uKSkgeworCQkJCWlmIChtYXRjaGVzRXh0ZW5zaW9uKHVybC5nZXRQYXRoKCksIGV4dGVuc2lvbikpIHsKIAkJCQkJcmV0dXJuIHRydWU7CiAJCQkJfSBlbHNlIHsKIAkJCQkJYm9vbGVhbiBmb3VuZCA9IGhhc0J1bmRsZU1vZGVscyhidW5kbGUsIHVybC5nZXRQYXRoKCksIGV4dGVuc2lvbik7CkBAIC0xNTcsNyArMTU4LDcgQEAKIAkJaWYgKHVybEVudW0gIT0gbnVsbCkgewogCQkJd2hpbGUgKHVybEVudW0uaGFzTW9yZUVsZW1lbnRzKCkpIHsKIAkJCQlVUkwgdXJsID0gdXJsRW51bS5uZXh0RWxlbWVudCgpOwotCQkJCWlmICh1cmwuZ2V0UGF0aCgpLmVuZHNXaXRoKGV4dGVuc2lvbikpIHsKKwkJCQlpZiAobWF0Y2hlc0V4dGVuc2lvbih1cmwuZ2V0UGF0aCgpLCBleHRlbnNpb24pKSB7CiAJCQkJCVN0cmluZyBtb2RlbFBhdGggPSBwYXRobWFwICsgdXJsLmdldFBhdGgoKS5yZXBsYWNlRmlyc3QoaW5pdGlhbFBhdGgsICIiKTsgLy8kTk9OLU5MUy0xJAogCQkJCQlVUkkgdXJpID0gVVJJLmNyZWF0ZVVSSShtb2RlbFBhdGgpOwogCQkJCQlsaXN0LmFkZCh1cmkpOwpAQCAtMjE3LDcgKzIxOCw3IEBACiAJCQlpZiAobWVtYmVyIGluc3RhbmNlb2YgSUNvbnRhaW5lcikgewogCQkJCXByb2Nlc3NDb250YWluZXIoKElDb250YWluZXIpIG1lbWJlciwgZXh0ZW5zaW9uLCBsaXN0KTsKIAkJCX0gZWxzZSBpZiAobWVtYmVyIGluc3RhbmNlb2YgSUZpbGUpIHsKLQkJCQlpZiAobWVtYmVyLmdldE5hbWUoKS5lbmRzV2l0aChleHRlbnNpb24pKSB7CisJCQkJaWYgKG1hdGNoZXNFeHRlbnNpb24obWVtYmVyLmdldE5hbWUoKSwgZXh0ZW5zaW9uKSkgewogCQkJCQlJRmlsZSBmaWxlID0gKElGaWxlKSBtZW1iZXI7CiAJCQkJCVVSSSB1cmkgPSBVUkkuY3JlYXRlUGxhdGZvcm1SZXNvdXJjZVVSSShmaWxlLmdldEZ1bGxQYXRoKCkudG9TdHJpbmcoKSwgdHJ1ZSk7CiAJCQkJCWxpc3QuYWRkKHVyaSk7CkBAIC0yMjUsNCArMjI2LDE2IEBACiAJCQl9CiAJCX0KIAl9CisKKwkvKgorCSAqIGNoZWNrIHdoZXRoZXIgdGhlIGV4dGVuc2lvbiBtYXRjaGVzLiBBbiAifCIgb3BlcmF0b3IgaXMgc3VwcG9ydCB0byBjaGVjayBmb3IgbXVsdGlwbGUgZXh0ZW5zaW9ucworCSAqLworCXB1YmxpYyBzdGF0aWMgYm9vbGVhbiBtYXRjaGVzRXh0ZW5zaW9uKFN0cmluZyBzdHIsIFN0cmluZyBleHRlbnNpb24pIHsKKwkJZm9yIChTdHJpbmcgZXh0IDogZXh0ZW5zaW9uLnNwbGl0KCJcXHwiKSkgeyAvLyROT04tTkxTLTEkCisJCQlpZiAoc3RyLmVuZHNXaXRoKGV4dCkpIHsKKwkJCQlyZXR1cm4gdHJ1ZTsKKwkJCX0KKwkJfQorCQlyZXR1cm4gZmFsc2U7CisJfQogfQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9jdXN0b21pemF0aW9uL29yZy5lY2xpcHNlLnBhcHlydXMucm9ib3RpY3MuZGlhZ3JhbXMvcmVzb3VyY2VzL3BhbGV0dGVzL1JvYm90aWNzQXNzZW1ibHlEaWFncmFtLnBhbGV0dGVjb25maWd1cmF0aW9uIGIvcGx1Z2lucy9jdXN0b21pemF0aW9uL29yZy5lY2xpcHNlLnBhcHlydXMucm9ib3RpY3MuZGlhZ3JhbXMvcmVzb3VyY2VzL3BhbGV0dGVzL1JvYm90aWNzQXNzZW1ibHlEaWFncmFtLnBhbGV0dGVjb25maWd1cmF0aW9uCmluZGV4IGJlYTRmYWMuLmYwZTg4ZTkgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvY3VzdG9taXphdGlvbi9vcmcuZWNsaXBzZS5wYXB5cnVzLnJvYm90aWNzLmRpYWdyYW1zL3Jlc291cmNlcy9wYWxldHRlcy9Sb2JvdGljc0Fzc2VtYmx5RGlhZ3JhbS5wYWxldHRlY29uZmlndXJhdGlvbgorKysgYi9wbHVnaW5zL2N1c3RvbWl6YXRpb24vb3JnLmVjbGlwc2UucGFweXJ1cy5yb2JvdGljcy5kaWFncmFtcy9yZXNvdXJjZXMvcGFsZXR0ZXMvUm9ib3RpY3NBc3NlbWJseURpYWdyYW0ucGFsZXR0ZWNvbmZpZ3VyYXRpb24KQEAgLTIwLDYgKzIwLDE1IEBACiAgICAgICAgIDxlbGVtZW50VHlwZSB4bWk6dHlwZT0iZWxlbWVudHR5cGVzY29uZmlndXJhdGlvbnM6U3BlY2lhbGl6YXRpb25UeXBlQ29uZmlndXJhdGlvbiIgaHJlZj0icGxhdGZvcm06L3BsdWdpbi9vcmcuZWNsaXBzZS5wYXB5cnVzLnJvYm90aWNzLmRpYWdyYW1zL3Jlc291cmNlcy9lbGVtZW50dHlwZXMvcm9ib3RpY3MuZGkuZWxlbWVudHR5cGVzY29uZmlndXJhdGlvbnMjb3JnLmVjbGlwc2UucGFweXJ1cy5yb2JvdGljcy5kaS5Db21wb25lbnRJbnN0YW5jZV9Qcm9wZXJ0eV9TaGFwZV9DTiIvPgogICAgICAgPC9lbGVtZW50RGVzY3JpcHRvcnM+CiAgICAgPC9vd25lZENvbmZpZ3VyYXRpb25zPgorICAgIDxvd25lZENvbmZpZ3VyYXRpb25zIHhtaTp0eXBlPSJwYWxldHRlY29uZmlndXJhdGlvbjpUb29sQ29uZmlndXJhdGlvbiIgaWQ9InBhbGV0dGVtb2RlbC5vcmcuZWNsaXBzZS5wYXB5cnVzLnJvYm90aWNzLmRpYWdyYW0ucm1zYXNzZW1ibHkuU3Vic3lzdGVtUG9ydCIgbGFiZWw9IlN1YnN5c3RlbSBQb3J0IiBkZXNjcmlwdGlvbj0iQ3JlYXRlIGEgY29tcG9uZW50IHBvcnQiIGtpbmQ9IkNyZWF0aW9uVG9vbCI+CisgICAgICA8aWNvbiB4bWk6dHlwZT0icGFsZXR0ZWNvbmZpZ3VyYXRpb246SWNvbkRlc2NyaXB0b3IiIHBsdWdpbklEPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnJvYm90aWNzLnByb2ZpbGUiIGljb25QYXRoPSIvaWNvbnMvQ29tcG9uZW50UG9ydC5wbmciLz4KKyAgICAgIDxlbGVtZW50RGVzY3JpcHRvcnMgeG1pOnR5cGU9InBhbGV0dGVjb25maWd1cmF0aW9uOkVsZW1lbnREZXNjcmlwdG9yIj4KKyAgICAgICAgPGVsZW1lbnRUeXBlIHhtaTp0eXBlPSJlbGVtZW50dHlwZXNjb25maWd1cmF0aW9uczpTcGVjaWFsaXphdGlvblR5cGVDb25maWd1cmF0aW9uIiBocmVmPSJwbGF0Zm9ybTovcGx1Z2luL29yZy5lY2xpcHNlLnBhcHlydXMucm9ib3RpY3MuZGlhZ3JhbXMvcmVzb3VyY2VzL2VsZW1lbnR0eXBlcy9yb2JvdGljcy5kaS5lbGVtZW50dHlwZXNjb25maWd1cmF0aW9ucyNvcmcuZWNsaXBzZS5wYXB5cnVzLnJvYm90aWNzLmRpLkNvbXBvbmVudFBvcnRfUG9ydF9TaGFwZSIvPgorICAgICAgPC9lbGVtZW50RGVzY3JpcHRvcnM+CisgICAgICA8ZWxlbWVudERlc2NyaXB0b3JzIHhtaTp0eXBlPSJwYWxldHRlY29uZmlndXJhdGlvbjpFbGVtZW50RGVzY3JpcHRvciI+CisgICAgICAgIDxlbGVtZW50VHlwZSB4bWk6dHlwZT0iZWxlbWVudHR5cGVzY29uZmlndXJhdGlvbnM6U3BlY2lhbGl6YXRpb25UeXBlQ29uZmlndXJhdGlvbiIgaHJlZj0icGxhdGZvcm06L3BsdWdpbi9vcmcuZWNsaXBzZS5wYXB5cnVzLnJvYm90aWNzLmRpYWdyYW1zL3Jlc291cmNlcy9lbGVtZW50dHlwZXMvcm9ib3RpY3MuZGkuZWxlbWVudHR5cGVzY29uZmlndXJhdGlvbnMjb3JnLmVjbGlwc2UucGFweXJ1cy5yb2JvdGljcy5kaS5Db21wb25lbnRQb3J0X1BvcnRfU2hhcGVfQ04iLz4KKyAgICAgIDwvZWxlbWVudERlc2NyaXB0b3JzPgorICAgIDwvb3duZWRDb25maWd1cmF0aW9ucz4KICAgICA8b3duZWRDb25maWd1cmF0aW9ucyB4bWk6dHlwZT0icGFsZXR0ZWNvbmZpZ3VyYXRpb246U2VwYXJhdG9yQ29uZmlndXJhdGlvbiIgaWQ9IlJNU1N5c3RlbUNvbXBvbmVudEFyY2hpdGVjdHVyZVJlbGF0aW9uc2hpcHMiIGxhYmVsPSJSZWxhdGlvbnNoaXBzIiBkZXNjcmlwdGlvbj0iU3lzdGVtIENvbXBvbmVudCBBcmNoaXRlY3R1cmUgUmVsYXRpb25zaGlwcyIvPgogICAgIDxvd25lZENvbmZpZ3VyYXRpb25zIHhtaTp0eXBlPSJwYWxldHRlY29uZmlndXJhdGlvbjpUb29sQ29uZmlndXJhdGlvbiIgaWQ9InBhbGV0dGVtb2RlbC5vcmcuZWNsaXBzZS5wYXB5cnVzLnJvYm90aWNzLmRpYWdyYW0ucm1zYXNzZW1ibHkuQ29ubmVjdHMiIGxhYmVsPSJjb25uZWN0cyIgZGVzY3JpcHRpb249IkNyZWF0ZSBhIENvbXBvbmVudEluc3RhbmNlIGNvbm5lY3RzIENvbXBvbmVudEluc3RhbmNlIGNvbm5lY3Rpb24iIGtpbmQ9IkNvbm5lY3Rpb25Ub29sIj4KICAgICAgIDxpY29uIHhtaTp0eXBlPSJwYWxldHRlY29uZmlndXJhdGlvbjpJY29uRGVzY3JpcHRvciIgcGx1Z2luSUQ9Im9yZy5lY2xpcHNlLnBhcHlydXMucm9ib3RpY3MucHJvZmlsZSIgaWNvblBhdGg9Ii9pY29ucy9Db25uZWN0cy5naWYiLz4KQEAgLTI3LDcgKzM2LDcgQEAKICAgICAgICAgPGVsZW1lbnRUeXBlIHhtaTp0eXBlPSJlbGVtZW50dHlwZXNjb25maWd1cmF0aW9uczpTcGVjaWFsaXphdGlvblR5cGVDb25maWd1cmF0aW9uIiBocmVmPSJwbGF0Zm9ybTovcGx1Z2luL29yZy5lY2xpcHNlLnBhcHlydXMucm9ib3RpY3MuZGlhZ3JhbXMvcmVzb3VyY2VzL2VsZW1lbnR0eXBlcy9yb2JvdGljcy5kaS5lbGVtZW50dHlwZXNjb25maWd1cmF0aW9ucyNfQ3FrVDREOXdFZWlzRGJHejNNeUpfUSIvPgogICAgICAgPC9lbGVtZW50RGVzY3JpcHRvcnM+CiAgICAgPC9vd25lZENvbmZpZ3VyYXRpb25zPgotICAgIDxvd25lZENvbmZpZ3VyYXRpb25zIHhtaTp0eXBlPSJwYWxldHRlY29uZmlndXJhdGlvbjpUb29sQ29uZmlndXJhdGlvbiIgaWQ9InBhbGV0dGVtb2RlbC5vcmcuZWNsaXBzZS5wYXB5cnVzLnJvYm90aWNzLmRpYWdyYW0ucm1zY29tcG9uZW50LkxpbmsiIGxhYmVsPSJMaW5rIiBkZXNjcmlwdGlvbj0iQ3JlYXRlIG5ldyBMaW5rIiBraW5kPSJDb25uZWN0aW9uVG9vbCI+CisgICAgPG93bmVkQ29uZmlndXJhdGlvbnMgeG1pOnR5cGU9InBhbGV0dGVjb25maWd1cmF0aW9uOlRvb2xDb25maWd1cmF0aW9uIiBpZD0icGFsZXR0ZW1vZGVsLm9yZy5lY2xpcHNlLnBhcHlydXMucm9ib3RpY3MuZGlhZ3JhbS5ybXNhc3NlbWJseS5MaW5rIiBsYWJlbD0iTGluayIgZGVzY3JpcHRpb249IkNyZWF0ZSBuZXcgTGluayIga2luZD0iQ29ubmVjdGlvblRvb2wiPgogICAgICAgPGljb24geG1pOnR5cGU9InBhbGV0dGVjb25maWd1cmF0aW9uOkljb25EZXNjcmlwdG9yIiBwbHVnaW5JRD0ib3JnLmVjbGlwc2UucGFweXJ1cy51bWwuZGlhZ3JhbS5jbGF6eiIgaWNvblBhdGg9Ii9pY29ucy9vYmoxNi9MaW5rLmdpZiIvPgogICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycyB4bWk6dHlwZT0icGFsZXR0ZWNvbmZpZ3VyYXRpb246RWxlbWVudERlc2NyaXB0b3IiPgogICAgICAgICA8ZWxlbWVudFR5cGUgeG1pOnR5cGU9ImVsZW1lbnR0eXBlc2NvbmZpZ3VyYXRpb25zOlNwZWNpYWxpemF0aW9uVHlwZUNvbmZpZ3VyYXRpb24iIGhyZWY9InBsYXRmb3JtOi9wbHVnaW4vb3JnLmVjbGlwc2UucGFweXJ1cy51bWwuc2VydmljZS50eXBlcy9tb2RlbC91bWxkaS5lbGVtZW50dHlwZXNjb25maWd1cmF0aW9ucyNvcmcuZWNsaXBzZS5wYXB5cnVzLnVtbGRpLkNvbW1lbnRfQW5ub3RhdGVkRWxlbWVudEVkZ2UiLz4KZGlmZiAtLWdpdCBhL3BsdWdpbnMvY3VzdG9taXphdGlvbi9vcmcuZWNsaXBzZS5wYXB5cnVzLnJvYm90aWNzLnByb2ZpbGUvbW9kZWwvcm9ib3RpY3MuZWNvcmUgYi9wbHVnaW5zL2N1c3RvbWl6YXRpb24vb3JnLmVjbGlwc2UucGFweXJ1cy5yb2JvdGljcy5wcm9maWxlL21vZGVsL3JvYm90aWNzLmVjb3JlCmluZGV4IDMwZWU5Y2QuLmZiNzQwNmMgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvY3VzdG9taXphdGlvbi9vcmcuZWNsaXBzZS5wYXB5cnVzLnJvYm90aWNzLnByb2ZpbGUvbW9kZWwvcm9ib3RpY3MuZWNvcmUKKysrIGIvcGx1Z2lucy9jdXN0b21pemF0aW9uL29yZy5lY2xpcHNlLnBhcHlydXMucm9ib3RpY3MucHJvZmlsZS9tb2RlbC9yb2JvdGljcy5lY29yZQpAQCAtMjAsMTMgKzIwLDEwIEBACiAgICAgICAgICAgdXBwZXJCb3VuZD0iLTEiIGVUeXBlPSIjLy9mdW5jdGlvbnMvRnVuY3Rpb24iIGNoYW5nZWFibGU9ImZhbHNlIiB2b2xhdGlsZT0idHJ1ZSIKICAgICAgICAgICB0cmFuc2llbnQ9InRydWUiIGRlcml2ZWQ9InRydWUiLz4KICAgICA8L2VDbGFzc2lmaWVycz4KLSAgICA8ZUNsYXNzaWZpZXJzIHhzaTp0eXBlPSJlY29yZTpFQ2xhc3MiIG5hbWU9IkNvbXBvbmVudERlZmluaXRpb24iIGVTdXBlclR5cGVzPSJwbGF0Zm9ybTovcGx1Z2luL29yZy5lY2xpcHNlLnBhcHlydXMucm9ib3RpY3MuYnBjLnByb2ZpbGUvbW9kZWwvYnBjLmVjb3JlIy8vQmxvY2siPgorICAgIDxlQ2xhc3NpZmllcnMgeHNpOnR5cGU9ImVjb3JlOkVDbGFzcyIgbmFtZT0iQ29tcG9uZW50RGVmaW5pdGlvbiIgZVN1cGVyVHlwZXM9IiMvL2NvbXBvbmVudHMvQ29tcG9uZW50T3JTeXN0ZW0iPgogICAgICAgPGVBbm5vdGF0aW9ucyBzb3VyY2U9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvZW1mLzIwMDIvR2VuTW9kZWwiPgogICAgICAgICA8ZGV0YWlscyBrZXk9ImRvY3VtZW50YXRpb24iIHZhbHVlPSJDb21wb25lbnRzIG93biBhY3Rpdml0aWVzIHZpYSB0aGUgb3duZWRCZWhhdmlvciBhdHRyaWJ1dGUgb2YgdGhlIGV4dGVuZGVkIGNsYXNzLiBUaHVzLCB0aGUgYWN0aXZpdGllcyBwcm9wZXJ0eSBpcyBkZXJpdmVkLiBBY3Rpdml0aWVzIGluIHR1cm4gcmVmZXJlbmNlIGV4aXN0aW5nIGZ1bmN0aW9ucyBhbmQgYXJlIHRodXMgcHJpbmNpcGFsbHkgYSBncm91cGluZyBtZWNoYW5pc20uIi8+CiAgICAgICA8L2VBbm5vdGF0aW9ucz4KLSAgICAgIDxlU3RydWN0dXJhbEZlYXR1cmVzIHhzaTp0eXBlPSJlY29yZTpFUmVmZXJlbmNlIiBuYW1lPSJzZXJ2aWNlcyIgb3JkZXJlZD0iZmFsc2UiCi0gICAgICAgICAgdXBwZXJCb3VuZD0iLTEiIGVUeXBlPSIjLy9jb21wb25lbnRzL0NvbXBvbmVudFNlcnZpY2UiIGNoYW5nZWFibGU9ImZhbHNlIgotICAgICAgICAgIHZvbGF0aWxlPSJ0cnVlIiB0cmFuc2llbnQ9InRydWUiIGRlcml2ZWQ9InRydWUiLz4KICAgICAgIDxlU3RydWN0dXJhbEZlYXR1cmVzIHhzaTp0eXBlPSJlY29yZTpFUmVmZXJlbmNlIiBuYW1lPSJwYXJhbWV0ZXIiIG9yZGVyZWQ9ImZhbHNlIgogICAgICAgICAgIGVUeXBlPSIjLy9wYXJhbWV0ZXJzL1BhcmFtZXRlciIgY2hhbmdlYWJsZT0iZmFsc2UiIHZvbGF0aWxlPSJ0cnVlIiB0cmFuc2llbnQ9InRydWUiCiAgICAgICAgICAgZGVyaXZlZD0idHJ1ZSIvPgpAQCAtMzQsNiArMzEsMTIgQEAKICAgICAgICAgICB1cHBlckJvdW5kPSItMSIgZVR5cGU9IiMvL2NvbXBvbmVudHMvQWN0aXZpdHkiIGNoYW5nZWFibGU9ImZhbHNlIiB2b2xhdGlsZT0idHJ1ZSIKICAgICAgICAgICB0cmFuc2llbnQ9InRydWUiIGRlcml2ZWQ9InRydWUiLz4KICAgICA8L2VDbGFzc2lmaWVycz4KKyAgICA8ZUNsYXNzaWZpZXJzIHhzaTp0eXBlPSJlY29yZTpFQ2xhc3MiIG5hbWU9IkNvbXBvbmVudE9yU3lzdGVtIiBhYnN0cmFjdD0idHJ1ZSIKKyAgICAgICAgZVN1cGVyVHlwZXM9InBsYXRmb3JtOi9wbHVnaW4vb3JnLmVjbGlwc2UucGFweXJ1cy5yb2JvdGljcy5icGMucHJvZmlsZS9tb2RlbC9icGMuZWNvcmUjLy9CbG9jayI+CisgICAgICA8ZVN0cnVjdHVyYWxGZWF0dXJlcyB4c2k6dHlwZT0iZWNvcmU6RVJlZmVyZW5jZSIgbmFtZT0ic2VydmljZXMiIG9yZGVyZWQ9ImZhbHNlIgorICAgICAgICAgIHVwcGVyQm91bmQ9Ii0xIiBlVHlwZT0iIy8vY29tcG9uZW50cy9Db21wb25lbnRTZXJ2aWNlIiBjaGFuZ2VhYmxlPSJmYWxzZSIKKyAgICAgICAgICB2b2xhdGlsZT0idHJ1ZSIgdHJhbnNpZW50PSJ0cnVlIiBkZXJpdmVkPSJ0cnVlIi8+CisgICAgPC9lQ2xhc3NpZmllcnM+CiAgICAgPGVDbGFzc2lmaWVycyB4c2k6dHlwZT0iZWNvcmU6RUNsYXNzIiBuYW1lPSJDb21wb25lbnRQb3J0IiBlU3VwZXJUeXBlcz0icGxhdGZvcm06L3BsdWdpbi9vcmcuZWNsaXBzZS5wYXB5cnVzLnJvYm90aWNzLmJwYy5wcm9maWxlL21vZGVsL2JwYy5lY29yZSMvL1BvcnQiPgogICAgICAgPGVTdHJ1Y3R1cmFsRmVhdHVyZXMgeHNpOnR5cGU9ImVjb3JlOkVSZWZlcmVuY2UiIG5hbWU9ImJhc2VfUG9ydCIgb3JkZXJlZD0iZmFsc2UiCiAgICAgICAgICAgbG93ZXJCb3VuZD0iMSIgZVR5cGU9ImVjb3JlOkVDbGFzcyBwbGF0Zm9ybTovcGx1Z2luL29yZy5lY2xpcHNlLnVtbDIudW1sL21vZGVsL1VNTC5lY29yZSMvL1BvcnQiLz4KQEAgLTU1LDE1ICs1OCwxMiBAQAogICAgICAgICAgIHRyYW5zaWVudD0idHJ1ZSIgZGVyaXZlZD0idHJ1ZSIvPgogICAgICAgPGVTdHJ1Y3R1cmFsRmVhdHVyZXMgeHNpOnR5cGU9ImVjb3JlOkVSZWZlcmVuY2UiIG5hbWU9ImJhc2VfUHJvcGVydHkiIG9yZGVyZWQ9ImZhbHNlIgogICAgICAgICAgIGxvd2VyQm91bmQ9IjEiIGVUeXBlPSJlY29yZTpFQ2xhc3MgcGxhdGZvcm06L3BsdWdpbi9vcmcuZWNsaXBzZS51bWwyLnVtbC9tb2RlbC9VTUwuZWNvcmUjLy9Qcm9wZXJ0eSIvPgotICAgICAgPGVTdHJ1Y3R1cmFsRmVhdHVyZXMgeHNpOnR5cGU9ImVjb3JlOkVSZWZlcmVuY2UiIG5hbWU9ImNvbXBkZWYiIG9yZGVyZWQ9ImZhbHNlIgotICAgICAgICAgIGVUeXBlPSIjLy9jb21wb25lbnRzL0NvbXBvbmVudERlZmluaXRpb24iIGNoYW5nZWFibGU9ImZhbHNlIiB2b2xhdGlsZT0idHJ1ZSIKKyAgICAgIDxlU3RydWN0dXJhbEZlYXR1cmVzIHhzaTp0eXBlPSJlY29yZTpFUmVmZXJlbmNlIiBuYW1lPSJjb21wZGVmT3JTeXMiIG9yZGVyZWQ9ImZhbHNlIgorICAgICAgICAgIGVUeXBlPSIjLy9jb21wb25lbnRzL0NvbXBvbmVudE9yU3lzdGVtIiBjaGFuZ2VhYmxlPSJmYWxzZSIgdm9sYXRpbGU9InRydWUiCiAgICAgICAgICAgdHJhbnNpZW50PSJ0cnVlIiBkZXJpdmVkPSJ0cnVlIi8+CiAgICAgICA8ZVN0cnVjdHVyYWxGZWF0dXJlcyB4c2k6dHlwZT0iZWNvcmU6RVJlZmVyZW5jZSIgbmFtZT0icG9ydCIgb3JkZXJlZD0iZmFsc2UiCiAgICAgICAgICAgdXBwZXJCb3VuZD0iLTEiIGVUeXBlPSIjLy9jb21wb25lbnRzL0NvbXBvbmVudFBvcnQiIGNoYW5nZWFibGU9ImZhbHNlIiB2b2xhdGlsZT0idHJ1ZSIKICAgICAgICAgICB0cmFuc2llbnQ9InRydWUiIGRlcml2ZWQ9InRydWUiLz4KLSAgICAgIDxlU3RydWN0dXJhbEZlYXR1cmVzIHhzaTp0eXBlPSJlY29yZTpFUmVmZXJlbmNlIiBuYW1lPSJhY3Rpdml0aWVzIiBvcmRlcmVkPSJmYWxzZSIKLSAgICAgICAgICB1cHBlckJvdW5kPSItMSIgZVR5cGU9IiMvL2NvbXBvbmVudHMvQWN0aXZpdHkiIGNoYW5nZWFibGU9ImZhbHNlIiB2b2xhdGlsZT0idHJ1ZSIKLSAgICAgICAgICB0cmFuc2llbnQ9InRydWUiIGRlcml2ZWQ9InRydWUiLz4KICAgICA8L2VDbGFzc2lmaWVycz4KICAgICA8ZUNsYXNzaWZpZXJzIHhzaTp0eXBlPSJlY29yZTpFQ2xhc3MiIG5hbWU9IkNvbXBvbmVudFNlcnZpY2UiIGVTdXBlclR5cGVzPSJwbGF0Zm9ybTovcGx1Z2luL29yZy5lY2xpcHNlLnBhcHlydXMucm9ib3RpY3MuYnBjLnByb2ZpbGUvbW9kZWwvYnBjLmVjb3JlIy8vRW50aXR5Ij4KICAgICAgIDxlQW5ub3RhdGlvbnMgc291cmNlPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2VtZi8yMDAyL0dlbk1vZGVsIj4KQEAgLTgxLDcgKzgxLDcgQEAKICAgICAgIDxlU3RydWN0dXJhbEZlYXR1cmVzIHhzaTp0eXBlPSJlY29yZTpFUmVmZXJlbmNlIiBuYW1lPSJiYXNlX0luc3RhbmNlU3BlY2lmaWNhdGlvbiIKICAgICAgICAgICBvcmRlcmVkPSJmYWxzZSIgbG93ZXJCb3VuZD0iMSIgZVR5cGU9ImVjb3JlOkVDbGFzcyBwbGF0Zm9ybTovcGx1Z2luL29yZy5lY2xpcHNlLnVtbDIudW1sL21vZGVsL1VNTC5lY29yZSMvL0luc3RhbmNlU3BlY2lmaWNhdGlvbiIvPgogICAgIDwvZUNsYXNzaWZpZXJzPgotICAgIDxlQ2xhc3NpZmllcnMgeHNpOnR5cGU9ImVjb3JlOkVDbGFzcyIgbmFtZT0iU3lzdGVtIiBlU3VwZXJUeXBlcz0icGxhdGZvcm06L3BsdWdpbi9vcmcuZWNsaXBzZS5wYXB5cnVzLnJvYm90aWNzLmJwYy5wcm9maWxlL21vZGVsL2JwYy5lY29yZSMvL0Jsb2NrIj4KKyAgICA8ZUNsYXNzaWZpZXJzIHhzaTp0eXBlPSJlY29yZTpFQ2xhc3MiIG5hbWU9IlN5c3RlbSIgZVN1cGVyVHlwZXM9IiMvL2NvbXBvbmVudHMvQ29tcG9uZW50T3JTeXN0ZW0iPgogICAgICAgPGVTdHJ1Y3R1cmFsRmVhdHVyZXMgeHNpOnR5cGU9ImVjb3JlOkVSZWZlcmVuY2UiIG5hbWU9Imluc3RhbmNlcyIgb3JkZXJlZD0iZmFsc2UiCiAgICAgICAgICAgdXBwZXJCb3VuZD0iLTEiIGVUeXBlPSIjLy9jb21wb25lbnRzL0NvbXBvbmVudEluc3RhbmNlIiBjaGFuZ2VhYmxlPSJmYWxzZSIKICAgICAgICAgICB2b2xhdGlsZT0idHJ1ZSIgdHJhbnNpZW50PSJ0cnVlIiBkZXJpdmVkPSJ0cnVlIi8+CmRpZmYgLS1naXQgYS9wbHVnaW5zL2N1c3RvbWl6YXRpb24vb3JnLmVjbGlwc2UucGFweXJ1cy5yb2JvdGljcy5wcm9maWxlL21vZGVsL3JvYm90aWNzLnByb2ZpbGUuZ2VubW9kZWwgYi9wbHVnaW5zL2N1c3RvbWl6YXRpb24vb3JnLmVjbGlwc2UucGFweXJ1cy5yb2JvdGljcy5wcm9maWxlL21vZGVsL3JvYm90aWNzLnByb2ZpbGUuZ2VubW9kZWwKaW5kZXggYzY5YTc1Ni4uOGMxM2UwMCAxMDA2NDQKLS0tIGEvcGx1Z2lucy9jdXN0b21pemF0aW9uL29yZy5lY2xpcHNlLnBhcHlydXMucm9ib3RpY3MucHJvZmlsZS9tb2RlbC9yb2JvdGljcy5wcm9maWxlLmdlbm1vZGVsCisrKyBiL3BsdWdpbnMvY3VzdG9taXphdGlvbi9vcmcuZWNsaXBzZS5wYXB5cnVzLnJvYm90aWNzLnByb2ZpbGUvbW9kZWwvcm9ib3RpY3MucHJvZmlsZS5nZW5tb2RlbApAQCAtNDksMTIgKzQ5LDE0IEBACiAgICAgICA8L2dlbkNsYXNzZXM+CiAgICAgICA8Z2VuQ2xhc3NlcyB4c2k6dHlwZT0iZ2VubW9kZWw6R2VuQ2xhc3MiIGVjb3JlQ2xhc3M9InJvYm90aWNzLmVjb3JlIy8vY29tcG9uZW50cy9Db21wb25lbnREZWZpbml0aW9uIj4KICAgICAgICAgPGdlbkZlYXR1cmVzIHhzaTp0eXBlPSJnZW5tb2RlbDpHZW5GZWF0dXJlIiBub3RpZnk9ImZhbHNlIiBjcmVhdGVDaGlsZD0iZmFsc2UiCi0gICAgICAgICAgICBwcm9wZXJ0eVNvcnRDaG9pY2VzPSJ0cnVlIiBlY29yZUZlYXR1cmU9ImVjb3JlOkVSZWZlcmVuY2Ugcm9ib3RpY3MuZWNvcmUjLy9jb21wb25lbnRzL0NvbXBvbmVudERlZmluaXRpb24vc2VydmljZXMiLz4KLSAgICAgICAgPGdlbkZlYXR1cmVzIHhzaTp0eXBlPSJnZW5tb2RlbDpHZW5GZWF0dXJlIiBub3RpZnk9ImZhbHNlIiBjcmVhdGVDaGlsZD0iZmFsc2UiCiAgICAgICAgICAgICBwcm9wZXJ0eVNvcnRDaG9pY2VzPSJ0cnVlIiBlY29yZUZlYXR1cmU9ImVjb3JlOkVSZWZlcmVuY2Ugcm9ib3RpY3MuZWNvcmUjLy9jb21wb25lbnRzL0NvbXBvbmVudERlZmluaXRpb24vcGFyYW1ldGVyIi8+CiAgICAgICAgIDxnZW5GZWF0dXJlcyB4c2k6dHlwZT0iZ2VubW9kZWw6R2VuRmVhdHVyZSIgbm90aWZ5PSJmYWxzZSIgY3JlYXRlQ2hpbGQ9ImZhbHNlIgogICAgICAgICAgICAgcHJvcGVydHlTb3J0Q2hvaWNlcz0idHJ1ZSIgZWNvcmVGZWF0dXJlPSJlY29yZTpFUmVmZXJlbmNlIHJvYm90aWNzLmVjb3JlIy8vY29tcG9uZW50cy9Db21wb25lbnREZWZpbml0aW9uL2FjdGl2aXRpZXMiLz4KICAgICAgIDwvZ2VuQ2xhc3Nlcz4KKyAgICAgIDxnZW5DbGFzc2VzIHhzaTp0eXBlPSJnZW5tb2RlbDpHZW5DbGFzcyIgaW1hZ2U9ImZhbHNlIiBlY29yZUNsYXNzPSJyb2JvdGljcy5lY29yZSMvL2NvbXBvbmVudHMvQ29tcG9uZW50T3JTeXN0ZW0iPgorICAgICAgICA8Z2VuRmVhdHVyZXMgeHNpOnR5cGU9Imdlbm1vZGVsOkdlbkZlYXR1cmUiIHByb3BlcnR5PSJSZWFkb25seSIgbm90aWZ5PSJmYWxzZSIKKyAgICAgICAgICAgIGNyZWF0ZUNoaWxkPSJmYWxzZSIgZWNvcmVGZWF0dXJlPSJlY29yZTpFUmVmZXJlbmNlIHJvYm90aWNzLmVjb3JlIy8vY29tcG9uZW50cy9Db21wb25lbnRPclN5c3RlbS9zZXJ2aWNlcyIvPgorICAgICAgPC9nZW5DbGFzc2VzPgogICAgICAgPGdlbkNsYXNzZXMgeHNpOnR5cGU9Imdlbm1vZGVsOkdlbkNsYXNzIiBlY29yZUNsYXNzPSJyb2JvdGljcy5lY29yZSMvL2NvbXBvbmVudHMvQ29tcG9uZW50UG9ydCI+CiAgICAgICAgIDxnZW5GZWF0dXJlcyB4c2k6dHlwZT0iZ2VubW9kZWw6R2VuRmVhdHVyZSIgbm90aWZ5PSJmYWxzZSIgY3JlYXRlQ2hpbGQ9ImZhbHNlIgogICAgICAgICAgICAgcHJvcGVydHlTb3J0Q2hvaWNlcz0idHJ1ZSIgZWNvcmVGZWF0dXJlPSJlY29yZTpFUmVmZXJlbmNlIHJvYm90aWNzLmVjb3JlIy8vY29tcG9uZW50cy9Db21wb25lbnRQb3J0L2Jhc2VfUG9ydCIvPgpAQCAtNzEsMTEgKzczLDkgQEAKICAgICAgICAgPGdlbkZlYXR1cmVzIHhzaTp0eXBlPSJnZW5tb2RlbDpHZW5GZWF0dXJlIiBub3RpZnk9ImZhbHNlIiBjcmVhdGVDaGlsZD0iZmFsc2UiCiAgICAgICAgICAgICBwcm9wZXJ0eVNvcnRDaG9pY2VzPSJ0cnVlIiBlY29yZUZlYXR1cmU9ImVjb3JlOkVSZWZlcmVuY2Ugcm9ib3RpY3MuZWNvcmUjLy9jb21wb25lbnRzL0NvbXBvbmVudEluc3RhbmNlL2Jhc2VfUHJvcGVydHkiLz4KICAgICAgICAgPGdlbkZlYXR1cmVzIHhzaTp0eXBlPSJnZW5tb2RlbDpHZW5GZWF0dXJlIiBwcm9wZXJ0eT0iUmVhZG9ubHkiIG5vdGlmeT0iZmFsc2UiCi0gICAgICAgICAgICBjcmVhdGVDaGlsZD0iZmFsc2UiIGVjb3JlRmVhdHVyZT0iZWNvcmU6RVJlZmVyZW5jZSByb2JvdGljcy5lY29yZSMvL2NvbXBvbmVudHMvQ29tcG9uZW50SW5zdGFuY2UvY29tcGRlZiIvPgorICAgICAgICAgICAgY3JlYXRlQ2hpbGQ9ImZhbHNlIiBlY29yZUZlYXR1cmU9ImVjb3JlOkVSZWZlcmVuY2Ugcm9ib3RpY3MuZWNvcmUjLy9jb21wb25lbnRzL0NvbXBvbmVudEluc3RhbmNlL2NvbXBkZWZPclN5cyIvPgogICAgICAgICA8Z2VuRmVhdHVyZXMgeHNpOnR5cGU9Imdlbm1vZGVsOkdlbkZlYXR1cmUiIHByb3BlcnR5PSJSZWFkb25seSIgbm90aWZ5PSJmYWxzZSIKICAgICAgICAgICAgIGNyZWF0ZUNoaWxkPSJmYWxzZSIgZWNvcmVGZWF0dXJlPSJlY29yZTpFUmVmZXJlbmNlIHJvYm90aWNzLmVjb3JlIy8vY29tcG9uZW50cy9Db21wb25lbnRJbnN0YW5jZS9wb3J0Ii8+Ci0gICAgICAgIDxnZW5GZWF0dXJlcyB4c2k6dHlwZT0iZ2VubW9kZWw6R2VuRmVhdHVyZSIgcHJvcGVydHk9IlJlYWRvbmx5IiBub3RpZnk9ImZhbHNlIgotICAgICAgICAgICAgY3JlYXRlQ2hpbGQ9ImZhbHNlIiBlY29yZUZlYXR1cmU9ImVjb3JlOkVSZWZlcmVuY2Ugcm9ib3RpY3MuZWNvcmUjLy9jb21wb25lbnRzL0NvbXBvbmVudEluc3RhbmNlL2FjdGl2aXRpZXMiLz4KICAgICAgIDwvZ2VuQ2xhc3Nlcz4KICAgICAgIDxnZW5DbGFzc2VzIHhzaTp0eXBlPSJnZW5tb2RlbDpHZW5DbGFzcyIgZWNvcmVDbGFzcz0icm9ib3RpY3MuZWNvcmUjLy9jb21wb25lbnRzL0NvbXBvbmVudFNlcnZpY2UiPgogICAgICAgICA8Z2VuRmVhdHVyZXMgeHNpOnR5cGU9Imdlbm1vZGVsOkdlbkZlYXR1cmUiIG5vdGlmeT0iZmFsc2UiIGNyZWF0ZUNoaWxkPSJmYWxzZSIKZGlmZiAtLWdpdCBhL3BsdWdpbnMvY3VzdG9taXphdGlvbi9vcmcuZWNsaXBzZS5wYXB5cnVzLnJvYm90aWNzLnByb2ZpbGUvbW9kZWwvcm9ib3RpY3MucHJvZmlsZS5ub3RhdGlvbiBiL3BsdWdpbnMvY3VzdG9taXphdGlvbi9vcmcuZWNsaXBzZS5wYXB5cnVzLnJvYm90aWNzLnByb2ZpbGUvbW9kZWwvcm9ib3RpY3MucHJvZmlsZS5ub3RhdGlvbgppbmRleCA1N2M1Mjc5Li43ODdkMzcxIDEwMDY0NAotLS0gYS9wbHVnaW5zL2N1c3RvbWl6YXRpb24vb3JnLmVjbGlwc2UucGFweXJ1cy5yb2JvdGljcy5wcm9maWxlL21vZGVsL3JvYm90aWNzLnByb2ZpbGUubm90YXRpb24KKysrIGIvcGx1Z2lucy9jdXN0b21pemF0aW9uL29yZy5lY2xpcHNlLnBhcHlydXMucm9ib3RpY3MucHJvZmlsZS9tb2RlbC9yb2JvdGljcy5wcm9maWxlLm5vdGF0aW9uCkBAIC0xMDIsMTQgKzEwMiw2IEBACiAgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpTaGFwZSIgeG1pOmlkPSJfTDM1QWdKWjJFZWVxMWY4aEdnS1Z6QSIgdHlwZT0iU3RlcmVvdHlwZV9TaGFwZSI+CiAgICAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOkRlY29yYXRpb25Ob2RlIiB4bWk6aWQ9Il9MNEE4VUpaMkVlZXExZjhoR2dLVnpBIiB0eXBlPSJTdGVyZW90eXBlX05hbWVMYWJlbCIvPgogICAgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpCYXNpY0NvbXBhcnRtZW50IiB4bWk6aWQ9Il9MNEE4VVpaMkVlZXExZjhoR2dLVnpBIiB0eXBlPSJTdGVyZW90eXBlX0F0dHJpYnV0ZUNvbXBhcnRtZW50Ij4KLSAgICAgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpTaGFwZSIgeG1pOmlkPSJfM21PcmtQdjJFZWUya09nWGNHaDE4ZyIgdHlwZT0iUHJvcGVydHlfQ2xhc3NBdHRyaWJ1dGVMYWJlbCI+Ci0gICAgICAgICAgPGVsZW1lbnQgeG1pOnR5cGU9InVtbDpQcm9wZXJ0eSIgaHJlZj0icm9ib3RpY3MucHJvZmlsZS51bWwjX25pQWFBdnYyRWVlMmtPZ1hjR2gxOGciLz4KLSAgICAgICAgICA8bGF5b3V0Q29uc3RyYWludCB4bWk6dHlwZT0ibm90YXRpb246TG9jYXRpb24iIHhtaTppZD0iXzNtT3JrZnYyRWVlMmtPZ1hjR2gxOGciLz4KLSAgICAgICAgPC9jaGlsZHJlbj4KLSAgICAgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpTaGFwZSIgeG1pOmlkPSJfM21hUndQdjJFZWUya09nWGNHaDE4ZyIgdHlwZT0iUHJvcGVydHlfQ2xhc3NBdHRyaWJ1dGVMYWJlbCI+Ci0gICAgICAgICAgPGVsZW1lbnQgeG1pOnR5cGU9InVtbDpQcm9wZXJ0eSIgaHJlZj0icm9ib3RpY3MucHJvZmlsZS51bWwjX0k0REs4UHZ5RWVlMmtPZ1hjR2gxOGciLz4KLSAgICAgICAgICA8bGF5b3V0Q29uc3RyYWludCB4bWk6dHlwZT0ibm90YXRpb246TG9jYXRpb24iIHhtaTppZD0iXzNtYVJ3ZnYyRWVlMmtPZ1hjR2gxOGciLz4KLSAgICAgICAgPC9jaGlsZHJlbj4KICAgICAgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpTaGFwZSIgeG1pOmlkPSJfM21uR0VQdjJFZWUya09nWGNHaDE4ZyIgdHlwZT0iUHJvcGVydHlfQ2xhc3NBdHRyaWJ1dGVMYWJlbCI+CiAgICAgICAgICAgPGVsZW1lbnQgeG1pOnR5cGU9InVtbDpQcm9wZXJ0eSIgaHJlZj0icm9ib3RpY3MucHJvZmlsZS51bWwjX1llbmlFdnZ3RWVlR0FPMm1fV1JtRGciLz4KICAgICAgICAgICA8bGF5b3V0Q29uc3RyYWludCB4bWk6dHlwZT0ibm90YXRpb246TG9jYXRpb24iIHhtaTppZD0iXzNtbkdFZnYyRWVlMmtPZ1hjR2gxOGciLz4KQEAgLTEzMCw3ICsxMjIsNyBAQAogICAgICAgICA8bGF5b3V0Q29uc3RyYWludCB4bWk6dHlwZT0ibm90YXRpb246Qm91bmRzIiB4bWk6aWQ9Il9MNEJqWkpaMkVlZXExZjhoR2dLVnpBIi8+CiAgICAgICA8L2NoaWxkcmVuPgogICAgICAgPGVsZW1lbnQgeG1pOnR5cGU9InVtbDpTdGVyZW90eXBlIiBocmVmPSJyb2JvdGljcy5wcm9maWxlLnVtbCNfTDN3ZG9KWjJFZWVxMWY4aEdnS1Z6QSIvPgotICAgICAgPGxheW91dENvbnN0cmFpbnQgeG1pOnR5cGU9Im5vdGF0aW9uOkJvdW5kcyIgeG1pOmlkPSJfTDM1QWdaWjJFZWVxMWY4aEdnS1Z6QSIgeD0iNTAwIiB5PSIzMDAiIHdpZHRoPSIyODEiIGhlaWdodD0iMTYxIi8+CisgICAgICA8bGF5b3V0Q29uc3RyYWludCB4bWk6dHlwZT0ibm90YXRpb246Qm91bmRzIiB4bWk6aWQ9Il9MMzVBZ1paMkVlZXExZjhoR2dLVnpBIiB4PSI0NjAiIHk9IjM4MCIgd2lkdGg9IjIwMSIgaGVpZ2h0PSI4MSIvPgogICAgIDwvY2hpbGRyZW4+CiAgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpTaGFwZSIgeG1pOmlkPSJfUGNza0FKWjJFZWVxMWY4aEdnS1Z6QSIgdHlwZT0iU3RlcmVvdHlwZV9TaGFwZSIgZ3JhZGllbnQ9IjE2Nzc3MjE1LCAtMSwgMCI+CiAgICAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOkRlY29yYXRpb25Ob2RlIiB4bWk6aWQ9Il9QY3NrQXBaMkVlZXExZjhoR2dLVnpBIiB0eXBlPSJTdGVyZW90eXBlX05hbWVMYWJlbCIvPgpAQCAtMjU2LDcgKzI0OCw3IEBACiAgICAgICAgIDxsYXlvdXRDb25zdHJhaW50IHhtaTp0eXBlPSJub3RhdGlvbjpCb3VuZHMiIHhtaTppZD0iX2xaMnAxUHc2RWVlMmtPZ1hjR2gxOGciLz4KICAgICAgIDwvY2hpbGRyZW4+CiAgICAgICA8ZWxlbWVudCB4bWk6dHlwZT0idW1sOlN0ZXJlb3R5cGUiIGhyZWY9InJvYm90aWNzLnByb2ZpbGUudW1sI19Wb2VKd0paMkVlZXExZjhoR2dLVnpBIi8+Ci0gICAgICA8bGF5b3V0Q29uc3RyYWludCB4bWk6dHlwZT0ibm90YXRpb246Qm91bmRzIiB4bWk6aWQ9Il9sWjFic2Z3NkVlZTJrT2dYY0doMThnIiB4PSIyMDAiIHk9IjMwMCIgd2lkdGg9IjI0MSIgaGVpZ2h0PSIxNjEiLz4KKyAgICAgIDxsYXlvdXRDb25zdHJhaW50IHhtaTp0eXBlPSJub3RhdGlvbjpCb3VuZHMiIHhtaTppZD0iX2xaMWJzZnc2RWVlMmtPZ1hjR2gxOGciIHg9IjIwMCIgeT0iMzAwIiB3aWR0aD0iMjAxIiBoZWlnaHQ9IjE2MSIvPgogICAgIDwvY2hpbGRyZW4+CiAgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpTaGFwZSIgeG1pOmlkPSJfczFqZkFQdzlFZWUya09nWGNHaDE4ZyIgdHlwZT0iU3RlcmVvdHlwZV9TaGFwZSIgZ3JhZGllbnQ9IjE2Nzc3MjE1LCAtMSwgMCI+CiAgICAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOkRlY29yYXRpb25Ob2RlIiB4bWk6aWQ9Il9zMWtHRVB3OUVlZTJrT2dYY0doMThnIiB0eXBlPSJTdGVyZW90eXBlX05hbWVMYWJlbCIvPgpAQCAtMzAxLDcgKzI5Myw3IEBACiAgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpTaGFwZSIgeG1pOmlkPSJfZWVIQzRQdy1FZWUya09nWGNHaDE4ZyIgdHlwZT0iQ29tbWVudF9TaGFwZSI+CiAgICAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOkRlY29yYXRpb25Ob2RlIiB4bWk6aWQ9Il9lZUhwOFB3LUVlZTJrT2dYY0doMThnIiB0eXBlPSJDb21tZW50X0JvZHlMYWJlbCIvPgogICAgICAgPGVsZW1lbnQgeG1pOnR5cGU9InVtbDpDb21tZW50IiBocmVmPSJyb2JvdGljcy5wcm9maWxlLnVtbCNfRlB4TG9KYm5FZWVNNy1Fa0djWmlzdyIvPgotICAgICAgPGxheW91dENvbnN0cmFpbnQgeG1pOnR5cGU9Im5vdGF0aW9uOkJvdW5kcyIgeG1pOmlkPSJfZWVIQzRmdy1FZWUya09nWGNHaDE4ZyIgeD0iMjQwIiB5PSI1ODAiIHdpZHRoPSI0NjEiIGhlaWdodD0iMTIxIi8+CisgICAgICA8bGF5b3V0Q29uc3RyYWludCB4bWk6dHlwZT0ibm90YXRpb246Qm91bmRzIiB4bWk6aWQ9Il9lZUhDNGZ3LUVlZTJrT2dYY0doMThnIiB4PSIyNDAiIHk9IjU4MCIgd2lkdGg9IjQ2MSIgaGVpZ2h0PSIxMDEiLz4KICAgICA8L2NoaWxkcmVuPgogICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246U2hhcGUiIHhtaTppZD0iX21aeFdZQk0tRWVpLUNNVkxZMVNtZGciIHR5cGU9IlN0ZXJlb3R5cGVfU2hhcGUiIGZpbGxDb2xvcj0iMTQwMTI4NjciPgogICAgICAgPGVBbm5vdGF0aW9ucyB4bWk6dHlwZT0iZWNvcmU6RUFubm90YXRpb24iIHhtaTppZD0iXzI3R0JZQk5ERWVpLUNNVkxZMVNtZGciIHNvdXJjZT0iUXVhbGlmaWVkTmFtZSI+CkBAIC0zMjEsNyArMzEzLDcgQEAKICAgICAgICAgPGxheW91dENvbnN0cmFpbnQgeG1pOnR5cGU9Im5vdGF0aW9uOkJvdW5kcyIgeG1pOmlkPSJfbVp6eXFoTS1FZWktQ01WTFkxU21kZyIvPgogICAgICAgPC9jaGlsZHJlbj4KICAgICAgIDxlbGVtZW50IHhtaTp0eXBlPSJ1bWw6U3RlcmVvdHlwZSIgaHJlZj0icGF0aG1hcDovL1JPQk9USUNTX0JQQ19QUk9GSUxFUy9icGMucHJvZmlsZS51bWwjX3RRellvS2dmRWVleHJiakN2b2dsQ1EiLz4KLSAgICAgIDxsYXlvdXRDb25zdHJhaW50IHhtaTp0eXBlPSJub3RhdGlvbjpCb3VuZHMiIHhtaTppZD0iX21aeFdZUk0tRWVpLUNNVkxZMVNtZGciIHg9IjIwMCIgeT0iMTQwIiB3aWR0aD0iNTgxIiBoZWlnaHQ9IjEwMCIvPgorICAgICAgPGxheW91dENvbnN0cmFpbnQgeG1pOnR5cGU9Im5vdGF0aW9uOkJvdW5kcyIgeG1pOmlkPSJfbVp4V1lSTS1FZWktQ01WTFkxU21kZyIgeD0iMjAwIiB5PSIxNDAiIHdpZHRoPSI1ODEiIGhlaWdodD0iODEiLz4KICAgICA8L2NoaWxkcmVuPgogICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246U2hhcGUiIHhtaTppZD0iX1FvdTJnQk1fRWVpLUNNVkxZMVNtZGciIHR5cGU9IlN0ZXJlb3R5cGVfU2hhcGUiIGdyYWRpZW50PSIxNjc3NzIxNSwgLTEsIDAiPgogICAgICAgPGVBbm5vdGF0aW9ucyB4bWk6dHlwZT0iZWNvcmU6RUFubm90YXRpb24iIHhtaTppZD0iX3o2TnFVQk5ERWVpLUNNVkxZMVNtZGciIHNvdXJjZT0iUXVhbGlmaWVkTmFtZSI+CkBAIC00MjgsNyArNDIwLDcgQEAKICAgICAgICAgPGxheW91dENvbnN0cmFpbnQgeG1pOnR5cGU9Im5vdGF0aW9uOkJvdW5kcyIgeG1pOmlkPSJfcUMxZ1hEbTFFZWktLVpzZktXYUZ0dyIvPgogICAgICAgPC9jaGlsZHJlbj4KICAgICAgIDxlbGVtZW50IHhtaTp0eXBlPSJ1bWw6U3RlcmVvdHlwZSIgaHJlZj0icm9ib3RpY3MucHJvZmlsZS51bWwjXzFWU1FnRG1yRWVpLS1ac2ZLV2FGdHciLz4KLSAgICAgIDxsYXlvdXRDb25zdHJhaW50IHhtaTp0eXBlPSJub3RhdGlvbjpCb3VuZHMiIHhtaTppZD0iX3FDMWdVVG0xRWVpLS1ac2ZLV2FGdHciIHg9IjUwMCIgeT0iNTAwIiB3aWR0aD0iMjgxIiBoZWlnaHQ9IjYxIi8+CisgICAgICA8bGF5b3V0Q29uc3RyYWludCB4bWk6dHlwZT0ibm90YXRpb246Qm91bmRzIiB4bWk6aWQ9Il9xQzFnVVRtMUVlaS0tWnNmS1dhRnR3IiB4PSI0NjAiIHk9IjUwMCIgd2lkdGg9IjI4MSIgaGVpZ2h0PSI2MSIvPgogICAgIDwvY2hpbGRyZW4+CiAgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpTaGFwZSIgeG1pOmlkPSJfS3gxUUFBbnFFZXFzYUkyaUZ0Vl8zZyIgdHlwZT0iU3RlcmVvdHlwZV9TaGFwZSI+CiAgICAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOkRlY29yYXRpb25Ob2RlIiB4bWk6aWQ9Il9LeDNGTUFucUVlcXNhSTJpRnRWXzNnIiB0eXBlPSJTdGVyZW90eXBlX05hbWVMYWJlbCIvPgpAQCAtNDU5LDYgKzQ1MSw1MiBAQAogICAgICAgPGVsZW1lbnQgeG1pOnR5cGU9InVtbDpTdGVyZW90eXBlIiBocmVmPSJyb2JvdGljcy5wcm9maWxlLnVtbCNfS3hxUTRBbnFFZXFzYUkyaUZ0Vl8zZyIvPgogICAgICAgPGxheW91dENvbnN0cmFpbnQgeG1pOnR5cGU9Im5vdGF0aW9uOkJvdW5kcyIgeG1pOmlkPSJfS3gxUUFRbnFFZXFzYUkyaUZ0Vl8zZyIgeD0iOTIwIiB5PSIxNDAiIHdpZHRoPSIxNjEiIGhlaWdodD0iMTAxIi8+CiAgICAgPC9jaGlsZHJlbj4KKyAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOlNoYXBlIiB4bWk6aWQ9Il9EM2V4QUlRcEVldWhnNGIweWZ1NGtBIiB0eXBlPSJTdGVyZW90eXBlX1NoYXBlIj4KKyAgICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246RGVjb3JhdGlvbk5vZGUiIHhtaTppZD0iX0QzZl9JSVFwRWV1aGc0YjB5ZnU0a0EiIHR5cGU9IlN0ZXJlb3R5cGVfTmFtZUxhYmVsIi8+CisgICAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOkJhc2ljQ29tcGFydG1lbnQiIHhtaTppZD0iX0QzZl9JWVFwRWV1aGc0YjB5ZnU0a0EiIHR5cGU9IlN0ZXJlb3R5cGVfQXR0cmlidXRlQ29tcGFydG1lbnQiPgorICAgICAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOlNoYXBlIiB4bWk6aWQ9Il9RZmRsTUlRcEVldWhnNGIweWZ1NGtBIiB0eXBlPSJQcm9wZXJ0eV9DbGFzc0F0dHJpYnV0ZUxhYmVsIj4KKyAgICAgICAgICA8ZWxlbWVudCB4bWk6dHlwZT0idW1sOlByb3BlcnR5IiBocmVmPSJyb2JvdGljcy5wcm9maWxlLnVtbCNfbmlBYUF2djJFZWUya09nWGNHaDE4ZyIvPgorICAgICAgICAgIDxsYXlvdXRDb25zdHJhaW50IHhtaTp0eXBlPSJub3RhdGlvbjpMb2NhdGlvbiIgeG1pOmlkPSJfUWZkbE1ZUXBFZXVoZzRiMHlmdTRrQSIvPgorICAgICAgICA8L2NoaWxkcmVuPgorICAgICAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOlNoYXBlIiB4bWk6aWQ9Il8zbWFSd1B2MkVlZTJrT2dYY0doMThnIiB0eXBlPSJQcm9wZXJ0eV9DbGFzc0F0dHJpYnV0ZUxhYmVsIj4KKyAgICAgICAgICA8ZWxlbWVudCB4bWk6dHlwZT0idW1sOlByb3BlcnR5IiBocmVmPSJyb2JvdGljcy5wcm9maWxlLnVtbCNfSTRESzhQdnlFZWUya09nWGNHaDE4ZyIvPgorICAgICAgICAgIDxsYXlvdXRDb25zdHJhaW50IHhtaTp0eXBlPSJub3RhdGlvbjpMb2NhdGlvbiIgeG1pOmlkPSJfM21hUndmdjJFZWUya09nWGNHaDE4ZyIvPgorICAgICAgICA8L2NoaWxkcmVuPgorICAgICAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpUaXRsZVN0eWxlIiB4bWk6aWQ9Il9EM2ZfSW9RcEVldWhnNGIweWZ1NGtBIi8+CisgICAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOlNvcnRpbmdTdHlsZSIgeG1pOmlkPSJfRDNmX0k0UXBFZXVoZzRiMHlmdTRrQSIvPgorICAgICAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpGaWx0ZXJpbmdTdHlsZSIgeG1pOmlkPSJfRDNmX0pJUXBFZXVoZzRiMHlmdTRrQSIvPgorICAgICAgICA8bGF5b3V0Q29uc3RyYWludCB4bWk6dHlwZT0ibm90YXRpb246Qm91bmRzIiB4bWk6aWQ9Il9EM2ZfSllRcEVldWhnNGIweWZ1NGtBIi8+CisgICAgICA8L2NoaWxkcmVuPgorICAgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpCYXNpY0NvbXBhcnRtZW50IiB4bWk6aWQ9Il9EM2ZfSm9RcEVldWhnNGIweWZ1NGtBIiB0eXBlPSJTdGVyZW90eXBlX09wZXJhdGlvbkNvbXBhcnRtZW50Ij4KKyAgICAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246VGl0bGVTdHlsZSIgeG1pOmlkPSJfRDNmX0o0UXBFZXVoZzRiMHlmdTRrQSIvPgorICAgICAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpTb3J0aW5nU3R5bGUiIHhtaTppZD0iX0QzZl9LSVFwRWV1aGc0YjB5ZnU0a0EiLz4KKyAgICAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246RmlsdGVyaW5nU3R5bGUiIHhtaTppZD0iX0QzZl9LWVFwRWV1aGc0YjB5ZnU0a0EiLz4KKyAgICAgICAgPGxheW91dENvbnN0cmFpbnQgeG1pOnR5cGU9Im5vdGF0aW9uOkJvdW5kcyIgeG1pOmlkPSJfRDNmX0tvUXBFZXVoZzRiMHlmdTRrQSIvPgorICAgICAgPC9jaGlsZHJlbj4KKyAgICAgIDxlbGVtZW50IHhtaTp0eXBlPSJ1bWw6U3RlcmVvdHlwZSIgaHJlZj0icm9ib3RpY3MucHJvZmlsZS51bWwjX0QzRDZRSVFwRWV1aGc0YjB5ZnU0a0EiLz4KKyAgICAgIDxsYXlvdXRDb25zdHJhaW50IHhtaTp0eXBlPSJub3RhdGlvbjpCb3VuZHMiIHhtaTppZD0iX0QzZXhBWVFwRWV1aGc0YjB5ZnU0a0EiIHg9IjQ2MCIgeT0iMjYwIiB3aWR0aD0iMzgxIiBoZWlnaHQ9IjgxIi8+CisgICAgPC9jaGlsZHJlbj4KKyAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOlNoYXBlIiB4bWk6aWQ9Il9maTZ5UUlmWEVldUd0ZFdkc0Q0LUVRIiB0eXBlPSJTdGVyZW90eXBlX1NoYXBlIj4KKyAgICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246RGVjb3JhdGlvbk5vZGUiIHhtaTppZD0iX2ZpNnlRb2ZYRWV1R3RkV2RzRDQtRVEiIHR5cGU9IlN0ZXJlb3R5cGVfTmFtZUxhYmVsIi8+CisgICAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOkJhc2ljQ29tcGFydG1lbnQiIHhtaTppZD0iX2ZpNnlRNGZYRWV1R3RkV2RzRDQtRVEiIHR5cGU9IlN0ZXJlb3R5cGVfQXR0cmlidXRlQ29tcGFydG1lbnQiPgorICAgICAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOlNoYXBlIiB4bWk6aWQ9Il8xaWo1WUlmWEVldUd0ZFdkc0Q0LUVRIiB0eXBlPSJQcm9wZXJ0eV9DbGFzc0F0dHJpYnV0ZUxhYmVsIj4KKyAgICAgICAgICA8ZWxlbWVudCB4bWk6dHlwZT0idW1sOlByb3BlcnR5IiBocmVmPSJyb2JvdGljcy5wcm9maWxlLnVtbCNfNWs0aEV4U1dFZWktQ01WTFkxU21kZyIvPgorICAgICAgICAgIDxsYXlvdXRDb25zdHJhaW50IHhtaTp0eXBlPSJub3RhdGlvbjpMb2NhdGlvbiIgeG1pOmlkPSJfMWlqNVlZZlhFZXVHdGRXZHNENC1FUSIvPgorICAgICAgICA8L2NoaWxkcmVuPgorICAgICAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpUaXRsZVN0eWxlIiB4bWk6aWQ9Il9maTZ5UklmWEVldUd0ZFdkc0Q0LUVRIi8+CisgICAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOlNvcnRpbmdTdHlsZSIgeG1pOmlkPSJfZmk2eVJZZlhFZXVHdGRXZHNENC1FUSIvPgorICAgICAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpGaWx0ZXJpbmdTdHlsZSIgeG1pOmlkPSJfZmk2eVJvZlhFZXVHdGRXZHNENC1FUSIvPgorICAgICAgICA8bGF5b3V0Q29uc3RyYWludCB4bWk6dHlwZT0ibm90YXRpb246Qm91bmRzIiB4bWk6aWQ9Il9maTZ5UjRmWEVldUd0ZFdkc0Q0LUVRIi8+CisgICAgICA8L2NoaWxkcmVuPgorICAgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpCYXNpY0NvbXBhcnRtZW50IiB4bWk6aWQ9Il9maTZ5U0lmWEVldUd0ZFdkc0Q0LUVRIiB0eXBlPSJTdGVyZW90eXBlX09wZXJhdGlvbkNvbXBhcnRtZW50Ij4KKyAgICAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246VGl0bGVTdHlsZSIgeG1pOmlkPSJfZmk2eVNZZlhFZXVHdGRXZHNENC1FUSIvPgorICAgICAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpTb3J0aW5nU3R5bGUiIHhtaTppZD0iX2ZpNnlTb2ZYRWV1R3RkV2RzRDQtRVEiLz4KKyAgICAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246RmlsdGVyaW5nU3R5bGUiIHhtaTppZD0iX2ZpNnlTNGZYRWV1R3RkV2RzRDQtRVEiLz4KKyAgICAgICAgPGxheW91dENvbnN0cmFpbnQgeG1pOnR5cGU9Im5vdGF0aW9uOkJvdW5kcyIgeG1pOmlkPSJfZmk2eVRJZlhFZXVHdGRXZHNENC1FUSIvPgorICAgICAgPC9jaGlsZHJlbj4KKyAgICAgIDxlbGVtZW50IHhtaTp0eXBlPSJ1bWw6U3RlcmVvdHlwZSIgaHJlZj0icm9ib3RpY3MucHJvZmlsZS51bWwjX3NwX19BQlNXRWVpLUNNVkxZMVNtZGciLz4KKyAgICAgIDxsYXlvdXRDb25zdHJhaW50IHhtaTp0eXBlPSJub3RhdGlvbjpCb3VuZHMiIHhtaTppZD0iX2ZpNnlRWWZYRWV1R3RkV2RzRDQtRVEiIHg9IjY4MCIgeT0iMzgwIiB3aWR0aD0iMTYxIiBoZWlnaHQ9IjgxIi8+CisgICAgPC9jaGlsZHJlbj4KICAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpTdHJpbmdWYWx1ZVN0eWxlIiB4bWk6aWQ9Il9HTnVUQVpaMkVlZXExZjhoR2dLVnpBIiBuYW1lPSJkaWFncmFtX2NvbXBhdGliaWxpdHlfdmVyc2lvbiIgc3RyaW5nVmFsdWU9IjEuNC4wIi8+CiAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246RGlhZ3JhbVN0eWxlIiB4bWk6aWQ9Il9HTnVUQXBaMkVlZXExZjhoR2dLVnpBIi8+CiAgICAgPHN0eWxlcyB4bWk6dHlwZT0ic3R5bGU6UGFweXJ1c0RpYWdyYW1TdHlsZSIgeG1pOmlkPSJfR051VEE1WjJFZWVxMWY4aEdnS1Z6QSIgZGlhZ3JhbUtpbmRJZD0ib3JnLmVjbGlwc2UucGFweXJ1cy51bWwuZGlhZ3JhbS5wcm9maWxlIj4KQEAgLTUxNiw0MCArNTU0LDkgQEAKICAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOkZvbnRTdHlsZSIgeG1pOmlkPSJfWWdmS1VmdndFZWVHQU8ybV9XUm1EZyIvPgogICAgICAgPGVsZW1lbnQgeG1pOnR5cGU9InVtbDpBc3NvY2lhdGlvbiIgaHJlZj0icm9ib3RpY3MucHJvZmlsZS51bWwjX1llbTdBUHZ3RWVlR0FPMm1fV1JtRGciLz4KICAgICAgIDxiZW5kcG9pbnRzIHhtaTp0eXBlPSJub3RhdGlvbjpSZWxhdGl2ZUJlbmRwb2ludHMiIHhtaTppZD0iX1lnZktVdnZ3RWVlR0FPMm1fV1JtRGciIHBvaW50cz0iWzY4MCwgNTAxLCAtNjQzOTg0LCAtNjQzOTg0XSRbNjgwLCA1MjAsIC02NDM5ODQsIC02NDM5ODRdJFs3MDAsIDUyMCwgLTY0Mzk4NCwgLTY0Mzk4NF0kWzcwMCwgNTQwLCAtNjQzOTg0LCAtNjQzOTg0XSIvPgotICAgICAgPHNvdXJjZUFuY2hvciB4bWk6dHlwZT0ibm90YXRpb246SWRlbnRpdHlBbmNob3IiIHhtaTppZD0iX1lqcm9RUHZ3RWVlR0FPMm1fV1JtRGciIGlkPSIoMC40OTgyMjA2NDA1NjkzOTUsMS4wKSIvPgorICAgICAgPHNvdXJjZUFuY2hvciB4bWk6dHlwZT0ibm90YXRpb246SWRlbnRpdHlBbmNob3IiIHhtaTppZD0iX1lqcm9RUHZ3RWVlR0FPMm1fV1JtRGciIGlkPSIoMC42OTY1MTc0MTI5MzUzMjM0LDEuMCkiLz4KICAgICAgIDx0YXJnZXRBbmNob3IgeG1pOnR5cGU9Im5vdGF0aW9uOklkZW50aXR5QW5jaG9yIiB4bWk6aWQ9Il9ZanJvUWZ2d0VlZUdBTzJtX1dSbURnIiBpZD0iKDAuNDk4MjIwNjQwNTY5Mzk1LDAuMCkiLz4KICAgICA8L2VkZ2VzPgotICAgIDxlZGdlcyB4bWk6dHlwZT0ibm90YXRpb246Q29ubmVjdG9yIiB4bWk6aWQ9Il9JNTBGZ1B2eUVlZTJrT2dYY0doMThnIiB0eXBlPSJBc3NvY2lhdGlvbl9FZGdlIiBzb3VyY2U9Il9MMzVBZ0paMkVlZXExZjhoR2dLVnpBIiB0YXJnZXQ9Il9QY3NrQUpaMkVlZXExZjhoR2dLVnpBIiByb3V0aW5nPSJSZWN0aWxpbmVhciI+Ci0gICAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOkRlY29yYXRpb25Ob2RlIiB4bWk6aWQ9Il9JNTBza1B2eUVlZTJrT2dYY0doMThnIiB0eXBlPSJBc3NvY2lhdGlvbl9TdGVyZW90eXBlTGFiZWwiPgotICAgICAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpCb29sZWFuVmFsdWVTdHlsZSIgeG1pOmlkPSJfUFJNSmtQdzZFZWUya09nWGNHaDE4ZyIgbmFtZT0iSVNfVVBEQVRFRF9QT1NJVElPTiIgYm9vbGVhblZhbHVlPSJ0cnVlIi8+Ci0gICAgICAgIDxsYXlvdXRDb25zdHJhaW50IHhtaTp0eXBlPSJub3RhdGlvbjpMb2NhdGlvbiIgeG1pOmlkPSJfSTUwc2tmdnlFZWUya09nWGNHaDE4ZyIgeT0iNjAiLz4KLSAgICAgIDwvY2hpbGRyZW4+Ci0gICAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOkRlY29yYXRpb25Ob2RlIiB4bWk6aWQ9Il9JNTBza3Z2eUVlZTJrT2dYY0doMThnIiB2aXNpYmxlPSJmYWxzZSIgdHlwZT0iQXNzb2NpYXRpb25fTmFtZUxhYmVsIj4KLSAgICAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246Qm9vbGVhblZhbHVlU3R5bGUiIHhtaTppZD0iX1BSN3djUHc2RWVlMmtPZ1hjR2gxOGciIG5hbWU9IklTX1VQREFURURfUE9TSVRJT04iIGJvb2xlYW5WYWx1ZT0idHJ1ZSIvPgotICAgICAgICA8bGF5b3V0Q29uc3RyYWludCB4bWk6dHlwZT0ibm90YXRpb246TG9jYXRpb24iIHhtaTppZD0iX0k1MHNrX3Z5RWVlMmtPZ1hjR2gxOGciIHk9IjIwIi8+Ci0gICAgICA8L2NoaWxkcmVuPgotICAgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpEZWNvcmF0aW9uTm9kZSIgeG1pOmlkPSJfSTUwc2xQdnlFZWUya09nWGNHaDE4ZyIgdHlwZT0iQXNzb2NpYXRpb25fVGFyZ2V0Um9sZUxhYmVsIj4KLSAgICAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246Qm9vbGVhblZhbHVlU3R5bGUiIHhtaTppZD0iX1BTcXdRUHc2RWVlMmtPZ1hjR2gxOGciIG5hbWU9IklTX1VQREFURURfUE9TSVRJT04iIGJvb2xlYW5WYWx1ZT0idHJ1ZSIvPgotICAgICAgICA8bGF5b3V0Q29uc3RyYWludCB4bWk6dHlwZT0ibm90YXRpb246TG9jYXRpb24iIHhtaTppZD0iX0k1MHNsZnZ5RWVlMmtPZ1hjR2gxOGciIHg9Ii00NSIgeT0iNyIvPgotICAgICAgPC9jaGlsZHJlbj4KLSAgICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246RGVjb3JhdGlvbk5vZGUiIHhtaTppZD0iX0k1MHNsdnZ5RWVlMmtPZ1hjR2gxOGciIHZpc2libGU9ImZhbHNlIiB0eXBlPSJBc3NvY2lhdGlvbl9Tb3VyY2VSb2xlTGFiZWwiPgotICAgICAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpCb29sZWFuVmFsdWVTdHlsZSIgeG1pOmlkPSJfUFRhLU1QdzZFZWUya09nWGNHaDE4ZyIgbmFtZT0iSVNfVVBEQVRFRF9QT1NJVElPTiIgYm9vbGVhblZhbHVlPSJ0cnVlIi8+Ci0gICAgICAgIDxsYXlvdXRDb25zdHJhaW50IHhtaTp0eXBlPSJub3RhdGlvbjpMb2NhdGlvbiIgeG1pOmlkPSJfSTUwc2xfdnlFZWUya09nWGNHaDE4ZyIgeD0iMjEiIHk9Ii0yMCIvPgotICAgICAgPC9jaGlsZHJlbj4KLSAgICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246RGVjb3JhdGlvbk5vZGUiIHhtaTppZD0iX0k1MHNtUHZ5RWVlMmtPZ1hjR2gxOGciIHZpc2libGU9ImZhbHNlIiB0eXBlPSJBc3NvY2lhdGlvbl9Tb3VyY2VNdWx0aXBsaWNpdHlMYWJlbCI+Ci0gICAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOkJvb2xlYW5WYWx1ZVN0eWxlIiB4bWk6aWQ9Il9QVUx6TVB3NkVlZTJrT2dYY0doMThnIiBuYW1lPSJJU19VUERBVEVEX1BPU0lUSU9OIiBib29sZWFuVmFsdWU9InRydWUiLz4KLSAgICAgICAgPGxheW91dENvbnN0cmFpbnQgeG1pOnR5cGU9Im5vdGF0aW9uOkxvY2F0aW9uIiB4bWk6aWQ9Il9JNTBzbWZ2eUVlZTJrT2dYY0doMThnIiB4PSIyMSIgeT0iMjAiLz4KLSAgICAgIDwvY2hpbGRyZW4+Ci0gICAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOkRlY29yYXRpb25Ob2RlIiB4bWk6aWQ9Il9JNTBzbXZ2eUVlZTJrT2dYY0doMThnIiB0eXBlPSJBc3NvY2lhdGlvbl9UYXJnZXRNdWx0aXBsaWNpdHlMYWJlbCI+Ci0gICAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOkJvb2xlYW5WYWx1ZVN0eWxlIiB4bWk6aWQ9Il9QVklPWVB3NkVlZTJrT2dYY0doMThnIiBuYW1lPSJJU19VUERBVEVEX1BPU0lUSU9OIiBib29sZWFuVmFsdWU9InRydWUiLz4KLSAgICAgICAgPGxheW91dENvbnN0cmFpbnQgeG1pOnR5cGU9Im5vdGF0aW9uOkxvY2F0aW9uIiB4bWk6aWQ9Il9JNTBzbV92eUVlZTJrT2dYY0doMThnIiB4PSItMzUiIHk9Ii0xMyIvPgotICAgICAgPC9jaGlsZHJlbj4KLSAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOkZvbnRTdHlsZSIgeG1pOmlkPSJfSTUwRmdmdnlFZWUya09nWGNHaDE4ZyIvPgotICAgICAgPGVsZW1lbnQgeG1pOnR5cGU9InVtbDpBc3NvY2lhdGlvbiIgaHJlZj0icm9ib3RpY3MucHJvZmlsZS51bWwjX0kzLVNjUHZ5RWVlMmtPZ1hjR2gxOGciLz4KLSAgICAgIDxiZW5kcG9pbnRzIHhtaTp0eXBlPSJub3RhdGlvbjpSZWxhdGl2ZUJlbmRwb2ludHMiIHhtaTppZD0iX0k1MEZndnZ5RWVlMmtPZ1hjR2gxOGciIHBvaW50cz0iWzc4MSwgNDIwLCAtNjQzOTg0LCAtNjQzOTg0XSRbODYwLCA0MjAsIC02NDM5ODQsIC02NDM5ODRdJFs4NjAsIDQ0MCwgLTY0Mzk4NCwgLTY0Mzk4NF0kWzkyMCwgNDQwLCAtNjQzOTg0LCAtNjQzOTg0XSIvPgotICAgICAgPHNvdXJjZUFuY2hvciB4bWk6dHlwZT0ibm90YXRpb246SWRlbnRpdHlBbmNob3IiIHhtaTppZD0iX0k5WHYwUHZ5RWVlMmtPZ1hjR2gxOGciIGlkPSIoMS4wLDAuNzQ1MzQxNjE0OTA2ODMyMykiLz4KLSAgICAgIDx0YXJnZXRBbmNob3IgeG1pOnR5cGU9Im5vdGF0aW9uOklkZW50aXR5QW5jaG9yIiB4bWk6aWQ9Il9JOVh2MGZ2eUVlZTJrT2dYY0doMThnIiBpZD0iKDAuMCwwLjI0NjkxMzU4MDI0NjkxMzU3KSIvPgotICAgIDwvZWRnZXM+CiAgICAgPGVkZ2VzIHhtaTp0eXBlPSJub3RhdGlvbjpDb25uZWN0b3IiIHhtaTppZD0iX2toVENFUHYyRWVlMmtPZ1hjR2gxOGciIHR5cGU9IkdlbmVyYWxpemF0aW9uX0VkZ2UiIHNvdXJjZT0iXzhXNndNUHZ5RWVlMmtPZ1hjR2gxOGciIHRhcmdldD0iX2tnVXhzUHYyRWVlMmtPZ1hjR2gxOGciIHJvdXRpbmc9IlJlY3RpbGluZWFyIj4KICAgICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246RGVjb3JhdGlvbk5vZGUiIHhtaTppZD0iX2toVHBJUHYyRWVlMmtPZ1hjR2gxOGciIHR5cGU9IkdlbmVyYWxpemF0aW9uX1N0ZXJlb3R5cGVMYWJlbCI+CiAgICAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOkJvb2xlYW5WYWx1ZVN0eWxlIiB4bWk6aWQ9Il9sS0hWa1B2MkVlZTJrT2dYY0doMThnIiBuYW1lPSJJU19VUERBVEVEX1BPU0lUSU9OIiBib29sZWFuVmFsdWU9InRydWUiLz4KQEAgLTU2MSw3ICs1NjgsNyBAQAogICAgICAgPHNvdXJjZUFuY2hvciB4bWk6dHlwZT0ibm90YXRpb246SWRlbnRpdHlBbmNob3IiIHhtaTppZD0iX2xLVUo0UHYyRWVlMmtPZ1hjR2gxOGciIGlkPSIoMC42NjQ0NTE4MjcyNDI1MjQ5LDAuMCkiLz4KICAgICAgIDx0YXJnZXRBbmNob3IgeG1pOnR5cGU9Im5vdGF0aW9uOklkZW50aXR5QW5jaG9yIiB4bWk6aWQ9Il9sS1VKNGZ2MkVlZTJrT2dYY0doMThnIiBpZD0iKDAuOTE1OTAzNDEzODIxODE1MiwxLjApIi8+CiAgICAgPC9lZGdlcz4KLSAgICA8ZWRnZXMgeG1pOnR5cGU9Im5vdGF0aW9uOkNvbm5lY3RvciIgeG1pOmlkPSJfbmlQRGdQdjJFZWUya09nWGNHaDE4ZyIgdHlwZT0iQXNzb2NpYXRpb25fRWRnZSIgc291cmNlPSJfTDM1QWdKWjJFZWVxMWY4aEdnS1Z6QSIgdGFyZ2V0PSJfOFc2d01QdnlFZWUya09nWGNHaDE4ZyIgcm91dGluZz0iUmVjdGlsaW5lYXIiPgorICAgIDxlZGdlcyB4bWk6dHlwZT0ibm90YXRpb246Q29ubmVjdG9yIiB4bWk6aWQ9Il9uaVBEZ1B2MkVlZTJrT2dYY0doMThnIiB0eXBlPSJBc3NvY2lhdGlvbl9FZGdlIiBzb3VyY2U9Il9EM2V4QUlRcEVldWhnNGIweWZ1NGtBIiB0YXJnZXQ9Il84VzZ3TVB2eUVlZTJrT2dYY0doMThnIiByb3V0aW5nPSJSZWN0aWxpbmVhciI+CiAgICAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOkRlY29yYXRpb25Ob2RlIiB4bWk6aWQ9Il9uaVBEZ192MkVlZTJrT2dYY0doMThnIiB0eXBlPSJBc3NvY2lhdGlvbl9TdGVyZW90eXBlTGFiZWwiPgogICAgICAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpCb29sZWFuVmFsdWVTdHlsZSIgeG1pOmlkPSJfZzZJOVFQdzZFZWUya09nWGNHaDE4ZyIgbmFtZT0iSVNfVVBEQVRFRF9QT1NJVElPTiIgYm9vbGVhblZhbHVlPSJ0cnVlIi8+CiAgICAgICAgIDxsYXlvdXRDb25zdHJhaW50IHhtaTp0eXBlPSJub3RhdGlvbjpMb2NhdGlvbiIgeG1pOmlkPSJfbmlQRGhQdjJFZWUya09nWGNHaDE4ZyIgeT0iNjAiLz4KQEAgLTU4OCw4ICs1OTUsOCBAQAogICAgICAgPC9jaGlsZHJlbj4KICAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOkZvbnRTdHlsZSIgeG1pOmlkPSJfbmlQRGdmdjJFZWUya09nWGNHaDE4ZyIvPgogICAgICAgPGVsZW1lbnQgeG1pOnR5cGU9InVtbDpBc3NvY2lhdGlvbiIgaHJlZj0icm9ib3RpY3MucHJvZmlsZS51bWwjX25oX3k4UHYyRWVlMmtPZ1hjR2gxOGciLz4KLSAgICAgIDxiZW5kcG9pbnRzIHhtaTp0eXBlPSJub3RhdGlvbjpSZWxhdGl2ZUJlbmRwb2ludHMiIHhtaTppZD0iX25pUERndnYyRWVlMmtPZ1hjR2gxOGciIHBvaW50cz0iWzg4MSwgMzYwLCAtNjQzOTg0LCAtNjQzOTg0XSRbMTAyMCwgMzYwLCAtNjQzOTg0LCAtNjQzOTg0XSIvPgotICAgICAgPHNvdXJjZUFuY2hvciB4bWk6dHlwZT0ibm90YXRpb246SWRlbnRpdHlBbmNob3IiIHhtaTppZD0iX25pMWdjUHYyRWVlMmtPZ1hjR2gxOGciIGlkPSIoMS4wLDAuMzcyNjcwODA3NDUzNDE2MTMpIi8+CisgICAgICA8YmVuZHBvaW50cyB4bWk6dHlwZT0ibm90YXRpb246UmVsYXRpdmVCZW5kcG9pbnRzIiB4bWk6aWQ9Il9uaVBEZ3Z2MkVlZTJrT2dYY0doMThnIiBwb2ludHM9Ils3ODEsIDMwMCwgLTY0Mzk4NCwgLTY0Mzk4NF0kWzg2MCwgMzAwLCAtNjQzOTg0LCAtNjQzOTg0XSRbODYwLCAzNjAsIC02NDM5ODQsIC02NDM5ODRdJFs5MjAsIDM2MCwgLTY0Mzk4NCwgLTY0Mzk4NF0iLz4KKyAgICAgIDxzb3VyY2VBbmNob3IgeG1pOnR5cGU9Im5vdGF0aW9uOklkZW50aXR5QW5jaG9yIiB4bWk6aWQ9Il9uaTFnY1B2MkVlZTJrT2dYY0doMThnIiBpZD0iKDEuMCwwLjQ5MzgyNzE2MDQ5MzgyNzEzKSIvPgogICAgICAgPHRhcmdldEFuY2hvciB4bWk6dHlwZT0ibm90YXRpb246SWRlbnRpdHlBbmNob3IiIHhtaTppZD0iX25pMWdjZnYyRWVlMmtPZ1hjR2gxOGciIGlkPSIoMC4wLDAuNTk0MDU5NDA1OTQwNTk0KSIvPgogICAgIDwvZWRnZXM+CiAgICAgPGVkZ2VzIHhtaTp0eXBlPSJub3RhdGlvbjpDb25uZWN0b3IiIHhtaTppZD0iX3pZVGRJUHYzRWVlMmtPZ1hjR2gxOGciIHR5cGU9IkFzc29jaWF0aW9uX0VkZ2UiIHRhcmdldD0iX2tnVXhzUHYyRWVlMmtPZ1hjR2gxOGciPgpAQCAtNzExLDcgKzcxOCw3IEBACiAgICAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpGb250U3R5bGUiIHhtaTppZD0iX3YwYnlVZnc2RWVlMmtPZ1hjR2gxOGciLz4KICAgICAgIDxlbGVtZW50IHhtaTp0eXBlPSJ1bWw6QXNzb2NpYXRpb24iIGhyZWY9InJvYm90aWNzLnByb2ZpbGUudW1sI192azNzVVB3NkVlZTJrT2dYY0doMThnIi8+CiAgICAgICA8YmVuZHBvaW50cyB4bWk6dHlwZT0ibm90YXRpb246UmVsYXRpdmVCZW5kcG9pbnRzIiB4bWk6aWQ9Il92MGJ5VXZ3NkVlZTJrT2dYY0doMThnIiBwb2ludHM9Ils1MjAsIDQyMCwgLTY0Mzk4NCwgLTY0Mzk4NF0kWzQ1NywgNDIwLCAtNjQzOTg0LCAtNjQzOTg0XSIvPgotICAgICAgPHNvdXJjZUFuY2hvciB4bWk6dHlwZT0ibm90YXRpb246SWRlbnRpdHlBbmNob3IiIHhtaTppZD0iX3YyMFg4UHc2RWVlMmtPZ1hjR2gxOGciIGlkPSIoMC4wLDAuNzQ1MzQxNjE0OTA2ODMyMykiLz4KKyAgICAgIDxzb3VyY2VBbmNob3IgeG1pOnR5cGU9Im5vdGF0aW9uOklkZW50aXR5QW5jaG9yIiB4bWk6aWQ9Il92MjBYOFB3NkVlZTJrT2dYY0doMThnIiBpZD0iKDAuMCwwLjQ5MzgyNzE2MDQ5MzgyNzEzKSIvPgogICAgICAgPHRhcmdldEFuY2hvciB4bWk6dHlwZT0ibm90YXRpb246SWRlbnRpdHlBbmNob3IiIHhtaTppZD0iX3YyMF9BUHc2RWVlMmtPZ1hjR2gxOGciIGlkPSIoMS4wLDAuNzQ1MzQxNjE0OTA2ODMyMykiLz4KICAgICA8L2VkZ2VzPgogICAgIDxlZGdlcyB4bWk6dHlwZT0ibm90YXRpb246Q29ubmVjdG9yIiB4bWk6aWQ9Il9BZlQwTVB3N0VlZTJrT2dYY0doMThnIiB0eXBlPSJHZW5lcmFsaXphdGlvbl9FZGdlIiBzb3VyY2U9Il9sWjFic1B3NkVlZTJrT2dYY0doMThnIiByb3V0aW5nPSJSZWN0aWxpbmVhciI+CkBAIC03NzAsNyArNzc3LDcgQEAKICAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOkZvbnRTdHlsZSIgeG1pOmlkPSJfZWd3SE1mdy1FZWUya09nWGNHaDE4ZyIvPgogICAgICAgPGVsZW1lbnQgeHNpOm5pbD0idHJ1ZSIvPgogICAgICAgPGJlbmRwb2ludHMgeG1pOnR5cGU9Im5vdGF0aW9uOlJlbGF0aXZlQmVuZHBvaW50cyIgeG1pOmlkPSJfZWd3SE12dy1FZWUya09nWGNHaDE4ZyIgcG9pbnRzPSJbNzAxLCA2NjAsIC02NDM5ODQsIC02NDM5ODRdJFs4NjAsIDY2MCwgLTY0Mzk4NCwgLTY0Mzk4NF0kWzg2MCwgNDgwLCAtNjQzOTg0LCAtNjQzOTg0XSRbOTIwLCA0ODAsIC02NDM5ODQsIC02NDM5ODRdIi8+Ci0gICAgICA8c291cmNlQW5jaG9yIHhtaTp0eXBlPSJub3RhdGlvbjpJZGVudGl0eUFuY2hvciIgeG1pOmlkPSJfZ0RHcXdQdy1FZWUya09nWGNHaDE4ZyIgaWQ9IigxLjAsMC42NjExNTcwMjQ3OTMzODg0KSIvPgorICAgICAgPHNvdXJjZUFuY2hvciB4bWk6dHlwZT0ibm90YXRpb246SWRlbnRpdHlBbmNob3IiIHhtaTppZD0iX2dER3F3UHctRWVlMmtPZ1hjR2gxOGciIGlkPSIoMS4wLDAuNzkyMDc5MjA3OTIwNzkyMSkiLz4KICAgICAgIDx0YXJnZXRBbmNob3IgeG1pOnR5cGU9Im5vdGF0aW9uOklkZW50aXR5QW5jaG9yIiB4bWk6aWQ9Il9pSnF1b1B3LUVlZTJrT2dYY0doMThnIiBpZD0iKDAuMCwwLjc0MDc0MDc0MDc0MDc0MDcpIi8+CiAgICAgPC9lZGdlcz4KICAgICA8ZWRnZXMgeG1pOnR5cGU9Im5vdGF0aW9uOkNvbm5lY3RvciIgeG1pOmlkPSJfZWk5R29Qdy1FZWUya09nWGNHaDE4ZyIgdHlwZT0iQ29tbWVudF9Bbm5vdGF0ZWRFbGVtZW50RWRnZSIgc291cmNlPSJfZWVIQzRQdy1FZWUya09nWGNHaDE4ZyIgdGFyZ2V0PSJfbFoxYnNQdzZFZWUya09nWGNHaDE4ZyI+CkBAIC03NzgsMTggKzc4NSwxOCBAQAogICAgICAgPGVsZW1lbnQgeHNpOm5pbD0idHJ1ZSIvPgogICAgICAgPGJlbmRwb2ludHMgeG1pOnR5cGU9Im5vdGF0aW9uOlJlbGF0aXZlQmVuZHBvaW50cyIgeG1pOmlkPSJfbFBVZk1wYnNFZWVNNy1Fa0djWmlzdyIgcG9pbnRzPSJbMzQwLCA2MjAsIC02NDM5ODQsIC02NDM5ODRdJFszNDAsIDQ2MSwgLTY0Mzk4NCwgLTY0Mzk4NF0iLz4KICAgICAgIDxzb3VyY2VBbmNob3IgeG1pOnR5cGU9Im5vdGF0aW9uOklkZW50aXR5QW5jaG9yIiB4bWk6aWQ9Il9sUVBzUUpic0VlZU03LUVrR2NaaXN3IiBpZD0iKDAuMjE2OTE5NzM5Njk2MzEyMzcsMC4wKSIvPgotICAgICAgPHRhcmdldEFuY2hvciB4bWk6dHlwZT0ibm90YXRpb246SWRlbnRpdHlBbmNob3IiIHhtaTppZD0iX2xRUHNRWmJzRWVlTTctRWtHY1ppc3ciIGlkPSIoMC41ODA5MTI4NjMwNzA1Mzk1LDEuMCkiLz4KKyAgICAgIDx0YXJnZXRBbmNob3IgeG1pOnR5cGU9Im5vdGF0aW9uOklkZW50aXR5QW5jaG9yIiB4bWk6aWQ9Il9sUVBzUVpic0VlZU03LUVrR2NaaXN3IiBpZD0iKDAuNjk2NTE3NDEyOTM1MzIzNCwxLjApIi8+CiAgICAgPC9lZGdlcz4KLSAgICA8ZWRnZXMgeG1pOnR5cGU9Im5vdGF0aW9uOkNvbm5lY3RvciIgeG1pOmlkPSJfbWZDMzhCTS1FZWktQ01WTFkxU21kZyIgdHlwZT0iR2VuZXJhbGl6YXRpb25fRWRnZSIgc291cmNlPSJfTDM1QWdKWjJFZWVxMWY4aEdnS1Z6QSIgdGFyZ2V0PSJfbVp4V1lCTS1FZWktQ01WTFkxU21kZyIgcm91dGluZz0iUmVjdGlsaW5lYXIiPgorICAgIDxlZGdlcyB4bWk6dHlwZT0ibm90YXRpb246Q29ubmVjdG9yIiB4bWk6aWQ9Il9tZkMzOEJNLUVlaS1DTVZMWTFTbWRnIiB0eXBlPSJHZW5lcmFsaXphdGlvbl9FZGdlIiBzb3VyY2U9Il9MMzVBZ0paMkVlZXExZjhoR2dLVnpBIiB0YXJnZXQ9Il9EM2V4QUlRcEVldWhnNGIweWZ1NGtBIiByb3V0aW5nPSJSZWN0aWxpbmVhciI+CiAgICAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOkRlY29yYXRpb25Ob2RlIiB4bWk6aWQ9Il9tZkRmQUJNLUVlaS1DTVZMWTFTbWRnIiB0eXBlPSJHZW5lcmFsaXphdGlvbl9TdGVyZW90eXBlTGFiZWwiPgogICAgICAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpCb29sZWFuVmFsdWVTdHlsZSIgeG1pOmlkPSJfdUJSVFFCTS1FZWktQ01WTFkxU21kZyIgbmFtZT0iSVNfVVBEQVRFRF9QT1NJVElPTiIgYm9vbGVhblZhbHVlPSJ0cnVlIi8+CiAgICAgICAgIDxsYXlvdXRDb25zdHJhaW50IHhtaTp0eXBlPSJub3RhdGlvbjpMb2NhdGlvbiIgeG1pOmlkPSJfbWZEZkFSTS1FZWktQ01WTFkxU21kZyIgeT0iNjAiLz4KICAgICAgIDwvY2hpbGRyZW4+CiAgICAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpGb250U3R5bGUiIHhtaTppZD0iX21mQzM4Uk0tRWVpLUNNVkxZMVNtZGciLz4KICAgICAgIDxlbGVtZW50IHhtaTp0eXBlPSJ1bWw6R2VuZXJhbGl6YXRpb24iIGhyZWY9InJvYm90aWNzLnByb2ZpbGUudW1sI18wWEoxQUtpSEVlZXJLX1VEUUZGekxnIi8+Ci0gICAgICA8YmVuZHBvaW50cyB4bWk6dHlwZT0ibm90YXRpb246UmVsYXRpdmVCZW5kcG9pbnRzIiB4bWk6aWQ9Il9tZkMzOGhNLUVlaS1DTVZMWTFTbWRnIiBwb2ludHM9Ils2NDAsIDMwMCwgLTY0Mzk4NCwgLTY0Mzk4NF0kWzY0MCwgMjQwLCAtNjQzOTg0LCAtNjQzOTg0XSIvPgotICAgICAgPHNvdXJjZUFuY2hvciB4bWk6dHlwZT0ibm90YXRpb246SWRlbnRpdHlBbmNob3IiIHhtaTppZD0iX3RfZnhvQk0tRWVpLUNNVkxZMVNtZGciIGlkPSIoMC40OTgyMjA2NDA1NjkzOTUsMC4wKSIvPgotICAgICAgPHRhcmdldEFuY2hvciB4bWk6dHlwZT0ibm90YXRpb246SWRlbnRpdHlBbmNob3IiIHhtaTppZD0iX29veUxvQk0tRWVpLUNNVkxZMVNtZGciIGlkPSIoMC43NTczMTQ5NzQxODI0NDQxLDEuMCkiLz4KKyAgICAgIDxiZW5kcG9pbnRzIHhtaTp0eXBlPSJub3RhdGlvbjpSZWxhdGl2ZUJlbmRwb2ludHMiIHhtaTppZD0iX21mQzM4aE0tRWVpLUNNVkxZMVNtZGciIHBvaW50cz0iWzU4MCwgMzgwLCAtNjQzOTg0LCAtNjQzOTg0XSRbNTgwLCAzNDEsIC02NDM5ODQsIC02NDM5ODRdIi8+CisgICAgICA8c291cmNlQW5jaG9yIHhtaTp0eXBlPSJub3RhdGlvbjpJZGVudGl0eUFuY2hvciIgeG1pOmlkPSJfdF9meG9CTS1FZWktQ01WTFkxU21kZyIgaWQ9IigwLjU5NzAxNDkyNTM3MzEzNDMsMC4wKSIvPgorICAgICAgPHRhcmdldEFuY2hvciB4bWk6dHlwZT0ibm90YXRpb246SWRlbnRpdHlBbmNob3IiIHhtaTppZD0iX29veUxvQk0tRWVpLUNNVkxZMVNtZGciIGlkPSIoMC4zMTQ5NjA2Mjk5MjEyNTk4NCwxLjApIi8+CiAgICAgPC9lZGdlcz4KICAgICA8ZWRnZXMgeG1pOnR5cGU9Im5vdGF0aW9uOkNvbm5lY3RvciIgeG1pOmlkPSJfcXNFNUVCTS1FZWktQ01WTFkxU21kZyIgdHlwZT0iR2VuZXJhbGl6YXRpb25fRWRnZSIgc291cmNlPSJfbFoxYnNQdzZFZWUya09nWGNHaDE4ZyIgdGFyZ2V0PSJfbVp4V1lCTS1FZWktQ01WTFkxU21kZyIgcm91dGluZz0iUmVjdGlsaW5lYXIiPgogICAgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpEZWNvcmF0aW9uTm9kZSIgeG1pOmlkPSJfcXNGZ0lCTS1FZWktQ01WTFkxU21kZyIgdHlwZT0iR2VuZXJhbGl6YXRpb25fU3RlcmVvdHlwZUxhYmVsIj4KQEAgLTc5OSw3ICs4MDYsNyBAQAogICAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246Rm9udFN0eWxlIiB4bWk6aWQ9Il9xc0U1RVJNLUVlaS1DTVZMWTFTbWRnIi8+CiAgICAgICA8ZWxlbWVudCB4bWk6dHlwZT0idW1sOkdlbmVyYWxpemF0aW9uIiBocmVmPSJyb2JvdGljcy5wcm9maWxlLnVtbCNfQVJqRkFQdzdFZWUya09nWGNHaDE4ZyIvPgogICAgICAgPGJlbmRwb2ludHMgeG1pOnR5cGU9Im5vdGF0aW9uOlJlbGF0aXZlQmVuZHBvaW50cyIgeG1pOmlkPSJfcXNFNUVoTS1FZWktQ01WTFkxU21kZyIgcG9pbnRzPSJbMzIwLCAzMDAsIC02NDM5ODQsIC02NDM5ODRdJFszMjAsIDI4MCwgLTY0Mzk4NCwgLTY0Mzk4NF0kWzMyMCwgMjQwLCAtNjQzOTg0LCAtNjQzOTg0XSIvPgotICAgICAgPHNvdXJjZUFuY2hvciB4bWk6dHlwZT0ibm90YXRpb246SWRlbnRpdHlBbmNob3IiIHhtaTppZD0iX3M5WU5VQk0tRWVpLUNNVkxZMVNtZGciIGlkPSIoMC40OTc5MjUzMTEyMDMzMTk1LDAuMCkiLz4KKyAgICAgIDxzb3VyY2VBbmNob3IgeG1pOnR5cGU9Im5vdGF0aW9uOklkZW50aXR5QW5jaG9yIiB4bWk6aWQ9Il9zOVlOVUJNLUVlaS1DTVZMWTFTbWRnIiBpZD0iKDAuNTk3MDE0OTI1MzczMTM0MywwLjApIi8+CiAgICAgICA8dGFyZ2V0QW5jaG9yIHhtaTp0eXBlPSJub3RhdGlvbjpJZGVudGl0eUFuY2hvciIgeG1pOmlkPSJfczlZTlVSTS1FZWktQ01WTFkxU21kZyIgaWQ9IigwLjIwNjU0MDQ0NzUwNDMwMjkyLDEuMCkiLz4KICAgICA8L2VkZ2VzPgogICAgIDxlZGdlcyB4bWk6dHlwZT0ibm90YXRpb246Q29ubmVjdG9yIiB4bWk6aWQ9Il9fN0hOTUJNX0VlaS1DTVZMWTFTbWRnIiB0eXBlPSJBc3NvY2lhdGlvbl9FZGdlIiBzb3VyY2U9Il9tWnhXWUJNLUVlaS1DTVZMWTFTbWRnIiB0YXJnZXQ9Il9rZ1V4c1B2MkVlZTJrT2dYY0doMThnIiByb3V0aW5nPSJSZWN0aWxpbmVhciI+CkBAIC05MDMsNyArOTEwLDcgQEAKICAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOkZvbnRTdHlsZSIgeG1pOmlkPSJfX2VWZ1FTNkxFZWkwVjktV0xISXl2ZyIvPgogICAgICAgPGVsZW1lbnQgeG1pOnR5cGU9InVtbDpBc3NvY2lhdGlvbiIgaHJlZj0icm9ib3RpY3MucHJvZmlsZS51bWwjX2FZZFdvQzZIRWVpMFY5LVdMSEl5dmciLz4KICAgICAgIDxiZW5kcG9pbnRzIHhtaTp0eXBlPSJub3RhdGlvbjpSZWxhdGl2ZUJlbmRwb2ludHMiIHhtaTppZD0iX19lVmdRaTZMRWVpMFY5LVdMSEl5dmciIHBvaW50cz0iWzMyMCwgNDYxLCAtNjQzOTg0LCAtNjQzOTg0XSRbMzIwLCA1MDAsIC02NDM5ODQsIC02NDM5ODRdJFsxMjAsIDUwMCwgLTY0Mzk4NCwgLTY0Mzk4NF0kWzEyMCwgNTgwLCAtNjQzOTg0LCAtNjQzOTg0XSIvPgotICAgICAgPHNvdXJjZUFuY2hvciB4bWk6dHlwZT0ibm90YXRpb246SWRlbnRpdHlBbmNob3IiIHhtaTppZD0iX0FpV2lBQzZNRWVpMFY5LVdMSEl5dmciIGlkPSIoMC40OTc5MjUzMTEyMDMzMTk1LDEuMCkiLz4KKyAgICAgIDxzb3VyY2VBbmNob3IgeG1pOnR5cGU9Im5vdGF0aW9uOklkZW50aXR5QW5jaG9yIiB4bWk6aWQ9Il9BaVdpQUM2TUVlaTBWOS1XTEhJeXZnIiBpZD0iKDAuNTk3MDE0OTI1MzczMTM0MywxLjApIi8+CiAgICAgICA8dGFyZ2V0QW5jaG9yIHhtaTp0eXBlPSJub3RhdGlvbjpJZGVudGl0eUFuY2hvciIgeG1pOmlkPSJfQWlYSkVDNk1FZWkwVjktV0xISXl2ZyIgaWQ9IigwLjU2NDk3MTc1MTQxMjQyOTQsMC4wKSIvPgogICAgIDwvZWRnZXM+CiAgICAgPGVkZ2VzIHhtaTp0eXBlPSJub3RhdGlvbjpDb25uZWN0b3IiIHhtaTppZD0iX1VjMDZ3RGdBRWVpcmtvQ3hBY3B1RUEiIHR5cGU9IkFzc29jaWF0aW9uX0VkZ2UiIHNvdXJjZT0iX2xaMWJzUHc2RWVlMmtPZ1hjR2gxOGciIHRhcmdldD0iX0t6ZHowRGdBRWVpcmtvQ3hBY3B1RUEiPgpAQCAtOTU3LDcgKzk2NCwyOCBAQAogICAgICAgPGVsZW1lbnQgeG1pOnR5cGU9InVtbDpHZW5lcmFsaXphdGlvbiIgaHJlZj0icm9ib3RpY3MucHJvZmlsZS51bWwjX1BNbGtFQW5xRWVxc2FJMmlGdFZfM2ciLz4KICAgICAgIDxiZW5kcG9pbnRzIHhtaTp0eXBlPSJub3RhdGlvbjpSZWxhdGl2ZUJlbmRwb2ludHMiIHhtaTppZD0iX1BOaF9RZ25xRWVxc2FJMmlGdFZfM2ciIHBvaW50cz0iWzExMjAsIDE4MCwgLTY0Mzk4NCwgLTY0Mzk4NF0kWzg4MSwgMTgwLCAtNjQzOTg0LCAtNjQzOTg0XSIvPgogICAgICAgPHNvdXJjZUFuY2hvciB4bWk6dHlwZT0ibm90YXRpb246SWRlbnRpdHlBbmNob3IiIHhtaTppZD0iX1BQYU9rQW5xRWVxc2FJMmlGdFZfM2ciIGlkPSIoMC4wLDAuMzk2MDM5NjAzOTYwMzk2MDYpIi8+Ci0gICAgICA8dGFyZ2V0QW5jaG9yIHhtaTp0eXBlPSJub3RhdGlvbjpJZGVudGl0eUFuY2hvciIgeG1pOmlkPSJfUFBhT2tRbnFFZXFzYUkyaUZ0Vl8zZyIgaWQ9IigxLjAsMC40KSIvPgorICAgICAgPHRhcmdldEFuY2hvciB4bWk6dHlwZT0ibm90YXRpb246SWRlbnRpdHlBbmNob3IiIHhtaTppZD0iX1BQYU9rUW5xRWVxc2FJMmlGdFZfM2ciIGlkPSIoMS4wLDAuNDkzODI3MTYwNDkzODI3MTMpIi8+CisgICAgPC9lZGdlcz4KKyAgICA8ZWRnZXMgeG1pOnR5cGU9Im5vdGF0aW9uOkNvbm5lY3RvciIgeG1pOmlkPSJfWHBNb0FJUXBFZXVoZzRiMHlmdTRrQSIgdHlwZT0iR2VuZXJhbGl6YXRpb25fRWRnZSIgc291cmNlPSJfRDNleEFJUXBFZXVoZzRiMHlmdTRrQSIgdGFyZ2V0PSJfbVp4V1lCTS1FZWktQ01WTFkxU21kZyI+CisgICAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOkRlY29yYXRpb25Ob2RlIiB4bWk6aWQ9Il9YcE1vQTRRcEVldWhnNGIweWZ1NGtBIiB0eXBlPSJHZW5lcmFsaXphdGlvbl9TdGVyZW90eXBlTGFiZWwiPgorICAgICAgICA8bGF5b3V0Q29uc3RyYWludCB4bWk6dHlwZT0ibm90YXRpb246TG9jYXRpb24iIHhtaTppZD0iX1hwTW9CSVFwRWV1aGc0YjB5ZnU0a0EiIHk9IjYwIi8+CisgICAgICA8L2NoaWxkcmVuPgorICAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246Rm9udFN0eWxlIiB4bWk6aWQ9Il9YcE1vQVlRcEVldWhnNGIweWZ1NGtBIi8+CisgICAgICA8ZWxlbWVudCB4bWk6dHlwZT0idW1sOkdlbmVyYWxpemF0aW9uIiBocmVmPSJyb2JvdGljcy5wcm9maWxlLnVtbCNfWG5oTkFJUXBFZXVoZzRiMHlmdTRrQSIvPgorICAgICAgPGJlbmRwb2ludHMgeG1pOnR5cGU9Im5vdGF0aW9uOlJlbGF0aXZlQmVuZHBvaW50cyIgeG1pOmlkPSJfWHBNb0FvUXBFZXVoZzRiMHlmdTRrQSIgcG9pbnRzPSJbNjQwLCAyNjAsIC02NDM5ODQsIC02NDM5ODRdJFs2NDAsIDIyMSwgLTY0Mzk4NCwgLTY0Mzk4NF0iLz4KKyAgICAgIDxzb3VyY2VBbmNob3IgeG1pOnR5cGU9Im5vdGF0aW9uOklkZW50aXR5QW5jaG9yIiB4bWk6aWQ9Il9YcjNoZ0lRcEVldWhnNGIweWZ1NGtBIiBpZD0iKDAuNDcyNDQwOTQ0ODgxODg5NzYsMC4wKSIvPgorICAgICAgPHRhcmdldEFuY2hvciB4bWk6dHlwZT0ibm90YXRpb246SWRlbnRpdHlBbmNob3IiIHhtaTppZD0iX1hyM2hnWVFwRWV1aGc0YjB5ZnU0a0EiIGlkPSIoMC43NTczMTQ5NzQxODI0NDQxLDEuMCkiLz4KKyAgICA8L2VkZ2VzPgorICAgIDxlZGdlcyB4bWk6dHlwZT0ibm90YXRpb246Q29ubmVjdG9yIiB4bWk6aWQ9Il9wV1B0Z0lmWEVldUd0ZFdkc0Q0LUVRIiB0eXBlPSJHZW5lcmFsaXphdGlvbl9FZGdlIiBzb3VyY2U9Il9maTZ5UUlmWEVldUd0ZFdkc0Q0LUVRIiB0YXJnZXQ9Il9EM2V4QUlRcEVldWhnNGIweWZ1NGtBIj4KKyAgICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246RGVjb3JhdGlvbk5vZGUiIHhtaTppZD0iX3BXUHRnNGZYRWV1R3RkV2RzRDQtRVEiIHR5cGU9IkdlbmVyYWxpemF0aW9uX1N0ZXJlb3R5cGVMYWJlbCI+CisgICAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOkJvb2xlYW5WYWx1ZVN0eWxlIiB4bWk6aWQ9Il82MXNtOElmWEVldUd0ZFdkc0Q0LUVRIiBuYW1lPSJJU19VUERBVEVEX1BPU0lUSU9OIiBib29sZWFuVmFsdWU9InRydWUiLz4KKyAgICAgICAgPGxheW91dENvbnN0cmFpbnQgeG1pOnR5cGU9Im5vdGF0aW9uOkxvY2F0aW9uIiB4bWk6aWQ9Il9wV1B0aElmWEVldUd0ZFdkc0Q0LUVRIiB5PSI2MCIvPgorICAgICAgPC9jaGlsZHJlbj4KKyAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOkZvbnRTdHlsZSIgeG1pOmlkPSJfcFdQdGdZZlhFZXVHdGRXZHNENC1FUSIvPgorICAgICAgPGVsZW1lbnQgeG1pOnR5cGU9InVtbDpHZW5lcmFsaXphdGlvbiIgaHJlZj0icm9ib3RpY3MucHJvZmlsZS51bWwjX3dOZlQ0QlNXRWVpLUNNVkxZMVNtZGciLz4KKyAgICAgIDxiZW5kcG9pbnRzIHhtaTp0eXBlPSJub3RhdGlvbjpSZWxhdGl2ZUJlbmRwb2ludHMiIHhtaTppZD0iX3BXUHRnb2ZYRWV1R3RkV2RzRDQtRVEiIHBvaW50cz0iWzc2MCwgMzgwLCAtNjQzOTg0LCAtNjQzOTg0XSRbNzYwLCAzNDEsIC02NDM5ODQsIC02NDM5ODRdIi8+CisgICAgICA8c291cmNlQW5jaG9yIHhtaTp0eXBlPSJub3RhdGlvbjpJZGVudGl0eUFuY2hvciIgeG1pOmlkPSJfMm1oMzBJZlhFZXVHdGRXZHNENC1FUSIgaWQ9IigwLjQ5Njg5NDQwOTkzNzg4ODIsMC4wKSIvPgorICAgICAgPHRhcmdldEFuY2hvciB4bWk6dHlwZT0ibm90YXRpb246SWRlbnRpdHlBbmNob3IiIHhtaTppZD0iX3FJUVpRSWZYRWV1R3RkV2RzRDQtRVEiIGlkPSIoMC43ODc0MDE1NzQ4MDMxNDk3LDEuMCkiLz4KICAgICA8L2VkZ2VzPgogICA8L25vdGF0aW9uOkRpYWdyYW0+CiAgIDxub3RhdGlvbjpEaWFncmFtIHhtaTppZD0iX2dnVE5VSmJXRWVlTTctRWtHY1ppc3ciIHR5cGU9IlBhcHlydXNVTUxQcm9maWxlRGlhZ3JhbSIgbmFtZT0iY29tcG9uZW50cyAoZXh0ZW5zaW9ucykiIG1lYXN1cmVtZW50VW5pdD0iUGl4ZWwiPgpAQCAtMTYxOSw2ICsxNjQ3LDQ2IEBACiAgICAgICA8ZWxlbWVudCB4c2k6bmlsPSJ0cnVlIi8+CiAgICAgICA8bGF5b3V0Q29uc3RyYWludCB4bWk6dHlwZT0ibm90YXRpb246Qm91bmRzIiB4bWk6aWQ9Il9mV2ZWMGlRc0VldUQ4ZVR2aGlWSXdnIiB4PSI5ODAiIHk9IjQwMCIvPgogICAgIDwvY2hpbGRyZW4+CisgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpTaGFwZSIgeG1pOmlkPSJfTHZmckU0ZlhFZXVHdGRXZHNENC1FUSIgdHlwZT0iU3RlcmVvdHlwZUNvbW1lbnQiPgorICAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246VGl0bGVTdHlsZSIgeG1pOmlkPSJfTHZmckZJZlhFZXVHdGRXZHNENC1FUSIvPgorICAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246RU9iamVjdFZhbHVlU3R5bGUiIHhtaTppZD0iX0x2aXVZSWZYRWV1R3RkV2RzRDQtRVEiIG5hbWU9IkJBU0VfRUxFTUVOVCI+CisgICAgICAgIDxlT2JqZWN0VmFsdWUgeG1pOnR5cGU9InVtbDpDbGFzcyIgaHJlZj0icGF0aG1hcDovL1VNTF9NRVRBTU9ERUxTL1VNTC5tZXRhbW9kZWwudW1sI0NsYXNzIi8+CisgICAgICA8L3N0eWxlcz4KKyAgICAgIDxlbGVtZW50IHhzaTpuaWw9InRydWUiLz4KKyAgICAgIDxsYXlvdXRDb25zdHJhaW50IHhtaTp0eXBlPSJub3RhdGlvbjpCb3VuZHMiIHhtaTppZD0iX0x2ZnJGWWZYRWV1R3RkV2RzRDQtRVEiIHg9IjE2MCIgeT0iMjAiLz4KKyAgICA8L2NoaWxkcmVuPgorICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246U2hhcGUiIHhtaTppZD0iX0x2clJRNGZYRWV1R3RkV2RzRDQtRVEiIHR5cGU9IlN0ZXJlb3R5cGVDb21tZW50Ij4KKyAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOlRpdGxlU3R5bGUiIHhtaTppZD0iX0x2clJSSWZYRWV1R3RkV2RzRDQtRVEiLz4KKyAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOkVPYmplY3RWYWx1ZVN0eWxlIiB4bWk6aWQ9Il9MdnI0VUlmWEVldUd0ZFdkc0Q0LUVRIiBuYW1lPSJCQVNFX0VMRU1FTlQiPgorICAgICAgICA8ZU9iamVjdFZhbHVlIHhtaTp0eXBlPSJ1bWw6Q2xhc3MiIGhyZWY9InBhdGhtYXA6Ly9VTUxfTUVUQU1PREVMUy9VTUwubWV0YW1vZGVsLnVtbCNJbnN0YW5jZVNwZWNpZmljYXRpb24iLz4KKyAgICAgIDwvc3R5bGVzPgorICAgICAgPGVsZW1lbnQgeHNpOm5pbD0idHJ1ZSIvPgorICAgICAgPGxheW91dENvbnN0cmFpbnQgeG1pOnR5cGU9Im5vdGF0aW9uOkJvdW5kcyIgeG1pOmlkPSJfTHZyUlJZZlhFZXVHdGRXZHNENC1FUSIgeD0iNTk0IiB5PSI0MDAiLz4KKyAgICA8L2NoaWxkcmVuPgorICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246U2hhcGUiIHhtaTppZD0iX0x2MjNjSWZYRWV1R3RkV2RzRDQtRVEiIHR5cGU9IlN0ZXJlb3R5cGVDb21tZW50Ij4KKyAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOlRpdGxlU3R5bGUiIHhtaTppZD0iX0x2MjNjWWZYRWV1R3RkV2RzRDQtRVEiLz4KKyAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOkVPYmplY3RWYWx1ZVN0eWxlIiB4bWk6aWQ9Il9MdjIzYzRmWEVldUd0ZFdkc0Q0LUVRIiBuYW1lPSJCQVNFX0VMRU1FTlQiPgorICAgICAgICA8ZU9iamVjdFZhbHVlIHhtaTp0eXBlPSJ1bWw6Q2xhc3MiIGhyZWY9InBhdGhtYXA6Ly9VTUxfTUVUQU1PREVMUy9VTUwubWV0YW1vZGVsLnVtbCNQb3J0Ii8+CisgICAgICA8L3N0eWxlcz4KKyAgICAgIDxlbGVtZW50IHhzaTpuaWw9InRydWUiLz4KKyAgICAgIDxsYXlvdXRDb25zdHJhaW50IHhtaTp0eXBlPSJub3RhdGlvbjpCb3VuZHMiIHhtaTppZD0iX0x2MjNjb2ZYRWV1R3RkV2RzRDQtRVEiIHg9IjcyMCIgeT0iMjAiLz4KKyAgICA8L2NoaWxkcmVuPgorICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246U2hhcGUiIHhtaTppZD0iX0x3QlBnSWZYRWV1R3RkV2RzRDQtRVEiIHR5cGU9IlN0ZXJlb3R5cGVDb21tZW50Ij4KKyAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOlRpdGxlU3R5bGUiIHhtaTppZD0iX0x3QlBnWWZYRWV1R3RkV2RzRDQtRVEiLz4KKyAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOkVPYmplY3RWYWx1ZVN0eWxlIiB4bWk6aWQ9Il9Md0JQZzRmWEVldUd0ZFdkc0Q0LUVRIiBuYW1lPSJCQVNFX0VMRU1FTlQiPgorICAgICAgICA8ZU9iamVjdFZhbHVlIHhtaTp0eXBlPSJ1bWw6Q2xhc3MiIGhyZWY9InBhdGhtYXA6Ly9VTUxfTUVUQU1PREVMUy9VTUwubWV0YW1vZGVsLnVtbCNQcm9wZXJ0eSIvPgorICAgICAgPC9zdHlsZXM+CisgICAgICA8ZWxlbWVudCB4c2k6bmlsPSJ0cnVlIi8+CisgICAgICA8bGF5b3V0Q29uc3RyYWludCB4bWk6dHlwZT0ibm90YXRpb246Qm91bmRzIiB4bWk6aWQ9Il9Md0JQZ29mWEVldUd0ZFdkc0Q0LUVRIiB4PSIyNjAiIHk9IjQwMCIvPgorICAgIDwvY2hpbGRyZW4+CisgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpTaGFwZSIgeG1pOmlkPSJfTHdPcTQ0ZlhFZXVHdGRXZHNENC1FUSIgdHlwZT0iU3RlcmVvdHlwZUNvbW1lbnQiPgorICAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246VGl0bGVTdHlsZSIgeG1pOmlkPSJfTHdPcTVJZlhFZXVHdGRXZHNENC1FUSIvPgorICAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246RU9iamVjdFZhbHVlU3R5bGUiIHhtaTppZD0iX0x3T3E1b2ZYRWV1R3RkV2RzRDQtRVEiIG5hbWU9IkJBU0VfRUxFTUVOVCI+CisgICAgICAgIDxlT2JqZWN0VmFsdWUgeG1pOnR5cGU9InVtbDpDbGFzcyIgaHJlZj0icGF0aG1hcDovL1VNTF9NRVRBTU9ERUxTL1VNTC5tZXRhbW9kZWwudW1sI1BhY2thZ2UiLz4KKyAgICAgIDwvc3R5bGVzPgorICAgICAgPGVsZW1lbnQgeHNpOm5pbD0idHJ1ZSIvPgorICAgICAgPGxheW91dENvbnN0cmFpbnQgeG1pOnR5cGU9Im5vdGF0aW9uOkJvdW5kcyIgeG1pOmlkPSJfTHdPcTVZZlhFZXVHdGRXZHNENC1FUSIgeD0iOTgwIiB5PSI0MDAiLz4KKyAgICA8L2NoaWxkcmVuPgogICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOlN0cmluZ1ZhbHVlU3R5bGUiIHhtaTppZD0iX2dnVE5VWmJXRWVlTTctRWtHY1ppc3ciIG5hbWU9ImRpYWdyYW1fY29tcGF0aWJpbGl0eV92ZXJzaW9uIiBzdHJpbmdWYWx1ZT0iMS40LjAiLz4KICAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpEaWFncmFtU3R5bGUiIHhtaTppZD0iX2dnVE5VcGJXRWVlTTctRWtHY1ppc3ciLz4KICAgICA8c3R5bGVzIHhtaTp0eXBlPSJzdHlsZTpQYXB5cnVzRGlhZ3JhbVN0eWxlIiB4bWk6aWQ9Il9nZ1ROVTViV0VlZU03LUVrR2NaaXN3IiBkaWFncmFtS2luZElkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5kaWFncmFtLnByb2ZpbGUiPgpAQCAtMjEzNyw2ICsyMjA1LDU2IEBACiAgICAgICA8c291cmNlQW5jaG9yIHhtaTp0eXBlPSJub3RhdGlvbjpJZGVudGl0eUFuY2hvciIgeG1pOmlkPSJfZldmVjF5UXNFZXVEOGVUdmhpVkl3ZyIvPgogICAgICAgPHRhcmdldEFuY2hvciB4bWk6dHlwZT0ibm90YXRpb246SWRlbnRpdHlBbmNob3IiIHhtaTppZD0iX2ZXZlYyQ1FzRWV1RDhlVHZoaVZJd2ciLz4KICAgICA8L2VkZ2VzPgorICAgIDxlZGdlcyB4bWk6dHlwZT0ibm90YXRpb246Q29ubmVjdG9yIiB4bWk6aWQ9Il9Mdml1WVlmWEVldUd0ZFdkc0Q0LUVRIiB0eXBlPSJTdGVyZW90eXBlQ29tbWVudExpbmsiIHNvdXJjZT0iX2w0bUhzSmJXRWVlTTctRWtHY1ppc3ciIHRhcmdldD0iX0x2ZnJFNGZYRWV1R3RkV2RzRDQtRVEiPgorICAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246Rm9udFN0eWxlIiB4bWk6aWQ9Il9Mdml1WW9mWEVldUd0ZFdkc0Q0LUVRIi8+CisgICAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpFT2JqZWN0VmFsdWVTdHlsZSIgeG1pOmlkPSJfTHZpdVpvZlhFZXVHdGRXZHNENC1FUSIgbmFtZT0iQkFTRV9FTEVNRU5UIj4KKyAgICAgICAgPGVPYmplY3RWYWx1ZSB4bWk6dHlwZT0idW1sOkNsYXNzIiBocmVmPSJwYXRobWFwOi8vVU1MX01FVEFNT0RFTFMvVU1MLm1ldGFtb2RlbC51bWwjQ2xhc3MiLz4KKyAgICAgIDwvc3R5bGVzPgorICAgICAgPGVsZW1lbnQgeHNpOm5pbD0idHJ1ZSIvPgorICAgICAgPGJlbmRwb2ludHMgeG1pOnR5cGU9Im5vdGF0aW9uOlJlbGF0aXZlQmVuZHBvaW50cyIgeG1pOmlkPSJfTHZpdVk0ZlhFZXVHdGRXZHNENC1FUSIgcG9pbnRzPSJbMCwgMCwgMCwgMF0kWzAsIDAsIDAsIDBdIi8+CisgICAgICA8c291cmNlQW5jaG9yIHhtaTp0eXBlPSJub3RhdGlvbjpJZGVudGl0eUFuY2hvciIgeG1pOmlkPSJfTHZpdVpJZlhFZXVHdGRXZHNENC1FUSIvPgorICAgICAgPHRhcmdldEFuY2hvciB4bWk6dHlwZT0ibm90YXRpb246SWRlbnRpdHlBbmNob3IiIHhtaTppZD0iX0x2aXVaWWZYRWV1R3RkV2RzRDQtRVEiLz4KKyAgICA8L2VkZ2VzPgorICAgIDxlZGdlcyB4bWk6dHlwZT0ibm90YXRpb246Q29ubmVjdG9yIiB4bWk6aWQ9Il9MdnI0VVlmWEVldUd0ZFdkc0Q0LUVRIiB0eXBlPSJTdGVyZW90eXBlQ29tbWVudExpbmsiIHNvdXJjZT0iXzdUSkN3SjB1RWVlQnlzMXhHUEcxUmciIHRhcmdldD0iX0x2clJRNGZYRWV1R3RkV2RzRDQtRVEiPgorICAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246Rm9udFN0eWxlIiB4bWk6aWQ9Il9MdnI0VW9mWEVldUd0ZFdkc0Q0LUVRIi8+CisgICAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpFT2JqZWN0VmFsdWVTdHlsZSIgeG1pOmlkPSJfTHZyNFZvZlhFZXVHdGRXZHNENC1FUSIgbmFtZT0iQkFTRV9FTEVNRU5UIj4KKyAgICAgICAgPGVPYmplY3RWYWx1ZSB4bWk6dHlwZT0idW1sOkNsYXNzIiBocmVmPSJwYXRobWFwOi8vVU1MX01FVEFNT0RFTFMvVU1MLm1ldGFtb2RlbC51bWwjSW5zdGFuY2VTcGVjaWZpY2F0aW9uIi8+CisgICAgICA8L3N0eWxlcz4KKyAgICAgIDxlbGVtZW50IHhzaTpuaWw9InRydWUiLz4KKyAgICAgIDxiZW5kcG9pbnRzIHhtaTp0eXBlPSJub3RhdGlvbjpSZWxhdGl2ZUJlbmRwb2ludHMiIHhtaTppZD0iX0x2cjRVNGZYRWV1R3RkV2RzRDQtRVEiIHBvaW50cz0iWzAsIDAsIDAsIDBdJFswLCAwLCAwLCAwXSIvPgorICAgICAgPHNvdXJjZUFuY2hvciB4bWk6dHlwZT0ibm90YXRpb246SWRlbnRpdHlBbmNob3IiIHhtaTppZD0iX0x2cjRWSWZYRWV1R3RkV2RzRDQtRVEiLz4KKyAgICAgIDx0YXJnZXRBbmNob3IgeG1pOnR5cGU9Im5vdGF0aW9uOklkZW50aXR5QW5jaG9yIiB4bWk6aWQ9Il9MdnI0VllmWEVldUd0ZFdkc0Q0LUVRIi8+CisgICAgPC9lZGdlcz4KKyAgICA8ZWRnZXMgeG1pOnR5cGU9Im5vdGF0aW9uOkNvbm5lY3RvciIgeG1pOmlkPSJfTHYyM2RJZlhFZXVHdGRXZHNENC1FUSIgdHlwZT0iU3RlcmVvdHlwZUNvbW1lbnRMaW5rIiBzb3VyY2U9Il92UW5FUVBSLUVlZWVPZUdlWnd4aVp3IiB0YXJnZXQ9Il9MdjIzY0lmWEVldUd0ZFdkc0Q0LUVRIj4KKyAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOkZvbnRTdHlsZSIgeG1pOmlkPSJfTHYyM2RZZlhFZXVHdGRXZHNENC1FUSIvPgorICAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246RU9iamVjdFZhbHVlU3R5bGUiIHhtaTppZD0iX0x2MjNlWWZYRWV1R3RkV2RzRDQtRVEiIG5hbWU9IkJBU0VfRUxFTUVOVCI+CisgICAgICAgIDxlT2JqZWN0VmFsdWUgeG1pOnR5cGU9InVtbDpDbGFzcyIgaHJlZj0icGF0aG1hcDovL1VNTF9NRVRBTU9ERUxTL1VNTC5tZXRhbW9kZWwudW1sI1BvcnQiLz4KKyAgICAgIDwvc3R5bGVzPgorICAgICAgPGVsZW1lbnQgeHNpOm5pbD0idHJ1ZSIvPgorICAgICAgPGJlbmRwb2ludHMgeG1pOnR5cGU9Im5vdGF0aW9uOlJlbGF0aXZlQmVuZHBvaW50cyIgeG1pOmlkPSJfTHYyM2RvZlhFZXVHdGRXZHNENC1FUSIgcG9pbnRzPSJbMCwgMCwgMCwgMF0kWzAsIDAsIDAsIDBdIi8+CisgICAgICA8c291cmNlQW5jaG9yIHhtaTp0eXBlPSJub3RhdGlvbjpJZGVudGl0eUFuY2hvciIgeG1pOmlkPSJfTHYyM2Q0ZlhFZXVHdGRXZHNENC1FUSIvPgorICAgICAgPHRhcmdldEFuY2hvciB4bWk6dHlwZT0ibm90YXRpb246SWRlbnRpdHlBbmNob3IiIHhtaTppZD0iX0x2MjNlSWZYRWV1R3RkV2RzRDQtRVEiLz4KKyAgICA8L2VkZ2VzPgorICAgIDxlZGdlcyB4bWk6dHlwZT0ibm90YXRpb246Q29ubmVjdG9yIiB4bWk6aWQ9Il9Md0JQaElmWEVldUd0ZFdkc0Q0LUVRIiB0eXBlPSJTdGVyZW90eXBlQ29tbWVudExpbmsiIHNvdXJjZT0iX2FQVExVQk5ERWVpLUNNVkxZMVNtZGciIHRhcmdldD0iX0x3QlBnSWZYRWV1R3RkV2RzRDQtRVEiPgorICAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246Rm9udFN0eWxlIiB4bWk6aWQ9Il9Md0JQaFlmWEVldUd0ZFdkc0Q0LUVRIi8+CisgICAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpFT2JqZWN0VmFsdWVTdHlsZSIgeG1pOmlkPSJfTHdCUGlZZlhFZXVHdGRXZHNENC1FUSIgbmFtZT0iQkFTRV9FTEVNRU5UIj4KKyAgICAgICAgPGVPYmplY3RWYWx1ZSB4bWk6dHlwZT0idW1sOkNsYXNzIiBocmVmPSJwYXRobWFwOi8vVU1MX01FVEFNT0RFTFMvVU1MLm1ldGFtb2RlbC51bWwjUHJvcGVydHkiLz4KKyAgICAgIDwvc3R5bGVzPgorICAgICAgPGVsZW1lbnQgeHNpOm5pbD0idHJ1ZSIvPgorICAgICAgPGJlbmRwb2ludHMgeG1pOnR5cGU9Im5vdGF0aW9uOlJlbGF0aXZlQmVuZHBvaW50cyIgeG1pOmlkPSJfTHdCUGhvZlhFZXVHdGRXZHNENC1FUSIgcG9pbnRzPSJbMCwgMCwgMCwgMF0kWzAsIDAsIDAsIDBdIi8+CisgICAgICA8c291cmNlQW5jaG9yIHhtaTp0eXBlPSJub3RhdGlvbjpJZGVudGl0eUFuY2hvciIgeG1pOmlkPSJfTHdCUGg0ZlhFZXVHdGRXZHNENC1FUSIvPgorICAgICAgPHRhcmdldEFuY2hvciB4bWk6dHlwZT0ibm90YXRpb246SWRlbnRpdHlBbmNob3IiIHhtaTppZD0iX0x3QlBpSWZYRWV1R3RkV2RzRDQtRVEiLz4KKyAgICA8L2VkZ2VzPgorICAgIDxlZGdlcyB4bWk6dHlwZT0ibm90YXRpb246Q29ubmVjdG9yIiB4bWk6aWQ9Il9Md09xNTRmWEVldUd0ZFdkc0Q0LUVRIiB0eXBlPSJTdGVyZW90eXBlQ29tbWVudExpbmsiIHNvdXJjZT0iX3R3a1VjRWxhRWVpY2VkZTVLODZrUGciIHRhcmdldD0iX0x3T3E0NGZYRWV1R3RkV2RzRDQtRVEiPgorICAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246Rm9udFN0eWxlIiB4bWk6aWQ9Il9Md09xNklmWEVldUd0ZFdkc0Q0LUVRIi8+CisgICAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpFT2JqZWN0VmFsdWVTdHlsZSIgeG1pOmlkPSJfTHdQUjhJZlhFZXVHdGRXZHNENC1FUSIgbmFtZT0iQkFTRV9FTEVNRU5UIj4KKyAgICAgICAgPGVPYmplY3RWYWx1ZSB4bWk6dHlwZT0idW1sOkNsYXNzIiBocmVmPSJwYXRobWFwOi8vVU1MX01FVEFNT0RFTFMvVU1MLm1ldGFtb2RlbC51bWwjUGFja2FnZSIvPgorICAgICAgPC9zdHlsZXM+CisgICAgICA8ZWxlbWVudCB4c2k6bmlsPSJ0cnVlIi8+CisgICAgICA8YmVuZHBvaW50cyB4bWk6dHlwZT0ibm90YXRpb246UmVsYXRpdmVCZW5kcG9pbnRzIiB4bWk6aWQ9Il9Md09xNllmWEVldUd0ZFdkc0Q0LUVRIiBwb2ludHM9IlswLCAwLCAwLCAwXSRbMCwgMCwgMCwgMF0iLz4KKyAgICAgIDxzb3VyY2VBbmNob3IgeG1pOnR5cGU9Im5vdGF0aW9uOklkZW50aXR5QW5jaG9yIiB4bWk6aWQ9Il9Md09xNm9mWEVldUd0ZFdkc0Q0LUVRIi8+CisgICAgICA8dGFyZ2V0QW5jaG9yIHhtaTp0eXBlPSJub3RhdGlvbjpJZGVudGl0eUFuY2hvciIgeG1pOmlkPSJfTHdPcTY0ZlhFZXVHdGRXZHNENC1FUSIvPgorICAgIDwvZWRnZXM+CiAgIDwvbm90YXRpb246RGlhZ3JhbT4KICAgPG5vdGF0aW9uOkRpYWdyYW0geG1pOmlkPSJfX0hxS2tKZTZFZWVpQ09Xc0VyOU91QSIgdHlwZT0iUGFweXJ1c1VNTFByb2ZpbGVEaWFncmFtIiBuYW1lPSJjb21tUGF0dGVybiIgbWVhc3VyZW1lbnRVbml0PSJQaXhlbCI+CiAgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpTaGFwZSIgeG1pOmlkPSJfRHhteE1KZTdFZWVpQ09Xc0VyOU91QSIgdHlwZT0iU3RlcmVvdHlwZV9TaGFwZSI+CmRpZmYgLS1naXQgYS9wbHVnaW5zL2N1c3RvbWl6YXRpb24vb3JnLmVjbGlwc2UucGFweXJ1cy5yb2JvdGljcy5wcm9maWxlL21vZGVsL3JvYm90aWNzLnByb2ZpbGUudW1sIGIvcGx1Z2lucy9jdXN0b21pemF0aW9uL29yZy5lY2xpcHNlLnBhcHlydXMucm9ib3RpY3MucHJvZmlsZS9tb2RlbC9yb2JvdGljcy5wcm9maWxlLnVtbAppbmRleCBjMzA0YTg3Li40NDM4MmY0IDEwMDY0NAotLS0gYS9wbHVnaW5zL2N1c3RvbWl6YXRpb24vb3JnLmVjbGlwc2UucGFweXJ1cy5yb2JvdGljcy5wcm9maWxlL21vZGVsL3JvYm90aWNzLnByb2ZpbGUudW1sCisrKyBiL3BsdWdpbnMvY3VzdG9taXphdGlvbi9vcmcuZWNsaXBzZS5wYXB5cnVzLnJvYm90aWNzLnByb2ZpbGUvbW9kZWwvcm9ib3RpY3MucHJvZmlsZS51bWwKQEAgLTMyLDIxICszMiwxMCBAQAogICAgICAgPGltcG9ydGVkRWxlbWVudCB4bWk6dHlwZT0idW1sOkNsYXNzIiBocmVmPSJwYXRobWFwOi8vVU1MX01FVEFNT0RFTFMvVU1MLm1ldGFtb2RlbC51bWwjUGFja2FnZSIvPgogICAgIDwvZWxlbWVudEltcG9ydD4KICAgICA8cGFja2FnZWRFbGVtZW50IHhtaTp0eXBlPSJ1bWw6U3RlcmVvdHlwZSIgeG1pOmlkPSJfTDN3ZG9KWjJFZWVxMWY4aEdnS1Z6QSIgbmFtZT0iQ29tcG9uZW50RGVmaW5pdGlvbiI+Ci0gICAgICA8Z2VuZXJhbGl6YXRpb24geG1pOnR5cGU9InVtbDpHZW5lcmFsaXphdGlvbiIgeG1pOmlkPSJfMFhKMUFLaUhFZWVyS19VRFFGRnpMZyI+Ci0gICAgICAgIDxnZW5lcmFsIHhtaTp0eXBlPSJ1bWw6U3RlcmVvdHlwZSIgaHJlZj0icGF0aG1hcDovL1JPQk9USUNTX0JQQ19QUk9GSUxFUy9icGMucHJvZmlsZS51bWwjX3RRellvS2dmRWVleHJiakN2b2dsQ1EiLz4KLSAgICAgIDwvZ2VuZXJhbGl6YXRpb24+CisgICAgICA8Z2VuZXJhbGl6YXRpb24geG1pOnR5cGU9InVtbDpHZW5lcmFsaXphdGlvbiIgeG1pOmlkPSJfMFhKMUFLaUhFZWVyS19VRFFGRnpMZyIgZ2VuZXJhbD0iX0QzRDZRSVFwRWV1aGc0YjB5ZnU0a0EiLz4KICAgICAgIDxvd25lZEF0dHJpYnV0ZSB4bWk6dHlwZT0idW1sOlByb3BlcnR5IiB4bWk6aWQ9Il96eERGUUpiV0VlZU03LUVrR2NaaXN3IiBuYW1lPSJiYXNlX0NsYXNzIiBhc3NvY2lhdGlvbj0iX3p3LU13SmJXRWVlTTctRWtHY1ppc3ciPgogICAgICAgICA8dHlwZSB4bWk6dHlwZT0idW1sOkNsYXNzIiBocmVmPSJwYXRobWFwOi8vVU1MX01FVEFNT0RFTFMvVU1MLm1ldGFtb2RlbC51bWwjQ2xhc3MiLz4KICAgICAgIDwvb3duZWRBdHRyaWJ1dGU+Ci0gICAgICA8b3duZWRBdHRyaWJ1dGUgeG1pOnR5cGU9InVtbDpQcm9wZXJ0eSIgeG1pOmlkPSJfbmlBYUF2djJFZWUya09nWGNHaDE4ZyIgbmFtZT0icG9ydCIgdHlwZT0iXzFRUTVrUFItRWVlZU9lR2Vad3hpWnciIGlzUmVhZE9ubHk9InRydWUiIGlzRGVyaXZlZD0idHJ1ZSIgYXNzb2NpYXRpb249Il9uaF95OFB2MkVlZTJrT2dYY0doMThnIj4KLSAgICAgICAgPGxvd2VyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsSW50ZWdlciIgeG1pOmlkPSJfdTBsMjBQdjJFZWUya09nWGNHaDE4ZyIvPgotICAgICAgICA8dXBwZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxVbmxpbWl0ZWROYXR1cmFsIiB4bWk6aWQ9Il91MDF1Y1B2MkVlZTJrT2dYY0doMThnIiB2YWx1ZT0iKiIvPgotICAgICAgICA8c3Vic2V0dGVkUHJvcGVydHkgeG1pOnR5cGU9InVtbDpQcm9wZXJ0eSIgaHJlZj0icGF0aG1hcDovL1JPQk9USUNTX0JQQ19QUk9GSUxFUy9icGMucHJvZmlsZS51bWwjX2Z4UHJJS2ctRWVlVF9zYkJmOUZTQnciLz4KLSAgICAgIDwvb3duZWRBdHRyaWJ1dGU+Ci0gICAgICA8b3duZWRBdHRyaWJ1dGUgeG1pOnR5cGU9InVtbDpQcm9wZXJ0eSIgeG1pOmlkPSJfSTRESzhQdnlFZWUya09nWGNHaDE4ZyIgbmFtZT0ic2VydmljZXMiIHR5cGU9Il9QY21kWUpaMkVlZXExZjhoR2dLVnpBIiBpc1JlYWRPbmx5PSJ0cnVlIiBpc0Rlcml2ZWQ9InRydWUiIGFzc29jaWF0aW9uPSJfSTMtU2NQdnlFZWUya09nWGNHaDE4ZyI+Ci0gICAgICAgIDxsb3dlclZhbHVlIHhtaTp0eXBlPSJ1bWw6TGl0ZXJhbEludGVnZXIiIHhtaTppZD0iX1RWZmFNUHZ5RWVlMmtPZ1hjR2gxOGciLz4KLSAgICAgICAgPHVwcGVyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsVW5saW1pdGVkTmF0dXJhbCIgeG1pOmlkPSJfVFY1QzBQdnlFZWUya09nWGNHaDE4ZyIgdmFsdWU9IioiLz4KLSAgICAgIDwvb3duZWRBdHRyaWJ1dGU+CiAgICAgICA8b3duZWRBdHRyaWJ1dGUgeG1pOnR5cGU9InVtbDpQcm9wZXJ0eSIgeG1pOmlkPSJfWWVuaUV2dndFZWVHQU8ybV9XUm1EZyIgbmFtZT0icGFyYW1ldGVyIiB0eXBlPSJfMVZTUWdEbXJFZWktLVpzZktXYUZ0dyIgaXNSZWFkT25seT0idHJ1ZSIgaXNEZXJpdmVkPSJ0cnVlIiBhc3NvY2lhdGlvbj0iX1llbTdBUHZ3RWVlR0FPMm1fV1JtRGciPgogICAgICAgICA8bG93ZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxJbnRlZ2VyIiB4bWk6aWQ9Il9kUElxd1B2d0VlZUdBTzJtX1dSbURnIi8+CiAgICAgICA8L293bmVkQXR0cmlidXRlPgpAQCAtMTY4LDEzICsxNTcsMTMgQEAKICAgICAgIDxlQW5ub3RhdGlvbnMgeG1pOnR5cGU9ImVjb3JlOkVBbm5vdGF0aW9uIiB4bWk6aWQ9Il9JNEI4MFB2eUVlZTJrT2dYY0doMThnIiBzb3VyY2U9Im9yZy5lY2xpcHNlLnBhcHlydXMiPgogICAgICAgICA8ZGV0YWlscyB4bWk6dHlwZT0iZWNvcmU6RVN0cmluZ1RvU3RyaW5nTWFwRW50cnkiIHhtaTppZD0iX0k0Q2o0UHZ5RWVlMmtPZ1hjR2gxOGciIGtleT0ibmF0dXJlIiB2YWx1ZT0iVU1MX05hdHVyZSIvPgogICAgICAgPC9lQW5ub3RhdGlvbnM+Ci0gICAgICA8b3duZWRFbmQgeG1pOnR5cGU9InVtbDpQcm9wZXJ0eSIgeG1pOmlkPSJfSTRFWkVQdnlFZWUya09nWGNHaDE4ZyIgbmFtZT0iY29tcG9uZW50ZGVmaW5pdGlvbiIgdHlwZT0iX0wzd2RvSloyRWVlcTFmOGhHZ0tWekEiIGFzc29jaWF0aW9uPSJfSTMtU2NQdnlFZWUya09nWGNHaDE4ZyIvPgorICAgICAgPG93bmVkRW5kIHhtaTp0eXBlPSJ1bWw6UHJvcGVydHkiIHhtaTppZD0iX0k0RVpFUHZ5RWVlMmtPZ1hjR2gxOGciIG5hbWU9ImNvbXBvbmVudGRlZmluaXRpb24iIHR5cGU9Il9EM0Q2UUlRcEVldWhnNGIweWZ1NGtBIiBhc3NvY2lhdGlvbj0iX0kzLVNjUHZ5RWVlMmtPZ1hjR2gxOGciLz4KICAgICA8L3BhY2thZ2VkRWxlbWVudD4KICAgICA8cGFja2FnZWRFbGVtZW50IHhtaTp0eXBlPSJ1bWw6QXNzb2NpYXRpb24iIHhtaTppZD0iX25oX3k4UHYyRWVlMmtPZ1hjR2gxOGciIG1lbWJlckVuZD0iX25pQWFBdnYyRWVlMmtPZ1hjR2gxOGcgX25pQkJFUHYyRWVlMmtPZ1hjR2gxOGciPgogICAgICAgPGVBbm5vdGF0aW9ucyB4bWk6dHlwZT0iZWNvcmU6RUFubm90YXRpb24iIHhtaTppZD0iX25pQWFBUHYyRWVlMmtPZ1hjR2gxOGciIHNvdXJjZT0ib3JnLmVjbGlwc2UucGFweXJ1cyI+CiAgICAgICAgIDxkZXRhaWxzIHhtaTp0eXBlPSJlY29yZTpFU3RyaW5nVG9TdHJpbmdNYXBFbnRyeSIgeG1pOmlkPSJfbmlBYUFmdjJFZWUya09nWGNHaDE4ZyIga2V5PSJuYXR1cmUiIHZhbHVlPSJVTUxfTmF0dXJlIi8+CiAgICAgICA8L2VBbm5vdGF0aW9ucz4KLSAgICAgIDxvd25lZEVuZCB4bWk6dHlwZT0idW1sOlByb3BlcnR5IiB4bWk6aWQ9Il9uaUJCRVB2MkVlZTJrT2dYY0doMThnIiBuYW1lPSJjb21wb25lbnRkZWZpbml0aW9uIiB0eXBlPSJfTDN3ZG9KWjJFZWVxMWY4aEdnS1Z6QSIgYXNzb2NpYXRpb249Il9uaF95OFB2MkVlZTJrT2dYY0doMThnIi8+CisgICAgICA8b3duZWRFbmQgeG1pOnR5cGU9InVtbDpQcm9wZXJ0eSIgeG1pOmlkPSJfbmlCQkVQdjJFZWUya09nWGNHaDE4ZyIgbmFtZT0iY29tcG9uZW50ZGVmaW5pdGlvbiIgdHlwZT0iX0QzRDZRSVFwRWV1aGc0YjB5ZnU0a0EiIGFzc29jaWF0aW9uPSJfbmhfeThQdjJFZWUya09nWGNHaDE4ZyIvPgogICAgIDwvcGFja2FnZWRFbGVtZW50PgogICAgIDxwYWNrYWdlZEVsZW1lbnQgeG1pOnR5cGU9InVtbDpBc3NvY2lhdGlvbiIgeG1pOmlkPSJfUFFxUUFQdzRFZWUya09nWGNHaDE4ZyIgbWVtYmVyRW5kPSJfUFFzc1FmdzRFZWUya09nWGNHaDE4ZyBfUFF1aGNQdzRFZWUya09nWGNHaDE4ZyI+CiAgICAgICA8ZUFubm90YXRpb25zIHhtaTp0eXBlPSJlY29yZTpFQW5ub3RhdGlvbiIgeG1pOmlkPSJfUFFzRk1QdzRFZWUya09nWGNHaDE4ZyIgc291cmNlPSJvcmcuZWNsaXBzZS5wYXB5cnVzIj4KQEAgLTIxOSwxNyArMjA4LDEzIEBACiAgICAgICA8b3duZWRBdHRyaWJ1dGUgeG1pOnR5cGU9InVtbDpQcm9wZXJ0eSIgeG1pOmlkPSJfaVdhY1lSTkRFZWktQ01WTFkxU21kZyIgbmFtZT0iYmFzZV9Qcm9wZXJ0eSIgYXNzb2NpYXRpb249Il9pV1oxVUJOREVlaS1DTVZMWTFTbWRnIj4KICAgICAgICAgPHR5cGUgeG1pOnR5cGU9InVtbDpDbGFzcyIgaHJlZj0icGF0aG1hcDovL1VNTF9NRVRBTU9ERUxTL1VNTC5tZXRhbW9kZWwudW1sI1Byb3BlcnR5Ii8+CiAgICAgICA8L293bmVkQXR0cmlidXRlPgotICAgICAgPG93bmVkQXR0cmlidXRlIHhtaTp0eXBlPSJ1bWw6UHJvcGVydHkiIHhtaTppZD0iX2pEOFdrQlhfRWVxeGFzNElaWjdjZFEiIG5hbWU9ImNvbXBkZWYiIHZpc2liaWxpdHk9InB1YmxpYyIgdHlwZT0iX0wzd2RvSloyRWVlcTFmOGhHZ0tWekEiIGlzUmVhZE9ubHk9InRydWUiIGlzRGVyaXZlZD0idHJ1ZSI+CisgICAgICA8b3duZWRBdHRyaWJ1dGUgeG1pOnR5cGU9InVtbDpQcm9wZXJ0eSIgeG1pOmlkPSJfakQ4V2tCWF9FZXF4YXM0SVpaN2NkUSIgbmFtZT0iY29tcGRlZk9yU3lzIiB2aXNpYmlsaXR5PSJwdWJsaWMiIHR5cGU9Il9EM0Q2UUlRcEVldWhnNGIweWZ1NGtBIiBpc1JlYWRPbmx5PSJ0cnVlIiBpc0Rlcml2ZWQ9InRydWUiPgogICAgICAgICA8bG93ZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxJbnRlZ2VyIiB4bWk6aWQ9Il9yazRjNEJYX0VlcXhhczRJWlo3Y2RRIi8+CiAgICAgICA8L293bmVkQXR0cmlidXRlPgogICAgICAgPG93bmVkQXR0cmlidXRlIHhtaTp0eXBlPSJ1bWw6UHJvcGVydHkiIHhtaTppZD0iX0c1OVZvQllXRWVxNUU0SUE4Q3k4N3ciIG5hbWU9InBvcnQiIHR5cGU9Il8xUVE1a1BSLUVlZWVPZUdlWnd4aVp3IiBpc1JlYWRPbmx5PSJ0cnVlIiBpc0Rlcml2ZWQ9InRydWUiPgogICAgICAgICA8bG93ZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxJbnRlZ2VyIiB4bWk6aWQ9Il9KdzlYOEJZV0VlcTVFNElBOEN5ODd3Ii8+CiAgICAgICAgIDx1cHBlclZhbHVlIHhtaTp0eXBlPSJ1bWw6TGl0ZXJhbFVubGltaXRlZE5hdHVyYWwiIHhtaTppZD0iX0p2VkFRQllXRWVxNUU0SUE4Q3k4N3ciIHZhbHVlPSIqIi8+CiAgICAgICA8L293bmVkQXR0cmlidXRlPgotICAgICAgPG93bmVkQXR0cmlidXRlIHhtaTp0eXBlPSJ1bWw6UHJvcGVydHkiIHhtaTppZD0iX3lsLUZ3QllhRWVxcHNPZFRYNTJqakEiIG5hbWU9ImFjdGl2aXRpZXMiIHR5cGU9Il9Wb2VKd0paMkVlZXExZjhoR2dLVnpBIiBpc1JlYWRPbmx5PSJ0cnVlIiBpc0Rlcml2ZWQ9InRydWUiPgotICAgICAgICA8bG93ZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxJbnRlZ2VyIiB4bWk6aWQ9Il8yNTlEY0JZYUVlcXBzT2RUWDUyampBIi8+Ci0gICAgICAgIDx1cHBlclZhbHVlIHhtaTp0eXBlPSJ1bWw6TGl0ZXJhbFVubGltaXRlZE5hdHVyYWwiIHhtaTppZD0iXzI0YXlZQllhRWVxcHNPZFRYNTJqakEiIHZhbHVlPSIqIi8+Ci0gICAgICA8L293bmVkQXR0cmlidXRlPgogICAgICAgPGljb24geG1pOnR5cGU9InVtbDpJbWFnZSIgeG1pOmlkPSJfcG94LThDdDZFZWlzTXZzeldyeDlRQSIgbG9jYXRpb249InBsYXRmb3JtOi9wbHVnaW4vb3JnLmVjbGlwc2UucGFweXJ1cy5yb2JvdGljcy5wcm9maWxlL2ljb25zL0NvbXBvbmVudEluc3RhbmNlLnBuZyI+CiAgICAgICAgIDxlQW5ub3RhdGlvbnMgeG1pOnR5cGU9ImVjb3JlOkVBbm5vdGF0aW9uIiB4bWk6aWQ9Il93QWxPZ0N0NkVlaXNNdnN6V3J4OVFBIiBzb3VyY2U9ImltYWdlX3BhcHlydXMiPgogICAgICAgICAgIDxkZXRhaWxzIHhtaTp0eXBlPSJlY29yZTpFU3RyaW5nVG9TdHJpbmdNYXBFbnRyeSIgeG1pOmlkPSJfd0FsMWtDdDZFZWlzTXZzeldyeDlRQSIga2V5PSJpbWFnZV9raW5kX2tleSIgdmFsdWU9Imljb24iLz4KQEAgLTI0Niw5ICsyMzEsNyBAQAogICAgICAgPG93bmVkRW5kIHhtaTp0eXBlPSJ1bWw6RXh0ZW5zaW9uRW5kIiB4bWk6aWQ9Il9pV2FjWUJOREVlaS1DTVZMWTFTbWRnIiBuYW1lPSJleHRlbnNpb25fQ29tcG9uZW50SW5zdGFuY2UiIHR5cGU9Il9mLXZGUUJOQkVlaS1DTVZMWTFTbWRnIiBhZ2dyZWdhdGlvbj0iY29tcG9zaXRlIiBhc3NvY2lhdGlvbj0iX2lXWjFVQk5ERWVpLUNNVkxZMVNtZGciLz4KICAgICA8L3BhY2thZ2VkRWxlbWVudD4KICAgICA8cGFja2FnZWRFbGVtZW50IHhtaTp0eXBlPSJ1bWw6U3RlcmVvdHlwZSIgeG1pOmlkPSJfc3BfX0FCU1dFZWktQ01WTFkxU21kZyIgbmFtZT0iU3lzdGVtIj4KLSAgICAgIDxnZW5lcmFsaXphdGlvbiB4bWk6dHlwZT0idW1sOkdlbmVyYWxpemF0aW9uIiB4bWk6aWQ9Il93TmZUNEJTV0VlaS1DTVZMWTFTbWRnIj4KLSAgICAgICAgPGdlbmVyYWwgeG1pOnR5cGU9InVtbDpTdGVyZW90eXBlIiBocmVmPSJwYXRobWFwOi8vUk9CT1RJQ1NfQlBDX1BST0ZJTEVTL2JwYy5wcm9maWxlLnVtbCNfdFF6WW9LZ2ZFZWV4cmJqQ3ZvZ2xDUSIvPgotICAgICAgPC9nZW5lcmFsaXphdGlvbj4KKyAgICAgIDxnZW5lcmFsaXphdGlvbiB4bWk6dHlwZT0idW1sOkdlbmVyYWxpemF0aW9uIiB4bWk6aWQ9Il93TmZUNEJTV0VlaS1DTVZMWTFTbWRnIiBnZW5lcmFsPSJfRDNENlFJUXBFZXVoZzRiMHlmdTRrQSIvPgogICAgICAgPG93bmVkQXR0cmlidXRlIHhtaTp0eXBlPSJ1bWw6UHJvcGVydHkiIHhtaTppZD0iXzVrNGhFeFNXRWVpLUNNVkxZMVNtZGciIG5hbWU9Imluc3RhbmNlcyIgdHlwZT0iX2YtdkZRQk5CRWVpLUNNVkxZMVNtZGciIGlzUmVhZE9ubHk9InRydWUiIGlzRGVyaXZlZD0idHJ1ZSIgYXNzb2NpYXRpb249Il81azRoRUJTV0VlaS1DTVZMWTFTbWRnIj4KICAgICAgICAgPGxvd2VyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsSW50ZWdlciIgeG1pOmlkPSJfaDAxVzBCU1hFZWktQ01WTFkxU21kZyIvPgogICAgICAgICA8dXBwZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxVbmxpbWl0ZWROYXR1cmFsIiB4bWk6aWQ9Il9oMU54VUJTWEVlaS1DTVZMWTFTbWRnIiB2YWx1ZT0iKiIvPgpAQCAtMzc5LDYgKzM2MiwyMCBAQAogICAgICAgPC9lQW5ub3RhdGlvbnM+CiAgICAgICA8b3duZWRFbmQgeG1pOnR5cGU9InVtbDpQcm9wZXJ0eSIgeG1pOmlkPSJfTGhwaUVNZFZFZXFSS3V1YTVnM0VBQSIgbmFtZT0ic3lzdGVtIiB0eXBlPSJfc3BfX0FCU1dFZWktQ01WTFkxU21kZyIgYXNzb2NpYXRpb249Il9MaGJmb01kVkVlcVJLdXVhNWczRUFBIi8+CiAgICAgPC9wYWNrYWdlZEVsZW1lbnQ+CisgICAgPHBhY2thZ2VkRWxlbWVudCB4bWk6dHlwZT0idW1sOlN0ZXJlb3R5cGUiIHhtaTppZD0iX0QzRDZRSVFwRWV1aGc0YjB5ZnU0a0EiIG5hbWU9IkNvbXBvbmVudE9yU3lzdGVtIiBpc0Fic3RyYWN0PSJ0cnVlIj4KKyAgICAgIDxnZW5lcmFsaXphdGlvbiB4bWk6dHlwZT0idW1sOkdlbmVyYWxpemF0aW9uIiB4bWk6aWQ9Il9YbmhOQUlRcEVldWhnNGIweWZ1NGtBIj4KKyAgICAgICAgPGdlbmVyYWwgeG1pOnR5cGU9InVtbDpTdGVyZW90eXBlIiBocmVmPSJwYXRobWFwOi8vUk9CT1RJQ1NfQlBDX1BST0ZJTEVTL2JwYy5wcm9maWxlLnVtbCNfdFF6WW9LZ2ZFZWV4cmJqQ3ZvZ2xDUSIvPgorICAgICAgPC9nZW5lcmFsaXphdGlvbj4KKyAgICAgIDxvd25lZEF0dHJpYnV0ZSB4bWk6dHlwZT0idW1sOlByb3BlcnR5IiB4bWk6aWQ9Il9uaUFhQXZ2MkVlZTJrT2dYY0doMThnIiBuYW1lPSJwb3J0IiB0eXBlPSJfMVFRNWtQUi1FZWVlT2VHZVp3eGladyIgaXNSZWFkT25seT0idHJ1ZSIgaXNEZXJpdmVkPSJ0cnVlIiBhc3NvY2lhdGlvbj0iX25oX3k4UHYyRWVlMmtPZ1hjR2gxOGciPgorICAgICAgICA8bG93ZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxJbnRlZ2VyIiB4bWk6aWQ9Il91MGwyMFB2MkVlZTJrT2dYY0doMThnIi8+CisgICAgICAgIDx1cHBlclZhbHVlIHhtaTp0eXBlPSJ1bWw6TGl0ZXJhbFVubGltaXRlZE5hdHVyYWwiIHhtaTppZD0iX3UwMXVjUHYyRWVlMmtPZ1hjR2gxOGciIHZhbHVlPSIqIi8+CisgICAgICAgIDxzdWJzZXR0ZWRQcm9wZXJ0eSB4bWk6dHlwZT0idW1sOlByb3BlcnR5IiBocmVmPSJwYXRobWFwOi8vUk9CT1RJQ1NfQlBDX1BST0ZJTEVTL2JwYy5wcm9maWxlLnVtbCNfZnhQcklLZy1FZWVUX3NiQmY5RlNCdyIvPgorICAgICAgPC9vd25lZEF0dHJpYnV0ZT4KKyAgICAgIDxvd25lZEF0dHJpYnV0ZSB4bWk6dHlwZT0idW1sOlByb3BlcnR5IiB4bWk6aWQ9Il9JNERLOFB2eUVlZTJrT2dYY0doMThnIiBuYW1lPSJzZXJ2aWNlcyIgdHlwZT0iX1BjbWRZSloyRWVlcTFmOGhHZ0tWekEiIGlzUmVhZE9ubHk9InRydWUiIGlzRGVyaXZlZD0idHJ1ZSIgYXNzb2NpYXRpb249Il9JMy1TY1B2eUVlZTJrT2dYY0doMThnIj4KKyAgICAgICAgPGxvd2VyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsSW50ZWdlciIgeG1pOmlkPSJfVFZmYU1QdnlFZWUya09nWGNHaDE4ZyIvPgorICAgICAgICA8dXBwZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxVbmxpbWl0ZWROYXR1cmFsIiB4bWk6aWQ9Il9UVjVDMFB2eUVlZTJrT2dYY0doMThnIiB2YWx1ZT0iKiIvPgorICAgICAgPC9vd25lZEF0dHJpYnV0ZT4KKyAgICA8L3BhY2thZ2VkRWxlbWVudD4KICAgPC9wYWNrYWdlZEVsZW1lbnQ+CiAgIDxwYWNrYWdlZEVsZW1lbnQgeG1pOnR5cGU9InVtbDpQcm9maWxlIiB4bWk6aWQ9Il84WjZ4OEplNkVlZWlDT1dzRXI5T3VBIiBuYW1lPSJjb21tcGF0dGVybiIgVVJJPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3BhcHlydXMvcm9ib3RpY3MvY29tbXBhdHRlcm4vMSIgbWV0YWNsYXNzUmVmZXJlbmNlPSJfT2dPTkFQSXhFZWVaRW9HeHJMcF92dyBfcFZOYVVDYW1FZWl0SC1wU3RrQldUdyI+CiAgICAgPGVsZW1lbnRJbXBvcnQgeG1pOnR5cGU9InVtbDpFbGVtZW50SW1wb3J0IiB4bWk6aWQ9Il9PZ09OQVBJeEVlZVpFb0d4ckxwX3Z3IiBhbGlhcz0iQ2xhc3MiPgpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9jdXN0b21pemF0aW9uL29yZy5lY2xpcHNlLnBhcHlydXMucm9ib3RpY3MucHJvZmlsZS9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvcm9ib3RpY3MvcHJvZmlsZS9yb2JvdGljcy9iZWhhdmlvci9pbXBsL0JlaGF2aW9yRmFjdG9yeUltcGwuamF2YSBiL3BsdWdpbnMvY3VzdG9taXphdGlvbi9vcmcuZWNsaXBzZS5wYXB5cnVzLnJvYm90aWNzLnByb2ZpbGUvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3JvYm90aWNzL3Byb2ZpbGUvcm9ib3RpY3MvYmVoYXZpb3IvaW1wbC9CZWhhdmlvckZhY3RvcnlJbXBsLmphdmEKaW5kZXggNzNhYzhiOS4uMDE0NTQzNCAxMDA2NDQKLS0tIGEvcGx1Z2lucy9jdXN0b21pemF0aW9uL29yZy5lY2xpcHNlLnBhcHlydXMucm9ib3RpY3MucHJvZmlsZS9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvcm9ib3RpY3MvcHJvZmlsZS9yb2JvdGljcy9iZWhhdmlvci9pbXBsL0JlaGF2aW9yRmFjdG9yeUltcGwuamF2YQorKysgYi9wbHVnaW5zL2N1c3RvbWl6YXRpb24vb3JnLmVjbGlwc2UucGFweXJ1cy5yb2JvdGljcy5wcm9maWxlL3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9yb2JvdGljcy9wcm9maWxlL3JvYm90aWNzL2JlaGF2aW9yL2ltcGwvQmVoYXZpb3JGYWN0b3J5SW1wbC5qYXZhCkBAIC0xNiw2ICsxNiw3IEBACiBpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVQYWNrYWdlOwogaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5pbXBsLkVGYWN0b3J5SW1wbDsKIGltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUucGx1Z2luLkVjb3JlUGx1Z2luOworaW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMucm9ib3RpY3MucHJvZmlsZS5yb2JvdGljcy5iZWhhdmlvci4qOwogaW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMucm9ib3RpY3MucHJvZmlsZS5yb2JvdGljcy5iZWhhdmlvci5CZWhhdmlvckRlZmluaXRpb247CiBpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5yb2JvdGljcy5wcm9maWxlLnJvYm90aWNzLmJlaGF2aW9yLkJlaGF2aW9yRmFjdG9yeTsKIGltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnJvYm90aWNzLnByb2ZpbGUucm9ib3RpY3MuYmVoYXZpb3IuQmVoYXZpb3JQYWNrYWdlOwpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9jdXN0b21pemF0aW9uL29yZy5lY2xpcHNlLnBhcHlydXMucm9ib3RpY3MucHJvZmlsZS9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvcm9ib3RpY3MvcHJvZmlsZS9yb2JvdGljcy9jb21wb25lbnRzL0NvbXBvbmVudERlZmluaXRpb24uamF2YSBiL3BsdWdpbnMvY3VzdG9taXphdGlvbi9vcmcuZWNsaXBzZS5wYXB5cnVzLnJvYm90aWNzLnByb2ZpbGUvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3JvYm90aWNzL3Byb2ZpbGUvcm9ib3RpY3MvY29tcG9uZW50cy9Db21wb25lbnREZWZpbml0aW9uLmphdmEKaW5kZXggZjkyYmIwOS4uOGJjNGI5ZCAxMDA2NDQKLS0tIGEvcGx1Z2lucy9jdXN0b21pemF0aW9uL29yZy5lY2xpcHNlLnBhcHlydXMucm9ib3RpY3MucHJvZmlsZS9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvcm9ib3RpY3MvcHJvZmlsZS9yb2JvdGljcy9jb21wb25lbnRzL0NvbXBvbmVudERlZmluaXRpb24uamF2YQorKysgYi9wbHVnaW5zL2N1c3RvbWl6YXRpb24vb3JnLmVjbGlwc2UucGFweXJ1cy5yb2JvdGljcy5wcm9maWxlL3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9yb2JvdGljcy9wcm9maWxlL3JvYm90aWNzL2NvbXBvbmVudHMvQ29tcG9uZW50RGVmaW5pdGlvbi5qYXZhCkBAIC0xMiw4ICsxMiw2IEBACiBwYWNrYWdlIG9yZy5lY2xpcHNlLnBhcHlydXMucm9ib3RpY3MucHJvZmlsZS5yb2JvdGljcy5jb21wb25lbnRzOwogCiBpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi51dGlsLkVMaXN0OwotCi1pbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5yb2JvdGljcy5icGMucHJvZmlsZS5icGMuQmxvY2s7CiBpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5yb2JvdGljcy5wcm9maWxlLnJvYm90aWNzLnBhcmFtZXRlcnMuUGFyYW1ldGVyOwogCiAvKioKQEAgLTI5LDcgKzI3LDYgQEAKICAqIFRoZSBmb2xsb3dpbmcgZmVhdHVyZXMgYXJlIHN1cHBvcnRlZDoKICAqIDwvcD4KICAqIDx1bD4KLSAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnJvYm90aWNzLnByb2ZpbGUucm9ib3RpY3MuY29tcG9uZW50cy5Db21wb25lbnREZWZpbml0aW9uI2dldFNlcnZpY2VzIDxlbT5TZXJ2aWNlczwvZW0+fTwvbGk+CiAgKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5yb2JvdGljcy5wcm9maWxlLnJvYm90aWNzLmNvbXBvbmVudHMuQ29tcG9uZW50RGVmaW5pdGlvbiNnZXRQYXJhbWV0ZXIgPGVtPlBhcmFtZXRlcjwvZW0+fTwvbGk+CiAgKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5yb2JvdGljcy5wcm9maWxlLnJvYm90aWNzLmNvbXBvbmVudHMuQ29tcG9uZW50RGVmaW5pdGlvbiNnZXRBY3Rpdml0aWVzIDxlbT5BY3Rpdml0aWVzPC9lbT59PC9saT4KICAqIDwvdWw+CkBAIC0zOCwyMyArMzUsNyBAQAogICogQG1vZGVsCiAgKiBAZ2VuZXJhdGVkCiAgKi8KLXB1YmxpYyBpbnRlcmZhY2UgQ29tcG9uZW50RGVmaW5pdGlvbiBleHRlbmRzIEJsb2NrIHsKLQkvKioKLQkgKiBSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5TZXJ2aWNlczwvYj48L2VtPicgcmVmZXJlbmNlIGxpc3QuCi0JICogVGhlIGxpc3QgY29udGVudHMgYXJlIG9mIHR5cGUge0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMucm9ib3RpY3MucHJvZmlsZS5yb2JvdGljcy5jb21wb25lbnRzLkNvbXBvbmVudFNlcnZpY2V9LgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPHA+Ci0JICogSWYgdGhlIG1lYW5pbmcgb2YgdGhlICc8ZW0+U2VydmljZXM8L2VtPicgcmVmZXJlbmNlIGxpc3QgaXNuJ3QgY2xlYXIsCi0JICogdGhlcmUgcmVhbGx5IHNob3VsZCBiZSBtb3JlIG9mIGEgZGVzY3JpcHRpb24gaGVyZS4uLgotCSAqIDwvcD4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAcmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT5TZXJ2aWNlczwvZW0+JyByZWZlcmVuY2UgbGlzdC4KLQkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMucm9ib3RpY3MucHJvZmlsZS5yb2JvdGljcy5jb21wb25lbnRzLkNvbXBvbmVudHNQYWNrYWdlI2dldENvbXBvbmVudERlZmluaXRpb25fU2VydmljZXMoKQotCSAqIEBtb2RlbCB0cmFuc2llbnQ9InRydWUiIGNoYW5nZWFibGU9ImZhbHNlIiB2b2xhdGlsZT0idHJ1ZSIgZGVyaXZlZD0idHJ1ZSIgb3JkZXJlZD0iZmFsc2UiCi0JICogQGdlbmVyYXRlZAotCSAqLwotCUVMaXN0PENvbXBvbmVudFNlcnZpY2U+IGdldFNlcnZpY2VzKCk7Ci0KK3B1YmxpYyBpbnRlcmZhY2UgQ29tcG9uZW50RGVmaW5pdGlvbiBleHRlbmRzIENvbXBvbmVudE9yU3lzdGVtIHsKIAkvKioKIAkgKiBSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5QYXJhbWV0ZXI8L2I+PC9lbT4nIHJlZmVyZW5jZS4KIAkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9jdXN0b21pemF0aW9uL29yZy5lY2xpcHNlLnBhcHlydXMucm9ib3RpY3MucHJvZmlsZS9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvcm9ib3RpY3MvcHJvZmlsZS9yb2JvdGljcy9jb21wb25lbnRzL0NvbXBvbmVudEluc3RhbmNlLmphdmEgYi9wbHVnaW5zL2N1c3RvbWl6YXRpb24vb3JnLmVjbGlwc2UucGFweXJ1cy5yb2JvdGljcy5wcm9maWxlL3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9yb2JvdGljcy9wcm9maWxlL3JvYm90aWNzL2NvbXBvbmVudHMvQ29tcG9uZW50SW5zdGFuY2UuamF2YQppbmRleCAzMzkwNzhlLi4zMGNkN2QxIDEwMDY0NAotLS0gYS9wbHVnaW5zL2N1c3RvbWl6YXRpb24vb3JnLmVjbGlwc2UucGFweXJ1cy5yb2JvdGljcy5wcm9maWxlL3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9yb2JvdGljcy9wcm9maWxlL3JvYm90aWNzL2NvbXBvbmVudHMvQ29tcG9uZW50SW5zdGFuY2UuamF2YQorKysgYi9wbHVnaW5zL2N1c3RvbWl6YXRpb24vb3JnLmVjbGlwc2UucGFweXJ1cy5yb2JvdGljcy5wcm9maWxlL3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9yb2JvdGljcy9wcm9maWxlL3JvYm90aWNzL2NvbXBvbmVudHMvQ29tcG9uZW50SW5zdGFuY2UuamF2YQpAQCAtMjcsOSArMjcsOCBAQAogICogPHVsPgogICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMucm9ib3RpY3MucHJvZmlsZS5yb2JvdGljcy5jb21wb25lbnRzLkNvbXBvbmVudEluc3RhbmNlI2dldFBhcmFtSW5zdGFuY2UgPGVtPlBhcmFtIEluc3RhbmNlPC9lbT59PC9saT4KICAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnJvYm90aWNzLnByb2ZpbGUucm9ib3RpY3MuY29tcG9uZW50cy5Db21wb25lbnRJbnN0YW5jZSNnZXRCYXNlX1Byb3BlcnR5IDxlbT5CYXNlIFByb3BlcnR5PC9lbT59PC9saT4KLSAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnJvYm90aWNzLnByb2ZpbGUucm9ib3RpY3MuY29tcG9uZW50cy5Db21wb25lbnRJbnN0YW5jZSNnZXRDb21wZGVmIDxlbT5Db21wZGVmPC9lbT59PC9saT4KKyAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnJvYm90aWNzLnByb2ZpbGUucm9ib3RpY3MuY29tcG9uZW50cy5Db21wb25lbnRJbnN0YW5jZSNnZXRDb21wZGVmT3JTeXMgPGVtPkNvbXBkZWYgT3IgU3lzPC9lbT59PC9saT4KICAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnJvYm90aWNzLnByb2ZpbGUucm9ib3RpY3MuY29tcG9uZW50cy5Db21wb25lbnRJbnN0YW5jZSNnZXRQb3J0IDxlbT5Qb3J0PC9lbT59PC9saT4KLSAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnJvYm90aWNzLnByb2ZpbGUucm9ib3RpY3MuY29tcG9uZW50cy5Db21wb25lbnRJbnN0YW5jZSNnZXRBY3Rpdml0aWVzIDxlbT5BY3Rpdml0aWVzPC9lbT59PC9saT4KICAqIDwvdWw+CiAgKgogICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnJvYm90aWNzLnByb2ZpbGUucm9ib3RpY3MuY29tcG9uZW50cy5Db21wb25lbnRzUGFja2FnZSNnZXRDb21wb25lbnRJbnN0YW5jZSgpCkBAIC03OSwxOSArNzgsMTkgQEAKIAl2b2lkIHNldEJhc2VfUHJvcGVydHkoUHJvcGVydHkgdmFsdWUpOwogCiAJLyoqCi0JICogUmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+Q29tcGRlZjwvYj48L2VtPicgcmVmZXJlbmNlLgorCSAqIFJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPkNvbXBkZWYgT3IgU3lzPC9iPjwvZW0+JyByZWZlcmVuY2UuCiAJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KIAkgKiA8cD4KLQkgKiBJZiB0aGUgbWVhbmluZyBvZiB0aGUgJzxlbT5Db21wZGVmPC9lbT4nIHJlZmVyZW5jZSBpc24ndCBjbGVhciwKKwkgKiBJZiB0aGUgbWVhbmluZyBvZiB0aGUgJzxlbT5Db21wZGVmIE9yIFN5czwvZW0+JyByZWZlcmVuY2UgaXNuJ3QgY2xlYXIsCiAJICogdGhlcmUgcmVhbGx5IHNob3VsZCBiZSBtb3JlIG9mIGEgZGVzY3JpcHRpb24gaGVyZS4uLgogCSAqIDwvcD4KIAkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAcmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT5Db21wZGVmPC9lbT4nIHJlZmVyZW5jZS4KLQkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMucm9ib3RpY3MucHJvZmlsZS5yb2JvdGljcy5jb21wb25lbnRzLkNvbXBvbmVudHNQYWNrYWdlI2dldENvbXBvbmVudEluc3RhbmNlX0NvbXBkZWYoKQorCSAqIEByZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSAnPGVtPkNvbXBkZWYgT3IgU3lzPC9lbT4nIHJlZmVyZW5jZS4KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMucm9ib3RpY3MucHJvZmlsZS5yb2JvdGljcy5jb21wb25lbnRzLkNvbXBvbmVudHNQYWNrYWdlI2dldENvbXBvbmVudEluc3RhbmNlX0NvbXBkZWZPclN5cygpCiAJICogQG1vZGVsIHRyYW5zaWVudD0idHJ1ZSIgY2hhbmdlYWJsZT0iZmFsc2UiIHZvbGF0aWxlPSJ0cnVlIiBkZXJpdmVkPSJ0cnVlIiBvcmRlcmVkPSJmYWxzZSIKIAkgKiBAZ2VuZXJhdGVkCiAJICovCi0JQ29tcG9uZW50RGVmaW5pdGlvbiBnZXRDb21wZGVmKCk7CisJQ29tcG9uZW50T3JTeXN0ZW0gZ2V0Q29tcGRlZk9yU3lzKCk7CiAKIAkvKioKIAkgKiBSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5Qb3J0PC9iPjwvZW0+JyByZWZlcmVuY2UgbGlzdC4KQEAgLTEwOSwyMCArMTA4LDQgQEAKIAkgKi8KIAlFTGlzdDxDb21wb25lbnRQb3J0PiBnZXRQb3J0KCk7CiAKLQkvKioKLQkgKiBSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5BY3Rpdml0aWVzPC9iPjwvZW0+JyByZWZlcmVuY2UgbGlzdC4KLQkgKiBUaGUgbGlzdCBjb250ZW50cyBhcmUgb2YgdHlwZSB7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5yb2JvdGljcy5wcm9maWxlLnJvYm90aWNzLmNvbXBvbmVudHMuQWN0aXZpdHl9LgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPHA+Ci0JICogSWYgdGhlIG1lYW5pbmcgb2YgdGhlICc8ZW0+QWN0aXZpdGllczwvZW0+JyByZWZlcmVuY2UgbGlzdCBpc24ndCBjbGVhciwKLQkgKiB0aGVyZSByZWFsbHkgc2hvdWxkIGJlIG1vcmUgb2YgYSBkZXNjcmlwdGlvbiBoZXJlLi4uCi0JICogPC9wPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEByZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSAnPGVtPkFjdGl2aXRpZXM8L2VtPicgcmVmZXJlbmNlIGxpc3QuCi0JICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnJvYm90aWNzLnByb2ZpbGUucm9ib3RpY3MuY29tcG9uZW50cy5Db21wb25lbnRzUGFja2FnZSNnZXRDb21wb25lbnRJbnN0YW5jZV9BY3Rpdml0aWVzKCkKLQkgKiBAbW9kZWwgdHJhbnNpZW50PSJ0cnVlIiBjaGFuZ2VhYmxlPSJmYWxzZSIgdm9sYXRpbGU9InRydWUiIGRlcml2ZWQ9InRydWUiIG9yZGVyZWQ9ImZhbHNlIgotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlFTGlzdDxBY3Rpdml0eT4gZ2V0QWN0aXZpdGllcygpOwotCiB9IC8vIENvbXBvbmVudEluc3RhbmNlCmRpZmYgLS1naXQgYS9wbHVnaW5zL2N1c3RvbWl6YXRpb24vb3JnLmVjbGlwc2UucGFweXJ1cy5yb2JvdGljcy5wcm9maWxlL3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9yb2JvdGljcy9wcm9maWxlL3JvYm90aWNzL2NvbXBvbmVudHMvQ29tcG9uZW50T3JTeXN0ZW0uamF2YSBiL3BsdWdpbnMvY3VzdG9taXphdGlvbi9vcmcuZWNsaXBzZS5wYXB5cnVzLnJvYm90aWNzLnByb2ZpbGUvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3JvYm90aWNzL3Byb2ZpbGUvcm9ib3RpY3MvY29tcG9uZW50cy9Db21wb25lbnRPclN5c3RlbS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJiN2ZjMjMKLS0tIC9kZXYvbnVsbAorKysgYi9wbHVnaW5zL2N1c3RvbWl6YXRpb24vb3JnLmVjbGlwc2UucGFweXJ1cy5yb2JvdGljcy5wcm9maWxlL3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9yb2JvdGljcy9wcm9maWxlL3JvYm90aWNzL2NvbXBvbmVudHMvQ29tcG9uZW50T3JTeXN0ZW0uamF2YQpAQCAtMCwwICsxLDUxIEBACisvKioKKyAqIENvcHlyaWdodCAoYykgMjAxOSBDRUEgTElTVAorICogCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzIGFyZQorICogbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYyLjAgd2hpY2gKKyAqIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0CisgKiBodHRwczovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtMi4wLworICogCisgKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogRVBMLTIuMAorICogCisgKi8KK3BhY2thZ2Ugb3JnLmVjbGlwc2UucGFweXJ1cy5yb2JvdGljcy5wcm9maWxlLnJvYm90aWNzLmNvbXBvbmVudHM7CisKK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLnV0aWwuRUxpc3Q7CisKK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnJvYm90aWNzLmJwYy5wcm9maWxlLmJwYy5CbG9jazsKKworLyoqCisgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgorICogQSByZXByZXNlbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+Q29tcG9uZW50IE9yIFN5c3RlbTwvYj48L2VtPicuCisgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KKyAqCisgKiA8cD4KKyAqIFRoZSBmb2xsb3dpbmcgZmVhdHVyZXMgYXJlIHN1cHBvcnRlZDoKKyAqIDwvcD4KKyAqIDx1bD4KKyAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnJvYm90aWNzLnByb2ZpbGUucm9ib3RpY3MuY29tcG9uZW50cy5Db21wb25lbnRPclN5c3RlbSNnZXRTZXJ2aWNlcyA8ZW0+U2VydmljZXM8L2VtPn08L2xpPgorICogPC91bD4KKyAqCisgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMucm9ib3RpY3MucHJvZmlsZS5yb2JvdGljcy5jb21wb25lbnRzLkNvbXBvbmVudHNQYWNrYWdlI2dldENvbXBvbmVudE9yU3lzdGVtKCkKKyAqIEBtb2RlbCBhYnN0cmFjdD0idHJ1ZSIKKyAqIEBnZW5lcmF0ZWQKKyAqLworcHVibGljIGludGVyZmFjZSBDb21wb25lbnRPclN5c3RlbSBleHRlbmRzIEJsb2NrIHsKKwkvKioKKwkgKiBSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5TZXJ2aWNlczwvYj48L2VtPicgcmVmZXJlbmNlIGxpc3QuCisJICogVGhlIGxpc3QgY29udGVudHMgYXJlIG9mIHR5cGUge0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMucm9ib3RpY3MucHJvZmlsZS5yb2JvdGljcy5jb21wb25lbnRzLkNvbXBvbmVudFNlcnZpY2V9LgorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+CisJICogPHA+CisJICogSWYgdGhlIG1lYW5pbmcgb2YgdGhlICc8ZW0+U2VydmljZXM8L2VtPicgcmVmZXJlbmNlIGxpc3QgaXNuJ3QgY2xlYXIsCisJICogdGhlcmUgcmVhbGx5IHNob3VsZCBiZSBtb3JlIG9mIGEgZGVzY3JpcHRpb24gaGVyZS4uLgorCSAqIDwvcD4KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KKwkgKiBAcmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT5TZXJ2aWNlczwvZW0+JyByZWZlcmVuY2UgbGlzdC4KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMucm9ib3RpY3MucHJvZmlsZS5yb2JvdGljcy5jb21wb25lbnRzLkNvbXBvbmVudHNQYWNrYWdlI2dldENvbXBvbmVudE9yU3lzdGVtX1NlcnZpY2VzKCkKKwkgKiBAbW9kZWwgdHJhbnNpZW50PSJ0cnVlIiBjaGFuZ2VhYmxlPSJmYWxzZSIgdm9sYXRpbGU9InRydWUiIGRlcml2ZWQ9InRydWUiIG9yZGVyZWQ9ImZhbHNlIgorCSAqIEBnZW5lcmF0ZWQKKwkgKi8KKwlFTGlzdDxDb21wb25lbnRTZXJ2aWNlPiBnZXRTZXJ2aWNlcygpOworCit9IC8vIENvbXBvbmVudE9yU3lzdGVtCmRpZmYgLS1naXQgYS9wbHVnaW5zL2N1c3RvbWl6YXRpb24vb3JnLmVjbGlwc2UucGFweXJ1cy5yb2JvdGljcy5wcm9maWxlL3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9yb2JvdGljcy9wcm9maWxlL3JvYm90aWNzL2NvbXBvbmVudHMvQ29tcG9uZW50c1BhY2thZ2UuamF2YSBiL3BsdWdpbnMvY3VzdG9taXphdGlvbi9vcmcuZWNsaXBzZS5wYXB5cnVzLnJvYm90aWNzLnByb2ZpbGUvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3JvYm90aWNzL3Byb2ZpbGUvcm9ib3RpY3MvY29tcG9uZW50cy9Db21wb25lbnRzUGFja2FnZS5qYXZhCmluZGV4IGNmMGQxMzYuLjdjMjUwOTMgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvY3VzdG9taXphdGlvbi9vcmcuZWNsaXBzZS5wYXB5cnVzLnJvYm90aWNzLnByb2ZpbGUvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3JvYm90aWNzL3Byb2ZpbGUvcm9ib3RpY3MvY29tcG9uZW50cy9Db21wb25lbnRzUGFja2FnZS5qYXZhCisrKyBiL3BsdWdpbnMvY3VzdG9taXphdGlvbi9vcmcuZWNsaXBzZS5wYXB5cnVzLnJvYm90aWNzLnByb2ZpbGUvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3JvYm90aWNzL3Byb2ZpbGUvcm9ib3RpY3MvY29tcG9uZW50cy9Db21wb25lbnRzUGFja2FnZS5qYXZhCkBAIC0zMzEsNiArMzMxLDE2MCBAQAogCWludCBBQ1RJVklUWV9QT1JUX09QRVJBVElPTl9DT1VOVCA9IEJQQ1BhY2thZ2UuUE9SVF9PUEVSQVRJT05fQ09VTlQgKyAwOwogCiAJLyoqCisJICogVGhlIG1ldGEgb2JqZWN0IGlkIGZvciB0aGUgJ3tAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnJvYm90aWNzLnByb2ZpbGUucm9ib3RpY3MuY29tcG9uZW50cy5pbXBsLkNvbXBvbmVudE9yU3lzdGVtSW1wbCA8ZW0+Q29tcG9uZW50IE9yIFN5c3RlbTwvZW0+fScgY2xhc3MuCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMucm9ib3RpY3MucHJvZmlsZS5yb2JvdGljcy5jb21wb25lbnRzLmltcGwuQ29tcG9uZW50T3JTeXN0ZW1JbXBsCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnJvYm90aWNzLnByb2ZpbGUucm9ib3RpY3MuY29tcG9uZW50cy5pbXBsLkNvbXBvbmVudHNQYWNrYWdlSW1wbCNnZXRDb21wb25lbnRPclN5c3RlbSgpCisJICogQGdlbmVyYXRlZAorCSAqLworCWludCBDT01QT05FTlRfT1JfU1lTVEVNID0gMzsKKworCS8qKgorCSAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5Qcm9wZXJ0eTwvYj48L2VtPicgcmVmZXJlbmNlIGxpc3QuCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KKwkgKiBAZ2VuZXJhdGVkCisJICogQG9yZGVyZWQKKwkgKi8KKwlpbnQgQ09NUE9ORU5UX09SX1NZU1RFTV9fUFJPUEVSVFkgPSBCUENQYWNrYWdlLkJMT0NLX19QUk9QRVJUWTsKKworCS8qKgorCSAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5JbnN0YW5jZSB1aWQ8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgorCSAqIEBnZW5lcmF0ZWQKKwkgKiBAb3JkZXJlZAorCSAqLworCWludCBDT01QT05FTlRfT1JfU1lTVEVNX19JTlNUQU5DRV9VSUQgPSBCUENQYWNrYWdlLkJMT0NLX19JTlNUQU5DRV9VSUQ7CisKKwkvKioKKwkgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RGVzY3JpcHRpb248L2I+PC9lbT4nIGF0dHJpYnV0ZS4KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgorCSAqIEBnZW5lcmF0ZWQKKwkgKiBAb3JkZXJlZAorCSAqLworCWludCBDT01QT05FTlRfT1JfU1lTVEVNX19ERVNDUklQVElPTiA9IEJQQ1BhY2thZ2UuQkxPQ0tfX0RFU0NSSVBUSU9OOworCisJLyoqCisJICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkF1dGhvcnNoaXA8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgorCSAqIEBnZW5lcmF0ZWQKKwkgKiBAb3JkZXJlZAorCSAqLworCWludCBDT01QT05FTlRfT1JfU1lTVEVNX19BVVRIT1JTSElQID0gQlBDUGFja2FnZS5CTE9DS19fQVVUSE9SU0hJUDsKKworCS8qKgorCSAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5Qcm92ZW5hbmNlPC9iPjwvZW0+JyBhdHRyaWJ1dGUuCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KKwkgKiBAZ2VuZXJhdGVkCisJICogQG9yZGVyZWQKKwkgKi8KKwlpbnQgQ09NUE9ORU5UX09SX1NZU1RFTV9fUFJPVkVOQU5DRSA9IEJQQ1BhY2thZ2UuQkxPQ0tfX1BST1ZFTkFOQ0U7CisKKwkvKioKKwkgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+TW9kZWwgdWlkPC9iPjwvZW0+JyBhdHRyaWJ1dGUuCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KKwkgKiBAZ2VuZXJhdGVkCisJICogQG9yZGVyZWQKKwkgKi8KKwlpbnQgQ09NUE9ORU5UX09SX1NZU1RFTV9fTU9ERUxfVUlEID0gQlBDUGFja2FnZS5CTE9DS19fTU9ERUxfVUlEOworCisJLyoqCisJICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPk1ldGFtb2RlbCB1aWQ8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgorCSAqIEBnZW5lcmF0ZWQKKwkgKiBAb3JkZXJlZAorCSAqLworCWludCBDT01QT05FTlRfT1JfU1lTVEVNX19NRVRBTU9ERUxfVUlEID0gQlBDUGFja2FnZS5CTE9DS19fTUVUQU1PREVMX1VJRDsKKworCS8qKgorCSAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5Qb3J0PC9iPjwvZW0+JyByZWZlcmVuY2UgbGlzdC4KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgorCSAqIEBnZW5lcmF0ZWQKKwkgKiBAb3JkZXJlZAorCSAqLworCWludCBDT01QT05FTlRfT1JfU1lTVEVNX19QT1JUID0gQlBDUGFja2FnZS5CTE9DS19fUE9SVDsKKworCS8qKgorCSAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5Db25uZWN0b3I8L2I+PC9lbT4nIHJlZmVyZW5jZSBsaXN0LgorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+CisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+CisJICogQGdlbmVyYXRlZAorCSAqIEBvcmRlcmVkCisJICovCisJaW50IENPTVBPTkVOVF9PUl9TWVNURU1fX0NPTk5FQ1RPUiA9IEJQQ1BhY2thZ2UuQkxPQ0tfX0NPTk5FQ1RPUjsKKworCS8qKgorCSAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5Db2xsZWN0aW9uPC9iPjwvZW0+JyByZWZlcmVuY2UgbGlzdC4KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgorCSAqIEBnZW5lcmF0ZWQKKwkgKiBAb3JkZXJlZAorCSAqLworCWludCBDT01QT05FTlRfT1JfU1lTVEVNX19DT0xMRUNUSU9OID0gQlBDUGFja2FnZS5CTE9DS19fQ09MTEVDVElPTjsKKworCS8qKgorCSAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5CbG9jazwvYj48L2VtPicgcmVmZXJlbmNlIGxpc3QuCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KKwkgKiBAZ2VuZXJhdGVkCisJICogQG9yZGVyZWQKKwkgKi8KKwlpbnQgQ09NUE9ORU5UX09SX1NZU1RFTV9fQkxPQ0sgPSBCUENQYWNrYWdlLkJMT0NLX19CTE9DSzsKKworCS8qKgorCSAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5SZWxhdGlvbjwvYj48L2VtPicgcmVmZXJlbmNlIGxpc3QuCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KKwkgKiBAZ2VuZXJhdGVkCisJICogQG9yZGVyZWQKKwkgKi8KKwlpbnQgQ09NUE9ORU5UX09SX1NZU1RFTV9fUkVMQVRJT04gPSBCUENQYWNrYWdlLkJMT0NLX19SRUxBVElPTjsKKworCS8qKgorCSAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5CYXNlIENsYXNzPC9iPjwvZW0+JyByZWZlcmVuY2UuCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KKwkgKiBAZ2VuZXJhdGVkCisJICogQG9yZGVyZWQKKwkgKi8KKwlpbnQgQ09NUE9ORU5UX09SX1NZU1RFTV9fQkFTRV9DTEFTUyA9IEJQQ1BhY2thZ2UuQkxPQ0tfX0JBU0VfQ0xBU1M7CisKKwkvKioKKwkgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+U2VydmljZXM8L2I+PC9lbT4nIHJlZmVyZW5jZSBsaXN0LgorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+CisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+CisJICogQGdlbmVyYXRlZAorCSAqIEBvcmRlcmVkCisJICovCisJaW50IENPTVBPTkVOVF9PUl9TWVNURU1fX1NFUlZJQ0VTID0gQlBDUGFja2FnZS5CTE9DS19GRUFUVVJFX0NPVU5UICsgMDsKKworCS8qKgorCSAqIFRoZSBudW1iZXIgb2Ygc3RydWN0dXJhbCBmZWF0dXJlcyBvZiB0aGUgJzxlbT5Db21wb25lbnQgT3IgU3lzdGVtPC9lbT4nIGNsYXNzLgorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+CisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+CisJICogQGdlbmVyYXRlZAorCSAqIEBvcmRlcmVkCisJICovCisJaW50IENPTVBPTkVOVF9PUl9TWVNURU1fRkVBVFVSRV9DT1VOVCA9IEJQQ1BhY2thZ2UuQkxPQ0tfRkVBVFVSRV9DT1VOVCArIDE7CisKKwkvKioKKwkgKiBUaGUgbnVtYmVyIG9mIG9wZXJhdGlvbnMgb2YgdGhlICc8ZW0+Q29tcG9uZW50IE9yIFN5c3RlbTwvZW0+JyBjbGFzcy4KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgorCSAqIEBnZW5lcmF0ZWQKKwkgKiBAb3JkZXJlZAorCSAqLworCWludCBDT01QT05FTlRfT1JfU1lTVEVNX09QRVJBVElPTl9DT1VOVCA9IEJQQ1BhY2thZ2UuQkxPQ0tfT1BFUkFUSU9OX0NPVU5UICsgMDsKKworCS8qKgogCSAqIFRoZSBtZXRhIG9iamVjdCBpZCBmb3IgdGhlICd7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5yb2JvdGljcy5wcm9maWxlLnJvYm90aWNzLmNvbXBvbmVudHMuaW1wbC5Db21wb25lbnREZWZpbml0aW9uSW1wbCA8ZW0+Q29tcG9uZW50IERlZmluaXRpb248L2VtPn0nIGNsYXNzLgogCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+CiAJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+CkBAIC0zNDcsNyArNTAxLDcgQEAKIAkgKiBAZ2VuZXJhdGVkCiAJICogQG9yZGVyZWQKIAkgKi8KLQlpbnQgQ09NUE9ORU5UX0RFRklOSVRJT05fX1BST1BFUlRZID0gQlBDUGFja2FnZS5CTE9DS19fUFJPUEVSVFk7CisJaW50IENPTVBPTkVOVF9ERUZJTklUSU9OX19QUk9QRVJUWSA9IENPTVBPTkVOVF9PUl9TWVNURU1fX1BST1BFUlRZOwogCiAJLyoqCiAJICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkluc3RhbmNlIHVpZDwvYj48L2VtPicgYXR0cmlidXRlLgpAQCAtMzU2LDcgKzUxMCw3IEBACiAJICogQGdlbmVyYXRlZAogCSAqIEBvcmRlcmVkCiAJICovCi0JaW50IENPTVBPTkVOVF9ERUZJTklUSU9OX19JTlNUQU5DRV9VSUQgPSBCUENQYWNrYWdlLkJMT0NLX19JTlNUQU5DRV9VSUQ7CisJaW50IENPTVBPTkVOVF9ERUZJTklUSU9OX19JTlNUQU5DRV9VSUQgPSBDT01QT05FTlRfT1JfU1lTVEVNX19JTlNUQU5DRV9VSUQ7CiAKIAkvKioKIAkgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+RGVzY3JpcHRpb248L2I+PC9lbT4nIGF0dHJpYnV0ZS4KQEAgLTM2NSw3ICs1MTksNyBAQAogCSAqIEBnZW5lcmF0ZWQKIAkgKiBAb3JkZXJlZAogCSAqLwotCWludCBDT01QT05FTlRfREVGSU5JVElPTl9fREVTQ1JJUFRJT04gPSBCUENQYWNrYWdlLkJMT0NLX19ERVNDUklQVElPTjsKKwlpbnQgQ09NUE9ORU5UX0RFRklOSVRJT05fX0RFU0NSSVBUSU9OID0gQ09NUE9ORU5UX09SX1NZU1RFTV9fREVTQ1JJUFRJT047CiAKIAkvKioKIAkgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+QXV0aG9yc2hpcDwvYj48L2VtPicgYXR0cmlidXRlLgpAQCAtMzc0LDcgKzUyOCw3IEBACiAJICogQGdlbmVyYXRlZAogCSAqIEBvcmRlcmVkCiAJICovCi0JaW50IENPTVBPTkVOVF9ERUZJTklUSU9OX19BVVRIT1JTSElQID0gQlBDUGFja2FnZS5CTE9DS19fQVVUSE9SU0hJUDsKKwlpbnQgQ09NUE9ORU5UX0RFRklOSVRJT05fX0FVVEhPUlNISVAgPSBDT01QT05FTlRfT1JfU1lTVEVNX19BVVRIT1JTSElQOwogCiAJLyoqCiAJICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPlByb3ZlbmFuY2U8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KQEAgLTM4Myw3ICs1MzcsNyBAQAogCSAqIEBnZW5lcmF0ZWQKIAkgKiBAb3JkZXJlZAogCSAqLwotCWludCBDT01QT05FTlRfREVGSU5JVElPTl9fUFJPVkVOQU5DRSA9IEJQQ1BhY2thZ2UuQkxPQ0tfX1BST1ZFTkFOQ0U7CisJaW50IENPTVBPTkVOVF9ERUZJTklUSU9OX19QUk9WRU5BTkNFID0gQ09NUE9ORU5UX09SX1NZU1RFTV9fUFJPVkVOQU5DRTsKIAogCS8qKgogCSAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5Nb2RlbCB1aWQ8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KQEAgLTM5Miw3ICs1NDYsNyBAQAogCSAqIEBnZW5lcmF0ZWQKIAkgKiBAb3JkZXJlZAogCSAqLwotCWludCBDT01QT05FTlRfREVGSU5JVElPTl9fTU9ERUxfVUlEID0gQlBDUGFja2FnZS5CTE9DS19fTU9ERUxfVUlEOworCWludCBDT01QT05FTlRfREVGSU5JVElPTl9fTU9ERUxfVUlEID0gQ09NUE9ORU5UX09SX1NZU1RFTV9fTU9ERUxfVUlEOwogCiAJLyoqCiAJICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPk1ldGFtb2RlbCB1aWQ8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KQEAgLTQwMSw3ICs1NTUsNyBAQAogCSAqIEBnZW5lcmF0ZWQKIAkgKiBAb3JkZXJlZAogCSAqLwotCWludCBDT01QT05FTlRfREVGSU5JVElPTl9fTUVUQU1PREVMX1VJRCA9IEJQQ1BhY2thZ2UuQkxPQ0tfX01FVEFNT0RFTF9VSUQ7CisJaW50IENPTVBPTkVOVF9ERUZJTklUSU9OX19NRVRBTU9ERUxfVUlEID0gQ09NUE9ORU5UX09SX1NZU1RFTV9fTUVUQU1PREVMX1VJRDsKIAogCS8qKgogCSAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5Qb3J0PC9iPjwvZW0+JyByZWZlcmVuY2UgbGlzdC4KQEAgLTQxMCw3ICs1NjQsNyBAQAogCSAqIEBnZW5lcmF0ZWQKIAkgKiBAb3JkZXJlZAogCSAqLwotCWludCBDT01QT05FTlRfREVGSU5JVElPTl9fUE9SVCA9IEJQQ1BhY2thZ2UuQkxPQ0tfX1BPUlQ7CisJaW50IENPTVBPTkVOVF9ERUZJTklUSU9OX19QT1JUID0gQ09NUE9ORU5UX09SX1NZU1RFTV9fUE9SVDsKIAogCS8qKgogCSAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5Db25uZWN0b3I8L2I+PC9lbT4nIHJlZmVyZW5jZSBsaXN0LgpAQCAtNDE5LDcgKzU3Myw3IEBACiAJICogQGdlbmVyYXRlZAogCSAqIEBvcmRlcmVkCiAJICovCi0JaW50IENPTVBPTkVOVF9ERUZJTklUSU9OX19DT05ORUNUT1IgPSBCUENQYWNrYWdlLkJMT0NLX19DT05ORUNUT1I7CisJaW50IENPTVBPTkVOVF9ERUZJTklUSU9OX19DT05ORUNUT1IgPSBDT01QT05FTlRfT1JfU1lTVEVNX19DT05ORUNUT1I7CiAKIAkvKioKIAkgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+Q29sbGVjdGlvbjwvYj48L2VtPicgcmVmZXJlbmNlIGxpc3QuCkBAIC00MjgsNyArNTgyLDcgQEAKIAkgKiBAZ2VuZXJhdGVkCiAJICogQG9yZGVyZWQKIAkgKi8KLQlpbnQgQ09NUE9ORU5UX0RFRklOSVRJT05fX0NPTExFQ1RJT04gPSBCUENQYWNrYWdlLkJMT0NLX19DT0xMRUNUSU9OOworCWludCBDT01QT05FTlRfREVGSU5JVElPTl9fQ09MTEVDVElPTiA9IENPTVBPTkVOVF9PUl9TWVNURU1fX0NPTExFQ1RJT047CiAKIAkvKioKIAkgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+QmxvY2s8L2I+PC9lbT4nIHJlZmVyZW5jZSBsaXN0LgpAQCAtNDM3LDcgKzU5MSw3IEBACiAJICogQGdlbmVyYXRlZAogCSAqIEBvcmRlcmVkCiAJICovCi0JaW50IENPTVBPTkVOVF9ERUZJTklUSU9OX19CTE9DSyA9IEJQQ1BhY2thZ2UuQkxPQ0tfX0JMT0NLOworCWludCBDT01QT05FTlRfREVGSU5JVElPTl9fQkxPQ0sgPSBDT01QT05FTlRfT1JfU1lTVEVNX19CTE9DSzsKIAogCS8qKgogCSAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5SZWxhdGlvbjwvYj48L2VtPicgcmVmZXJlbmNlIGxpc3QuCkBAIC00NDYsNyArNjAwLDcgQEAKIAkgKiBAZ2VuZXJhdGVkCiAJICogQG9yZGVyZWQKIAkgKi8KLQlpbnQgQ09NUE9ORU5UX0RFRklOSVRJT05fX1JFTEFUSU9OID0gQlBDUGFja2FnZS5CTE9DS19fUkVMQVRJT047CisJaW50IENPTVBPTkVOVF9ERUZJTklUSU9OX19SRUxBVElPTiA9IENPTVBPTkVOVF9PUl9TWVNURU1fX1JFTEFUSU9OOwogCiAJLyoqCiAJICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkJhc2UgQ2xhc3M8L2I+PC9lbT4nIHJlZmVyZW5jZS4KQEAgLTQ1NSw3ICs2MDksNyBAQAogCSAqIEBnZW5lcmF0ZWQKIAkgKiBAb3JkZXJlZAogCSAqLwotCWludCBDT01QT05FTlRfREVGSU5JVElPTl9fQkFTRV9DTEFTUyA9IEJQQ1BhY2thZ2UuQkxPQ0tfX0JBU0VfQ0xBU1M7CisJaW50IENPTVBPTkVOVF9ERUZJTklUSU9OX19CQVNFX0NMQVNTID0gQ09NUE9ORU5UX09SX1NZU1RFTV9fQkFTRV9DTEFTUzsKIAogCS8qKgogCSAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5TZXJ2aWNlczwvYj48L2VtPicgcmVmZXJlbmNlIGxpc3QuCkBAIC00NjQsNyArNjE4LDcgQEAKIAkgKiBAZ2VuZXJhdGVkCiAJICogQG9yZGVyZWQKIAkgKi8KLQlpbnQgQ09NUE9ORU5UX0RFRklOSVRJT05fX1NFUlZJQ0VTID0gQlBDUGFja2FnZS5CTE9DS19GRUFUVVJFX0NPVU5UICsgMDsKKwlpbnQgQ09NUE9ORU5UX0RFRklOSVRJT05fX1NFUlZJQ0VTID0gQ09NUE9ORU5UX09SX1NZU1RFTV9fU0VSVklDRVM7CiAKIAkvKioKIAkgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+UGFyYW1ldGVyPC9iPjwvZW0+JyByZWZlcmVuY2UuCkBAIC00NzMsNyArNjI3LDcgQEAKIAkgKiBAZ2VuZXJhdGVkCiAJICogQG9yZGVyZWQKIAkgKi8KLQlpbnQgQ09NUE9ORU5UX0RFRklOSVRJT05fX1BBUkFNRVRFUiA9IEJQQ1BhY2thZ2UuQkxPQ0tfRkVBVFVSRV9DT1VOVCArIDE7CisJaW50IENPTVBPTkVOVF9ERUZJTklUSU9OX19QQVJBTUVURVIgPSBDT01QT05FTlRfT1JfU1lTVEVNX0ZFQVRVUkVfQ09VTlQgKyAwOwogCiAJLyoqCiAJICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkFjdGl2aXRpZXM8L2I+PC9lbT4nIHJlZmVyZW5jZSBsaXN0LgpAQCAtNDgyLDcgKzYzNiw3IEBACiAJICogQGdlbmVyYXRlZAogCSAqIEBvcmRlcmVkCiAJICovCi0JaW50IENPTVBPTkVOVF9ERUZJTklUSU9OX19BQ1RJVklUSUVTID0gQlBDUGFja2FnZS5CTE9DS19GRUFUVVJFX0NPVU5UICsgMjsKKwlpbnQgQ09NUE9ORU5UX0RFRklOSVRJT05fX0FDVElWSVRJRVMgPSBDT01QT05FTlRfT1JfU1lTVEVNX0ZFQVRVUkVfQ09VTlQgKyAxOwogCiAJLyoqCiAJICogVGhlIG51bWJlciBvZiBzdHJ1Y3R1cmFsIGZlYXR1cmVzIG9mIHRoZSAnPGVtPkNvbXBvbmVudCBEZWZpbml0aW9uPC9lbT4nIGNsYXNzLgpAQCAtNDkxLDcgKzY0NSw3IEBACiAJICogQGdlbmVyYXRlZAogCSAqIEBvcmRlcmVkCiAJICovCi0JaW50IENPTVBPTkVOVF9ERUZJTklUSU9OX0ZFQVRVUkVfQ09VTlQgPSBCUENQYWNrYWdlLkJMT0NLX0ZFQVRVUkVfQ09VTlQgKyAzOworCWludCBDT01QT05FTlRfREVGSU5JVElPTl9GRUFUVVJFX0NPVU5UID0gQ09NUE9ORU5UX09SX1NZU1RFTV9GRUFUVVJFX0NPVU5UICsgMjsKIAogCS8qKgogCSAqIFRoZSBudW1iZXIgb2Ygb3BlcmF0aW9ucyBvZiB0aGUgJzxlbT5Db21wb25lbnQgRGVmaW5pdGlvbjwvZW0+JyBjbGFzcy4KQEAgLTUwMCw3ICs2NTQsNyBAQAogCSAqIEBnZW5lcmF0ZWQKIAkgKiBAb3JkZXJlZAogCSAqLwotCWludCBDT01QT05FTlRfREVGSU5JVElPTl9PUEVSQVRJT05fQ09VTlQgPSBCUENQYWNrYWdlLkJMT0NLX09QRVJBVElPTl9DT1VOVCArIDA7CisJaW50IENPTVBPTkVOVF9ERUZJTklUSU9OX09QRVJBVElPTl9DT1VOVCA9IENPTVBPTkVOVF9PUl9TWVNURU1fT1BFUkFUSU9OX0NPVU5UICsgMDsKIAogCS8qKgogCSAqIFRoZSBtZXRhIG9iamVjdCBpZCBmb3IgdGhlICd7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5yb2JvdGljcy5wcm9maWxlLnJvYm90aWNzLmNvbXBvbmVudHMuaW1wbC5Db21wb25lbnRQb3J0SW1wbCA8ZW0+Q29tcG9uZW50IFBvcnQ8L2VtPn0nIGNsYXNzLgpAQCAtNTEwLDcgKzY2NCw3IEBACiAJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnJvYm90aWNzLnByb2ZpbGUucm9ib3RpY3MuY29tcG9uZW50cy5pbXBsLkNvbXBvbmVudHNQYWNrYWdlSW1wbCNnZXRDb21wb25lbnRQb3J0KCkKIAkgKiBAZ2VuZXJhdGVkCiAJICovCi0JaW50IENPTVBPTkVOVF9QT1JUID0gMzsKKwlpbnQgQ09NUE9ORU5UX1BPUlQgPSA0OwogCiAJLyoqCiAJICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPlByb3BlcnR5PC9iPjwvZW0+JyByZWZlcmVuY2UgbGlzdC4KQEAgLTY0Niw3ICs4MDAsNyBAQAogCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5yb2JvdGljcy5wcm9maWxlLnJvYm90aWNzLmNvbXBvbmVudHMuaW1wbC5Db21wb25lbnRzUGFja2FnZUltcGwjZ2V0Q29tcG9uZW50SW5zdGFuY2UoKQogCSAqIEBnZW5lcmF0ZWQKIAkgKi8KLQlpbnQgQ09NUE9ORU5UX0lOU1RBTkNFID0gNDsKKwlpbnQgQ09NUE9ORU5UX0lOU1RBTkNFID0gNTsKIAogCS8qKgogCSAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5Qcm9wZXJ0eTwvYj48L2VtPicgcmVmZXJlbmNlIGxpc3QuCkBAIC03MzAsMTMgKzg4NCwxMyBAQAogCWludCBDT01QT05FTlRfSU5TVEFOQ0VfX0JBU0VfUFJPUEVSVFkgPSBCUENQYWNrYWdlLkVOVElUWV9GRUFUVVJFX0NPVU5UICsgMTsKIAogCS8qKgotCSAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5Db21wZGVmPC9iPjwvZW0+JyByZWZlcmVuY2UuCisJICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkNvbXBkZWYgT3IgU3lzPC9iPjwvZW0+JyByZWZlcmVuY2UuCiAJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KIAkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KIAkgKiBAZ2VuZXJhdGVkCiAJICogQG9yZGVyZWQKIAkgKi8KLQlpbnQgQ09NUE9ORU5UX0lOU1RBTkNFX19DT01QREVGID0gQlBDUGFja2FnZS5FTlRJVFlfRkVBVFVSRV9DT1VOVCArIDI7CisJaW50IENPTVBPTkVOVF9JTlNUQU5DRV9fQ09NUERFRl9PUl9TWVMgPSBCUENQYWNrYWdlLkVOVElUWV9GRUFUVVJFX0NPVU5UICsgMjsKIAogCS8qKgogCSAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5Qb3J0PC9iPjwvZW0+JyByZWZlcmVuY2UgbGlzdC4KQEAgLTc0OCwyMiArOTAyLDEzIEBACiAJaW50IENPTVBPTkVOVF9JTlNUQU5DRV9fUE9SVCA9IEJQQ1BhY2thZ2UuRU5USVRZX0ZFQVRVUkVfQ09VTlQgKyAzOwogCiAJLyoqCi0JICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkFjdGl2aXRpZXM8L2I+PC9lbT4nIHJlZmVyZW5jZSBsaXN0LgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGdlbmVyYXRlZAotCSAqIEBvcmRlcmVkCi0JICovCi0JaW50IENPTVBPTkVOVF9JTlNUQU5DRV9fQUNUSVZJVElFUyA9IEJQQ1BhY2thZ2UuRU5USVRZX0ZFQVRVUkVfQ09VTlQgKyA0OwotCi0JLyoqCiAJICogVGhlIG51bWJlciBvZiBzdHJ1Y3R1cmFsIGZlYXR1cmVzIG9mIHRoZSAnPGVtPkNvbXBvbmVudCBJbnN0YW5jZTwvZW0+JyBjbGFzcy4KIAkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgogCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgogCSAqIEBnZW5lcmF0ZWQKIAkgKiBAb3JkZXJlZAogCSAqLwotCWludCBDT01QT05FTlRfSU5TVEFOQ0VfRkVBVFVSRV9DT1VOVCA9IEJQQ1BhY2thZ2UuRU5USVRZX0ZFQVRVUkVfQ09VTlQgKyA1OworCWludCBDT01QT05FTlRfSU5TVEFOQ0VfRkVBVFVSRV9DT1VOVCA9IEJQQ1BhY2thZ2UuRU5USVRZX0ZFQVRVUkVfQ09VTlQgKyA0OwogCiAJLyoqCiAJICogVGhlIG51bWJlciBvZiBvcGVyYXRpb25zIG9mIHRoZSAnPGVtPkNvbXBvbmVudCBJbnN0YW5jZTwvZW0+JyBjbGFzcy4KQEAgLTc4Miw3ICs5MjcsNyBAQAogCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5yb2JvdGljcy5wcm9maWxlLnJvYm90aWNzLmNvbXBvbmVudHMuaW1wbC5Db21wb25lbnRzUGFja2FnZUltcGwjZ2V0Q29tcG9uZW50U2VydmljZSgpCiAJICogQGdlbmVyYXRlZAogCSAqLwotCWludCBDT01QT05FTlRfU0VSVklDRSA9IDU7CisJaW50IENPTVBPTkVOVF9TRVJWSUNFID0gNjsKIAogCS8qKgogCSAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5Qcm9wZXJ0eTwvYj48L2VtPicgcmVmZXJlbmNlIGxpc3QuCkBAIC05MDAsNyArMTA0NSw3IEBACiAJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnJvYm90aWNzLnByb2ZpbGUucm9ib3RpY3MuY29tcG9uZW50cy5pbXBsLkNvbXBvbmVudHNQYWNrYWdlSW1wbCNnZXRTZXJ2aWNlQ29uZmlndXJhdGlvbigpCiAJICogQGdlbmVyYXRlZAogCSAqLwotCWludCBTRVJWSUNFX0NPTkZJR1VSQVRJT04gPSA2OworCWludCBTRVJWSUNFX0NPTkZJR1VSQVRJT04gPSA3OwogCiAJLyoqCiAJICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPlByb3BlcnR5PC9iPjwvZW0+JyByZWZlcmVuY2UgbGlzdC4KQEAgLTEwMDAsNyArMTE0NSw3IEBACiAJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnJvYm90aWNzLnByb2ZpbGUucm9ib3RpY3MuY29tcG9uZW50cy5pbXBsLkNvbXBvbmVudHNQYWNrYWdlSW1wbCNnZXRTeXN0ZW0oKQogCSAqIEBnZW5lcmF0ZWQKIAkgKi8KLQlpbnQgU1lTVEVNID0gNzsKKwlpbnQgU1lTVEVNID0gODsKIAogCS8qKgogCSAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5Qcm9wZXJ0eTwvYj48L2VtPicgcmVmZXJlbmNlIGxpc3QuCkBAIC0xMDA5LDcgKzExNTQsNyBAQAogCSAqIEBnZW5lcmF0ZWQKIAkgKiBAb3JkZXJlZAogCSAqLwotCWludCBTWVNURU1fX1BST1BFUlRZID0gQlBDUGFja2FnZS5CTE9DS19fUFJPUEVSVFk7CisJaW50IFNZU1RFTV9fUFJPUEVSVFkgPSBDT01QT05FTlRfT1JfU1lTVEVNX19QUk9QRVJUWTsKIAogCS8qKgogCSAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5JbnN0YW5jZSB1aWQ8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KQEAgLTEwMTgsNyArMTE2Myw3IEBACiAJICogQGdlbmVyYXRlZAogCSAqIEBvcmRlcmVkCiAJICovCi0JaW50IFNZU1RFTV9fSU5TVEFOQ0VfVUlEID0gQlBDUGFja2FnZS5CTE9DS19fSU5TVEFOQ0VfVUlEOworCWludCBTWVNURU1fX0lOU1RBTkNFX1VJRCA9IENPTVBPTkVOVF9PUl9TWVNURU1fX0lOU1RBTkNFX1VJRDsKIAogCS8qKgogCSAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5EZXNjcmlwdGlvbjwvYj48L2VtPicgYXR0cmlidXRlLgpAQCAtMTAyNyw3ICsxMTcyLDcgQEAKIAkgKiBAZ2VuZXJhdGVkCiAJICogQG9yZGVyZWQKIAkgKi8KLQlpbnQgU1lTVEVNX19ERVNDUklQVElPTiA9IEJQQ1BhY2thZ2UuQkxPQ0tfX0RFU0NSSVBUSU9OOworCWludCBTWVNURU1fX0RFU0NSSVBUSU9OID0gQ09NUE9ORU5UX09SX1NZU1RFTV9fREVTQ1JJUFRJT047CiAKIAkvKioKIAkgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+QXV0aG9yc2hpcDwvYj48L2VtPicgYXR0cmlidXRlLgpAQCAtMTAzNiw3ICsxMTgxLDcgQEAKIAkgKiBAZ2VuZXJhdGVkCiAJICogQG9yZGVyZWQKIAkgKi8KLQlpbnQgU1lTVEVNX19BVVRIT1JTSElQID0gQlBDUGFja2FnZS5CTE9DS19fQVVUSE9SU0hJUDsKKwlpbnQgU1lTVEVNX19BVVRIT1JTSElQID0gQ09NUE9ORU5UX09SX1NZU1RFTV9fQVVUSE9SU0hJUDsKIAogCS8qKgogCSAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5Qcm92ZW5hbmNlPC9iPjwvZW0+JyBhdHRyaWJ1dGUuCkBAIC0xMDQ1LDcgKzExOTAsNyBAQAogCSAqIEBnZW5lcmF0ZWQKIAkgKiBAb3JkZXJlZAogCSAqLwotCWludCBTWVNURU1fX1BST1ZFTkFOQ0UgPSBCUENQYWNrYWdlLkJMT0NLX19QUk9WRU5BTkNFOworCWludCBTWVNURU1fX1BST1ZFTkFOQ0UgPSBDT01QT05FTlRfT1JfU1lTVEVNX19QUk9WRU5BTkNFOwogCiAJLyoqCiAJICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPk1vZGVsIHVpZDwvYj48L2VtPicgYXR0cmlidXRlLgpAQCAtMTA1NCw3ICsxMTk5LDcgQEAKIAkgKiBAZ2VuZXJhdGVkCiAJICogQG9yZGVyZWQKIAkgKi8KLQlpbnQgU1lTVEVNX19NT0RFTF9VSUQgPSBCUENQYWNrYWdlLkJMT0NLX19NT0RFTF9VSUQ7CisJaW50IFNZU1RFTV9fTU9ERUxfVUlEID0gQ09NUE9ORU5UX09SX1NZU1RFTV9fTU9ERUxfVUlEOwogCiAJLyoqCiAJICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPk1ldGFtb2RlbCB1aWQ8L2I+PC9lbT4nIGF0dHJpYnV0ZS4KQEAgLTEwNjMsNyArMTIwOCw3IEBACiAJICogQGdlbmVyYXRlZAogCSAqIEBvcmRlcmVkCiAJICovCi0JaW50IFNZU1RFTV9fTUVUQU1PREVMX1VJRCA9IEJQQ1BhY2thZ2UuQkxPQ0tfX01FVEFNT0RFTF9VSUQ7CisJaW50IFNZU1RFTV9fTUVUQU1PREVMX1VJRCA9IENPTVBPTkVOVF9PUl9TWVNURU1fX01FVEFNT0RFTF9VSUQ7CiAKIAkvKioKIAkgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+UG9ydDwvYj48L2VtPicgcmVmZXJlbmNlIGxpc3QuCkBAIC0xMDcyLDcgKzEyMTcsNyBAQAogCSAqIEBnZW5lcmF0ZWQKIAkgKiBAb3JkZXJlZAogCSAqLwotCWludCBTWVNURU1fX1BPUlQgPSBCUENQYWNrYWdlLkJMT0NLX19QT1JUOworCWludCBTWVNURU1fX1BPUlQgPSBDT01QT05FTlRfT1JfU1lTVEVNX19QT1JUOwogCiAJLyoqCiAJICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkNvbm5lY3RvcjwvYj48L2VtPicgcmVmZXJlbmNlIGxpc3QuCkBAIC0xMDgxLDcgKzEyMjYsNyBAQAogCSAqIEBnZW5lcmF0ZWQKIAkgKiBAb3JkZXJlZAogCSAqLwotCWludCBTWVNURU1fX0NPTk5FQ1RPUiA9IEJQQ1BhY2thZ2UuQkxPQ0tfX0NPTk5FQ1RPUjsKKwlpbnQgU1lTVEVNX19DT05ORUNUT1IgPSBDT01QT05FTlRfT1JfU1lTVEVNX19DT05ORUNUT1I7CiAKIAkvKioKIAkgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+Q29sbGVjdGlvbjwvYj48L2VtPicgcmVmZXJlbmNlIGxpc3QuCkBAIC0xMDkwLDcgKzEyMzUsNyBAQAogCSAqIEBnZW5lcmF0ZWQKIAkgKiBAb3JkZXJlZAogCSAqLwotCWludCBTWVNURU1fX0NPTExFQ1RJT04gPSBCUENQYWNrYWdlLkJMT0NLX19DT0xMRUNUSU9OOworCWludCBTWVNURU1fX0NPTExFQ1RJT04gPSBDT01QT05FTlRfT1JfU1lTVEVNX19DT0xMRUNUSU9OOwogCiAJLyoqCiAJICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkJsb2NrPC9iPjwvZW0+JyByZWZlcmVuY2UgbGlzdC4KQEAgLTEwOTksNyArMTI0NCw3IEBACiAJICogQGdlbmVyYXRlZAogCSAqIEBvcmRlcmVkCiAJICovCi0JaW50IFNZU1RFTV9fQkxPQ0sgPSBCUENQYWNrYWdlLkJMT0NLX19CTE9DSzsKKwlpbnQgU1lTVEVNX19CTE9DSyA9IENPTVBPTkVOVF9PUl9TWVNURU1fX0JMT0NLOwogCiAJLyoqCiAJICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPlJlbGF0aW9uPC9iPjwvZW0+JyByZWZlcmVuY2UgbGlzdC4KQEAgLTExMDgsNyArMTI1Myw3IEBACiAJICogQGdlbmVyYXRlZAogCSAqIEBvcmRlcmVkCiAJICovCi0JaW50IFNZU1RFTV9fUkVMQVRJT04gPSBCUENQYWNrYWdlLkJMT0NLX19SRUxBVElPTjsKKwlpbnQgU1lTVEVNX19SRUxBVElPTiA9IENPTVBPTkVOVF9PUl9TWVNURU1fX1JFTEFUSU9OOwogCiAJLyoqCiAJICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkJhc2UgQ2xhc3M8L2I+PC9lbT4nIHJlZmVyZW5jZS4KQEAgLTExMTcsNyArMTI2MiwxNiBAQAogCSAqIEBnZW5lcmF0ZWQKIAkgKiBAb3JkZXJlZAogCSAqLwotCWludCBTWVNURU1fX0JBU0VfQ0xBU1MgPSBCUENQYWNrYWdlLkJMT0NLX19CQVNFX0NMQVNTOworCWludCBTWVNURU1fX0JBU0VfQ0xBU1MgPSBDT01QT05FTlRfT1JfU1lTVEVNX19CQVNFX0NMQVNTOworCisJLyoqCisJICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPlNlcnZpY2VzPC9iPjwvZW0+JyByZWZlcmVuY2UgbGlzdC4KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgorCSAqIEBnZW5lcmF0ZWQKKwkgKiBAb3JkZXJlZAorCSAqLworCWludCBTWVNURU1fX1NFUlZJQ0VTID0gQ09NUE9ORU5UX09SX1NZU1RFTV9fU0VSVklDRVM7CiAKIAkvKioKIAkgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+SW5zdGFuY2VzPC9iPjwvZW0+JyByZWZlcmVuY2UgbGlzdC4KQEAgLTExMjYsNyArMTI4MCw3IEBACiAJICogQGdlbmVyYXRlZAogCSAqIEBvcmRlcmVkCiAJICovCi0JaW50IFNZU1RFTV9fSU5TVEFOQ0VTID0gQlBDUGFja2FnZS5CTE9DS19GRUFUVVJFX0NPVU5UICsgMDsKKwlpbnQgU1lTVEVNX19JTlNUQU5DRVMgPSBDT01QT05FTlRfT1JfU1lTVEVNX0ZFQVRVUkVfQ09VTlQgKyAwOwogCiAJLyoqCiAJICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPlRhc2s8L2I+PC9lbT4nIHJlZmVyZW5jZSBsaXN0LgpAQCAtMTEzNSw3ICsxMjg5LDcgQEAKIAkgKiBAZ2VuZXJhdGVkCiAJICogQG9yZGVyZWQKIAkgKi8KLQlpbnQgU1lTVEVNX19UQVNLID0gQlBDUGFja2FnZS5CTE9DS19GRUFUVVJFX0NPVU5UICsgMTsKKwlpbnQgU1lTVEVNX19UQVNLID0gQ09NUE9ORU5UX09SX1NZU1RFTV9GRUFUVVJFX0NPVU5UICsgMTsKIAogCS8qKgogCSAqIFRoZSBudW1iZXIgb2Ygc3RydWN0dXJhbCBmZWF0dXJlcyBvZiB0aGUgJzxlbT5TeXN0ZW08L2VtPicgY2xhc3MuCkBAIC0xMTQ0LDcgKzEyOTgsNyBAQAogCSAqIEBnZW5lcmF0ZWQKIAkgKiBAb3JkZXJlZAogCSAqLwotCWludCBTWVNURU1fRkVBVFVSRV9DT1VOVCA9IEJQQ1BhY2thZ2UuQkxPQ0tfRkVBVFVSRV9DT1VOVCArIDI7CisJaW50IFNZU1RFTV9GRUFUVVJFX0NPVU5UID0gQ09NUE9ORU5UX09SX1NZU1RFTV9GRUFUVVJFX0NPVU5UICsgMjsKIAogCS8qKgogCSAqIFRoZSBudW1iZXIgb2Ygb3BlcmF0aW9ucyBvZiB0aGUgJzxlbT5TeXN0ZW08L2VtPicgY2xhc3MuCkBAIC0xMTUzLDcgKzEzMDcsNyBAQAogCSAqIEBnZW5lcmF0ZWQKIAkgKiBAb3JkZXJlZAogCSAqLwotCWludCBTWVNURU1fT1BFUkFUSU9OX0NPVU5UID0gQlBDUGFja2FnZS5CTE9DS19PUEVSQVRJT05fQ09VTlQgKyAwOworCWludCBTWVNURU1fT1BFUkFUSU9OX0NPVU5UID0gQ09NUE9ORU5UX09SX1NZU1RFTV9PUEVSQVRJT05fQ09VTlQgKyAwOwogCiAJLyoqCiAJICogVGhlIG1ldGEgb2JqZWN0IGlkIGZvciB0aGUgJ3tAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnJvYm90aWNzLnByb2ZpbGUucm9ib3RpY3MuY29tcG9uZW50cy5pbXBsLkFjdGl2aXR5SW5zdGFuY2VJbXBsIDxlbT5BY3Rpdml0eSBJbnN0YW5jZTwvZW0+fScgY2xhc3MuCkBAIC0xMTYzLDcgKzEzMTcsNyBAQAogCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5yb2JvdGljcy5wcm9maWxlLnJvYm90aWNzLmNvbXBvbmVudHMuaW1wbC5Db21wb25lbnRzUGFja2FnZUltcGwjZ2V0QWN0aXZpdHlJbnN0YW5jZSgpCiAJICogQGdlbmVyYXRlZAogCSAqLwotCWludCBBQ1RJVklUWV9JTlNUQU5DRSA9IDg7CisJaW50IEFDVElWSVRZX0lOU1RBTkNFID0gOTsKIAogCS8qKgogCSAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5CYXNlIFByb3BlcnR5PC9iPjwvZW0+JyByZWZlcmVuY2UuCkBAIC0xMjAwLDcgKzEzNTQsNyBAQAogCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5yb2JvdGljcy5wcm9maWxlLnJvYm90aWNzLmNvbXBvbmVudHMuaW1wbC5Db21wb25lbnRzUGFja2FnZUltcGwjZ2V0QWN0aXZpdHlDb25maWd1cmF0aW9uKCkKIAkgKiBAZ2VuZXJhdGVkCiAJICovCi0JaW50IEFDVElWSVRZX0NPTkZJR1VSQVRJT04gPSA5OworCWludCBBQ1RJVklUWV9DT05GSUdVUkFUSU9OID0gMTA7CiAKIAkvKioKIAkgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+QmFzZSBJbnN0YW5jZSBTcGVjaWZpY2F0aW9uPC9iPjwvZW0+JyByZWZlcmVuY2UuCkBAIC0xMjM3LDcgKzEzOTEsNyBAQAogCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5yb2JvdGljcy5wcm9maWxlLnJvYm90aWNzLmNvbXBvbmVudHMuaW1wbC5Db21wb25lbnRzUGFja2FnZUltcGwjZ2V0Q29tcG9uZW50RGVmaW5pdGlvbk1vZGVsKCkKIAkgKiBAZ2VuZXJhdGVkCiAJICovCi0JaW50IENPTVBPTkVOVF9ERUZJTklUSU9OX01PREVMID0gMTA7CisJaW50IENPTVBPTkVOVF9ERUZJTklUSU9OX01PREVMID0gMTE7CiAKIAkvKioKIAkgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+UHJvcGVydHk8L2I+PC9lbT4nIHJlZmVyZW5jZSBsaXN0LgpAQCAtMTM3Myw3ICsxNTI3LDcgQEAKIAkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMucm9ib3RpY3MucHJvZmlsZS5yb2JvdGljcy5jb21wb25lbnRzLmltcGwuQ29tcG9uZW50c1BhY2thZ2VJbXBsI2dldFN5c3RlbUNvbXBvbmVudEFyY2hpdGVjdHVyZU1vZGVsKCkKIAkgKiBAZ2VuZXJhdGVkCiAJICovCi0JaW50IFNZU1RFTV9DT01QT05FTlRfQVJDSElURUNUVVJFX01PREVMID0gMTE7CisJaW50IFNZU1RFTV9DT01QT05FTlRfQVJDSElURUNUVVJFX01PREVMID0gMTI7CiAKIAkvKioKIAkgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+UHJvcGVydHk8L2I+PC9lbT4nIHJlZmVyZW5jZSBsaXN0LgpAQCAtMTQ3NCw3ICsxNjI4LDcgQEAKIAkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMucm9ib3RpY3MucHJvZmlsZS5yb2JvdGljcy5jb21wb25lbnRzLmltcGwuQ29tcG9uZW50c1BhY2thZ2VJbXBsI2dldFBlcmlvZGljVGltZXIoKQogCSAqIEBnZW5lcmF0ZWQKIAkgKi8KLQlpbnQgUEVSSU9ESUNfVElNRVIgPSAxMjsKKwlpbnQgUEVSSU9ESUNfVElNRVIgPSAxMzsKIAogCS8qKgogCSAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5Qcm9wZXJ0eTwvYj48L2VtPicgcmVmZXJlbmNlIGxpc3QuCkBAIC0xNjg1LDE3ICsxODM5LDYgQEAKIAlFQ2xhc3MgZ2V0Q29tcG9uZW50RGVmaW5pdGlvbigpOwogCiAJLyoqCi0JICogUmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSByZWZlcmVuY2UgbGlzdCAne0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMucm9ib3RpY3MucHJvZmlsZS5yb2JvdGljcy5jb21wb25lbnRzLkNvbXBvbmVudERlZmluaXRpb24jZ2V0U2VydmljZXMgPGVtPlNlcnZpY2VzPC9lbT59Jy4KLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCSAqIEByZXR1cm4gdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgcmVmZXJlbmNlIGxpc3QgJzxlbT5TZXJ2aWNlczwvZW0+Jy4KLQkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMucm9ib3RpY3MucHJvZmlsZS5yb2JvdGljcy5jb21wb25lbnRzLkNvbXBvbmVudERlZmluaXRpb24jZ2V0U2VydmljZXMoKQotCSAqIEBzZWUgI2dldENvbXBvbmVudERlZmluaXRpb24oKQotCSAqIEBnZW5lcmF0ZWQKLQkgKi8KLQlFUmVmZXJlbmNlIGdldENvbXBvbmVudERlZmluaXRpb25fU2VydmljZXMoKTsKLQotCS8qKgogCSAqIFJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgcmVmZXJlbmNlICd7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5yb2JvdGljcy5wcm9maWxlLnJvYm90aWNzLmNvbXBvbmVudHMuQ29tcG9uZW50RGVmaW5pdGlvbiNnZXRQYXJhbWV0ZXIgPGVtPlBhcmFtZXRlcjwvZW0+fScuCiAJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KIAkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KQEAgLTE3MTgsNiArMTg2MSwyNyBAQAogCUVSZWZlcmVuY2UgZ2V0Q29tcG9uZW50RGVmaW5pdGlvbl9BY3Rpdml0aWVzKCk7CiAKIAkvKioKKwkgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJ3tAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnJvYm90aWNzLnByb2ZpbGUucm9ib3RpY3MuY29tcG9uZW50cy5Db21wb25lbnRPclN5c3RlbSA8ZW0+Q29tcG9uZW50IE9yIFN5c3RlbTwvZW0+fScuCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KKwkgKiBAcmV0dXJuIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJzxlbT5Db21wb25lbnQgT3IgU3lzdGVtPC9lbT4nLgorCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5yb2JvdGljcy5wcm9maWxlLnJvYm90aWNzLmNvbXBvbmVudHMuQ29tcG9uZW50T3JTeXN0ZW0KKwkgKiBAZ2VuZXJhdGVkCisJICovCisJRUNsYXNzIGdldENvbXBvbmVudE9yU3lzdGVtKCk7CisKKwkvKioKKwkgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIHJlZmVyZW5jZSBsaXN0ICd7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5yb2JvdGljcy5wcm9maWxlLnJvYm90aWNzLmNvbXBvbmVudHMuQ29tcG9uZW50T3JTeXN0ZW0jZ2V0U2VydmljZXMgPGVtPlNlcnZpY2VzPC9lbT59Jy4KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgorCSAqIEByZXR1cm4gdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgcmVmZXJlbmNlIGxpc3QgJzxlbT5TZXJ2aWNlczwvZW0+Jy4KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMucm9ib3RpY3MucHJvZmlsZS5yb2JvdGljcy5jb21wb25lbnRzLkNvbXBvbmVudE9yU3lzdGVtI2dldFNlcnZpY2VzKCkKKwkgKiBAc2VlICNnZXRDb21wb25lbnRPclN5c3RlbSgpCisJICogQGdlbmVyYXRlZAorCSAqLworCUVSZWZlcmVuY2UgZ2V0Q29tcG9uZW50T3JTeXN0ZW1fU2VydmljZXMoKTsKKworCS8qKgogCSAqIFJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAne0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMucm9ib3RpY3MucHJvZmlsZS5yb2JvdGljcy5jb21wb25lbnRzLkNvbXBvbmVudFBvcnQgPGVtPkNvbXBvbmVudCBQb3J0PC9lbT59Jy4KIAkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgogCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgpAQCAtMTgxNSwxNSArMTk3OSwxNSBAQAogCUVSZWZlcmVuY2UgZ2V0Q29tcG9uZW50SW5zdGFuY2VfQmFzZV9Qcm9wZXJ0eSgpOwogCiAJLyoqCi0JICogUmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSByZWZlcmVuY2UgJ3tAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnJvYm90aWNzLnByb2ZpbGUucm9ib3RpY3MuY29tcG9uZW50cy5Db21wb25lbnRJbnN0YW5jZSNnZXRDb21wZGVmIDxlbT5Db21wZGVmPC9lbT59Jy4KKwkgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIHJlZmVyZW5jZSAne0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMucm9ib3RpY3MucHJvZmlsZS5yb2JvdGljcy5jb21wb25lbnRzLkNvbXBvbmVudEluc3RhbmNlI2dldENvbXBkZWZPclN5cyA8ZW0+Q29tcGRlZiBPciBTeXM8L2VtPn0nLgogCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+CiAJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQHJldHVybiB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSByZWZlcmVuY2UgJzxlbT5Db21wZGVmPC9lbT4nLgotCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5yb2JvdGljcy5wcm9maWxlLnJvYm90aWNzLmNvbXBvbmVudHMuQ29tcG9uZW50SW5zdGFuY2UjZ2V0Q29tcGRlZigpCisJICogQHJldHVybiB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSByZWZlcmVuY2UgJzxlbT5Db21wZGVmIE9yIFN5czwvZW0+Jy4KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMucm9ib3RpY3MucHJvZmlsZS5yb2JvdGljcy5jb21wb25lbnRzLkNvbXBvbmVudEluc3RhbmNlI2dldENvbXBkZWZPclN5cygpCiAJICogQHNlZSAjZ2V0Q29tcG9uZW50SW5zdGFuY2UoKQogCSAqIEBnZW5lcmF0ZWQKIAkgKi8KLQlFUmVmZXJlbmNlIGdldENvbXBvbmVudEluc3RhbmNlX0NvbXBkZWYoKTsKKwlFUmVmZXJlbmNlIGdldENvbXBvbmVudEluc3RhbmNlX0NvbXBkZWZPclN5cygpOwogCiAJLyoqCiAJICogUmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSByZWZlcmVuY2UgbGlzdCAne0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMucm9ib3RpY3MucHJvZmlsZS5yb2JvdGljcy5jb21wb25lbnRzLkNvbXBvbmVudEluc3RhbmNlI2dldFBvcnQgPGVtPlBvcnQ8L2VtPn0nLgpAQCAtMTgzNywxNyArMjAwMSw2IEBACiAJRVJlZmVyZW5jZSBnZXRDb21wb25lbnRJbnN0YW5jZV9Qb3J0KCk7CiAKIAkvKioKLQkgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIHJlZmVyZW5jZSBsaXN0ICd7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5yb2JvdGljcy5wcm9maWxlLnJvYm90aWNzLmNvbXBvbmVudHMuQ29tcG9uZW50SW5zdGFuY2UjZ2V0QWN0aXZpdGllcyA8ZW0+QWN0aXZpdGllczwvZW0+fScuCi0JICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KLQkgKiBAcmV0dXJuIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIHJlZmVyZW5jZSBsaXN0ICc8ZW0+QWN0aXZpdGllczwvZW0+Jy4KLQkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMucm9ib3RpY3MucHJvZmlsZS5yb2JvdGljcy5jb21wb25lbnRzLkNvbXBvbmVudEluc3RhbmNlI2dldEFjdGl2aXRpZXMoKQotCSAqIEBzZWUgI2dldENvbXBvbmVudEluc3RhbmNlKCkKLQkgKiBAZ2VuZXJhdGVkCi0JICovCi0JRVJlZmVyZW5jZSBnZXRDb21wb25lbnRJbnN0YW5jZV9BY3Rpdml0aWVzKCk7Ci0KLQkvKioKIAkgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJ3tAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnJvYm90aWNzLnByb2ZpbGUucm9ib3RpY3MuY29tcG9uZW50cy5Db21wb25lbnRTZXJ2aWNlIDxlbT5Db21wb25lbnQgU2VydmljZTwvZW0+fScuCiAJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KIAkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KQEAgLTIxNzAsMTQgKzIzMjMsNiBAQAogCQlFQ2xhc3MgQ09NUE9ORU5UX0RFRklOSVRJT04gPSBlSU5TVEFOQ0UuZ2V0Q29tcG9uZW50RGVmaW5pdGlvbigpOwogCiAJCS8qKgotCQkgKiBUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+U2VydmljZXM8L2I+PC9lbT4nIHJlZmVyZW5jZSBsaXN0IGZlYXR1cmUuCi0JCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgotCQkgKiBAZ2VuZXJhdGVkCi0JCSAqLwotCQlFUmVmZXJlbmNlIENPTVBPTkVOVF9ERUZJTklUSU9OX19TRVJWSUNFUyA9IGVJTlNUQU5DRS5nZXRDb21wb25lbnREZWZpbml0aW9uX1NlcnZpY2VzKCk7Ci0KLQkJLyoqCiAJCSAqIFRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5QYXJhbWV0ZXI8L2I+PC9lbT4nIHJlZmVyZW5jZSBmZWF0dXJlLgogCQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgogCQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KQEAgLTIxOTQsNiArMjMzOSwyNCBAQAogCQlFUmVmZXJlbmNlIENPTVBPTkVOVF9ERUZJTklUSU9OX19BQ1RJVklUSUVTID0gZUlOU1RBTkNFLmdldENvbXBvbmVudERlZmluaXRpb25fQWN0aXZpdGllcygpOwogCiAJCS8qKgorCQkgKiBUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICd7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5yb2JvdGljcy5wcm9maWxlLnJvYm90aWNzLmNvbXBvbmVudHMuaW1wbC5Db21wb25lbnRPclN5c3RlbUltcGwgPGVtPkNvbXBvbmVudCBPciBTeXN0ZW08L2VtPn0nIGNsYXNzLgorCQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgorCQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KKwkJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnJvYm90aWNzLnByb2ZpbGUucm9ib3RpY3MuY29tcG9uZW50cy5pbXBsLkNvbXBvbmVudE9yU3lzdGVtSW1wbAorCQkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMucm9ib3RpY3MucHJvZmlsZS5yb2JvdGljcy5jb21wb25lbnRzLmltcGwuQ29tcG9uZW50c1BhY2thZ2VJbXBsI2dldENvbXBvbmVudE9yU3lzdGVtKCkKKwkJICogQGdlbmVyYXRlZAorCQkgKi8KKwkJRUNsYXNzIENPTVBPTkVOVF9PUl9TWVNURU0gPSBlSU5TVEFOQ0UuZ2V0Q29tcG9uZW50T3JTeXN0ZW0oKTsKKworCQkvKioKKwkJICogVGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPGVtPjxiPlNlcnZpY2VzPC9iPjwvZW0+JyByZWZlcmVuY2UgbGlzdCBmZWF0dXJlLgorCQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgorCQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KKwkJICogQGdlbmVyYXRlZAorCQkgKi8KKwkJRVJlZmVyZW5jZSBDT01QT05FTlRfT1JfU1lTVEVNX19TRVJWSUNFUyA9IGVJTlNUQU5DRS5nZXRDb21wb25lbnRPclN5c3RlbV9TZXJ2aWNlcygpOworCisJCS8qKgogCQkgKiBUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICd7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5yb2JvdGljcy5wcm9maWxlLnJvYm90aWNzLmNvbXBvbmVudHMuaW1wbC5Db21wb25lbnRQb3J0SW1wbCA8ZW0+Q29tcG9uZW50IFBvcnQ8L2VtPn0nIGNsYXNzLgogCQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgogCQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KQEAgLTIyNzAsMTIgKzI0MzMsMTIgQEAKIAkJRVJlZmVyZW5jZSBDT01QT05FTlRfSU5TVEFOQ0VfX0JBU0VfUFJPUEVSVFkgPSBlSU5TVEFOQ0UuZ2V0Q29tcG9uZW50SW5zdGFuY2VfQmFzZV9Qcm9wZXJ0eSgpOwogCiAJCS8qKgotCQkgKiBUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+Q29tcGRlZjwvYj48L2VtPicgcmVmZXJlbmNlIGZlYXR1cmUuCisJCSAqIFRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5Db21wZGVmIE9yIFN5czwvYj48L2VtPicgcmVmZXJlbmNlIGZlYXR1cmUuCiAJCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+CiAJCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgogCQkgKiBAZ2VuZXJhdGVkCiAJCSAqLwotCQlFUmVmZXJlbmNlIENPTVBPTkVOVF9JTlNUQU5DRV9fQ09NUERFRiA9IGVJTlNUQU5DRS5nZXRDb21wb25lbnRJbnN0YW5jZV9Db21wZGVmKCk7CisJCUVSZWZlcmVuY2UgQ09NUE9ORU5UX0lOU1RBTkNFX19DT01QREVGX09SX1NZUyA9IGVJTlNUQU5DRS5nZXRDb21wb25lbnRJbnN0YW5jZV9Db21wZGVmT3JTeXMoKTsKIAogCQkvKioKIAkJICogVGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPGVtPjxiPlBvcnQ8L2I+PC9lbT4nIHJlZmVyZW5jZSBsaXN0IGZlYXR1cmUuCkBAIC0yMjg2LDE0ICsyNDQ5LDYgQEAKIAkJRVJlZmVyZW5jZSBDT01QT05FTlRfSU5TVEFOQ0VfX1BPUlQgPSBlSU5TVEFOQ0UuZ2V0Q29tcG9uZW50SW5zdGFuY2VfUG9ydCgpOwogCiAJCS8qKgotCQkgKiBUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+QWN0aXZpdGllczwvYj48L2VtPicgcmVmZXJlbmNlIGxpc3QgZmVhdHVyZS4KLQkJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KLQkJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JCSAqIEBnZW5lcmF0ZWQKLQkJICovCi0JCUVSZWZlcmVuY2UgQ09NUE9ORU5UX0lOU1RBTkNFX19BQ1RJVklUSUVTID0gZUlOU1RBTkNFLmdldENvbXBvbmVudEluc3RhbmNlX0FjdGl2aXRpZXMoKTsKLQotCQkvKioKIAkJICogVGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAne0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMucm9ib3RpY3MucHJvZmlsZS5yb2JvdGljcy5jb21wb25lbnRzLmltcGwuQ29tcG9uZW50U2VydmljZUltcGwgPGVtPkNvbXBvbmVudCBTZXJ2aWNlPC9lbT59JyBjbGFzcy4KIAkJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KIAkJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+CmRpZmYgLS1naXQgYS9wbHVnaW5zL2N1c3RvbWl6YXRpb24vb3JnLmVjbGlwc2UucGFweXJ1cy5yb2JvdGljcy5wcm9maWxlL3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9yb2JvdGljcy9wcm9maWxlL3JvYm90aWNzL2NvbXBvbmVudHMvU3lzdGVtLmphdmEgYi9wbHVnaW5zL2N1c3RvbWl6YXRpb24vb3JnLmVjbGlwc2UucGFweXJ1cy5yb2JvdGljcy5wcm9maWxlL3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9yb2JvdGljcy9wcm9maWxlL3JvYm90aWNzL2NvbXBvbmVudHMvU3lzdGVtLmphdmEKaW5kZXggMjVmMzFhZC4uM2JlNmMzNSAxMDA2NDQKLS0tIGEvcGx1Z2lucy9jdXN0b21pemF0aW9uL29yZy5lY2xpcHNlLnBhcHlydXMucm9ib3RpY3MucHJvZmlsZS9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvcm9ib3RpY3MvcHJvZmlsZS9yb2JvdGljcy9jb21wb25lbnRzL1N5c3RlbS5qYXZhCisrKyBiL3BsdWdpbnMvY3VzdG9taXphdGlvbi9vcmcuZWNsaXBzZS5wYXB5cnVzLnJvYm90aWNzLnByb2ZpbGUvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3JvYm90aWNzL3Byb2ZpbGUvcm9ib3RpY3MvY29tcG9uZW50cy9TeXN0ZW0uamF2YQpAQCAtMTIsOCArMTIsNiBAQAogcGFja2FnZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnJvYm90aWNzLnByb2ZpbGUucm9ib3RpY3MuY29tcG9uZW50czsKIAogaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24udXRpbC5FTGlzdDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMucm9ib3RpY3MuYnBjLnByb2ZpbGUuYnBjLkJsb2NrOwogaW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMucm9ib3RpY3MucHJvZmlsZS5yb2JvdGljcy5iZWhhdmlvci5UYXNrOwogCiAvKioKQEAgLTMzLDcgKzMxLDcgQEAKICAqIEBtb2RlbAogICogQGdlbmVyYXRlZAogICovCi1wdWJsaWMgaW50ZXJmYWNlIFN5c3RlbSBleHRlbmRzIEJsb2NrIHsKK3B1YmxpYyBpbnRlcmZhY2UgU3lzdGVtIGV4dGVuZHMgQ29tcG9uZW50T3JTeXN0ZW0gewogCS8qKgogCSAqIFJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPkluc3RhbmNlczwvYj48L2VtPicgcmVmZXJlbmNlIGxpc3QuCiAJICogVGhlIGxpc3QgY29udGVudHMgYXJlIG9mIHR5cGUge0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMucm9ib3RpY3MucHJvZmlsZS5yb2JvdGljcy5jb21wb25lbnRzLkNvbXBvbmVudEluc3RhbmNlfS4KZGlmZiAtLWdpdCBhL3BsdWdpbnMvY3VzdG9taXphdGlvbi9vcmcuZWNsaXBzZS5wYXB5cnVzLnJvYm90aWNzLnByb2ZpbGUvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3JvYm90aWNzL3Byb2ZpbGUvcm9ib3RpY3MvY29tcG9uZW50cy9pbXBsL0NvbXBvbmVudERlZmluaXRpb25JbXBsLmphdmEgYi9wbHVnaW5zL2N1c3RvbWl6YXRpb24vb3JnLmVjbGlwc2UucGFweXJ1cy5yb2JvdGljcy5wcm9maWxlL3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9yb2JvdGljcy9wcm9maWxlL3JvYm90aWNzL2NvbXBvbmVudHMvaW1wbC9Db21wb25lbnREZWZpbml0aW9uSW1wbC5qYXZhCmluZGV4IDY1NTZjMjEuLjljNGRiNDUgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvY3VzdG9taXphdGlvbi9vcmcuZWNsaXBzZS5wYXB5cnVzLnJvYm90aWNzLnByb2ZpbGUvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3JvYm90aWNzL3Byb2ZpbGUvcm9ib3RpY3MvY29tcG9uZW50cy9pbXBsL0NvbXBvbmVudERlZmluaXRpb25JbXBsLmphdmEKKysrIGIvcGx1Z2lucy9jdXN0b21pemF0aW9uL29yZy5lY2xpcHNlLnBhcHlydXMucm9ib3RpY3MucHJvZmlsZS9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvcm9ib3RpY3MvcHJvZmlsZS9yb2JvdGljcy9jb21wb25lbnRzL2ltcGwvQ29tcG9uZW50RGVmaW5pdGlvbkltcGwuamF2YQpAQCAtMTQsMTcgKzE0LDEzIEBACiBpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi51dGlsLkVMaXN0OwogaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24udXRpbC5VbmlxdWVFTGlzdDsKIGltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRUNsYXNzOwotaW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMucm9ib3RpY3MuYnBjLnByb2ZpbGUuYnBjLmltcGwuQmxvY2tJbXBsOwogaW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMucm9ib3RpY3MucHJvZmlsZS5yb2JvdGljcy5jb21wb25lbnRzLkFjdGl2aXR5OwogaW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMucm9ib3RpY3MucHJvZmlsZS5yb2JvdGljcy5jb21wb25lbnRzLkNvbXBvbmVudERlZmluaXRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5yb2JvdGljcy5wcm9maWxlLnJvYm90aWNzLmNvbXBvbmVudHMuQ29tcG9uZW50U2VydmljZTsKIGltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnJvYm90aWNzLnByb2ZpbGUucm9ib3RpY3MuY29tcG9uZW50cy5Db21wb25lbnRzUGFja2FnZTsKIGltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnJvYm90aWNzLnByb2ZpbGUucm9ib3RpY3MucGFyYW1ldGVycy5QYXJhbWV0ZXI7CiBpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy51bWwudG9vbHMudXRpbHMuU3RlcmVvdHlwZVV0aWw7CiBpbXBvcnQgb3JnLmVjbGlwc2UudW1sMi51bWwuQ2xhc3NpZmllcjsKLWltcG9ydCBvcmcuZWNsaXBzZS51bWwyLnVtbC5Qb3J0OwogaW1wb3J0IG9yZy5lY2xpcHNlLnVtbDIudW1sLlN0cnVjdHVyZWRDbGFzc2lmaWVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLnVtbDIudW1sLlR5cGU7CiBpbXBvcnQgb3JnLmVjbGlwc2UudW1sMi51bWwudXRpbC5VTUxVdGlsOwogCiAvKioKQEAgLTM1LDE0ICszMSwxMyBAQAogICogVGhlIGZvbGxvd2luZyBmZWF0dXJlcyBhcmUgaW1wbGVtZW50ZWQ6CiAgKiA8L3A+CiAgKiA8dWw+Ci0gKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5yb2JvdGljcy5wcm9maWxlLnJvYm90aWNzLmNvbXBvbmVudHMuaW1wbC5Db21wb25lbnREZWZpbml0aW9uSW1wbCNnZXRTZXJ2aWNlcyA8ZW0+U2VydmljZXM8L2VtPn08L2xpPgogICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMucm9ib3RpY3MucHJvZmlsZS5yb2JvdGljcy5jb21wb25lbnRzLmltcGwuQ29tcG9uZW50RGVmaW5pdGlvbkltcGwjZ2V0UGFyYW1ldGVyIDxlbT5QYXJhbWV0ZXI8L2VtPn08L2xpPgogICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMucm9ib3RpY3MucHJvZmlsZS5yb2JvdGljcy5jb21wb25lbnRzLmltcGwuQ29tcG9uZW50RGVmaW5pdGlvbkltcGwjZ2V0QWN0aXZpdGllcyA8ZW0+QWN0aXZpdGllczwvZW0+fTwvbGk+CiAgKiA8L3VsPgogICoKICAqIEBnZW5lcmF0ZWQKICAqLwotcHVibGljIGNsYXNzIENvbXBvbmVudERlZmluaXRpb25JbXBsIGV4dGVuZHMgQmxvY2tJbXBsIGltcGxlbWVudHMgQ29tcG9uZW50RGVmaW5pdGlvbiB7CitwdWJsaWMgY2xhc3MgQ29tcG9uZW50RGVmaW5pdGlvbkltcGwgZXh0ZW5kcyBDb21wb25lbnRPclN5c3RlbUltcGwgaW1wbGVtZW50cyBDb21wb25lbnREZWZpbml0aW9uIHsKIAkvKioKIAkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgogCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgpAQCAtODcsMjggKzgyLDYgQEAKIAkgKiAKIAkgKiBAZ2VuZXJhdGVkIE5PVAogCSAqLwotCXB1YmxpYyBFTGlzdDxDb21wb25lbnRTZXJ2aWNlPiBnZXRTZXJ2aWNlcygpIHsKLQkJRUxpc3Q8Q29tcG9uZW50U2VydmljZT4gc2VydmljZUxpc3QgPSBuZXcgVW5pcXVlRUxpc3Q8Q29tcG9uZW50U2VydmljZT4oKTsKLQkJaWYgKGdldEJhc2VfQ2xhc3MoKSAhPSBudWxsKSB7Ci0JCQlmb3IgKFBvcnQgcG9ydCA6IGdldEJhc2VfQ2xhc3MoKS5nZXRPd25lZFBvcnRzKCkpIHsKLQkJCQlUeXBlIHR5cGUgPSBwb3J0LmdldFR5cGUoKTsKLQkJCQlpZiAodHlwZSAhPSBudWxsKSB7Ci0JCQkJCUNvbXBvbmVudFNlcnZpY2Ugc2VydmljZSA9IFVNTFV0aWwuZ2V0U3RlcmVvdHlwZUFwcGxpY2F0aW9uKHR5cGUsIENvbXBvbmVudFNlcnZpY2UuY2xhc3MpOwotCQkJCQlpZiAoc2VydmljZSAhPSBudWxsKSB7Ci0JCQkJCQlzZXJ2aWNlTGlzdC5hZGQoc2VydmljZSk7Ci0JCQkJCX0KLQkJCQl9Ci0JCQl9Ci0JCX0KLQkJcmV0dXJuIHNlcnZpY2VMaXN0OwotCX0KLQotCS8qKgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogCi0JICogQGdlbmVyYXRlZCBOT1QKLQkgKi8KIAlwdWJsaWMgUGFyYW1ldGVyIGdldFBhcmFtZXRlcigpIHsKIAkJUGFyYW1ldGVyIHBhcmFtID0gbnVsbDsKIAkJaWYgKGdldEJhc2VfQ2xhc3MoKSAhPSBudWxsKSB7CmRpZmYgLS1naXQgYS9wbHVnaW5zL2N1c3RvbWl6YXRpb24vb3JnLmVjbGlwc2UucGFweXJ1cy5yb2JvdGljcy5wcm9maWxlL3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9yb2JvdGljcy9wcm9maWxlL3JvYm90aWNzL2NvbXBvbmVudHMvaW1wbC9Db21wb25lbnRJbnN0YW5jZUltcGwuamF2YSBiL3BsdWdpbnMvY3VzdG9taXphdGlvbi9vcmcuZWNsaXBzZS5wYXB5cnVzLnJvYm90aWNzLnByb2ZpbGUvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3JvYm90aWNzL3Byb2ZpbGUvcm9ib3RpY3MvY29tcG9uZW50cy9pbXBsL0NvbXBvbmVudEluc3RhbmNlSW1wbC5qYXZhCmluZGV4IGI2YTczNmQuLjQ3OTQxYzcgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvY3VzdG9taXphdGlvbi9vcmcuZWNsaXBzZS5wYXB5cnVzLnJvYm90aWNzLnByb2ZpbGUvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3JvYm90aWNzL3Byb2ZpbGUvcm9ib3RpY3MvY29tcG9uZW50cy9pbXBsL0NvbXBvbmVudEluc3RhbmNlSW1wbC5qYXZhCisrKyBiL3BsdWdpbnMvY3VzdG9taXphdGlvbi9vcmcuZWNsaXBzZS5wYXB5cnVzLnJvYm90aWNzLnByb2ZpbGUvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3JvYm90aWNzL3Byb2ZpbGUvcm9ib3RpY3MvY29tcG9uZW50cy9pbXBsL0NvbXBvbmVudEluc3RhbmNlSW1wbC5qYXZhCkBAIC0xOCw5ICsxOCw4IEBACiBpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkludGVybmFsRU9iamVjdDsKIGltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuaW1wbC5FTm90aWZpY2F0aW9uSW1wbDsKIGltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnJvYm90aWNzLmJwYy5wcm9maWxlLmJwYy5pbXBsLkVudGl0eUltcGw7Ci1pbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5yb2JvdGljcy5wcm9maWxlLnJvYm90aWNzLmNvbXBvbmVudHMuQWN0aXZpdHk7Ci1pbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5yb2JvdGljcy5wcm9maWxlLnJvYm90aWNzLmNvbXBvbmVudHMuQ29tcG9uZW50RGVmaW5pdGlvbjsKIGltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnJvYm90aWNzLnByb2ZpbGUucm9ib3RpY3MuY29tcG9uZW50cy5Db21wb25lbnRJbnN0YW5jZTsKK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnJvYm90aWNzLnByb2ZpbGUucm9ib3RpY3MuY29tcG9uZW50cy5Db21wb25lbnRPclN5c3RlbTsKIGltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnJvYm90aWNzLnByb2ZpbGUucm9ib3RpY3MuY29tcG9uZW50cy5Db21wb25lbnRQb3J0OwogaW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMucm9ib3RpY3MucHJvZmlsZS5yb2JvdGljcy5jb21wb25lbnRzLkNvbXBvbmVudHNQYWNrYWdlOwogaW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMucm9ib3RpY3MucHJvZmlsZS5yb2JvdGljcy5wYXJhbWV0ZXJzLlBhcmFtZXRlckluc3RhbmNlOwpAQCAtNDEsOSArNDAsOCBAQAogICogPHVsPgogICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMucm9ib3RpY3MucHJvZmlsZS5yb2JvdGljcy5jb21wb25lbnRzLmltcGwuQ29tcG9uZW50SW5zdGFuY2VJbXBsI2dldFBhcmFtSW5zdGFuY2UgPGVtPlBhcmFtIEluc3RhbmNlPC9lbT59PC9saT4KICAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnJvYm90aWNzLnByb2ZpbGUucm9ib3RpY3MuY29tcG9uZW50cy5pbXBsLkNvbXBvbmVudEluc3RhbmNlSW1wbCNnZXRCYXNlX1Byb3BlcnR5IDxlbT5CYXNlIFByb3BlcnR5PC9lbT59PC9saT4KLSAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnJvYm90aWNzLnByb2ZpbGUucm9ib3RpY3MuY29tcG9uZW50cy5pbXBsLkNvbXBvbmVudEluc3RhbmNlSW1wbCNnZXRDb21wZGVmIDxlbT5Db21wZGVmPC9lbT59PC9saT4KKyAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnJvYm90aWNzLnByb2ZpbGUucm9ib3RpY3MuY29tcG9uZW50cy5pbXBsLkNvbXBvbmVudEluc3RhbmNlSW1wbCNnZXRDb21wZGVmT3JTeXMgPGVtPkNvbXBkZWYgT3IgU3lzPC9lbT59PC9saT4KICAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnJvYm90aWNzLnByb2ZpbGUucm9ib3RpY3MuY29tcG9uZW50cy5pbXBsLkNvbXBvbmVudEluc3RhbmNlSW1wbCNnZXRQb3J0IDxlbT5Qb3J0PC9lbT59PC9saT4KLSAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnJvYm90aWNzLnByb2ZpbGUucm9ib3RpY3MuY29tcG9uZW50cy5pbXBsLkNvbXBvbmVudEluc3RhbmNlSW1wbCNnZXRBY3Rpdml0aWVzIDxlbT5BY3Rpdml0aWVzPC9lbT59PC9saT4KICAqIDwvdWw+CiAgKgogICogQGdlbmVyYXRlZApAQCAtMTQ2LDkgKzE0NCw5IEBACiAJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+CiAJICogQGdlbmVyYXRlZAogCSAqLwotCXB1YmxpYyBDb21wb25lbnREZWZpbml0aW9uIGdldENvbXBkZWYoKSB7Ci0JCUNvbXBvbmVudERlZmluaXRpb24gY29tcGRlZiA9IGJhc2ljR2V0Q29tcGRlZigpOwotCQlyZXR1cm4gY29tcGRlZiAhPSBudWxsICYmIGNvbXBkZWYuZUlzUHJveHkoKSA/IChDb21wb25lbnREZWZpbml0aW9uKWVSZXNvbHZlUHJveHkoKEludGVybmFsRU9iamVjdCljb21wZGVmKSA6IGNvbXBkZWY7CisJcHVibGljIENvbXBvbmVudE9yU3lzdGVtIGdldENvbXBkZWZPclN5cygpIHsKKwkJQ29tcG9uZW50T3JTeXN0ZW0gY29tcGRlZk9yU3lzID0gYmFzaWNHZXRDb21wZGVmT3JTeXMoKTsKKwkJcmV0dXJuIGNvbXBkZWZPclN5cyAhPSBudWxsICYmIGNvbXBkZWZPclN5cy5lSXNQcm94eSgpID8gKENvbXBvbmVudE9yU3lzdGVtKWVSZXNvbHZlUHJveHkoKEludGVybmFsRU9iamVjdCljb21wZGVmT3JTeXMpIDogY29tcGRlZk9yU3lzOwogCX0KIAogCS8qKgpAQCAtMTU2LDExICsxNTQsMTEgQEAKIAkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KIAkgKiBAZ2VuZXJhdGVkIE5PVAogCSAqLwotCXB1YmxpYyBDb21wb25lbnREZWZpbml0aW9uIGJhc2ljR2V0Q29tcGRlZigpIHsKKwlwdWJsaWMgQ29tcG9uZW50T3JTeXN0ZW0gYmFzaWNHZXRDb21wZGVmT3JTeXMoKSB7CiAJCWlmIChnZXRCYXNlX1Byb3BlcnR5KCkgIT0gbnVsbCkgewogCQkJVHlwZSB0eXBlID0gZ2V0QmFzZV9Qcm9wZXJ0eSgpLmdldFR5cGUoKTsKIAkJCWlmICh0eXBlICE9IG51bGwpIHsKLQkJCQlyZXR1cm4gVU1MVXRpbC5nZXRTdGVyZW90eXBlQXBwbGljYXRpb24odHlwZSwgQ29tcG9uZW50RGVmaW5pdGlvbi5jbGFzcyk7CisJCQkJcmV0dXJuIFVNTFV0aWwuZ2V0U3RlcmVvdHlwZUFwcGxpY2F0aW9uKHR5cGUsIENvbXBvbmVudE9yU3lzdGVtLmNsYXNzKTsKIAkJCX0KIAkJfQogCQlyZXR1cm4gbnVsbDsKQEAgLTE3Myw3ICsxNzEsNyBAQAogCSAqLwogCUBTdXBwcmVzc1dhcm5pbmdzKHsgInVuY2hlY2tlZCIsICJyYXd0eXBlcyIgfSkKIAlwdWJsaWMgRUxpc3Q8Q29tcG9uZW50UG9ydD4gZ2V0UG9ydCgpIHsKLQkJQ29tcG9uZW50RGVmaW5pdGlvbiBkZWZpbml0aW9uID0gZ2V0Q29tcGRlZigpOworCQlDb21wb25lbnRPclN5c3RlbSBkZWZpbml0aW9uID0gZ2V0Q29tcGRlZk9yU3lzKCk7CiAJCWlmIChkZWZpbml0aW9uICE9IG51bGwpIHsKIAkJCS8vIENvbXBEZWYucG9ydHMgc3Vic2V0cyBCQ1AgcG9ydHMKIAkJCXJldHVybiAoRUxpc3QpIGRlZmluaXRpb24uZ2V0UG9ydCgpOwpAQCAtMTg0LDE5ICsxODIsNiBAQAogCS8qKgogCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+CiAJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGdlbmVyYXRlZCBOT1QKLQkgKi8KLQlwdWJsaWMgRUxpc3Q8QWN0aXZpdHk+IGdldEFjdGl2aXRpZXMoKSB7Ci0JCUNvbXBvbmVudERlZmluaXRpb24gZGVmaW5pdGlvbiA9IGdldENvbXBkZWYoKTsKLQkJaWYgKGRlZmluaXRpb24gIT0gbnVsbCkgewotCQkJcmV0dXJuIGRlZmluaXRpb24uZ2V0QWN0aXZpdGllcygpOwotCQl9Ci0JCXJldHVybiBuZXcgQmFzaWNFTGlzdDxBY3Rpdml0eT4oKTsKLQl9Ci0KLQkvKioKLQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgotCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgogCSAqIEBnZW5lcmF0ZWQKIAkgKi8KIAlAT3ZlcnJpZGUKQEAgLTIwOCwxMyArMTkzLDExIEBACiAJCQljYXNlIENvbXBvbmVudHNQYWNrYWdlLkNPTVBPTkVOVF9JTlNUQU5DRV9fQkFTRV9QUk9QRVJUWToKIAkJCQlpZiAocmVzb2x2ZSkgcmV0dXJuIGdldEJhc2VfUHJvcGVydHkoKTsKIAkJCQlyZXR1cm4gYmFzaWNHZXRCYXNlX1Byb3BlcnR5KCk7Ci0JCQljYXNlIENvbXBvbmVudHNQYWNrYWdlLkNPTVBPTkVOVF9JTlNUQU5DRV9fQ09NUERFRjoKLQkJCQlpZiAocmVzb2x2ZSkgcmV0dXJuIGdldENvbXBkZWYoKTsKLQkJCQlyZXR1cm4gYmFzaWNHZXRDb21wZGVmKCk7CisJCQljYXNlIENvbXBvbmVudHNQYWNrYWdlLkNPTVBPTkVOVF9JTlNUQU5DRV9fQ09NUERFRl9PUl9TWVM6CisJCQkJaWYgKHJlc29sdmUpIHJldHVybiBnZXRDb21wZGVmT3JTeXMoKTsKKwkJCQlyZXR1cm4gYmFzaWNHZXRDb21wZGVmT3JTeXMoKTsKIAkJCWNhc2UgQ29tcG9uZW50c1BhY2thZ2UuQ09NUE9ORU5UX0lOU1RBTkNFX19QT1JUOgogCQkJCXJldHVybiBnZXRQb3J0KCk7Ci0JCQljYXNlIENvbXBvbmVudHNQYWNrYWdlLkNPTVBPTkVOVF9JTlNUQU5DRV9fQUNUSVZJVElFUzoKLQkJCQlyZXR1cm4gZ2V0QWN0aXZpdGllcygpOwogCQl9CiAJCXJldHVybiBzdXBlci5lR2V0KGZlYXR1cmVJRCwgcmVzb2x2ZSwgY29yZVR5cGUpOwogCX0KQEAgLTI2MSwxMiArMjQ0LDEwIEBACiAJCQkJcmV0dXJuIGJhc2ljR2V0UGFyYW1JbnN0YW5jZSgpICE9IG51bGw7CiAJCQljYXNlIENvbXBvbmVudHNQYWNrYWdlLkNPTVBPTkVOVF9JTlNUQU5DRV9fQkFTRV9QUk9QRVJUWToKIAkJCQlyZXR1cm4gYmFzZV9Qcm9wZXJ0eSAhPSBudWxsOwotCQkJY2FzZSBDb21wb25lbnRzUGFja2FnZS5DT01QT05FTlRfSU5TVEFOQ0VfX0NPTVBERUY6Ci0JCQkJcmV0dXJuIGJhc2ljR2V0Q29tcGRlZigpICE9IG51bGw7CisJCQljYXNlIENvbXBvbmVudHNQYWNrYWdlLkNPTVBPTkVOVF9JTlNUQU5DRV9fQ09NUERFRl9PUl9TWVM6CisJCQkJcmV0dXJuIGJhc2ljR2V0Q29tcGRlZk9yU3lzKCkgIT0gbnVsbDsKIAkJCWNhc2UgQ29tcG9uZW50c1BhY2thZ2UuQ09NUE9ORU5UX0lOU1RBTkNFX19QT1JUOgogCQkJCXJldHVybiAhZ2V0UG9ydCgpLmlzRW1wdHkoKTsKLQkJCWNhc2UgQ29tcG9uZW50c1BhY2thZ2UuQ09NUE9ORU5UX0lOU1RBTkNFX19BQ1RJVklUSUVTOgotCQkJCXJldHVybiAhZ2V0QWN0aXZpdGllcygpLmlzRW1wdHkoKTsKIAkJfQogCQlyZXR1cm4gc3VwZXIuZUlzU2V0KGZlYXR1cmVJRCk7CiAJfQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9jdXN0b21pemF0aW9uL29yZy5lY2xpcHNlLnBhcHlydXMucm9ib3RpY3MucHJvZmlsZS9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvcm9ib3RpY3MvcHJvZmlsZS9yb2JvdGljcy9jb21wb25lbnRzL2ltcGwvQ29tcG9uZW50T3JTeXN0ZW1JbXBsLmphdmEgYi9wbHVnaW5zL2N1c3RvbWl6YXRpb24vb3JnLmVjbGlwc2UucGFweXJ1cy5yb2JvdGljcy5wcm9maWxlL3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9yb2JvdGljcy9wcm9maWxlL3JvYm90aWNzL2NvbXBvbmVudHMvaW1wbC9Db21wb25lbnRPclN5c3RlbUltcGwuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZTkwZGJhCi0tLSAvZGV2L251bGwKKysrIGIvcGx1Z2lucy9jdXN0b21pemF0aW9uL29yZy5lY2xpcHNlLnBhcHlydXMucm9ib3RpY3MucHJvZmlsZS9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvcm9ib3RpY3MvcHJvZmlsZS9yb2JvdGljcy9jb21wb25lbnRzL2ltcGwvQ29tcG9uZW50T3JTeXN0ZW1JbXBsLmphdmEKQEAgLTAsMCArMSwxMDggQEAKKy8qKgorICogQ29weXJpZ2h0IChjKSAyMDE5IENFQSBMSVNUCisgKiAKKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgYXJlCisgKiBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjIuMCB3aGljaAorICogYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKKyAqIGh0dHBzOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC0yLjAvCisgKiAKKyAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBFUEwtMi4wCisgKiAKKyAqLworcGFja2FnZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnJvYm90aWNzLnByb2ZpbGUucm9ib3RpY3MuY29tcG9uZW50cy5pbXBsOworCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi51dGlsLkVMaXN0OworaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24udXRpbC5VbmlxdWVFTGlzdDsKK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRUNsYXNzOworaW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMucm9ib3RpY3MuYnBjLnByb2ZpbGUuYnBjLmltcGwuQmxvY2tJbXBsOworaW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMucm9ib3RpY3MucHJvZmlsZS5yb2JvdGljcy5jb21wb25lbnRzLkNvbXBvbmVudE9yU3lzdGVtOworaW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMucm9ib3RpY3MucHJvZmlsZS5yb2JvdGljcy5jb21wb25lbnRzLkNvbXBvbmVudFNlcnZpY2U7CitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5yb2JvdGljcy5wcm9maWxlLnJvYm90aWNzLmNvbXBvbmVudHMuQ29tcG9uZW50c1BhY2thZ2U7CitpbXBvcnQgb3JnLmVjbGlwc2UudW1sMi51bWwuUG9ydDsKK2ltcG9ydCBvcmcuZWNsaXBzZS51bWwyLnVtbC5UeXBlOworaW1wb3J0IG9yZy5lY2xpcHNlLnVtbDIudW1sLnV0aWwuVU1MVXRpbDsKKworLyoqCisgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgorICogQW4gaW1wbGVtZW50YXRpb24gb2YgdGhlIG1vZGVsIG9iamVjdCAnPGVtPjxiPkNvbXBvbmVudCBPciBTeXN0ZW08L2I+PC9lbT4nLgorICogPCEtLSBlbmQtdXNlci1kb2MgLS0+CisgKiA8cD4KKyAqIFRoZSBmb2xsb3dpbmcgZmVhdHVyZXMgYXJlIGltcGxlbWVudGVkOgorICogPC9wPgorICogPHVsPgorICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMucm9ib3RpY3MucHJvZmlsZS5yb2JvdGljcy5jb21wb25lbnRzLmltcGwuQ29tcG9uZW50T3JTeXN0ZW1JbXBsI2dldFNlcnZpY2VzIDxlbT5TZXJ2aWNlczwvZW0+fTwvbGk+CisgKiA8L3VsPgorICoKKyAqIEBnZW5lcmF0ZWQKKyAqLworcHVibGljIGFic3RyYWN0IGNsYXNzIENvbXBvbmVudE9yU3lzdGVtSW1wbCBleHRlbmRzIEJsb2NrSW1wbCBpbXBsZW1lbnRzIENvbXBvbmVudE9yU3lzdGVtIHsKKwkvKioKKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgorCSAqIEBnZW5lcmF0ZWQKKwkgKi8KKwlwcm90ZWN0ZWQgQ29tcG9uZW50T3JTeXN0ZW1JbXBsKCkgeworCQlzdXBlcigpOworCX0KKworCS8qKgorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+CisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+CisJICogQGdlbmVyYXRlZAorCSAqLworCUBPdmVycmlkZQorCXByb3RlY3RlZCBFQ2xhc3MgZVN0YXRpY0NsYXNzKCkgeworCQlyZXR1cm4gQ29tcG9uZW50c1BhY2thZ2UuTGl0ZXJhbHMuQ09NUE9ORU5UX09SX1NZU1RFTTsKKwl9CisKKwkvKioKKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgorCSAqIAorCSAqIEBnZW5lcmF0ZWQgTk9UCisJICovCisJcHVibGljIEVMaXN0PENvbXBvbmVudFNlcnZpY2U+IGdldFNlcnZpY2VzKCkgeworCQlFTGlzdDxDb21wb25lbnRTZXJ2aWNlPiBzZXJ2aWNlTGlzdCA9IG5ldyBVbmlxdWVFTGlzdDxDb21wb25lbnRTZXJ2aWNlPigpOworCQlpZiAoZ2V0QmFzZV9DbGFzcygpICE9IG51bGwpIHsKKwkJCWZvciAoUG9ydCBwb3J0IDogZ2V0QmFzZV9DbGFzcygpLmdldE93bmVkUG9ydHMoKSkgeworCQkJCVR5cGUgdHlwZSA9IHBvcnQuZ2V0VHlwZSgpOworCQkJCWlmICh0eXBlICE9IG51bGwpIHsKKwkJCQkJQ29tcG9uZW50U2VydmljZSBzZXJ2aWNlID0gVU1MVXRpbC5nZXRTdGVyZW90eXBlQXBwbGljYXRpb24odHlwZSwgQ29tcG9uZW50U2VydmljZS5jbGFzcyk7CisJCQkJCWlmIChzZXJ2aWNlICE9IG51bGwpIHsKKwkJCQkJCXNlcnZpY2VMaXN0LmFkZChzZXJ2aWNlKTsKKwkJCQkJfQorCQkJCX0KKwkJCX0KKwkJfQorCQlyZXR1cm4gc2VydmljZUxpc3Q7CisJfQorCisJLyoqCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KKwkgKiBAZ2VuZXJhdGVkCisJICovCisJQE92ZXJyaWRlCisJcHVibGljIE9iamVjdCBlR2V0KGludCBmZWF0dXJlSUQsIGJvb2xlYW4gcmVzb2x2ZSwgYm9vbGVhbiBjb3JlVHlwZSkgeworCQlzd2l0Y2ggKGZlYXR1cmVJRCkgeworCQkJY2FzZSBDb21wb25lbnRzUGFja2FnZS5DT01QT05FTlRfT1JfU1lTVEVNX19TRVJWSUNFUzoKKwkJCQlyZXR1cm4gZ2V0U2VydmljZXMoKTsKKwkJfQorCQlyZXR1cm4gc3VwZXIuZUdldChmZWF0dXJlSUQsIHJlc29sdmUsIGNvcmVUeXBlKTsKKwl9CisKKwkvKioKKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgorCSAqIEBnZW5lcmF0ZWQKKwkgKi8KKwlAT3ZlcnJpZGUKKwlwdWJsaWMgYm9vbGVhbiBlSXNTZXQoaW50IGZlYXR1cmVJRCkgeworCQlzd2l0Y2ggKGZlYXR1cmVJRCkgeworCQkJY2FzZSBDb21wb25lbnRzUGFja2FnZS5DT01QT05FTlRfT1JfU1lTVEVNX19TRVJWSUNFUzoKKwkJCQlyZXR1cm4gIWdldFNlcnZpY2VzKCkuaXNFbXB0eSgpOworCQl9CisJCXJldHVybiBzdXBlci5lSXNTZXQoZmVhdHVyZUlEKTsKKwl9CisKK30gLy9Db21wb25lbnRPclN5c3RlbUltcGwKZGlmZiAtLWdpdCBhL3BsdWdpbnMvY3VzdG9taXphdGlvbi9vcmcuZWNsaXBzZS5wYXB5cnVzLnJvYm90aWNzLnByb2ZpbGUvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3JvYm90aWNzL3Byb2ZpbGUvcm9ib3RpY3MvY29tcG9uZW50cy9pbXBsL0NvbXBvbmVudHNQYWNrYWdlSW1wbC5qYXZhIGIvcGx1Z2lucy9jdXN0b21pemF0aW9uL29yZy5lY2xpcHNlLnBhcHlydXMucm9ib3RpY3MucHJvZmlsZS9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvcm9ib3RpY3MvcHJvZmlsZS9yb2JvdGljcy9jb21wb25lbnRzL2ltcGwvQ29tcG9uZW50c1BhY2thZ2VJbXBsLmphdmEKaW5kZXggOWFiOWIwMS4uNGRmOTc5YSAxMDA2NDQKLS0tIGEvcGx1Z2lucy9jdXN0b21pemF0aW9uL29yZy5lY2xpcHNlLnBhcHlydXMucm9ib3RpY3MucHJvZmlsZS9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvcm9ib3RpY3MvcHJvZmlsZS9yb2JvdGljcy9jb21wb25lbnRzL2ltcGwvQ29tcG9uZW50c1BhY2thZ2VJbXBsLmphdmEKKysrIGIvcGx1Z2lucy9jdXN0b21pemF0aW9uL29yZy5lY2xpcHNlLnBhcHlydXMucm9ib3RpY3MucHJvZmlsZS9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvcm9ib3RpY3MvcHJvZmlsZS9yb2JvdGljcy9jb21wb25lbnRzL2ltcGwvQ29tcG9uZW50c1BhY2thZ2VJbXBsLmphdmEKQEAgLTMzLDYgKzMzLDcgQEAKIGltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnJvYm90aWNzLnByb2ZpbGUucm9ib3RpY3MuY29tcG9uZW50cy5Db21wb25lbnREZWZpbml0aW9uOwogaW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMucm9ib3RpY3MucHJvZmlsZS5yb2JvdGljcy5jb21wb25lbnRzLkNvbXBvbmVudERlZmluaXRpb25Nb2RlbDsKIGltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnJvYm90aWNzLnByb2ZpbGUucm9ib3RpY3MuY29tcG9uZW50cy5Db21wb25lbnRJbnN0YW5jZTsKK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnJvYm90aWNzLnByb2ZpbGUucm9ib3RpY3MuY29tcG9uZW50cy5Db21wb25lbnRPclN5c3RlbTsKIGltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnJvYm90aWNzLnByb2ZpbGUucm9ib3RpY3MuY29tcG9uZW50cy5Db21wb25lbnRQb3J0OwogaW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMucm9ib3RpY3MucHJvZmlsZS5yb2JvdGljcy5jb21wb25lbnRzLkNvbXBvbmVudFNlcnZpY2U7CiBpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5yb2JvdGljcy5wcm9maWxlLnJvYm90aWNzLmNvbXBvbmVudHMuQ29tcG9uZW50c0ZhY3Rvcnk7CkBAIC05MSw2ICs5MiwxMyBAQAogCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgogCSAqIEBnZW5lcmF0ZWQKIAkgKi8KKwlwcml2YXRlIEVDbGFzcyBjb21wb25lbnRPclN5c3RlbUVDbGFzcyA9IG51bGw7CisKKwkvKioKKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgorCSAqIEBnZW5lcmF0ZWQKKwkgKi8KIAlwcml2YXRlIEVDbGFzcyBjb21wb25lbnRQb3J0RUNsYXNzID0gbnVsbDsKIAogCS8qKgpAQCAtMzI0LDcgKzMzMiw3IEBACiAJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+CiAJICogQGdlbmVyYXRlZAogCSAqLwotCXB1YmxpYyBFUmVmZXJlbmNlIGdldENvbXBvbmVudERlZmluaXRpb25fU2VydmljZXMoKSB7CisJcHVibGljIEVSZWZlcmVuY2UgZ2V0Q29tcG9uZW50RGVmaW5pdGlvbl9QYXJhbWV0ZXIoKSB7CiAJCXJldHVybiAoRVJlZmVyZW5jZSljb21wb25lbnREZWZpbml0aW9uRUNsYXNzLmdldEVTdHJ1Y3R1cmFsRmVhdHVyZXMoKS5nZXQoMCk7CiAJfQogCkBAIC0zMzMsNyArMzQxLDcgQEAKIAkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KIAkgKiBAZ2VuZXJhdGVkCiAJICovCi0JcHVibGljIEVSZWZlcmVuY2UgZ2V0Q29tcG9uZW50RGVmaW5pdGlvbl9QYXJhbWV0ZXIoKSB7CisJcHVibGljIEVSZWZlcmVuY2UgZ2V0Q29tcG9uZW50RGVmaW5pdGlvbl9BY3Rpdml0aWVzKCkgewogCQlyZXR1cm4gKEVSZWZlcmVuY2UpY29tcG9uZW50RGVmaW5pdGlvbkVDbGFzcy5nZXRFU3RydWN0dXJhbEZlYXR1cmVzKCkuZ2V0KDEpOwogCX0KIApAQCAtMzQyLDggKzM1MCwxNyBAQAogCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgogCSAqIEBnZW5lcmF0ZWQKIAkgKi8KLQlwdWJsaWMgRVJlZmVyZW5jZSBnZXRDb21wb25lbnREZWZpbml0aW9uX0FjdGl2aXRpZXMoKSB7Ci0JCXJldHVybiAoRVJlZmVyZW5jZSljb21wb25lbnREZWZpbml0aW9uRUNsYXNzLmdldEVTdHJ1Y3R1cmFsRmVhdHVyZXMoKS5nZXQoMik7CisJcHVibGljIEVDbGFzcyBnZXRDb21wb25lbnRPclN5c3RlbSgpIHsKKwkJcmV0dXJuIGNvbXBvbmVudE9yU3lzdGVtRUNsYXNzOworCX0KKworCS8qKgorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+CisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+CisJICogQGdlbmVyYXRlZAorCSAqLworCXB1YmxpYyBFUmVmZXJlbmNlIGdldENvbXBvbmVudE9yU3lzdGVtX1NlcnZpY2VzKCkgeworCQlyZXR1cm4gKEVSZWZlcmVuY2UpY29tcG9uZW50T3JTeXN0ZW1FQ2xhc3MuZ2V0RVN0cnVjdHVyYWxGZWF0dXJlcygpLmdldCgwKTsKIAl9CiAKIAkvKioKQEAgLTQ4Niw3ICs1MDMsNyBAQAogCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgogCSAqIEBnZW5lcmF0ZWQKIAkgKi8KLQlwdWJsaWMgRVJlZmVyZW5jZSBnZXRDb21wb25lbnRJbnN0YW5jZV9Db21wZGVmKCkgeworCXB1YmxpYyBFUmVmZXJlbmNlIGdldENvbXBvbmVudEluc3RhbmNlX0NvbXBkZWZPclN5cygpIHsKIAkJcmV0dXJuIChFUmVmZXJlbmNlKWNvbXBvbmVudEluc3RhbmNlRUNsYXNzLmdldEVTdHJ1Y3R1cmFsRmVhdHVyZXMoKS5nZXQoMik7CiAJfQogCkBAIC01MDQsMTUgKzUyMSw2IEBACiAJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+CiAJICogQGdlbmVyYXRlZAogCSAqLwotCXB1YmxpYyBFUmVmZXJlbmNlIGdldENvbXBvbmVudEluc3RhbmNlX0FjdGl2aXRpZXMoKSB7Ci0JCXJldHVybiAoRVJlZmVyZW5jZSljb21wb25lbnRJbnN0YW5jZUVDbGFzcy5nZXRFU3RydWN0dXJhbEZlYXR1cmVzKCkuZ2V0KDQpOwotCX0KLQotCS8qKgotCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+Ci0JICogPCEtLSBlbmQtdXNlci1kb2MgLS0+Ci0JICogQGdlbmVyYXRlZAotCSAqLwogCXB1YmxpYyBFQ2xhc3MgZ2V0U3lzdGVtKCkgewogCQlyZXR1cm4gc3lzdGVtRUNsYXNzOwogCX0KQEAgLTY5NywxMCArNzA1LDEyIEBACiAJCWNyZWF0ZUVSZWZlcmVuY2UoYWN0aXZpdHlQb3J0RUNsYXNzLCBBQ1RJVklUWV9QT1JUX19GVU5DVElPTlMpOwogCiAJCWNvbXBvbmVudERlZmluaXRpb25FQ2xhc3MgPSBjcmVhdGVFQ2xhc3MoQ09NUE9ORU5UX0RFRklOSVRJT04pOwotCQljcmVhdGVFUmVmZXJlbmNlKGNvbXBvbmVudERlZmluaXRpb25FQ2xhc3MsIENPTVBPTkVOVF9ERUZJTklUSU9OX19TRVJWSUNFUyk7CiAJCWNyZWF0ZUVSZWZlcmVuY2UoY29tcG9uZW50RGVmaW5pdGlvbkVDbGFzcywgQ09NUE9ORU5UX0RFRklOSVRJT05fX1BBUkFNRVRFUik7CiAJCWNyZWF0ZUVSZWZlcmVuY2UoY29tcG9uZW50RGVmaW5pdGlvbkVDbGFzcywgQ09NUE9ORU5UX0RFRklOSVRJT05fX0FDVElWSVRJRVMpOwogCisJCWNvbXBvbmVudE9yU3lzdGVtRUNsYXNzID0gY3JlYXRlRUNsYXNzKENPTVBPTkVOVF9PUl9TWVNURU0pOworCQljcmVhdGVFUmVmZXJlbmNlKGNvbXBvbmVudE9yU3lzdGVtRUNsYXNzLCBDT01QT05FTlRfT1JfU1lTVEVNX19TRVJWSUNFUyk7CisKIAkJY29tcG9uZW50UG9ydEVDbGFzcyA9IGNyZWF0ZUVDbGFzcyhDT01QT05FTlRfUE9SVCk7CiAJCWNyZWF0ZUVSZWZlcmVuY2UoY29tcG9uZW50UG9ydEVDbGFzcywgQ09NUE9ORU5UX1BPUlRfX0JBU0VfUE9SVCk7CiAJCWNyZWF0ZUVSZWZlcmVuY2UoY29tcG9uZW50UG9ydEVDbGFzcywgQ09NUE9ORU5UX1BPUlRfX1BST1ZJREVTKTsKQEAgLTcxMSw5ICs3MjEsOCBAQAogCQljb21wb25lbnRJbnN0YW5jZUVDbGFzcyA9IGNyZWF0ZUVDbGFzcyhDT01QT05FTlRfSU5TVEFOQ0UpOwogCQljcmVhdGVFUmVmZXJlbmNlKGNvbXBvbmVudEluc3RhbmNlRUNsYXNzLCBDT01QT05FTlRfSU5TVEFOQ0VfX1BBUkFNX0lOU1RBTkNFKTsKIAkJY3JlYXRlRVJlZmVyZW5jZShjb21wb25lbnRJbnN0YW5jZUVDbGFzcywgQ09NUE9ORU5UX0lOU1RBTkNFX19CQVNFX1BST1BFUlRZKTsKLQkJY3JlYXRlRVJlZmVyZW5jZShjb21wb25lbnRJbnN0YW5jZUVDbGFzcywgQ09NUE9ORU5UX0lOU1RBTkNFX19DT01QREVGKTsKKwkJY3JlYXRlRVJlZmVyZW5jZShjb21wb25lbnRJbnN0YW5jZUVDbGFzcywgQ09NUE9ORU5UX0lOU1RBTkNFX19DT01QREVGX09SX1NZUyk7CiAJCWNyZWF0ZUVSZWZlcmVuY2UoY29tcG9uZW50SW5zdGFuY2VFQ2xhc3MsIENPTVBPTkVOVF9JTlNUQU5DRV9fUE9SVCk7Ci0JCWNyZWF0ZUVSZWZlcmVuY2UoY29tcG9uZW50SW5zdGFuY2VFQ2xhc3MsIENPTVBPTkVOVF9JTlNUQU5DRV9fQUNUSVZJVElFUyk7CiAKIAkJY29tcG9uZW50U2VydmljZUVDbGFzcyA9IGNyZWF0ZUVDbGFzcyhDT01QT05FTlRfU0VSVklDRSk7CiAJCWNyZWF0ZUVSZWZlcmVuY2UoY29tcG9uZW50U2VydmljZUVDbGFzcywgQ09NUE9ORU5UX1NFUlZJQ0VfX0JBU0VfQ0xBU1MpOwpAQCAtNzg2LDEyICs3OTUsMTMgQEAKIAkJLy8gQWRkIHN1cGVydHlwZXMgdG8gY2xhc3NlcwogCQlhY3Rpdml0eUVDbGFzcy5nZXRFU3VwZXJUeXBlcygpLmFkZCh0aGVCUENQYWNrYWdlLmdldEJsb2NrKCkpOwogCQlhY3Rpdml0eVBvcnRFQ2xhc3MuZ2V0RVN1cGVyVHlwZXMoKS5hZGQodGhlQlBDUGFja2FnZS5nZXRQb3J0KCkpOwotCQljb21wb25lbnREZWZpbml0aW9uRUNsYXNzLmdldEVTdXBlclR5cGVzKCkuYWRkKHRoZUJQQ1BhY2thZ2UuZ2V0QmxvY2soKSk7CisJCWNvbXBvbmVudERlZmluaXRpb25FQ2xhc3MuZ2V0RVN1cGVyVHlwZXMoKS5hZGQodGhpcy5nZXRDb21wb25lbnRPclN5c3RlbSgpKTsKKwkJY29tcG9uZW50T3JTeXN0ZW1FQ2xhc3MuZ2V0RVN1cGVyVHlwZXMoKS5hZGQodGhlQlBDUGFja2FnZS5nZXRCbG9jaygpKTsKIAkJY29tcG9uZW50UG9ydEVDbGFzcy5nZXRFU3VwZXJUeXBlcygpLmFkZCh0aGVCUENQYWNrYWdlLmdldFBvcnQoKSk7CiAJCWNvbXBvbmVudEluc3RhbmNlRUNsYXNzLmdldEVTdXBlclR5cGVzKCkuYWRkKHRoZUJQQ1BhY2thZ2UuZ2V0RW50aXR5KCkpOwogCQljb21wb25lbnRTZXJ2aWNlRUNsYXNzLmdldEVTdXBlclR5cGVzKCkuYWRkKHRoZUJQQ1BhY2thZ2UuZ2V0RW50aXR5KCkpOwogCQlzZXJ2aWNlQ29uZmlndXJhdGlvbkVDbGFzcy5nZXRFU3VwZXJUeXBlcygpLmFkZCh0aGVCUENQYWNrYWdlLmdldEVudGl0eSgpKTsKLQkJc3lzdGVtRUNsYXNzLmdldEVTdXBlclR5cGVzKCkuYWRkKHRoZUJQQ1BhY2thZ2UuZ2V0QmxvY2soKSk7CisJCXN5c3RlbUVDbGFzcy5nZXRFU3VwZXJUeXBlcygpLmFkZCh0aGlzLmdldENvbXBvbmVudE9yU3lzdGVtKCkpOwogCQljb21wb25lbnREZWZpbml0aW9uTW9kZWxFQ2xhc3MuZ2V0RVN1cGVyVHlwZXMoKS5hZGQodGhlQlBDUGFja2FnZS5nZXRFbnRpdHkoKSk7CiAJCXN5c3RlbUNvbXBvbmVudEFyY2hpdGVjdHVyZU1vZGVsRUNsYXNzLmdldEVTdXBlclR5cGVzKCkuYWRkKHRoZUJQQ1BhY2thZ2UuZ2V0RW50aXR5KCkpOwogCQlwZXJpb2RpY1RpbWVyRUNsYXNzLmdldEVTdXBlclR5cGVzKCkuYWRkKHRoZUJQQ1BhY2thZ2UuZ2V0QmxvY2soKSk7CkBAIC04MDUsMTAgKzgxNSwxMiBAQAogCQlpbml0RVJlZmVyZW5jZShnZXRBY3Rpdml0eVBvcnRfRnVuY3Rpb25zKCksIHRoZUZ1bmN0aW9uc1BhY2thZ2UuZ2V0RnVuY3Rpb24oKSwgbnVsbCwgImZ1bmN0aW9ucyIsIG51bGwsIDAsIC0xLCBBY3Rpdml0eVBvcnQuY2xhc3MsIElTX1RSQU5TSUVOVCwgSVNfVk9MQVRJTEUsICFJU19DSEFOR0VBQkxFLCAhSVNfQ09NUE9TSVRFLCBJU19SRVNPTFZFX1BST1hJRVMsICFJU19VTlNFVFRBQkxFLCBJU19VTklRVUUsIElTX0RFUklWRUQsICFJU19PUkRFUkVEKTsgLy8kTk9OLU5MUy0xJAogCiAJCWluaXRFQ2xhc3MoY29tcG9uZW50RGVmaW5pdGlvbkVDbGFzcywgQ29tcG9uZW50RGVmaW5pdGlvbi5jbGFzcywgIkNvbXBvbmVudERlZmluaXRpb24iLCAhSVNfQUJTVFJBQ1QsICFJU19JTlRFUkZBQ0UsIElTX0dFTkVSQVRFRF9JTlNUQU5DRV9DTEFTUyk7IC8vJE5PTi1OTFMtMSQKLQkJaW5pdEVSZWZlcmVuY2UoZ2V0Q29tcG9uZW50RGVmaW5pdGlvbl9TZXJ2aWNlcygpLCB0aGlzLmdldENvbXBvbmVudFNlcnZpY2UoKSwgbnVsbCwgInNlcnZpY2VzIiwgbnVsbCwgMCwgLTEsIENvbXBvbmVudERlZmluaXRpb24uY2xhc3MsIElTX1RSQU5TSUVOVCwgSVNfVk9MQVRJTEUsICFJU19DSEFOR0VBQkxFLCAhSVNfQ09NUE9TSVRFLCBJU19SRVNPTFZFX1BST1hJRVMsICFJU19VTlNFVFRBQkxFLCBJU19VTklRVUUsIElTX0RFUklWRUQsICFJU19PUkRFUkVEKTsgLy8kTk9OLU5MUy0xJAogCQlpbml0RVJlZmVyZW5jZShnZXRDb21wb25lbnREZWZpbml0aW9uX1BhcmFtZXRlcigpLCB0aGVQYXJhbWV0ZXJzUGFja2FnZS5nZXRQYXJhbWV0ZXIoKSwgbnVsbCwgInBhcmFtZXRlciIsIG51bGwsIDAsIDEsIENvbXBvbmVudERlZmluaXRpb24uY2xhc3MsIElTX1RSQU5TSUVOVCwgSVNfVk9MQVRJTEUsICFJU19DSEFOR0VBQkxFLCAhSVNfQ09NUE9TSVRFLCBJU19SRVNPTFZFX1BST1hJRVMsICFJU19VTlNFVFRBQkxFLCBJU19VTklRVUUsIElTX0RFUklWRUQsICFJU19PUkRFUkVEKTsgLy8kTk9OLU5MUy0xJAogCQlpbml0RVJlZmVyZW5jZShnZXRDb21wb25lbnREZWZpbml0aW9uX0FjdGl2aXRpZXMoKSwgdGhpcy5nZXRBY3Rpdml0eSgpLCBudWxsLCAiYWN0aXZpdGllcyIsIG51bGwsIDAsIC0xLCBDb21wb25lbnREZWZpbml0aW9uLmNsYXNzLCBJU19UUkFOU0lFTlQsIElTX1ZPTEFUSUxFLCAhSVNfQ0hBTkdFQUJMRSwgIUlTX0NPTVBPU0lURSwgSVNfUkVTT0xWRV9QUk9YSUVTLCAhSVNfVU5TRVRUQUJMRSwgSVNfVU5JUVVFLCBJU19ERVJJVkVELCAhSVNfT1JERVJFRCk7IC8vJE5PTi1OTFMtMSQKIAorCQlpbml0RUNsYXNzKGNvbXBvbmVudE9yU3lzdGVtRUNsYXNzLCBDb21wb25lbnRPclN5c3RlbS5jbGFzcywgIkNvbXBvbmVudE9yU3lzdGVtIiwgSVNfQUJTVFJBQ1QsICFJU19JTlRFUkZBQ0UsIElTX0dFTkVSQVRFRF9JTlNUQU5DRV9DTEFTUyk7IC8vJE5PTi1OTFMtMSQKKwkJaW5pdEVSZWZlcmVuY2UoZ2V0Q29tcG9uZW50T3JTeXN0ZW1fU2VydmljZXMoKSwgdGhpcy5nZXRDb21wb25lbnRTZXJ2aWNlKCksIG51bGwsICJzZXJ2aWNlcyIsIG51bGwsIDAsIC0xLCBDb21wb25lbnRPclN5c3RlbS5jbGFzcywgSVNfVFJBTlNJRU5ULCBJU19WT0xBVElMRSwgIUlTX0NIQU5HRUFCTEUsICFJU19DT01QT1NJVEUsIElTX1JFU09MVkVfUFJPWElFUywgIUlTX1VOU0VUVEFCTEUsIElTX1VOSVFVRSwgSVNfREVSSVZFRCwgIUlTX09SREVSRUQpOyAvLyROT04tTkxTLTEkCisKIAkJaW5pdEVDbGFzcyhjb21wb25lbnRQb3J0RUNsYXNzLCBDb21wb25lbnRQb3J0LmNsYXNzLCAiQ29tcG9uZW50UG9ydCIsICFJU19BQlNUUkFDVCwgIUlTX0lOVEVSRkFDRSwgSVNfR0VORVJBVEVEX0lOU1RBTkNFX0NMQVNTKTsgLy8kTk9OLU5MUy0xJAogCQlpbml0RVJlZmVyZW5jZShnZXRDb21wb25lbnRQb3J0X0Jhc2VfUG9ydCgpLCB0aGVVTUxQYWNrYWdlLmdldFBvcnQoKSwgbnVsbCwgImJhc2VfUG9ydCIsIG51bGwsIDEsIDEsIENvbXBvbmVudFBvcnQuY2xhc3MsICFJU19UUkFOU0lFTlQsICFJU19WT0xBVElMRSwgSVNfQ0hBTkdFQUJMRSwgIUlTX0NPTVBPU0lURSwgSVNfUkVTT0xWRV9QUk9YSUVTLCAhSVNfVU5TRVRUQUJMRSwgSVNfVU5JUVVFLCAhSVNfREVSSVZFRCwgIUlTX09SREVSRUQpOyAvLyROT04tTkxTLTEkCiAJCWluaXRFUmVmZXJlbmNlKGdldENvbXBvbmVudFBvcnRfUHJvdmlkZXMoKSwgdGhlU2VydmljZXNQYWNrYWdlLmdldFNlcnZpY2VEZWZpbml0aW9uKCksIG51bGwsICJwcm92aWRlcyIsIG51bGwsIDAsIDEsIENvbXBvbmVudFBvcnQuY2xhc3MsIElTX1RSQU5TSUVOVCwgSVNfVk9MQVRJTEUsICFJU19DSEFOR0VBQkxFLCAhSVNfQ09NUE9TSVRFLCBJU19SRVNPTFZFX1BST1hJRVMsICFJU19VTlNFVFRBQkxFLCBJU19VTklRVUUsIElTX0RFUklWRUQsICFJU19PUkRFUkVEKTsgLy8kTk9OLU5MUy0xJApAQCAtODE5LDkgKzgzMSw4IEBACiAJCWluaXRFQ2xhc3MoY29tcG9uZW50SW5zdGFuY2VFQ2xhc3MsIENvbXBvbmVudEluc3RhbmNlLmNsYXNzLCAiQ29tcG9uZW50SW5zdGFuY2UiLCAhSVNfQUJTVFJBQ1QsICFJU19JTlRFUkZBQ0UsIElTX0dFTkVSQVRFRF9JTlNUQU5DRV9DTEFTUyk7IC8vJE5PTi1OTFMtMSQKIAkJaW5pdEVSZWZlcmVuY2UoZ2V0Q29tcG9uZW50SW5zdGFuY2VfUGFyYW1JbnN0YW5jZSgpLCB0aGVQYXJhbWV0ZXJzUGFja2FnZS5nZXRQYXJhbWV0ZXJJbnN0YW5jZSgpLCBudWxsLCAicGFyYW1JbnN0YW5jZSIsIG51bGwsIDAsIDEsIENvbXBvbmVudEluc3RhbmNlLmNsYXNzLCBJU19UUkFOU0lFTlQsIElTX1ZPTEFUSUxFLCAhSVNfQ0hBTkdFQUJMRSwgIUlTX0NPTVBPU0lURSwgSVNfUkVTT0xWRV9QUk9YSUVTLCAhSVNfVU5TRVRUQUJMRSwgSVNfVU5JUVVFLCBJU19ERVJJVkVELCAhSVNfT1JERVJFRCk7IC8vJE5PTi1OTFMtMSQKIAkJaW5pdEVSZWZlcmVuY2UoZ2V0Q29tcG9uZW50SW5zdGFuY2VfQmFzZV9Qcm9wZXJ0eSgpLCB0aGVVTUxQYWNrYWdlLmdldFByb3BlcnR5KCksIG51bGwsICJiYXNlX1Byb3BlcnR5IiwgbnVsbCwgMSwgMSwgQ29tcG9uZW50SW5zdGFuY2UuY2xhc3MsICFJU19UUkFOU0lFTlQsICFJU19WT0xBVElMRSwgSVNfQ0hBTkdFQUJMRSwgIUlTX0NPTVBPU0lURSwgSVNfUkVTT0xWRV9QUk9YSUVTLCAhSVNfVU5TRVRUQUJMRSwgSVNfVU5JUVVFLCAhSVNfREVSSVZFRCwgIUlTX09SREVSRUQpOyAvLyROT04tTkxTLTEkCi0JCWluaXRFUmVmZXJlbmNlKGdldENvbXBvbmVudEluc3RhbmNlX0NvbXBkZWYoKSwgdGhpcy5nZXRDb21wb25lbnREZWZpbml0aW9uKCksIG51bGwsICJjb21wZGVmIiwgbnVsbCwgMCwgMSwgQ29tcG9uZW50SW5zdGFuY2UuY2xhc3MsIElTX1RSQU5TSUVOVCwgSVNfVk9MQVRJTEUsICFJU19DSEFOR0VBQkxFLCAhSVNfQ09NUE9TSVRFLCBJU19SRVNPTFZFX1BST1hJRVMsICFJU19VTlNFVFRBQkxFLCBJU19VTklRVUUsIElTX0RFUklWRUQsICFJU19PUkRFUkVEKTsgLy8kTk9OLU5MUy0xJAorCQlpbml0RVJlZmVyZW5jZShnZXRDb21wb25lbnRJbnN0YW5jZV9Db21wZGVmT3JTeXMoKSwgdGhpcy5nZXRDb21wb25lbnRPclN5c3RlbSgpLCBudWxsLCAiY29tcGRlZk9yU3lzIiwgbnVsbCwgMCwgMSwgQ29tcG9uZW50SW5zdGFuY2UuY2xhc3MsIElTX1RSQU5TSUVOVCwgSVNfVk9MQVRJTEUsICFJU19DSEFOR0VBQkxFLCAhSVNfQ09NUE9TSVRFLCBJU19SRVNPTFZFX1BST1hJRVMsICFJU19VTlNFVFRBQkxFLCBJU19VTklRVUUsIElTX0RFUklWRUQsICFJU19PUkRFUkVEKTsgLy8kTk9OLU5MUy0xJAogCQlpbml0RVJlZmVyZW5jZShnZXRDb21wb25lbnRJbnN0YW5jZV9Qb3J0KCksIHRoaXMuZ2V0Q29tcG9uZW50UG9ydCgpLCBudWxsLCAicG9ydCIsIG51bGwsIDAsIC0xLCBDb21wb25lbnRJbnN0YW5jZS5jbGFzcywgSVNfVFJBTlNJRU5ULCBJU19WT0xBVElMRSwgIUlTX0NIQU5HRUFCTEUsICFJU19DT01QT1NJVEUsIElTX1JFU09MVkVfUFJPWElFUywgIUlTX1VOU0VUVEFCTEUsIElTX1VOSVFVRSwgSVNfREVSSVZFRCwgIUlTX09SREVSRUQpOyAvLyROT04tTkxTLTEkCi0JCWluaXRFUmVmZXJlbmNlKGdldENvbXBvbmVudEluc3RhbmNlX0FjdGl2aXRpZXMoKSwgdGhpcy5nZXRBY3Rpdml0eSgpLCBudWxsLCAiYWN0aXZpdGllcyIsIG51bGwsIDAsIC0xLCBDb21wb25lbnRJbnN0YW5jZS5jbGFzcywgSVNfVFJBTlNJRU5ULCBJU19WT0xBVElMRSwgIUlTX0NIQU5HRUFCTEUsICFJU19DT01QT1NJVEUsIElTX1JFU09MVkVfUFJPWElFUywgIUlTX1VOU0VUVEFCTEUsIElTX1VOSVFVRSwgSVNfREVSSVZFRCwgIUlTX09SREVSRUQpOyAvLyROT04tTkxTLTEkCiAKIAkJaW5pdEVDbGFzcyhjb21wb25lbnRTZXJ2aWNlRUNsYXNzLCBDb21wb25lbnRTZXJ2aWNlLmNsYXNzLCAiQ29tcG9uZW50U2VydmljZSIsICFJU19BQlNUUkFDVCwgIUlTX0lOVEVSRkFDRSwgSVNfR0VORVJBVEVEX0lOU1RBTkNFX0NMQVNTKTsgLy8kTk9OLU5MUy0xJAogCQlpbml0RVJlZmVyZW5jZShnZXRDb21wb25lbnRTZXJ2aWNlX0Jhc2VfQ2xhc3MoKSwgdGhlVU1MUGFja2FnZS5nZXRDbGFzc18oKSwgbnVsbCwgImJhc2VfQ2xhc3MiLCBudWxsLCAxLCAxLCBDb21wb25lbnRTZXJ2aWNlLmNsYXNzLCAhSVNfVFJBTlNJRU5ULCAhSVNfVk9MQVRJTEUsIElTX0NIQU5HRUFCTEUsICFJU19DT01QT1NJVEUsIElTX1JFU09MVkVfUFJPWElFUywgIUlTX1VOU0VUVEFCTEUsIElTX1VOSVFVRSwgIUlTX0RFUklWRUQsICFJU19PUkRFUkVEKTsgLy8kTk9OLU5MUy0xJApkaWZmIC0tZ2l0IGEvcGx1Z2lucy9jdXN0b21pemF0aW9uL29yZy5lY2xpcHNlLnBhcHlydXMucm9ib3RpY3MucHJvZmlsZS9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvcm9ib3RpY3MvcHJvZmlsZS9yb2JvdGljcy9jb21wb25lbnRzL2ltcGwvU3lzdGVtSW1wbC5qYXZhIGIvcGx1Z2lucy9jdXN0b21pemF0aW9uL29yZy5lY2xpcHNlLnBhcHlydXMucm9ib3RpY3MucHJvZmlsZS9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvcm9ib3RpY3MvcHJvZmlsZS9yb2JvdGljcy9jb21wb25lbnRzL2ltcGwvU3lzdGVtSW1wbC5qYXZhCmluZGV4IGNlM2M2MmYuLjlkODQ2ZjAgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvY3VzdG9taXphdGlvbi9vcmcuZWNsaXBzZS5wYXB5cnVzLnJvYm90aWNzLnByb2ZpbGUvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3JvYm90aWNzL3Byb2ZpbGUvcm9ib3RpY3MvY29tcG9uZW50cy9pbXBsL1N5c3RlbUltcGwuamF2YQorKysgYi9wbHVnaW5zL2N1c3RvbWl6YXRpb24vb3JnLmVjbGlwc2UucGFweXJ1cy5yb2JvdGljcy5wcm9maWxlL3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9yb2JvdGljcy9wcm9maWxlL3JvYm90aWNzL2NvbXBvbmVudHMvaW1wbC9TeXN0ZW1JbXBsLmphdmEKQEAgLTE2LDcgKzE2LDYgQEAKIGltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLnV0aWwuVW5pcXVlRUxpc3Q7CiBpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVDbGFzczsKIGltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUudXRpbC5FT2JqZWN0UmVzb2x2aW5nRUxpc3Q7Ci1pbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5yb2JvdGljcy5icGMucHJvZmlsZS5icGMuaW1wbC5CbG9ja0ltcGw7CiBpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5yb2JvdGljcy5wcm9maWxlLnJvYm90aWNzLmJlaGF2aW9yLlRhc2s7CiBpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5yb2JvdGljcy5wcm9maWxlLnJvYm90aWNzLmNvbXBvbmVudHMuQ29tcG9uZW50SW5zdGFuY2U7CiBpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5yb2JvdGljcy5wcm9maWxlLnJvYm90aWNzLmNvbXBvbmVudHMuQ29tcG9uZW50c1BhY2thZ2U7CkBAIC0zNyw3ICszNiw3IEBACiAgKgogICogQGdlbmVyYXRlZAogICovCi1wdWJsaWMgY2xhc3MgU3lzdGVtSW1wbCBleHRlbmRzIEJsb2NrSW1wbCBpbXBsZW1lbnRzIG9yZy5lY2xpcHNlLnBhcHlydXMucm9ib3RpY3MucHJvZmlsZS5yb2JvdGljcy5jb21wb25lbnRzLlN5c3RlbSB7CitwdWJsaWMgY2xhc3MgU3lzdGVtSW1wbCBleHRlbmRzIENvbXBvbmVudE9yU3lzdGVtSW1wbCBpbXBsZW1lbnRzIG9yZy5lY2xpcHNlLnBhcHlydXMucm9ib3RpY3MucHJvZmlsZS5yb2JvdGljcy5jb21wb25lbnRzLlN5c3RlbSB7CiAJLyoqCiAJICogVGhlIGNhY2hlZCB2YWx1ZSBvZiB0aGUgJ3tAbGluayAjZ2V0VGFzaygpIDxlbT5UYXNrPC9lbT59JyByZWZlcmVuY2UgbGlzdC4KIAkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9jdXN0b21pemF0aW9uL29yZy5lY2xpcHNlLnBhcHlydXMucm9ib3RpY3MucHJvZmlsZS9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvcm9ib3RpY3MvcHJvZmlsZS9yb2JvdGljcy9jb21wb25lbnRzL3V0aWwvQ29tcG9uZW50c0FkYXB0ZXJGYWN0b3J5LmphdmEgYi9wbHVnaW5zL2N1c3RvbWl6YXRpb24vb3JnLmVjbGlwc2UucGFweXJ1cy5yb2JvdGljcy5wcm9maWxlL3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9yb2JvdGljcy9wcm9maWxlL3JvYm90aWNzL2NvbXBvbmVudHMvdXRpbC9Db21wb25lbnRzQWRhcHRlckZhY3RvcnkuamF2YQppbmRleCA0ZjY4ZGUyLi5lNTYyOGQ5IDEwMDY0NAotLS0gYS9wbHVnaW5zL2N1c3RvbWl6YXRpb24vb3JnLmVjbGlwc2UucGFweXJ1cy5yb2JvdGljcy5wcm9maWxlL3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9yb2JvdGljcy9wcm9maWxlL3JvYm90aWNzL2NvbXBvbmVudHMvdXRpbC9Db21wb25lbnRzQWRhcHRlckZhY3RvcnkuamF2YQorKysgYi9wbHVnaW5zL2N1c3RvbWl6YXRpb24vb3JnLmVjbGlwc2UucGFweXJ1cy5yb2JvdGljcy5wcm9maWxlL3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9yb2JvdGljcy9wcm9maWxlL3JvYm90aWNzL2NvbXBvbmVudHMvdXRpbC9Db21wb25lbnRzQWRhcHRlckZhY3RvcnkuamF2YQpAQCAtMjgsNiArMjgsNyBAQAogaW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMucm9ib3RpY3MucHJvZmlsZS5yb2JvdGljcy5jb21wb25lbnRzLkNvbXBvbmVudERlZmluaXRpb247CiBpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5yb2JvdGljcy5wcm9maWxlLnJvYm90aWNzLmNvbXBvbmVudHMuQ29tcG9uZW50RGVmaW5pdGlvbk1vZGVsOwogaW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMucm9ib3RpY3MucHJvZmlsZS5yb2JvdGljcy5jb21wb25lbnRzLkNvbXBvbmVudEluc3RhbmNlOworaW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMucm9ib3RpY3MucHJvZmlsZS5yb2JvdGljcy5jb21wb25lbnRzLkNvbXBvbmVudE9yU3lzdGVtOwogaW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMucm9ib3RpY3MucHJvZmlsZS5yb2JvdGljcy5jb21wb25lbnRzLkNvbXBvbmVudFBvcnQ7CiBpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5yb2JvdGljcy5wcm9maWxlLnJvYm90aWNzLmNvbXBvbmVudHMuQ29tcG9uZW50U2VydmljZTsKIGltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnJvYm90aWNzLnByb2ZpbGUucm9ib3RpY3MuY29tcG9uZW50cy5Db21wb25lbnRzUGFja2FnZTsKQEAgLTEwNCw2ICsxMDUsMTAgQEAKIAkJCQlyZXR1cm4gY3JlYXRlQ29tcG9uZW50RGVmaW5pdGlvbkFkYXB0ZXIoKTsKIAkJCX0KIAkJCUBPdmVycmlkZQorCQkJcHVibGljIEFkYXB0ZXIgY2FzZUNvbXBvbmVudE9yU3lzdGVtKENvbXBvbmVudE9yU3lzdGVtIG9iamVjdCkgeworCQkJCXJldHVybiBjcmVhdGVDb21wb25lbnRPclN5c3RlbUFkYXB0ZXIoKTsKKwkJCX0KKwkJCUBPdmVycmlkZQogCQkJcHVibGljIEFkYXB0ZXIgY2FzZUNvbXBvbmVudFBvcnQoQ29tcG9uZW50UG9ydCBvYmplY3QpIHsKIAkJCQlyZXR1cm4gY3JlYXRlQ29tcG9uZW50UG9ydEFkYXB0ZXIoKTsKIAkJCX0KQEAgLTIxOCw2ICsyMjMsMjAgQEAKIAl9CiAKIAkvKioKKwkgKiBDcmVhdGVzIGEgbmV3IGFkYXB0ZXIgZm9yIGFuIG9iamVjdCBvZiBjbGFzcyAne0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMucm9ib3RpY3MucHJvZmlsZS5yb2JvdGljcy5jb21wb25lbnRzLkNvbXBvbmVudE9yU3lzdGVtIDxlbT5Db21wb25lbnQgT3IgU3lzdGVtPC9lbT59Jy4KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgorCSAqIFRoaXMgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiByZXR1cm5zIG51bGwgc28gdGhhdCB3ZSBjYW4gZWFzaWx5IGlnbm9yZSBjYXNlczsKKwkgKiBpdCdzIHVzZWZ1bCB0byBpZ25vcmUgYSBjYXNlIHdoZW4gaW5oZXJpdGFuY2Ugd2lsbCBjYXRjaCBhbGwgdGhlIGNhc2VzIGFueXdheS4KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4KKwkgKiBAcmV0dXJuIHRoZSBuZXcgYWRhcHRlci4KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMucm9ib3RpY3MucHJvZmlsZS5yb2JvdGljcy5jb21wb25lbnRzLkNvbXBvbmVudE9yU3lzdGVtCisJICogQGdlbmVyYXRlZAorCSAqLworCXB1YmxpYyBBZGFwdGVyIGNyZWF0ZUNvbXBvbmVudE9yU3lzdGVtQWRhcHRlcigpIHsKKwkJcmV0dXJuIG51bGw7CisJfQorCisJLyoqCiAJICogQ3JlYXRlcyBhIG5ldyBhZGFwdGVyIGZvciBhbiBvYmplY3Qgb2YgY2xhc3MgJ3tAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnJvYm90aWNzLnByb2ZpbGUucm9ib3RpY3MuY29tcG9uZW50cy5Db21wb25lbnRQb3J0IDxlbT5Db21wb25lbnQgUG9ydDwvZW0+fScuCiAJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KIAkgKiBUaGlzIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gcmV0dXJucyBudWxsIHNvIHRoYXQgd2UgY2FuIGVhc2lseSBpZ25vcmUgY2FzZXM7CmRpZmYgLS1naXQgYS9wbHVnaW5zL2N1c3RvbWl6YXRpb24vb3JnLmVjbGlwc2UucGFweXJ1cy5yb2JvdGljcy5wcm9maWxlL3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9yb2JvdGljcy9wcm9maWxlL3JvYm90aWNzL2NvbXBvbmVudHMvdXRpbC9Db21wb25lbnRzU3dpdGNoLmphdmEgYi9wbHVnaW5zL2N1c3RvbWl6YXRpb24vb3JnLmVjbGlwc2UucGFweXJ1cy5yb2JvdGljcy5wcm9maWxlL3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9yb2JvdGljcy9wcm9maWxlL3JvYm90aWNzL2NvbXBvbmVudHMvdXRpbC9Db21wb25lbnRzU3dpdGNoLmphdmEKaW5kZXggMWRkMTAwYS4uNGUzOGQ5MCAxMDA2NDQKLS0tIGEvcGx1Z2lucy9jdXN0b21pemF0aW9uL29yZy5lY2xpcHNlLnBhcHlydXMucm9ib3RpY3MucHJvZmlsZS9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvcm9ib3RpY3MvcHJvZmlsZS9yb2JvdGljcy9jb21wb25lbnRzL3V0aWwvQ29tcG9uZW50c1N3aXRjaC5qYXZhCisrKyBiL3BsdWdpbnMvY3VzdG9taXphdGlvbi9vcmcuZWNsaXBzZS5wYXB5cnVzLnJvYm90aWNzLnByb2ZpbGUvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3JvYm90aWNzL3Byb2ZpbGUvcm9ib3RpY3MvY29tcG9uZW50cy91dGlsL0NvbXBvbmVudHNTd2l0Y2guamF2YQpAQCAtMjYsNiArMjYsNyBAQAogaW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMucm9ib3RpY3MucHJvZmlsZS5yb2JvdGljcy5jb21wb25lbnRzLkNvbXBvbmVudERlZmluaXRpb247CiBpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5yb2JvdGljcy5wcm9maWxlLnJvYm90aWNzLmNvbXBvbmVudHMuQ29tcG9uZW50RGVmaW5pdGlvbk1vZGVsOwogaW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMucm9ib3RpY3MucHJvZmlsZS5yb2JvdGljcy5jb21wb25lbnRzLkNvbXBvbmVudEluc3RhbmNlOworaW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMucm9ib3RpY3MucHJvZmlsZS5yb2JvdGljcy5jb21wb25lbnRzLkNvbXBvbmVudE9yU3lzdGVtOwogaW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMucm9ib3RpY3MucHJvZmlsZS5yb2JvdGljcy5jb21wb25lbnRzLkNvbXBvbmVudFBvcnQ7CiBpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5yb2JvdGljcy5wcm9maWxlLnJvYm90aWNzLmNvbXBvbmVudHMuQ29tcG9uZW50U2VydmljZTsKIGltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnJvYm90aWNzLnByb2ZpbGUucm9ib3RpY3MuY29tcG9uZW50cy5Db21wb25lbnRzUGFja2FnZTsKQEAgLTEwOSwxMSArMTEwLDIwIEBACiAJCQljYXNlIENvbXBvbmVudHNQYWNrYWdlLkNPTVBPTkVOVF9ERUZJTklUSU9OOiB7CiAJCQkJQ29tcG9uZW50RGVmaW5pdGlvbiBjb21wb25lbnREZWZpbml0aW9uID0gKENvbXBvbmVudERlZmluaXRpb24pdGhlRU9iamVjdDsKIAkJCQlUIHJlc3VsdCA9IGNhc2VDb21wb25lbnREZWZpbml0aW9uKGNvbXBvbmVudERlZmluaXRpb24pOworCQkJCWlmIChyZXN1bHQgPT0gbnVsbCkgcmVzdWx0ID0gY2FzZUNvbXBvbmVudE9yU3lzdGVtKGNvbXBvbmVudERlZmluaXRpb24pOwogCQkJCWlmIChyZXN1bHQgPT0gbnVsbCkgcmVzdWx0ID0gY2FzZUJsb2NrKGNvbXBvbmVudERlZmluaXRpb24pOwogCQkJCWlmIChyZXN1bHQgPT0gbnVsbCkgcmVzdWx0ID0gY2FzZUVudGl0eShjb21wb25lbnREZWZpbml0aW9uKTsKIAkJCQlpZiAocmVzdWx0ID09IG51bGwpIHJlc3VsdCA9IGRlZmF1bHRDYXNlKHRoZUVPYmplY3QpOwogCQkJCXJldHVybiByZXN1bHQ7CiAJCQl9CisJCQljYXNlIENvbXBvbmVudHNQYWNrYWdlLkNPTVBPTkVOVF9PUl9TWVNURU06IHsKKwkJCQlDb21wb25lbnRPclN5c3RlbSBjb21wb25lbnRPclN5c3RlbSA9IChDb21wb25lbnRPclN5c3RlbSl0aGVFT2JqZWN0OworCQkJCVQgcmVzdWx0ID0gY2FzZUNvbXBvbmVudE9yU3lzdGVtKGNvbXBvbmVudE9yU3lzdGVtKTsKKwkJCQlpZiAocmVzdWx0ID09IG51bGwpIHJlc3VsdCA9IGNhc2VCbG9jayhjb21wb25lbnRPclN5c3RlbSk7CisJCQkJaWYgKHJlc3VsdCA9PSBudWxsKSByZXN1bHQgPSBjYXNlRW50aXR5KGNvbXBvbmVudE9yU3lzdGVtKTsKKwkJCQlpZiAocmVzdWx0ID09IG51bGwpIHJlc3VsdCA9IGRlZmF1bHRDYXNlKHRoZUVPYmplY3QpOworCQkJCXJldHVybiByZXN1bHQ7CisJCQl9CiAJCQljYXNlIENvbXBvbmVudHNQYWNrYWdlLkNPTVBPTkVOVF9QT1JUOiB7CiAJCQkJQ29tcG9uZW50UG9ydCBjb21wb25lbnRQb3J0ID0gKENvbXBvbmVudFBvcnQpdGhlRU9iamVjdDsKIAkJCQlUIHJlc3VsdCA9IGNhc2VDb21wb25lbnRQb3J0KGNvbXBvbmVudFBvcnQpOwpAQCAtMTQ2LDYgKzE1Niw3IEBACiAJCQljYXNlIENvbXBvbmVudHNQYWNrYWdlLlNZU1RFTTogewogCQkJCW9yZy5lY2xpcHNlLnBhcHlydXMucm9ib3RpY3MucHJvZmlsZS5yb2JvdGljcy5jb21wb25lbnRzLlN5c3RlbSBzeXN0ZW0gPSAob3JnLmVjbGlwc2UucGFweXJ1cy5yb2JvdGljcy5wcm9maWxlLnJvYm90aWNzLmNvbXBvbmVudHMuU3lzdGVtKXRoZUVPYmplY3Q7CiAJCQkJVCByZXN1bHQgPSBjYXNlU3lzdGVtKHN5c3RlbSk7CisJCQkJaWYgKHJlc3VsdCA9PSBudWxsKSByZXN1bHQgPSBjYXNlQ29tcG9uZW50T3JTeXN0ZW0oc3lzdGVtKTsKIAkJCQlpZiAocmVzdWx0ID09IG51bGwpIHJlc3VsdCA9IGNhc2VCbG9jayhzeXN0ZW0pOwogCQkJCWlmIChyZXN1bHQgPT0gbnVsbCkgcmVzdWx0ID0gY2FzZUVudGl0eShzeXN0ZW0pOwogCQkJCWlmIChyZXN1bHQgPT0gbnVsbCkgcmVzdWx0ID0gZGVmYXVsdENhc2UodGhlRU9iamVjdCk7CkBAIC0yMzUsNiArMjQ2LDIxIEBACiAJfQogCiAJLyoqCisJICogUmV0dXJucyB0aGUgcmVzdWx0IG9mIGludGVycHJldGluZyB0aGUgb2JqZWN0IGFzIGFuIGluc3RhbmNlIG9mICc8ZW0+Q29tcG9uZW50IE9yIFN5c3RlbTwvZW0+Jy4KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPgorCSAqIFRoaXMgaW1wbGVtZW50YXRpb24gcmV0dXJucyBudWxsOworCSAqIHJldHVybmluZyBhIG5vbi1udWxsIHJlc3VsdCB3aWxsIHRlcm1pbmF0ZSB0aGUgc3dpdGNoLgorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPgorCSAqIEBwYXJhbSBvYmplY3QgdGhlIHRhcmdldCBvZiB0aGUgc3dpdGNoLgorCSAqIEByZXR1cm4gdGhlIHJlc3VsdCBvZiBpbnRlcnByZXRpbmcgdGhlIG9iamVjdCBhcyBhbiBpbnN0YW5jZSBvZiAnPGVtPkNvbXBvbmVudCBPciBTeXN0ZW08L2VtPicuCisJICogQHNlZSAjZG9Td2l0Y2gob3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVPYmplY3QpIGRvU3dpdGNoKEVPYmplY3QpCisJICogQGdlbmVyYXRlZAorCSAqLworCXB1YmxpYyBUIGNhc2VDb21wb25lbnRPclN5c3RlbShDb21wb25lbnRPclN5c3RlbSBvYmplY3QpIHsKKwkJcmV0dXJuIG51bGw7CisJfQorCisJLyoqCiAJICogUmV0dXJucyB0aGUgcmVzdWx0IG9mIGludGVycHJldGluZyB0aGUgb2JqZWN0IGFzIGFuIGluc3RhbmNlIG9mICc8ZW0+Q29tcG9uZW50IFBvcnQ8L2VtPicuCiAJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4KIAkgKiBUaGlzIGltcGxlbWVudGF0aW9uIHJldHVybnMgbnVsbDsKZGlmZiAtLWdpdCBhL3BsdWdpbnMvY3VzdG9taXphdGlvbi9vcmcuZWNsaXBzZS5wYXB5cnVzLnJvYm90aWNzLnByb3BlcnRpZXMvcHJvcGVydGllcy9jb21wZGVmL3VpL1NpbmdsZUNvbXBvbmVudEluc3RhbmNlLnh3dCBiL3BsdWdpbnMvY3VzdG9taXphdGlvbi9vcmcuZWNsaXBzZS5wYXB5cnVzLnJvYm90aWNzLnByb3BlcnRpZXMvcHJvcGVydGllcy9jb21wZGVmL3VpL1NpbmdsZUNvbXBvbmVudEluc3RhbmNlLnh3dAppbmRleCAxN2YxMDI3Li4xMzY3MjY4IDEwMDY0NAotLS0gYS9wbHVnaW5zL2N1c3RvbWl6YXRpb24vb3JnLmVjbGlwc2UucGFweXJ1cy5yb2JvdGljcy5wcm9wZXJ0aWVzL3Byb3BlcnRpZXMvY29tcGRlZi91aS9TaW5nbGVDb21wb25lbnRJbnN0YW5jZS54d3QKKysrIGIvcGx1Z2lucy9jdXN0b21pemF0aW9uL29yZy5lY2xpcHNlLnBhcHlydXMucm9ib3RpY3MucHJvcGVydGllcy9wcm9wZXJ0aWVzL2NvbXBkZWYvdWkvU2luZ2xlQ29tcG9uZW50SW5zdGFuY2UueHd0CkBAIC0xMiwxMyArMTIsMTAgQEAKIAkJPENvbXBvc2l0ZS5sYXlvdXQ+CiAJCQk8cHBlbDpQcm9wZXJ0aWVzTGF5b3V0IG51bUNvbHVtbnM9IjEiPjwvcHBlbDpQcm9wZXJ0aWVzTGF5b3V0PgogCQk8L0NvbXBvc2l0ZS5sYXlvdXQ+Ci0JCTxwcHJtczpDb21wb25lbnRUeXBlRGlhbG9nIGlucHV0PSJ7QmluZGluZ30iIGN1c3RvbUxhYmVsPSJDb21wLiBkZWZpbml0aW9uIgorCQk8cHBybXM6Q29tcG9uZW50VHlwZURpYWxvZyBpbnB1dD0ie0JpbmRpbmd9IiBjdXN0b21MYWJlbD0iQ29tcC5kZWYgb3Igc3lzdGVtIgogCQkJcHJvcGVydHk9IlVNTDpUeXBlZEVsZW1lbnQ6dHlwZSI+PC9wcHJtczpDb21wb25lbnRUeXBlRGlhbG9nPgogCQk8cHBybXM6Um9iTXVsdGlSZWZlcmVuY2UgaW5wdXQ9IntCaW5kaW5nfSIKIAkJCXByb3BlcnR5PSJyb2JvdGljczpjb21wb25lbnRzOkNvbXBvbmVudEluc3RhbmNlOnBvcnQiCiAJCQlyZWFkT25seT0idHJ1ZSIgY3VzdG9tTGFiZWw9IlBvcnRzIj48L3Bwcm1zOlJvYk11bHRpUmVmZXJlbmNlPgotCQk8cHBybXM6Um9iTXVsdGlSZWZlcmVuY2UgaW5wdXQ9IntCaW5kaW5nfSIKLQkJCXByb3BlcnR5PSJyb2JvdGljczpjb21wb25lbnRzOkNvbXBvbmVudEluc3RhbmNlOmFjdGl2aXRpZXMiCi0JCQlyZWFkT25seT0idHJ1ZSIgY3VzdG9tTGFiZWw9IkFjdGl2aXRpZXMiPjwvcHBybXM6Um9iTXVsdGlSZWZlcmVuY2U+CiAJPC9Db21wb3NpdGU+CiA8L0NvbXBvc2l0ZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9wbHVnaW5zL2N1c3RvbWl6YXRpb24vb3JnLmVjbGlwc2UucGFweXJ1cy5yb2JvdGljcy5wcm9wZXJ0aWVzL3Byb3BlcnRpZXMvZGF0YXR5cGUvdWkvU2luZ2xlQXR0cmlidXRlLnh3dCBiL3BsdWdpbnMvY3VzdG9taXphdGlvbi9vcmcuZWNsaXBzZS5wYXB5cnVzLnJvYm90aWNzLnByb3BlcnRpZXMvcHJvcGVydGllcy9kYXRhdHlwZS91aS9TaW5nbGVBdHRyaWJ1dGUueHd0CmluZGV4IDFhY2FhYTUuLjU1YzlmYjEgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvY3VzdG9taXphdGlvbi9vcmcuZWNsaXBzZS5wYXB5cnVzLnJvYm90aWNzLnByb3BlcnRpZXMvcHJvcGVydGllcy9kYXRhdHlwZS91aS9TaW5nbGVBdHRyaWJ1dGUueHd0CisrKyBiL3BsdWdpbnMvY3VzdG9taXphdGlvbi9vcmcuZWNsaXBzZS5wYXB5cnVzLnJvYm90aWNzLnByb3BlcnRpZXMvcHJvcGVydGllcy9kYXRhdHlwZS91aS9TaW5nbGVBdHRyaWJ1dGUueHd0CkBAIC0yLDYgKzIsNyBAQAogPENvbXBvc2l0ZSB4bWxucz0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy94d3QvcHJlc2VudGF0aW9uIgogCXhtbG5zOmo9ImNsci1uYW1lc3BhY2U6amF2YS5sYW5nIiB4bWxuczpwcGU9ImNsci1uYW1lc3BhY2U6b3JnLmVjbGlwc2UucGFweXJ1cy5pbmZyYS5wcm9wZXJ0aWVzLnVpLndpZGdldHMiCiAJeG1sbnM6cHBlbD0iY2xyLW5hbWVzcGFjZTpvcmcuZWNsaXBzZS5wYXB5cnVzLmluZnJhLnByb3BlcnRpZXMudWkud2lkZ2V0cy5sYXlvdXQiCisJeG1sbnM6cHBybXM9ImNsci1uYW1lc3BhY2U6b3JnLmVjbGlwc2UucGFweXJ1cy5yb2JvdGljcy5wcm9wZXJ0aWVzLndpZGdldHMiCiAJeG1sbnM6dW1sPSJjbHItbmFtZXNwYWNlOm9yZy5lY2xpcHNlLnBhcHlydXMudW1sLnByb3BlcnRpZXMud2lkZ2V0cyIKIAl4bWxuczp4PSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3h3dCI+CiAJPENvbXBvc2l0ZS5sYXlvdXQ+CkBAIC0xMSw3ICsxMiw3IEBACiAJCTxDb21wb3NpdGUubGF5b3V0PgogCQkJPHBwZWw6UHJvcGVydGllc0xheW91dCBudW1Db2x1bW5zPSIxIj48L3BwZWw6UHJvcGVydGllc0xheW91dD4KIAkJPC9Db21wb3NpdGUubGF5b3V0PgotCQk8cHBlOlJlZmVyZW5jZURpYWxvZyBpbnB1dD0ie0JpbmRpbmd9IiBwcm9wZXJ0eT0iVU1MOlR5cGVkRWxlbWVudDp0eXBlIj48L3BwZTpSZWZlcmVuY2VEaWFsb2c+CisJCTxwcHJtczpEYXRhVHlwZVJlZkRpYWxvZyBpbnB1dD0ie0JpbmRpbmd9IiBwcm9wZXJ0eT0iVU1MOlR5cGVkRWxlbWVudDp0eXBlIj48L3Bwcm1zOkRhdGFUeXBlUmVmRGlhbG9nPgogCQk8dW1sOk11bHRpcGxpY2l0eURpYWxvZyBpbnB1dD0ie0JpbmRpbmd9IgogCQkJcHJvcGVydHk9Ik11bHRpcGxpY2l0eTptdWx0aXBsaWNpdHkiPjwvdW1sOk11bHRpcGxpY2l0eURpYWxvZz4KIAk8L0NvbXBvc2l0ZT4KZGlmZiAtLWdpdCBhL3BsdWdpbnMvY3VzdG9taXphdGlvbi9vcmcuZWNsaXBzZS5wYXB5cnVzLnJvYm90aWNzLnByb3BlcnRpZXMvc3JjL29yZy9lY2xpcHNlL3BhcHlydXMvcm9ib3RpY3MvcHJvcGVydGllcy93aWRnZXRzL0RhdGFUeXBlUmVmRGlhbG9nLmphdmEgYi9wbHVnaW5zL2N1c3RvbWl6YXRpb24vb3JnLmVjbGlwc2UucGFweXJ1cy5yb2JvdGljcy5wcm9wZXJ0aWVzL3NyYy9vcmcvZWNsaXBzZS9wYXB5cnVzL3JvYm90aWNzL3Byb3BlcnRpZXMvd2lkZ2V0cy9EYXRhVHlwZVJlZkRpYWxvZy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhkNzQ5MTkKLS0tIC9kZXYvbnVsbAorKysgYi9wbHVnaW5zL2N1c3RvbWl6YXRpb24vb3JnLmVjbGlwc2UucGFweXJ1cy5yb2JvdGljcy5wcm9wZXJ0aWVzL3NyYy9vcmcvZWNsaXBzZS9wYXB5cnVzL3JvYm90aWNzL3Byb3BlcnRpZXMvd2lkZ2V0cy9EYXRhVHlwZVJlZkRpYWxvZy5qYXZhCkBAIC0wLDAgKzEsMzIgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChjKSAyMDIxIENFQSBMSVNULgorICoKKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgMi4wCisgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAorICogaHR0cHM6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLTIuMC8KKyAqCisgKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogRVBMLTIuMAorICoKKyAqIENvbnRyaWJ1dG9yczoKKyAqICBBbnNnYXIgUmFkZXJtYWNoZXIgKENFQSBMSVNUKSBhbnNnYXIucmFkZXJtYWNoZXJAY2VhLmZyIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCitwYWNrYWdlIG9yZy5lY2xpcHNlLnBhcHlydXMucm9ib3RpY3MucHJvcGVydGllcy53aWRnZXRzOworCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5yb2JvdGljcy5jb3JlLnV0aWxzLkZpbGVFeHRlbnNpb25zOworaW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMucm9ib3RpY3MucHJvZmlsZS5yb2JvdGljcy5jb21tb2JqZWN0LkRhdGFUeXBlOworaW1wb3J0IG9yZy5lY2xpcHNlLnN3dC53aWRnZXRzLkNvbXBvc2l0ZTsKKworcHVibGljIGNsYXNzIERhdGFUeXBlUmVmRGlhbG9nIGV4dGVuZHMgUmVmZXJlbmNlV29BZGREaWFsb2cgeworCisJcHVibGljIERhdGFUeXBlUmVmRGlhbG9nKENvbXBvc2l0ZSBwYXJlbnQsIGludCBzdHlsZSkgeworCQlzdXBlcihwYXJlbnQsIHN0eWxlKTsKKwl9CisKKwlAT3ZlcnJpZGUKKwlwcm90ZWN0ZWQgb3JnLmVjbGlwc2UucGFweXJ1cy5pbmZyYS53aWRnZXRzLmVkaXRvcnMuUmVmZXJlbmNlRGlhbG9nIGNyZWF0ZVJlZmVyZW5jZURpYWxvZyhDb21wb3NpdGUgcGFyZW50LCBpbnQgc3R5bGUpIHsKKwkJcmV0dXJuIG5ldyBSb2JvdGljc1JlZmVyZW5jZURpYWxvZyhwYXJlbnQsIHN0eWxlLCBEYXRhVHlwZS5jbGFzcywgRmlsZUV4dGVuc2lvbnMuU0VSVklDRURFRl9VTUwpOworCX0KK30KZGlmZiAtLWdpdCBhL3BsdWdpbnMvY3VzdG9taXphdGlvbi9vcmcuZWNsaXBzZS5wYXB5cnVzLnJvYm90aWNzLnByb3BlcnRpZXMvc3JjL29yZy9lY2xpcHNlL3BhcHlydXMvcm9ib3RpY3MvcHJvcGVydGllcy93aWRnZXRzL1JvYm90aWNzUmVmZXJlbmNlRGlhbG9nLmphdmEgYi9wbHVnaW5zL2N1c3RvbWl6YXRpb24vb3JnLmVjbGlwc2UucGFweXJ1cy5yb2JvdGljcy5wcm9wZXJ0aWVzL3NyYy9vcmcvZWNsaXBzZS9wYXB5cnVzL3JvYm90aWNzL3Byb3BlcnRpZXMvd2lkZ2V0cy9Sb2JvdGljc1JlZmVyZW5jZURpYWxvZy5qYXZhCmluZGV4IDdmYmU4YzYuLjVhNGJlYzQgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvY3VzdG9taXphdGlvbi9vcmcuZWNsaXBzZS5wYXB5cnVzLnJvYm90aWNzLnByb3BlcnRpZXMvc3JjL29yZy9lY2xpcHNlL3BhcHlydXMvcm9ib3RpY3MvcHJvcGVydGllcy93aWRnZXRzL1JvYm90aWNzUmVmZXJlbmNlRGlhbG9nLmphdmEKKysrIGIvcGx1Z2lucy9jdXN0b21pemF0aW9uL29yZy5lY2xpcHNlLnBhcHlydXMucm9ib3RpY3MucHJvcGVydGllcy9zcmMvb3JnL2VjbGlwc2UvcGFweXJ1cy9yb2JvdGljcy9wcm9wZXJ0aWVzL3dpZGdldHMvUm9ib3RpY3NSZWZlcmVuY2VEaWFsb2cuamF2YQpAQCAtMSwzICsxLDE4IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoYykgMjAxOSwgMjAyMCBDRUEgTElTVC4KKyAqCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIDIuMAorICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKKyAqIGh0dHBzOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC0yLjAvCisgKgorICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEVQTC0yLjAKKyAqCisgKiBDb250cmlidXRvcnM6CisgKiAgQW5zZ2FyIFJhZGVybWFjaGVyIChDRUEgTElTVCkgYW5zZ2FyLnJhZGVybWFjaGVyQGNlYS5mciAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKwogcGFja2FnZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnJvYm90aWNzLnByb3BlcnRpZXMud2lkZ2V0czsKIAogaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUuZGF0YWJpbmRpbmcub2JzZXJ2YWJsZS52YWx1ZS5JT2JzZXJ2YWJsZVZhbHVlOwpAQCAtMTEsMjAgKzI2LDM4IEBACiBpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5yb2JvdGljcy5jb3JlLnV0aWxzLlNjYW5VdGlsczsKIGltcG9ydCBvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5Db21wb3NpdGU7CiAKKy8qKgorICogUm9ib3RpY3MgcmVmZXJlbmNlIGRpYWxvZy4gU3VwcG9zZWQgdG8gYmUgb3ZlcnJpZGRlbiBieSBzdWItY2xhc3NlcworICogdGhhdCBkZWZpbmUgdGhlIGV4dGVuc2lvbiBhbmQgc3RlcmVvdHlwZSB0byBsb29rIGZvci4KKyAqIEF0dGVudGlvbiB3cnQuIG5hbWluZzogdGhpcyBpcyByYXRoZXIgYW4gZWRpdG9yLCBub3QgYSBkaWFsb2cgcmVmZXJlbmNlZCBmcm9tIFhXVC4KKyAqLwogcHVibGljIGNsYXNzIFJvYm90aWNzUmVmZXJlbmNlRGlhbG9nIGV4dGVuZHMgUmVmZXJlbmNlRGlhbG9nIHsKIAogCXByb3RlY3RlZCBDbGFzczw/IGV4dGVuZHMgRU9iamVjdD4gc3RlcmVvdHlwZUZpbHRlcjsKLQkKKwogCXByb3RlY3RlZCBTdHJpbmcgZXh0ZW5zaW9uOwogCiAJcHJvdGVjdGVkIEVPYmplY3QgY29udGV4dDsKIAorCS8qKgorCSAqIAorCSAqIENvbnN0cnVjdG9yLgorCSAqCisJICogQHBhcmFtIHBhcmVudAorCSAqICAgICAgICAgICAgdGhlIGdyYXBoaWNhbCBwYXJlbnQgY29tcG9zaXRlCisJICogQHBhcmFtIHN0eWxlCisJICogICAgICAgICAgICB0aGUgU1dUIHN0eWxlCisJICogQHBhcmFtIHN0ZXJlb3R5cGVGaWx0ZXIKKwkgKiAgICAgICAgICAgIGFuIG9wdGlvbmFsIHN0ZXJlb3R5cGUgZmlsdGVyIChtYXliZSBudWxsKQorCSAqIEBwYXJhbSBleHRlbnNpb24KKwkgKiAgICAgICAgICAgIHRoZSBmaWxlIGV4dGVuc2lvbiB0byBzY2FuIGZvcgorCSAqLwogCXB1YmxpYyBSb2JvdGljc1JlZmVyZW5jZURpYWxvZyhDb21wb3NpdGUgcGFyZW50LCBpbnQgc3R5bGUsIENsYXNzPD8gZXh0ZW5kcyBFT2JqZWN0PiBzdGVyZW90eXBlRmlsdGVyLCBTdHJpbmcgZXh0ZW5zaW9uKSB7CiAJCXN1cGVyKHBhcmVudCwgc3R5bGUpOwogCQl0aGlzLnN0ZXJlb3R5cGVGaWx0ZXIgPSBzdGVyZW90eXBlRmlsdGVyOwogCQl0aGlzLmV4dGVuc2lvbiA9IGV4dGVuc2lvbjsKIAl9Ci0JCisKIAlAT3ZlcnJpZGUKIAlwdWJsaWMgdm9pZCBzZXRNb2RlbE9ic2VydmFibGUoQFN1cHByZXNzV2FybmluZ3MoInJhd3R5cGVzIikgSU9ic2VydmFibGVWYWx1ZSBtb2RlbFByb3BlcnR5KSB7CiAJCXN1cGVyLnNldE1vZGVsT2JzZXJ2YWJsZShtb2RlbFByb3BlcnR5KTsKQEAgLTMzLDkgKzY2LDE1IEBACiAJCWlmIChjb250ZXh0T2JqIGluc3RhbmNlb2YgRU9iamVjdCkgewogCQkJY29udGV4dCA9IChFT2JqZWN0KSBjb250ZXh0T2JqOwogCQkJLy8gY3JlYXRlIHJvYm90aWNzIGNvbnRlbnQgcHJvdmlkZXIKLQkJCUVuY2Fwc3VsYXRlZENvbnRlbnRQcm92aWRlciByb2JvdGljUHJvdmlkZXIgPSBuZXcgUm9ib3RpY3NDb250ZW50UHJvdmlkZXIoCi0JCQkJCWNvbnRleHQsIGNvbnRlbnRQcm92aWRlciwgc3RlcmVvdHlwZUZpbHRlciwgZXh0ZW5zaW9uKTsKLQkJCXNldENvbnRlbnRQcm92aWRlcihyb2JvdGljUHJvdmlkZXIpOworCQkJRW5jYXBzdWxhdGVkQ29udGVudFByb3ZpZGVyIHJvYm90aWNzUHJvdmlkZXI7CisJCQlpZiAoc3RlcmVvdHlwZUZpbHRlciAhPSBudWxsKSB7CisJCQkJcm9ib3RpY3NQcm92aWRlciA9IG5ldyBSb2JvdGljc0NvbnRlbnRQcm92aWRlcigKKwkJCQkJCWNvbnRleHQsIGNvbnRlbnRQcm92aWRlciwgc3RlcmVvdHlwZUZpbHRlciwgZXh0ZW5zaW9uKTsKKwkJCX0gZWxzZSB7CisJCQkJcm9ib3RpY3NQcm92aWRlciA9IG5ldyBSb2JvdGljc0NvbnRlbnRQcm92aWRlcigKKwkJCQkJCWNvbnRleHQsIGNvbnRlbnRQcm92aWRlciwgZXh0ZW5zaW9uKTsKKwkJCX0KKwkJCXNldENvbnRlbnRQcm92aWRlcihyb2JvdGljc1Byb3ZpZGVyKTsKIAkJfQogCX0KIAo=